From 08e7f851c451751924bd97bf80afd921fbcbdbef Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Tue, 12 May 2020 08:36:13 -0500 Subject: [PATCH 01/45] 1. Create the Next.js Base --- .gitignore | 3 + next-env.d.ts | 2 + package-lock.json | 6698 +++++++++++++++++++++ package.json | 23 + pages/index.tsx | 9 + public/favicon/android-chrome-192x192.png | Bin 0 -> 26080 bytes public/favicon/android-chrome-512x512.png | Bin 0 -> 111921 bytes public/favicon/apple-touch-icon.png | Bin 0 -> 23471 bytes public/favicon/favicon-16x16.png | Bin 0 -> 770 bytes public/favicon/favicon-32x32.png | Bin 0 -> 1971 bytes public/favicon/favicon.ico | Bin 0 -> 15406 bytes public/favicon/site.webmanifest | 1 + public/logo.svg | 1 + tsconfig.json | 29 + 14 files changed, 6766 insertions(+) create mode 100644 .gitignore create mode 100644 next-env.d.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pages/index.tsx create mode 100644 public/favicon/android-chrome-192x192.png create mode 100644 public/favicon/android-chrome-512x512.png create mode 100644 public/favicon/apple-touch-icon.png create mode 100644 public/favicon/favicon-16x16.png create mode 100644 public/favicon/favicon-32x32.png create mode 100644 public/favicon/favicon.ico create mode 100644 public/favicon/site.webmanifest create mode 100644 public/logo.svg create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..377d23e --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +node_modules +.next +.DS_Store \ No newline at end of file diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 0000000..7b7aa2c --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..f74744f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6698 @@ +{ + "name": "next-chop", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ampproject/toolbox-core": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/toolbox-core/-/toolbox-core-2.3.0.tgz", + "integrity": "sha512-NT+kVR5Rm2cxp12h40IXgPRWmq0cpUdmcgZmgdelplp/q//4aWkt2+llGHR2foQJkwICxMVVlb/XidsHz0Rh9g==", + "requires": { + "cross-fetch": "3.0.4" + } + }, + "@ampproject/toolbox-optimizer": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@ampproject/toolbox-optimizer/-/toolbox-optimizer-2.3.1.tgz", + "integrity": "sha512-614CKgpHJfVVnns1kHMuXd8uTvE0bhgIEyhnBqQ06Af1s91bKDUKDksGFVd/drGhEYmyX3Y8pizoZgw2tiQtSQ==", + "requires": { + "@ampproject/toolbox-core": "^2.3.0", + "@ampproject/toolbox-runtime-version": "^2.3.1", + "@ampproject/toolbox-script-csp": "^2.3.0", + "@ampproject/toolbox-validator-rules": "^2.3.0", + "cssnano": "4.1.10", + "domhandler": "3.0.0", + "domutils": "2.0.0", + "htmlparser2": "4.1.0", + "normalize-html-whitespace": "1.0.0", + "postcss-safe-parser": "4.0.2", + "terser": "4.6.13" + } + }, + "@ampproject/toolbox-runtime-version": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@ampproject/toolbox-runtime-version/-/toolbox-runtime-version-2.3.1.tgz", + "integrity": "sha512-ocDCSaSUlbgPbuXRVyLU7k+dLGYluKrnfSPKXIwwpGkwNw58JOddvgnQGyB0R/2Ma36nxFA8AAyxjnghLSScpg==", + "requires": { + "@ampproject/toolbox-core": "^2.3.0" + } + }, + "@ampproject/toolbox-script-csp": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/toolbox-script-csp/-/toolbox-script-csp-2.3.0.tgz", + "integrity": "sha512-Qba53ohvCH79sYl5O8K5GMSo/372OjuyxNc+XySG26sAsG26WpBKJEE0HTr8rsa//CD3Fc92FieT1gK5U/jK4Q==" + }, + "@ampproject/toolbox-validator-rules": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/toolbox-validator-rules/-/toolbox-validator-rules-2.3.0.tgz", + "integrity": "sha512-S10YIyOKettoRDWoyRymRyjzWZD4/qW7YfHNhHAS13QVneabRcU5MF7vEwkG6dHWx/UdufT5GbqYnvpQRMNt3Q==", + "requires": { + "cross-fetch": "3.0.4" + } + }, + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/compat-data": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.6.tgz", + "integrity": "sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g==", + "requires": { + "browserslist": "^4.11.1", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.6.tgz", + "integrity": "sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.6", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.6", + "@babel/parser": "^7.9.6", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/generator": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", + "requires": { + "@babel/types": "^7.9.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz", + "integrity": "sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/types": "^7.9.0" + } + }, + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.5.tgz", + "integrity": "sha512-HAagjAC93tk748jcXpZ7oYRZH485RCq/+yEv9SIWezHRPv9moZArTnkUNciUNzvwHUABmiWKlcxJvMcu59UwTg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-module-imports": "^7.8.3", + "@babel/types": "^7.9.5" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz", + "integrity": "sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw==", + "requires": { + "@babel/compat-data": "^7.9.6", + "browserslist": "^4.11.1", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.9.6.tgz", + "integrity": "sha512-6N9IeuyHvMBRyjNYOMJHrhwtu4WJMrYf8hVbEHD3pbbbmNOk1kmXSQs7bA4dYDUaIx4ZEzdnvo6NwC3WHd/Qow==", + "requires": { + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.9.6", + "@babel/helper-split-export-declaration": "^7.8.3" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", + "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "requires": { + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==" + }, + "@babel/helper-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", + "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz", + "integrity": "sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==" + }, + "@babel/helper-wrap-function": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.6.tgz", + "integrity": "sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw==", + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==" + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", + "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz", + "integrity": "sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.9.5" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", + "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.8", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz", + "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz", + "integrity": "sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz", + "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz", + "integrity": "sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", + "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz", + "integrity": "sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw==", + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz", + "integrity": "sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ==", + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.6.tgz", + "integrity": "sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg==", + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", + "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz", + "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==", + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz", + "integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz", + "integrity": "sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw==", + "requires": { + "@babel/helper-builder-react-jsx": "^7.9.0", + "@babel/helper-builder-react-jsx-experimental": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz", + "integrity": "sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw==", + "requires": { + "@babel/helper-builder-react-jsx-experimental": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz", + "integrity": "sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz", + "integrity": "sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.6.tgz", + "integrity": "sha512-qcmiECD0mYOjOIt8YHNsAP1SxPooC/rDmfmiSK9BNY72EitdSc7l44WTEklaWuFtbOEBjNhWWyph/kOImbNJ4w==", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "resolve": "^1.8.1", + "semver": "^5.5.1" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.6.tgz", + "integrity": "sha512-8OvsRdvpt3Iesf2qsAn+YdlwAJD7zJ+vhFZmDCa4b8dTp7MmHtKk5FF2mCsGxjZwuwsy/yIIay/nLmxST1ctVQ==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.9.6", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-typescript": "^7.8.3" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.6.tgz", + "integrity": "sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ==", + "requires": { + "@babel/compat-data": "^7.9.6", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.6", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.5", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.9.5", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.6", + "@babel/plugin-transform-modules-commonjs": "^7.9.6", + "@babel/plugin-transform-modules-systemjs": "^7.9.6", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.9.5", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.6", + "browserslist": "^4.11.1", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.9.4.tgz", + "integrity": "sha512-AxylVB3FXeOTQXNXyiuAQJSvss62FEotbX2Pzx3K/7c+MKJMdSg6Ose6QYllkdCFA8EInCJVw7M/o5QbLuA4ZQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-react-display-name": "^7.8.3", + "@babel/plugin-transform-react-jsx": "^7.9.4", + "@babel/plugin-transform-react-jsx-development": "^7.9.0", + "@babel/plugin-transform-react-jsx-self": "^7.9.0", + "@babel/plugin-transform-react-jsx-source": "^7.9.0" + } + }, + "@babel/preset-typescript": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz", + "integrity": "sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-typescript": "^7.9.0" + } + }, + "@babel/runtime": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", + "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", + "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.6", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", + "requires": { + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@next/react-dev-overlay": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-9.4.0.tgz", + "integrity": "sha512-jHlfqviYKPiWRaxBsFMSxDgGf8rJcWiLhw84QevAWmt8Z0Fi4Z6nvAz5prpzavLTMUF+i+7Bd8+sv/b73sHY3g==", + "requires": { + "@babel/code-frame": "7.8.3", + "ally.js": "1.4.1", + "anser": "1.4.9", + "chalk": "4.0.0", + "classnames": "2.2.6", + "data-uri-to-buffer": "3.0.0", + "shell-quote": "1.7.2", + "source-map": "0.8.0-beta.0", + "stacktrace-parser": "0.1.10", + "strip-ansi": "6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "requires": { + "whatwg-url": "^7.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@next/react-refresh-utils": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-9.4.0.tgz", + "integrity": "sha512-AaEC/diS2two2JLsEItGhuAux8UfPo0o34/7l1SIw0t4SYunUYJsxM/Y55OR2ljiVn9ffKR1n1U9IEQhsK80jw==" + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + }, + "@types/node": { + "version": "13.13.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.5.tgz", + "integrity": "sha512-3ySmiBYJPqgjiHA7oEaIo2Rzz0HrOZ7yrNO5HWyaE5q0lQ3BppDZ3N53Miz8bw2I7gh1/zir2MGVZBvpb1zq9g==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", + "dev": true + }, + "@types/q": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", + "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==" + }, + "@types/react": { + "version": "16.9.35", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.35.tgz", + "integrity": "sha512-q0n0SsWcGc8nDqH2GJfWQWUOmZSJhXV64CjVN5SvcNti3TdEaA3AH0D8DwNmMdzjMAC/78tB8nAZIlV8yTz+zQ==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "csstype": "^2.2.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + }, + "adjust-sourcemap-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", + "integrity": "sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA==", + "requires": { + "assert": "1.4.1", + "camelcase": "5.0.0", + "loader-utils": "1.2.3", + "object-path": "0.11.4", + "regex-parser": "2.2.10" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==" + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "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" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + } + } + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==" + }, + "ally.js": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/ally.js/-/ally.js-1.4.1.tgz", + "integrity": "sha1-n7fmuljvrE7pExyymqnuO1QLzx4=", + "requires": { + "css.escape": "^1.5.0", + "platform": "1.3.3" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "anser": { + "version": "1.4.9", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.9.tgz", + "integrity": "sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA==" + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "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" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "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" + } + }, + "arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=" + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "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-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + } + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "requires": { + "util": "0.10.3" + } + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + }, + "babel-plugin-transform-define": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-define/-/babel-plugin-transform-define-2.0.0.tgz", + "integrity": "sha512-0dv5RNRUlUKxGYIIErl01lpvi8b7W2R04Qcl1mCj70ahwZcgiklfXnFlh4FGnRh6aayCfSZKdhiMryVzcq5Dmg==", + "requires": { + "lodash": "^4.17.11", + "traverse": "0.6.6" + } + }, + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA==" + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + } + } + }, + "browserify-sign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.1.0.tgz", + "integrity": "sha512-VYxo7cDCeYUoBZ0ZCy4UyEUCP3smyBd4DRQM5nrFS1jJjPJjX7rP3oLRpPoWfkhQfyJ0I9ZbHbKafrFD/SGlrg==", + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.2", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", + "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "requires": { + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001055", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001055.tgz", + "integrity": "sha512-MbwsBmKrBSKIWldfdIagO5OJWZclpJtS4h0Jrk/4HFrXJxTdVdH23Fd+xCiHriVGvYcWyW8mR/CPsYajlH8Iuw==" + }, + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", + "requires": { + "arity-n": "^1.0.4" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.4.tgz", + "integrity": "sha512-MSHgpjQqgbT/94D4CyADeNoYh52zMkCX4pcJvPP5WqPsLFMKjr2TCMg381ox5qI0ii2dPwaLx/00477knXqXVw==", + "requires": { + "node-fetch": "2.6.0", + "whatwg-fetch": "3.0.0" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.5.3.tgz", + "integrity": "sha512-UEr9NH5Lmi7+dguAm+/JSPovNjYbm2k3TK58EiwQHzOHH5Jfq1Y+XoP2bQO6TMn7PptMd0opxxedAWcaSTRKHw==", + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.27", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.3", + "schema-utils": "^2.6.6", + "semver": "^6.3.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" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + }, + "dependencies": { + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + } + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", + "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==" + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=" + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=" + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" + }, + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==" + } + } + }, + "csstype": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz", + "integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "data-uri-to-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.0.tgz", + "integrity": "sha512-MJ6mFTZ+nPQO+39ua/ltwNePXrfdF3Ww0wP1Od7EePySXN1cP9XNqRQOG3FxTfipp8jx898LUCgBCEP11Qw/ZQ==", + "requires": { + "buffer-from": "^1.1.1" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + } + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domhandler": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.0.0.tgz", + "integrity": "sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw==", + "requires": { + "domelementtype": "^2.0.1" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" + } + } + }, + "domutils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.0.0.tgz", + "integrity": "sha512-n5SelJ1axbO636c2yUtOGia/IcJtVtlhQbFiVDBZHKV5ReJO1ViX7sFEemtuyoAnBxk5meNSYgA8V4s0271efg==", + "requires": { + "dom-serializer": "^0.2.1", + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" + } + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "electron-to-chromium": { + "version": "1.3.434", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.434.tgz", + "integrity": "sha512-WjzGrE6appXvMyc2kH9Ide7OxsgTuRzag9sjQ5AcbOnbS9ut7P1HzOeEbJFLhr81IR7n2Hlr6qTTSGTXLIX5Pg==" + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + } + } + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.2.tgz", + "integrity": "sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw==" + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "fork-ts-checker-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^3.3.0", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" + }, + "htmlparser2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" + } + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "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" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "requires": { + "leven": "^3.1.0" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "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" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + } + } + }, + "mini-css-extract-plugin": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz", + "integrity": "sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw==", + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.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" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", + "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "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": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz", + "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", + "requires": { + "minimist": "^1.2.5" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "native-url": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.3.1.tgz", + "integrity": "sha512-VL0XRW8nNBdSpxqZCbLJKrLHmIMn82FZ8pJzriJgyBmErjdEtrUX6eZAJbtHjlkMooEWUV+EtJ0D5tOP3+1Piw==", + "requires": { + "querystring": "^0.2.0" + } + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "next": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/next/-/next-9.4.0.tgz", + "integrity": "sha512-J7RWDzEXmNdg1iCaJiNmvQLdWMnMnPxsZh03pl+OBXQbOKoze+kZB2KdduhvsvAJ8ZyV4XCmJhLWsQbypDZTlQ==", + "requires": { + "@ampproject/toolbox-optimizer": "2.3.1", + "@babel/core": "7.9.6", + "@babel/plugin-proposal-class-properties": "7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.8.3", + "@babel/plugin-proposal-numeric-separator": "7.8.3", + "@babel/plugin-proposal-object-rest-spread": "7.9.6", + "@babel/plugin-proposal-optional-chaining": "7.9.0", + "@babel/plugin-syntax-bigint": "7.8.3", + "@babel/plugin-syntax-dynamic-import": "7.8.3", + "@babel/plugin-transform-modules-commonjs": "7.9.6", + "@babel/plugin-transform-runtime": "7.9.6", + "@babel/preset-env": "7.9.6", + "@babel/preset-modules": "0.1.3", + "@babel/preset-react": "7.9.4", + "@babel/preset-typescript": "7.9.0", + "@babel/runtime": "7.9.6", + "@babel/types": "7.9.6", + "@next/react-dev-overlay": "9.4.0", + "@next/react-refresh-utils": "9.4.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-plugin-transform-define": "2.0.0", + "babel-plugin-transform-react-remove-prop-types": "0.4.24", + "browserslist": "4.12.0", + "cacache": "13.0.1", + "chokidar": "2.1.8", + "css-loader": "3.5.3", + "find-cache-dir": "3.3.1", + "fork-ts-checker-webpack-plugin": "3.1.1", + "jest-worker": "24.9.0", + "loader-utils": "2.0.0", + "mini-css-extract-plugin": "0.8.0", + "mkdirp": "0.5.3", + "native-url": "0.3.1", + "neo-async": "2.6.1", + "pnp-webpack-plugin": "1.6.4", + "postcss": "7.0.29", + "prop-types": "15.7.2", + "prop-types-exact": "1.2.0", + "react-is": "16.13.1", + "react-refresh": "0.8.2", + "resolve-url-loader": "3.1.1", + "sass-loader": "8.0.2", + "schema-utils": "2.6.6", + "style-loader": "1.2.1", + "styled-jsx": "3.2.5", + "use-subscription": "1.4.1", + "watchpack": "2.0.0-beta.13", + "web-vitals": "0.2.1", + "webpack": "4.43.0", + "webpack-sources": "1.4.3" + } + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + } + } + } + }, + "node-releases": { + "version": "1.1.55", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.55.tgz", + "integrity": "sha512-H3R3YR/8TjT5WPin/wOoHOUPHgvj8leuU/Keta/rwelEQN9pA/S2Dx8/se4pZ2LBxSd0nAGzsNzhqwa77v7F1w==" + }, + "normalize-html-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz", + "integrity": "sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "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", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "requires": { + "find-up": "^2.1.0" + } + }, + "platform": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.3.tgz", + "integrity": "sha1-ZGx3ARiZhwtqCQPnXpl+jlHadGE=" + }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "7.0.29", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.29.tgz", + "integrity": "sha512-ba0ApvR3LxGvRMMiUa9n0WR4HjzcYm7tS+ht4/2Nd0NLtHpPIH77fuB9Xh1/yJVz9O/E/95Y/dn8ygWsyffXtw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "postcss-calc": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "requires": { + "postcss": "^7.0.26" + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "prop-types-exact": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz", + "integrity": "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==", + "requires": { + "has": "^1.0.3", + "object.assign": "^4.1.0", + "reflect.ownkeys": "^0.2.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dom": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-refresh": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.2.tgz", + "integrity": "sha512-n8GXxo3DwM2KtFEL69DAVhGc4A1THn2qjmfvSo3nze0NLCoPbywazeJPqdp0RdSGLmyhQzeyA+XPXOobbYlkzg==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "reflect.ownkeys": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", + "integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=" + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regex-parser": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz", + "integrity": "sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA==" + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==" + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "resolve-url-loader": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz", + "integrity": "sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ==", + "requires": { + "adjust-sourcemap-loader": "2.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.21", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "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" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + } + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "requires": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=" + } + } + }, + "rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=" + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "^1.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "sass-loader": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", + "semver": "^6.3.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" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "requires": { + "kind-of": "^6.0.2" + } + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "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-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "requires": { + "type-fest": "^0.7.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "style-loader": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz", + "integrity": "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.6" + } + }, + "styled-jsx": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-3.2.5.tgz", + "integrity": "sha512-prEahkYwQHomUljJzXzrFnBmQrSMtWOBbXn8QeEkpfFkqMZQGshxzzp4H8ebBIsbVlHF/3+GSXMnmK/fp7qVYQ==", + "requires": { + "@babel/types": "7.8.3", + "babel-plugin-syntax-jsx": "6.18.0", + "convert-source-map": "1.7.0", + "loader-utils": "1.2.3", + "source-map": "0.7.3", + "string-hash": "1.1.3", + "stylis": "3.5.4", + "stylis-rule-sheet": "0.0.10" + }, + "dependencies": { + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", + "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "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" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "stylis": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", + "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==" + }, + "stylis-rule-sheet": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz", + "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "terser": { + "version": "4.6.13", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.13.tgz", + "integrity": "sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "requires": { + "figgy-pudding": "^3.5.1" + } + } + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "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" + } + }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" + }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==" + }, + "tslib": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.2.tgz", + "integrity": "sha512-tTSkux6IGPnUGUd1XAZHcpu85MOkIl5zX49pO+jfsie3eP0B6pyhOlLXm3cAC6T7s+euSDDUUV+Acop5WmtkVg==" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "use-subscription": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.4.1.tgz", + "integrity": "sha512-7+IIwDG/4JICrWHL/Q/ZPK5yozEnvRm6vHImu0LKwQlmWGKeiF7mbAenLlK/cTNXrTtXHU/SFASQHzB6+oSJMQ==", + "requires": { + "object-assign": "^4.1.1" + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "watchpack": { + "version": "2.0.0-beta.13", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.0.0-beta.13.tgz", + "integrity": "sha512-ZEFq2mx/k5qgQwgi6NOm+2ImICb8ngAkA/rZ6oyXZ7SgPn3pncf+nfhYTCrs3lmHwOxnPtGLTOuFLfpSMh1VMA==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "web-vitals": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-0.2.1.tgz", + "integrity": "sha512-2pdRlp6gJpOCg0oMMqwFF0axjk5D9WInc09RSYtqFgPXQ15+YKNQ7YnBBEqAL5jvmfH9WvoXDMb8DHwux7pIew==" + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "webpack": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", + "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.1", + "webpack-sources": "^1.4.1" + }, + "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" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "watchpack": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", + "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", + "requires": { + "chokidar": "^2.1.8", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + } + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "requires": { + "errno": "~0.1.7" + } + }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "requires": { + "microevent.ts": "~0.1.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "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==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..220e41b --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "next-chop", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "dev": "next", + "build": "next build", + "start": "next start" + }, + "author": "", + "license": "ISC", + "dependencies": { + "next": "^9.4.0", + "react": "^16.13.1", + "react-dom": "^16.13.1" + }, + "devDependencies": { + "@types/node": "^13.13.5", + "@types/react": "^16.9.35", + "typescript": "^3.8.3" + } +} diff --git a/pages/index.tsx b/pages/index.tsx new file mode 100644 index 0000000..144a0cf --- /dev/null +++ b/pages/index.tsx @@ -0,0 +1,9 @@ +const Index = () => { + return ( +
+

Index Page

+
+ ); +}; + +export default Index; diff --git a/public/favicon/android-chrome-192x192.png b/public/favicon/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..87fe049979b32807fa1a373c2eb15b1d0f52640c GIT binary patch literal 26080 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 literal 0 HcmV?d00001 diff --git a/public/favicon/android-chrome-512x512.png b/public/favicon/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..285a090968028597746af60f4d4665819877c0f0 GIT binary patch literal 111921 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%0Amj$vs9SWX>We+ENz_Lez=!;@K+D(TA`mo@d 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 b?pY5No|fqL;QQhZKp(2FH56;*EyDjFPLS-V literal 0 HcmV?d00001 diff --git a/public/favicon/apple-touch-icon.png b/public/favicon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ca64d3e62e823d7fc14a9f30f3bb74e67e6416ed GIT binary patch literal 23471 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 Az5oCK literal 0 HcmV?d00001 diff --git a/public/favicon/favicon-32x32.png b/public/favicon/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..83cbbc9119a298ccb7adb3ec9197f61b6d75abc3 GIT binary patch literal 1971 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 a{hzK3-~IXd{?AW0-am8tc?ABuM&REw>Nx`d literal 0 HcmV?d00001 diff --git a/public/favicon/site.webmanifest b/public/favicon/site.webmanifest new file mode 100644 index 0000000..45dc8a2 --- /dev/null +++ b/public/favicon/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/public/logo.svg b/public/logo.svg new file mode 100644 index 0000000..9cd059e --- /dev/null +++ b/public/logo.svg @@ -0,0 +1 @@ +Artboard 1 \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..48ca14a --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "strict": false, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve" + }, + "exclude": [ + "node_modules" + ], + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx" + ] +} From 5690d3e776c35051246f1361d304686912807c16 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Tue, 12 May 2020 09:08:15 -0500 Subject: [PATCH 02/45] 2. Add Styled Components --- .babelrc | 4 ++ package-lock.json | 94 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 4 +- pages/_document.tsx | 30 +++++++++++++++ pages/index.tsx | 10 ++++- 5 files changed, 140 insertions(+), 2 deletions(-) create mode 100644 .babelrc create mode 100644 pages/_document.tsx diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..854cb73 --- /dev/null +++ b/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["next/babel"], + "plugins": [["styled-components", { "ssr": true }]] +} diff --git a/package-lock.json b/package-lock.json index f74744f..3812931 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1041,6 +1041,29 @@ "to-fast-properties": "^2.0.0" } }, + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + }, + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, "@next/react-dev-overlay": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-9.4.0.tgz", @@ -1582,6 +1605,17 @@ "object.assign": "^4.1.0" } }, + "babel-plugin-styled-components": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.7.tgz", + "integrity": "sha512-MBMHGcIA22996n9hZRf/UJLVVgkEOITuR2SvjHLb5dSTUyR4ZRGn+ngITapes36FI3WLxZHfRhkA1ffHxihOrg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-module-imports": "^7.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "lodash": "^4.17.11" + } + }, "babel-plugin-syntax-jsx": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", @@ -1924,6 +1958,11 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, + "camelize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -2278,6 +2317,11 @@ "urix": "^0.1.0" } }, + "css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" + }, "css-color-names": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", @@ -2364,6 +2408,16 @@ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" }, + "css-to-react-native": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", + "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", + "requires": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, "css-tree": { "version": "1.0.0-alpha.37", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", @@ -3404,6 +3458,14 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, "hsl-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", @@ -5642,6 +5704,11 @@ "kind-of": "^6.0.2" } }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "shell-quote": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", @@ -5983,6 +6050,33 @@ "schema-utils": "^2.6.6" } }, + "styled-components": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.1.0.tgz", + "integrity": "sha512-0Qs2wEkFBXHFlysz6CV831VG6HedcrFUwChjnWylNivsx14MtmqQsohi21rMHZxzuTba063dEyoe/SR6VGJI7Q==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^0.8.8", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + }, + "dependencies": { + "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" + } + } + } + }, "styled-jsx": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-3.2.5.tgz", diff --git a/package.json b/package.json index 220e41b..8ae5fdb 100644 --- a/package.json +++ b/package.json @@ -13,11 +13,13 @@ "dependencies": { "next": "^9.4.0", "react": "^16.13.1", - "react-dom": "^16.13.1" + "react-dom": "^16.13.1", + "styled-components": "^5.1.0" }, "devDependencies": { "@types/node": "^13.13.5", "@types/react": "^16.9.35", + "babel-plugin-styled-components": "^1.10.7", "typescript": "^3.8.3" } } diff --git a/pages/_document.tsx b/pages/_document.tsx new file mode 100644 index 0000000..db6dd2f --- /dev/null +++ b/pages/_document.tsx @@ -0,0 +1,30 @@ +import Document from 'next/document'; +import { ServerStyleSheet } from 'styled-components'; + +export default class MyDocument extends Document { + static async getInitialProps(ctx) { + const sheet = new ServerStyleSheet(); + const originalRenderPage = ctx.renderPage; + + try { + ctx.renderPage = () => + originalRenderPage({ + enhanceApp: (App) => (props) => + sheet.collectStyles(), + }); + + const initialProps = await Document.getInitialProps(ctx); + return { + ...initialProps, + styles: ( + <> + {initialProps.styles} + {sheet.getStyleElement()} + + ), + }; + } finally { + sheet.seal(); + } + } +} diff --git a/pages/index.tsx b/pages/index.tsx index 144a0cf..dab604f 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -1,7 +1,15 @@ +import styled from 'styled-components'; + +const StyledHeader = styled.h1` + font-size: 2em; + text-align: left; + padding: 16px 16px; +`; + const Index = () => { return (
-

Index Page

+ Index Page
); }; From ca10a6d23cdd84b2a31c4cbdd01a4ac90d606d41 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Tue, 12 May 2020 09:27:15 -0500 Subject: [PATCH 03/45] 3. Add Ant Design --- package-lock.json | 581 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + pages/_app.tsx | 11 + 3 files changed, 593 insertions(+) create mode 100644 pages/_app.tsx diff --git a/package-lock.json b/package-lock.json index 3812931..b02bb6e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,6 +51,47 @@ "cross-fetch": "3.0.4" } }, + "@ant-design/colors": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-3.2.2.tgz", + "integrity": "sha512-YKgNbG2dlzqMhA9NtI3/pbY16m3Yl/EeWBRa+lB1X1YaYxHrxNexiQYCLTWO/uDvAjLFMEDU+zR901waBtMtjQ==", + "requires": { + "tinycolor2": "^1.4.1" + } + }, + "@ant-design/css-animation": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@ant-design/css-animation/-/css-animation-1.7.2.tgz", + "integrity": "sha512-bvVOe7A+r7lws58B7r+fgnQDK90cV45AXuvGx6i5CCSX1W/M3AJnHsNggDANBxEtWdNdFWcDd5LorB+RdSIlBw==" + }, + "@ant-design/icons": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.1.0.tgz", + "integrity": "sha512-R1aIPJboGq4nVYwW7s0v/V2g6yiY27Kec5ldfK3mWHskw7bihPOKwxkHbITuSJcVNJsSvA6LNMlKZoY1u8DIKQ==", + "requires": { + "@ant-design/colors": "^3.1.0", + "@ant-design/icons-svg": "^4.0.0", + "classnames": "^2.2.6", + "insert-css": "^2.0.0", + "rc-util": "^4.9.0" + } + }, + "@ant-design/icons-svg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.1.0.tgz", + "integrity": "sha512-Fi03PfuUqRs76aI3UWYpP864lkrfPo0hluwGqh7NJdLhvH4iRDc3jbJqZIvRDLHKbXrvAfPPV3+zjUccfFvWOQ==" + }, + "@ant-design/react-slick": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.25.6.tgz", + "integrity": "sha512-2rsC0yaccew3V9HxwmIp4PAsWgickH1B05qoimkVZ+A7JQgj5Gowje5V+/hMtyjlpxAhZZQm9WR2oeyNVI0Oyw==", + "requires": { + "classnames": "^2.2.5", + "json2mq": "^0.2.0", + "lodash": "^4.17.15", + "resize-observer-polyfill": "^1.5.0" + } + }, "@babel/code-frame": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", @@ -1344,6 +1385,14 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" }, + "add-dom-event-listener": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz", + "integrity": "sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==", + "requires": { + "object-assign": "4.x" + } + }, "adjust-sourcemap-loader": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", @@ -1448,6 +1497,57 @@ "color-convert": "^1.9.0" } }, + "antd": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/antd/-/antd-4.2.2.tgz", + "integrity": "sha512-X+b6LfcuF+jR1VyGahvnYtER9BmjrKXW9xCCmHkVrMK5G84eeptbzxy0N3s58dWcpvyUJNmzTrf/EOsUtR05kg==", + "requires": { + "@ant-design/css-animation": "^1.7.2", + "@ant-design/icons": "^4.1.0", + "@ant-design/react-slick": "~0.25.5", + "array-tree-filter": "^2.1.0", + "classnames": "~2.2.6", + "copy-to-clipboard": "^3.2.0", + "lodash": "^4.17.13", + "moment": "~2.25.3", + "omit.js": "^1.0.2", + "prop-types": "^15.7.2", + "raf": "^3.4.1", + "rc-animate": "~3.0.0", + "rc-cascader": "~1.0.0", + "rc-checkbox": "~2.2.0", + "rc-collapse": "~2.0.0", + "rc-dialog": "~7.7.0", + "rc-drawer": "~3.2.0", + "rc-dropdown": "~3.0.0", + "rc-field-form": "~1.2.0", + "rc-input-number": "~4.6.1", + "rc-mentions": "~1.1.0", + "rc-menu": "~8.1.0", + "rc-notification": "~4.3.0", + "rc-pagination": "~2.2.0", + "rc-picker": "~1.4.0", + "rc-progress": "~2.5.0", + "rc-rate": "~2.6.0", + "rc-resize-observer": "^0.2.0", + "rc-select": "~10.3.0", + "rc-slider": "~9.2.3", + "rc-steps": "~3.6.0", + "rc-switch": "~2.0.0", + "rc-table": "~7.5.3", + "rc-tabs": "~10.1.1", + "rc-tooltip": "~4.0.2", + "rc-tree": "~3.2.0", + "rc-tree-select": "~3.1.0", + "rc-trigger": "~4.1.0", + "rc-upload": "~3.0.4", + "rc-util": "^4.20.0", + "rc-virtual-list": "^1.1.0", + "resize-observer-polyfill": "^1.5.1", + "scroll-into-view-if-needed": "^2.2.20", + "warning": "~4.0.3" + } + }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -1500,6 +1600,11 @@ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, + "array-tree-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", + "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" + }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -1540,6 +1645,11 @@ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" }, + "async-validator": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.3.0.tgz", + "integrity": "sha512-cAHGD9EL8aCqWXjnb44q94MWiDFzUo1tMhvLb2WzcpWqGiKugsjWG9cvl+jPgkPca7asNbsBU3fa0cwkI/P+Xg==" + }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -1635,6 +1745,22 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -2154,6 +2280,11 @@ "arity-n": "^1.0.4" } }, + "compute-scroll-into-view": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.13.tgz", + "integrity": "sha512-o+w9w7A98aAFi/GjK8cxSV+CdASuPa2rR5UWs3+yHkJzWqaKoBEufFNWYaXInCSmUfDCVhesG+v9MTWqOjsxFg==" + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2206,6 +2337,19 @@ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, + "copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "requires": { + "toggle-selection": "^1.0.6" + } + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, "core-js-compat": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", @@ -2649,6 +2793,11 @@ } } }, + "dom-align": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.11.1.tgz", + "integrity": "sha512-hN42DmUgtweBx0iBjDLO4WtKOMcK8yBmPx/fgdsgQadLuzPu/8co3oLdK5yMmeM/vnUd3yDyV6qV8/NzxBexQg==" + }, "dom-serializer": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", @@ -3345,6 +3494,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -3565,6 +3719,11 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "insert-css": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/insert-css/-/insert-css-2.0.0.tgz", + "integrity": "sha1-610Ql7dUL0x56jBg067gfQU4gPQ=" + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -3818,6 +3977,14 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "json2mq": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", + "integrity": "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=", + "requires": { + "string-convert": "^0.2.0" + } + }, "json5": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", @@ -4061,6 +4228,16 @@ } } }, + "mini-store": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/mini-store/-/mini-store-3.0.3.tgz", + "integrity": "sha512-EHpcxqITc3UIEC9iR8DCWzKIFpz8IgIMw+dNKJ8tJ7mKSHhPfa3xDLFyh1fv0NeA89v2Vb7nIwd+3UGdLZUZ7A==", + "requires": { + "hoist-non-react-statics": "^3.3.2", + "prop-types": "^15.6.0", + "shallowequal": "^1.0.2" + } + }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -4160,6 +4337,11 @@ "minimist": "^1.2.5" } }, + "moment": { + "version": "2.25.3", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.25.3.tgz", + "integrity": "sha512-PuYv0PHxZvzc15Sp8ybUCoQ+xpyPWvjOuK72a5ovzp2LI32rJXOiIfyoFoYvG3s6EwwrdkMyWuRiEHSZRLJNdg==" + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -4455,6 +4637,14 @@ "has": "^1.0.3" } }, + "omit.js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/omit.js/-/omit.js-1.0.2.tgz", + "integrity": "sha512-/QPc6G2NS+8d4L/cQhbk6Yit1WTB6Us2g84A7A/1+w9d/eRGHyEqC5kkQtHVoHZ5NFWGG7tUGgrhVZwgZanKrQ==", + "requires": { + "babel-runtime": "^6.23.0" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4576,6 +4766,11 @@ "sha.js": "^2.4.8" } }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, "picomatch": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", @@ -5281,6 +5476,14 @@ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, + "raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "requires": { + "performance-now": "^2.1.0" + } + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -5298,6 +5501,343 @@ "safe-buffer": "^5.1.0" } }, + "rc-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-3.0.0.tgz", + "integrity": "sha512-/T/4LOlKJLFe8EwsORuc3pFWOJ8caUpj2vtKIHWea4PhakoleM7KDQsx0n1WDQENIeSfrP9P1FowVxAdvhjsvw==", + "requires": { + "classnames": "2.x", + "dom-align": "^1.7.0", + "rc-util": "^4.12.0", + "resize-observer-polyfill": "^1.5.1" + } + }, + "rc-animate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rc-animate/-/rc-animate-3.0.0.tgz", + "integrity": "sha512-+ANeyCei4lWSJHWTcocywdYAy6lpRdBva/7Fs3nBBiAngW/W+Gmx+gQEcsmcgQBqziWUYnR91Bk12ltR3GBHPA==", + "requires": { + "@ant-design/css-animation": "^1.7.2", + "classnames": "^2.2.6", + "raf": "^3.4.0", + "rc-util": "^4.15.3" + } + }, + "rc-cascader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-1.0.1.tgz", + "integrity": "sha512-3mk33+YKJBP1XSrTYbdVLuCC73rUDq5STNALhvua5i8vyIgIxtb5fSl96JdWWq1Oj8tIBoHnCgoEoOYnIXkthQ==", + "requires": { + "array-tree-filter": "^2.1.0", + "rc-trigger": "^4.0.0", + "rc-util": "^4.0.4", + "warning": "^4.0.1" + } + }, + "rc-checkbox": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.2.0.tgz", + "integrity": "sha512-Wjh/nutLA8iIPTT1P9I9KOqlUblVe+CWa3SxMibFySnLyYbMxKNtPhwNcbADPOqzNU0AsCntTduNeJg1n0B5fg==", + "requires": { + "babel-runtime": "^6.23.0", + "classnames": "2.x" + } + }, + "rc-collapse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-2.0.0.tgz", + "integrity": "sha512-R5+Ge1uzwK9G1wZPRPhqQsed4FXTDmU0BKzsqfNBtZdk/wd+yey8ZutmJmSozYc5hQwjPkCvJHV7gOIRZKIlJg==", + "requires": { + "@ant-design/css-animation": "^1.7.2", + "classnames": "2.x", + "rc-animate": "3.x", + "react-is": "^16.7.0", + "shallowequal": "^1.1.0" + } + }, + "rc-dialog": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-7.7.0.tgz", + "integrity": "sha512-WVLnbpP+9YCaDjFpX03PdGHNtEzUmVPfc047/XHIBxrI2n9gcog5PhHHJzewi8ZJrFj5sWi+1OWakf7vwaCfJg==", + "requires": { + "babel-runtime": "6.x", + "rc-animate": "3.x", + "rc-util": "^4.16.1" + } + }, + "rc-drawer": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-3.2.0.tgz", + "integrity": "sha512-ekt5K2pHIQihByupUooJ7kVmpmAyHrGy2T9h+AlPwhIL9xemK+RVRq3RbOv1V03BqNPCDx4sWV5sWiAhGMUctw==", + "requires": { + "classnames": "^2.2.6", + "rc-util": "^4.16.1" + } + }, + "rc-dropdown": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-3.0.2.tgz", + "integrity": "sha512-T3XP4qL6xmkxn8z52YF2SEPoMHPpBiLf0Kty3mjNdRSyKnlu+0F+3bhDHf6gO1msmqrjURaz8sMNAFDcoFHHnw==", + "requires": { + "babel-runtime": "^6.26.0", + "classnames": "^2.2.6", + "rc-trigger": "^4.0.0" + } + }, + "rc-field-form": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.2.4.tgz", + "integrity": "sha512-k3RY/yVfCusvPRWx4O+vAGY5bgm1FS6aZghnToqwMIGBsdsxB32Asv21reJKr4LKZ36Ag64rASfiSeLgdUCR+A==", + "requires": { + "@babel/runtime": "^7.8.4", + "async-validator": "^3.0.3", + "rc-util": "^4.20.3" + } + }, + "rc-hammerjs": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/rc-hammerjs/-/rc-hammerjs-0.6.9.tgz", + "integrity": "sha512-4llgWO3RgLyVbEqUdGsDfzUDqklRlQW5VEhE3x35IvhV+w//VPRG34SBavK3D2mD/UaLKaohgU41V4agiftC8g==", + "requires": { + "babel-runtime": "6.x", + "hammerjs": "^2.0.8", + "prop-types": "^15.5.9" + } + }, + "rc-input-number": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-4.6.1.tgz", + "integrity": "sha512-9PhGJia3lZTdkfrILmLf8AAUY5KqFSJxQ6ZccCFfhrA2T4ZPV7cxc5+iPCuXx0FQ/CPcLpEN7D3l32w+qdpp8g==", + "requires": { + "babel-runtime": "6.x", + "classnames": "^2.2.0", + "rc-util": "^4.5.1" + } + }, + "rc-mentions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.1.0.tgz", + "integrity": "sha512-uOVMiQ5Jxfo3mbpOZsZt20Alid0268lX9eBR2I/chly0qhNbmSB71iLOHGkbL7zuHd50GF/eSr9fXJJQKUYG1Q==", + "requires": { + "classnames": "^2.2.6", + "rc-menu": "^8.0.1", + "rc-trigger": "^4.0.0", + "rc-util": "^4.6.0" + } + }, + "rc-menu": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-8.1.0.tgz", + "integrity": "sha512-dTVlwf1klEeIr+74Bk0Uovbw3oidXlHBLfA0YhDIgKcXeDIfk18a66200GMWYAFajJPTGaRaqnyVVRCslOHuDg==", + "requires": { + "classnames": "2.x", + "mini-store": "^3.0.1", + "rc-animate": "^3.0.0", + "rc-trigger": "^4.0.0", + "rc-util": "^4.13.0", + "resize-observer-polyfill": "^1.5.0", + "scroll-into-view-if-needed": "^2.2.20", + "shallowequal": "^1.1.0" + } + }, + "rc-notification": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-4.3.0.tgz", + "integrity": "sha512-7l7SRcp9cLNuW8OJuyIp88vLw+MLBehCbagRMrt3zXOeHdoTBtM4vtBd+JO4ZTb55Xk+omE9m1+3q2Jjowi/rA==", + "requires": { + "classnames": "2.x", + "rc-animate": "3.x", + "rc-util": "^4.0.4" + } + }, + "rc-pagination": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-2.2.1.tgz", + "integrity": "sha512-mlYvzrTn98dfgvpQ0vzIPz6WX60gkK9DltyjoibIFSmPr6gTFpZCibtzRNkqGi89hozB1yU7iHcuOLchP91rWw==", + "requires": { + "classnames": "^2.2.1" + } + }, + "rc-picker": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-1.4.14.tgz", + "integrity": "sha512-e65IQxDhNxIEQHX2Pm/hu5eLdqADObnifOxlatayJxAHOGz9R0ZirSmHFZf64l2RXAVZ/H9CgefXd7tME7j2Bg==", + "requires": { + "classnames": "^2.2.1", + "moment": "^2.24.0", + "rc-trigger": "^4.0.0", + "rc-util": "^4.17.0", + "shallowequal": "^1.1.0" + } + }, + "rc-progress": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-2.5.3.tgz", + "integrity": "sha512-K2fa4CnqGehLZoMrdmBeZ86ONSTVcdk5FlqetbwJ3R/+42XfqhwQVOjWp2MH4P7XSQOMAGcNOy1SFfCP3415sg==", + "requires": { + "babel-runtime": "6.x", + "prop-types": "^15.5.8" + } + }, + "rc-rate": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.6.0.tgz", + "integrity": "sha512-g6gXZDQfd+kLK7AmoPPWjZ5nlM6ckwQy4RU1xcaFL8AEDx10qbC6Vi6oEhruBbYiPlbAacYcsMA5EbFXhD5x8A==", + "requires": { + "classnames": "^2.2.5", + "rc-util": "^4.20.1" + } + }, + "rc-resize-observer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-0.2.1.tgz", + "integrity": "sha512-GENTRkL3lq05ilrjTxPpHUPrKTC9D7XqUGesSXgi/GyO4j/jKIjLPn7zuZOcJ5QmN5QGRe24IaVWPZHQPE6vLw==", + "requires": { + "classnames": "^2.2.1", + "rc-util": "^4.14.0", + "resize-observer-polyfill": "^1.5.1" + } + }, + "rc-select": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-10.3.2.tgz", + "integrity": "sha512-RKg5OwwclJbYwru7SDC5JeBIX3Nnhis9JwJaSZES3bw3tel6fzlHqTDeyY75bst7c0mF6TqcDvU6TC1Lphu/8A==", + "requires": { + "classnames": "2.x", + "rc-animate": "^3.0.0", + "rc-trigger": "^4.0.0", + "rc-util": "^4.20.0", + "rc-virtual-list": "^1.1.2", + "warning": "^4.0.3" + } + }, + "rc-slider": { + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-9.2.4.tgz", + "integrity": "sha512-wSr7vz+WtzzGqsGU2rTQ4mmLz9fkuIDMPYMYm8ygYFvxQ2Rh4uRhOWHYI0R8krNK5k1bGycckYxmQqUIvLAh3w==", + "requires": { + "babel-runtime": "6.x", + "classnames": "^2.2.5", + "rc-tooltip": "^4.0.0", + "rc-util": "^4.0.4", + "shallowequal": "^1.1.0", + "warning": "^4.0.3" + } + }, + "rc-steps": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-3.6.0.tgz", + "integrity": "sha512-UH0ggF5UB4QBoAXeJH6JUSnPVg3H9z3o3nyf6yZ5QYXcsFn4tIJyjtnE9h+yhQIBQDVzwNY1r5yhW2PYrzO1tw==", + "requires": { + "classnames": "^2.2.3", + "lodash": "^4.17.5" + } + }, + "rc-switch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-2.0.0.tgz", + "integrity": "sha512-x4ypcYbFh5uQY26GdAl7xvwbdVYp4IRZp63rguH41Jd697y63ESn2hlgo6CQp9AyAAu4puwQwNqK2wFBezjicg==", + "requires": { + "classnames": "^2.2.1" + } + }, + "rc-table": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.5.9.tgz", + "integrity": "sha512-DxsTnHqASWWLC6c1wngPkmL/wGx3g1FbxY1oku4L7wHYGmH2tBGWL5nCjJW1hJZoof3ll9bAnrBg3hVNhYcirQ==", + "requires": { + "classnames": "^2.2.5", + "raf": "^3.4.1", + "rc-resize-observer": "^0.2.0", + "rc-util": "^4.20.1", + "shallowequal": "^1.1.0" + } + }, + "rc-tabs": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-10.1.1.tgz", + "integrity": "sha512-dOFeaYil3d6zV3ZtGZWfRf7zwyqUQ48cl67/Y/03SsBWEdYgfZzlgjfHqmUT+V7L7CvhQ5lIQyYpj4EthkgKCg==", + "requires": { + "classnames": "2.x", + "lodash": "^4.17.5", + "rc-hammerjs": "~0.6.0", + "resize-observer-polyfill": "^1.5.1", + "warning": "^4.0.3" + } + }, + "rc-tooltip": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-4.0.3.tgz", + "integrity": "sha512-HNyBh9/fPdds0DXja8JQX0XTIHmZapB3lLzbdn74aNSxXG1KUkt+GK4X1aOTRY5X9mqm4uUKdeFrn7j273H8gw==", + "requires": { + "rc-trigger": "^4.0.0" + } + }, + "rc-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-3.2.2.tgz", + "integrity": "sha512-eF4vJJpMnTmPufxplZ2xg+P3ogfFoUfZkZXV2qasC6JSTf+13jB7pA1xXjCwJ86V+7PqEGUsE/mljLusng0XEA==", + "requires": { + "classnames": "2.x", + "rc-animate": "^3.0.0", + "rc-util": "^4.11.0", + "rc-virtual-list": "^1.1.0" + } + }, + "rc-tree-select": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-3.1.3.tgz", + "integrity": "sha512-VQDr+qLCCJ9V/4ewnp3crMT2N7iJV58V0uWVA3nGJxVuxhSj8TPHFZLnyMh6vaNrQsrY6eBp/x1y6nEJBjnVQg==", + "requires": { + "classnames": "2.x", + "rc-select": "^10.1.0", + "rc-tree": "^3.1.0", + "rc-util": "^4.17.0" + } + }, + "rc-trigger": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-4.1.0.tgz", + "integrity": "sha512-EyQjO6aHDAPRvJeyPmg/yVL/8Bp7oA6Lf+4Ay2OyOwhZLzHHN8m+F2XrVWKpjg04eBXbuGBNiucIqv1d/ddE3w==", + "requires": { + "classnames": "^2.2.6", + "raf": "^3.4.1", + "rc-align": "^3.0.0-rc.0", + "rc-animate": "^3.0.0", + "rc-util": "^4.20.0" + } + }, + "rc-upload": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-3.0.4.tgz", + "integrity": "sha512-dTCvj1iHxjHG0qo5UyN2ZmtueG9GG3xrOhOwnjsehaoOvl0TOjLbHkUIPPqLZk+wHb57Ue4KB7c3+IMgkDoBvw==", + "requires": { + "babel-runtime": "6.x", + "classnames": "^2.2.5" + } + }, + "rc-util": { + "version": "4.20.5", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.20.5.tgz", + "integrity": "sha512-f67s4Dt1quBYhrVPq5QMKmK3eS2hN1NNIAyhaiG0HmvqiGYAXMQ7SP2AlGqv750vnzhJs38JklbkWT1/wjhFPg==", + "requires": { + "add-dom-event-listener": "^1.1.0", + "prop-types": "^15.5.10", + "react-is": "^16.12.0", + "react-lifecycles-compat": "^3.0.4", + "shallowequal": "^1.1.0" + } + }, + "rc-virtual-list": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-1.1.2.tgz", + "integrity": "sha512-+WwxrtmBta7vcPCty7MtgilBmbxSGwN28Y8o+MG3GkHZccV0tXT+PLnAB+5WOjhhH10iFq+pzviRcXgcZ1x4OA==", + "requires": { + "classnames": "^2.2.6", + "raf": "^3.4.1", + "rc-util": "^4.8.0" + } + }, "react": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", @@ -5324,6 +5864,11 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, "react-refresh": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.2.tgz", @@ -5447,6 +5992,11 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", @@ -5651,6 +6201,14 @@ "ajv-keywords": "^3.4.1" } }, + "scroll-into-view-if-needed": { + "version": "2.2.24", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.24.tgz", + "integrity": "sha512-vsC6SzyIZUyJG8o4nbUDCiIwsPdH6W/FVmjT2avR2hp/yzS53JjGmg/bKD20TkoNajbu5dAQN4xR7yes4qhwtQ==", + "requires": { + "compute-scroll-into-view": "^1.0.13" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -5982,6 +6540,11 @@ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, + "string-convert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", + "integrity": "sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c=" + }, "string-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", @@ -6352,6 +6915,11 @@ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, + "tinycolor2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", + "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" + }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -6400,6 +6968,11 @@ "repeat-string": "^1.6.1" } }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" + }, "tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", @@ -6639,6 +7212,14 @@ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + }, "watchpack": { "version": "2.0.0-beta.13", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.0.0-beta.13.tgz", diff --git a/package.json b/package.json index 8ae5fdb..3f59eba 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "author": "", "license": "ISC", "dependencies": { + "antd": "^4.2.2", "next": "^9.4.0", "react": "^16.13.1", "react-dom": "^16.13.1", diff --git a/pages/_app.tsx b/pages/_app.tsx new file mode 100644 index 0000000..472706c --- /dev/null +++ b/pages/_app.tsx @@ -0,0 +1,11 @@ +import 'antd/dist/antd.css'; +import App from 'next/app'; + +class MyApp extends App { + render() { + const { Component, pageProps } = this.props; + return ; + } +} + +export default MyApp; From 1396d998c2a35e9ec5572373eb4ba8ad170214ef Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Tue, 12 May 2020 09:44:14 -0500 Subject: [PATCH 04/45] 4. Add Main Layout --- components/layout/MainLayout.tsx | 10 ++++++++++ pages/index.tsx | 13 ++++++++----- utils/theme.ts | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 5 deletions(-) create mode 100644 components/layout/MainLayout.tsx create mode 100644 utils/theme.ts diff --git a/components/layout/MainLayout.tsx b/components/layout/MainLayout.tsx new file mode 100644 index 0000000..71112ad --- /dev/null +++ b/components/layout/MainLayout.tsx @@ -0,0 +1,10 @@ +import { ThemeProvider } from 'styled-components'; +import { Component } from 'react'; +import { theme } from '../../utils/theme'; + +export class MainLayout extends Component { + render() { + const { children } = this.props; + return {children}; + } +} diff --git a/pages/index.tsx b/pages/index.tsx index dab604f..f44de33 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -1,16 +1,19 @@ import styled from 'styled-components'; +import { MainLayout } from '../components/layout/MainLayout'; const StyledHeader = styled.h1` - font-size: 2em; - text-align: left; - padding: 16px 16px; + ${({ theme }) => ` + font-size: 2em; + text-align: left; + padding: ${theme['padding-small']} ${theme['padding-small']}; + `} `; const Index = () => { return ( -
+ Index Page -
+ ); }; diff --git a/utils/theme.ts b/utils/theme.ts new file mode 100644 index 0000000..efccf92 --- /dev/null +++ b/utils/theme.ts @@ -0,0 +1,32 @@ +const padding_zero = `0em`; +const padding_small = `16px`; +const margin_zero = `0em`; +const margin_small = `16px`; +const font_size_xs = `0.75em`; +const font_size_sm = `1.00em`; +const font_size_md = `1.25em`; +const font_size_lg = `1.50em`; +const font_size_xl = `2.00em`; + +const heart_color = `#eb2f96`; +const border_color = `#e6e6e6`; +const header_color = `#ffffff`; +const header_border_color = header_color; +const border_width = `2px`; + +export const theme = { + 'font-size-xs': font_size_xs, + 'font-size-sm': font_size_sm, + 'font-size-md': font_size_md, + 'font-size-lg': font_size_lg, + 'font-size-xl': font_size_xl, + 'padding-zero': padding_zero, + 'padding-small': padding_small, + 'margin-zero': margin_zero, + 'margin-small': margin_small, + 'heart-color': heart_color, + 'border-color': border_color, + 'border-width': border_width, + 'header-color': header_color, + 'header-border-color': header_border_color, +}; From 4b801037dd9689a0f44b4110e363bed3cbaea80c Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Wed, 13 May 2020 07:50:38 -0500 Subject: [PATCH 05/45] 5. Add Global Style --- components/layout/MainLayout.tsx | 8 +++++++- utils/globalStyle.ts | 28 ++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 utils/globalStyle.ts diff --git a/components/layout/MainLayout.tsx b/components/layout/MainLayout.tsx index 71112ad..b2a7c58 100644 --- a/components/layout/MainLayout.tsx +++ b/components/layout/MainLayout.tsx @@ -1,10 +1,16 @@ import { ThemeProvider } from 'styled-components'; import { Component } from 'react'; import { theme } from '../../utils/theme'; +import { GlobalStyle } from '../../utils/globalStyle'; export class MainLayout extends Component { render() { const { children } = this.props; - return {children}; + return ( + + + {children} + + ); } } diff --git a/utils/globalStyle.ts b/utils/globalStyle.ts new file mode 100644 index 0000000..e25fb7a --- /dev/null +++ b/utils/globalStyle.ts @@ -0,0 +1,28 @@ +import { createGlobalStyle } from 'styled-components'; + +export const heading = (size) => { + return ` + text-align: center; + font-weight: bold; + line-height: 1em; + font-size: ${size}; + `; +}; + +export const GlobalStyle = createGlobalStyle` + ${({ theme }) => ` + h1 { + ${heading(theme['font-size-xl'])} + } + h2 { + ${heading(theme['font-size-lg'])} + } + h3 { + ${heading(theme['font-size-md'])} + } + h4 { + ${heading(theme['font-size-sm'])} + } + + `} +`; From fe50a90d24e04933d284aac0adbab5e7a79624d2 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Wed, 13 May 2020 08:07:43 -0500 Subject: [PATCH 06/45] 6. Add MainHead Component --- components/layout/MainLayout.tsx | 56 ++++++++++++++++++++++++++++++-- pages/index.tsx | 2 +- 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/components/layout/MainLayout.tsx b/components/layout/MainLayout.tsx index b2a7c58..161c893 100644 --- a/components/layout/MainLayout.tsx +++ b/components/layout/MainLayout.tsx @@ -1,13 +1,63 @@ import { ThemeProvider } from 'styled-components'; -import { Component } from 'react'; +import { Component, ReactNode } from 'react'; import { theme } from '../../utils/theme'; import { GlobalStyle } from '../../utils/globalStyle'; +import Head from 'next/head'; -export class MainLayout extends Component { +const MainHead = ({ title }: { title: string }) => ( + + {title} + + + + + + + + + + + + + + + + + + +); + +type Props = { + children: ReactNode; + title?: string; +}; + +export class MainLayout extends Component { render() { - const { children } = this.props; + const { title, children } = this.props; return ( + {children} diff --git a/pages/index.tsx b/pages/index.tsx index f44de33..c3069b9 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -11,7 +11,7 @@ const StyledHeader = styled.h1` const Index = () => { return ( - + Index Page ); From da23fad0c4c22f6ab0c49285a8d9b69f3bb9e2f5 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Wed, 13 May 2020 08:12:53 -0500 Subject: [PATCH 07/45] 7. Add Layout --- components/layout/MainLayout.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/components/layout/MainLayout.tsx b/components/layout/MainLayout.tsx index 161c893..fa9e45d 100644 --- a/components/layout/MainLayout.tsx +++ b/components/layout/MainLayout.tsx @@ -3,6 +3,9 @@ import { Component, ReactNode } from 'react'; import { theme } from '../../utils/theme'; import { GlobalStyle } from '../../utils/globalStyle'; import Head from 'next/head'; +import { Layout } from 'antd'; + +const { Content } = Layout; const MainHead = ({ title }: { title: string }) => ( @@ -59,7 +62,9 @@ export class MainLayout extends Component { - {children} + + {children} + ); } From 33cbb92e38be7a78bec8a35ba7d13a15ef4aa7cb Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Wed, 13 May 2020 08:18:16 -0500 Subject: [PATCH 08/45] 8. Add MainFooter --- components/layout/MainFooter.tsx | 13 +++++++++++++ components/layout/MainLayout.tsx | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 components/layout/MainFooter.tsx diff --git a/components/layout/MainFooter.tsx b/components/layout/MainFooter.tsx new file mode 100644 index 0000000..09c9f92 --- /dev/null +++ b/components/layout/MainFooter.tsx @@ -0,0 +1,13 @@ +import { Layout, Row, Col } from 'antd'; + +const { Footer } = Layout; + +export const MainFooter = () => ( +
+ + +

Find your next bite

+ +
+
+); diff --git a/components/layout/MainLayout.tsx b/components/layout/MainLayout.tsx index fa9e45d..44fb6fb 100644 --- a/components/layout/MainLayout.tsx +++ b/components/layout/MainLayout.tsx @@ -4,6 +4,7 @@ import { theme } from '../../utils/theme'; import { GlobalStyle } from '../../utils/globalStyle'; import Head from 'next/head'; import { Layout } from 'antd'; +import { MainFooter } from './MainFooter'; const { Content } = Layout; @@ -64,6 +65,7 @@ export class MainLayout extends Component { {children} + ); From c068f86527d62f350321b810255489fd039c8e14 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Wed, 13 May 2020 08:47:44 -0500 Subject: [PATCH 09/45] 9. Add MainNavbar --- components/layout/MainLayout.tsx | 2 + components/layout/MainNavbar.tsx | 83 ++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 components/layout/MainNavbar.tsx diff --git a/components/layout/MainLayout.tsx b/components/layout/MainLayout.tsx index 44fb6fb..b9b787a 100644 --- a/components/layout/MainLayout.tsx +++ b/components/layout/MainLayout.tsx @@ -5,6 +5,7 @@ import { GlobalStyle } from '../../utils/globalStyle'; import Head from 'next/head'; import { Layout } from 'antd'; import { MainFooter } from './MainFooter'; +import { MainNavbar } from './MainNavbar'; const { Content } = Layout; @@ -64,6 +65,7 @@ export class MainLayout extends Component { + {children} diff --git a/components/layout/MainNavbar.tsx b/components/layout/MainNavbar.tsx new file mode 100644 index 0000000..0420596 --- /dev/null +++ b/components/layout/MainNavbar.tsx @@ -0,0 +1,83 @@ +import styled from 'styled-components'; +import { Layout, Menu } from 'antd'; +import Link from 'next/link'; +const { Header } = Layout; + +const TitleContainer = styled.div` + ${({ theme }) => ` + background-color: ${theme['header-color']}; + width: 50%; + display: flex; + align-items: center; + @media (max-width: 890px){ + visibility: hidden; + width: 0; + } + `} +`; + +const Title = styled.div` + ${({ theme }) => ` + text-align: left; + display: flex; + line-height: 50px; + div { + width: 100%; + padding-left: ${theme['padding-small']}; + } + h2 { + display: inline; + color: inherit; + } + img { + width: 64px; + } + p { + line-height: 0; + } + `} +`; + +const StyledHeader = styled(Header)` + ${({ theme }) => ` + background-color: ${theme['header-color']}; + border-bottom-color: ${theme['header-border-color']}; + border-bottom-right: 1px; + border-bottom-style: solid; + text-align: right; + display: flex; + li { + font-size: ${theme['font-size-md']}; + } + `} +`; + +const StyledMenu = styled(Menu)` + border-bottom-width: 0px; + width: 50%; + @media (max-width: 890px) { + width: 100%; + } +`; + +export const MainNavbar = () => ( + + + + <img src="/logo.svg" alt="Next Chop Logo" /> + <div> + <h2>The Next Chop</h2> + <p>A recipe discovery app powered by Next.js</p> + </div> + + + + + + + Home + + + + +); From 6a0c7c01d0aa2f0152bae9dbccd3c62b6b3aff57 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Wed, 13 May 2020 17:00:58 -0500 Subject: [PATCH 10/45] 10. Add GraphCMS --- .gitignore | 3 ++- next.config.js | 12 ++++++++++++ package-lock.json | 5 +++++ package.json | 1 + 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 next.config.js diff --git a/.gitignore b/.gitignore index 377d23e..fe04e15 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules .next -.DS_Store \ No newline at end of file +.DS_Store +.env \ No newline at end of file diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..c9b128b --- /dev/null +++ b/next.config.js @@ -0,0 +1,12 @@ +require('dotenv').config(); +const { BRANCH, GRAPHCMSURL, GRAPHCMSPROJECTID } = process.env; + +module.exports = { + publicRuntimeConfig: { + graphcms: { + BRANCH, + GRAPHCMSURL, + GRAPHCMSPROJECTID, + }, + }, +}; diff --git a/package-lock.json b/package-lock.json index b02bb6e..77366de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2864,6 +2864,11 @@ "is-obj": "^2.0.0" } }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", diff --git a/package.json b/package.json index 3f59eba..5d63a00 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "license": "ISC", "dependencies": { "antd": "^4.2.2", + "dotenv": "^8.2.0", "next": "^9.4.0", "react": "^16.13.1", "react-dom": "^16.13.1", From 41fbf4f86af14472ae409773374d472947a4e53f Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Wed, 13 May 2020 17:32:56 -0500 Subject: [PATCH 11/45] 11. Add WithApollo --- components/WithApollo.tsx | 176 +++++++++++++++++++++++++++++++++++ package-lock.json | 187 +++++++++++++++++++++++++++++++++++++- package.json | 7 ++ pages/_app.tsx | 3 +- utils/apolloClient.ts | 23 +++++ 5 files changed, 393 insertions(+), 3 deletions(-) create mode 100644 components/WithApollo.tsx create mode 100644 utils/apolloClient.ts diff --git a/components/WithApollo.tsx b/components/WithApollo.tsx new file mode 100644 index 0000000..2cd0b2d --- /dev/null +++ b/components/WithApollo.tsx @@ -0,0 +1,176 @@ +import React from 'react'; +import App from 'next/app'; +import Head from 'next/head'; +import { ApolloProvider } from '@apollo/react-hooks'; +import createApolloClient from '../utils/apolloClient'; + +// On the client, we store the Apollo Client in the following variable. +// This prevents the client from reinitializing between page transitions. +let globalApolloClient = null; + +/** + * Installs the Apollo Client on NextPageContext + * or NextAppContext. Useful if you want to use apolloClient + * inside getStaticProps, getStaticPaths or getServerSideProps + * @param {NextPageContext | NextAppContext} ctx + */ +export const initOnContext = (ctx) => { + const inAppContext = Boolean(ctx.ctx); + + // We consider installing `withApollo({ ssr: true })` on global App level + // as antipattern since it disables project wide Automatic Static Optimization. + if (process.env.NODE_ENV === 'development') { + if (inAppContext) { + console.warn( + 'Warning: You have opted-out of Automatic Static Optimization due to `withApollo` in `pages/_app`.\n' + + 'Read more: https://err.sh/next.js/opt-out-auto-static-optimization\n', + ); + } + } + + // Initialize ApolloClient if not already done + const apolloClient = + ctx.apolloClient || + initApolloClient(ctx.apolloState || {}, inAppContext ? ctx.ctx : ctx); + + // We send the Apollo Client as a prop to the component to avoid calling initApollo() twice in the server. + // Otherwise, the component would have to call initApollo() again but this + // time without the context. Once that happens, the following code will make sure we send + // the prop as `null` to the browser. + apolloClient.toJSON = () => null; + + // Add apolloClient to NextPageContext & NextAppContext. + // This allows us to consume the apolloClient inside our + // custom `getInitialProps({ apolloClient })`. + ctx.apolloClient = apolloClient; + if (inAppContext) { + ctx.ctx.apolloClient = apolloClient; + } + + return ctx; +}; + +/** + * Always creates a new apollo client on the server + * Creates or reuses apollo client in the browser. + * @param {NormalizedCacheObject} initialState + * @param {NextPageContext} ctx + */ +const initApolloClient = (initialState, ctx) => { + // Make sure to create a new client for every server-side request so that data + // isn't shared between connections (which would be bad) + if (typeof window === 'undefined') { + return createApolloClient(initialState, ctx); + } + + // Reuse client on the client-side + if (!globalApolloClient) { + globalApolloClient = createApolloClient(initialState, ctx); + } + + return globalApolloClient; +}; + +/** + * Creates a withApollo HOC + * that provides the apolloContext + * to a next.js Page or AppTree. + * @param {Object} withApolloOptions + * @param {Boolean} [withApolloOptions.ssr=false] + * @returns {(PageComponent: ReactNode) => ReactNode} + */ +export const withApollo = ({ ssr = false } = {}) => (PageComponent) => { + const WithApollo = ({ apolloClient, apolloState, ...pageProps }) => { + let client; + if (apolloClient) { + // Happens on: getDataFromTree & next.js ssr + client = apolloClient; + } else { + // Happens on: next.js csr + client = initApolloClient(apolloState, undefined); + } + + return ( + + + + ); + }; + + // Set the correct displayName in development + if (process.env.NODE_ENV !== 'production') { + const displayName = + PageComponent.displayName || PageComponent.name || 'Component'; + WithApollo.displayName = `withApollo(${displayName})`; + } + + if (ssr || PageComponent.getInitialProps) { + WithApollo.getInitialProps = async (ctx) => { + const inAppContext = Boolean(ctx.ctx); + const { apolloClient } = initOnContext(ctx); + + // Run wrapped getInitialProps methods + let pageProps = {}; + if (PageComponent.getInitialProps) { + pageProps = await PageComponent.getInitialProps(ctx); + } else if (inAppContext) { + pageProps = await App.getInitialProps(ctx); + } + + // Only on the server: + if (typeof window === 'undefined') { + const { AppTree } = ctx; + // When redirecting, the response is finished. + // No point in continuing to render + if (ctx.res && ctx.res.finished) { + return pageProps; + } + + // Only if dataFromTree is enabled + if (ssr && AppTree) { + try { + // Import `@apollo/react-ssr` dynamically. + // We don't want to have this in our client bundle. + const { getDataFromTree } = await import('@apollo/react-ssr'); + + // Since AppComponents and PageComponents have different context types + // we need to modify their props a little. + let props; + if (inAppContext) { + props = { ...pageProps, apolloClient }; + } else { + props = { pageProps: { ...pageProps, apolloClient } }; + } + + // Take the Next.js AppTree, determine which queries are needed to render, + // and fetch them. This method can be pretty slow since it renders + // your entire AppTree once for every query. Check out apollo fragments + // if you want to reduce the number of rerenders. + // https://www.apollographql.com/docs/react/data/fragments/ + await getDataFromTree(); + } catch (error) { + // Prevent Apollo Client GraphQL errors from crashing SSR. + // Handle them in components via the data.error prop: + // https://www.apollographql.com/docs/react/api/react-apollo.html#graphql-query-data-error + console.error('Error while running `getDataFromTree`', error); + } + + // getDataFromTree does not call componentWillUnmount + // head side effect therefore need to be cleared manually + Head.rewind(); + } + } + + return { + ...pageProps, + // Extract query data from the Apollo store + apolloState: apolloClient.cache.extract(), + // Provide the client for ssr. As soon as this payload + // gets JSON.stringified it will remove itself. + apolloClient: ctx.apolloClient, + }; + }; + } + + return WithApollo; +}; diff --git a/package-lock.json b/package-lock.json index 77366de..cc11aab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -92,6 +92,36 @@ "resize-observer-polyfill": "^1.5.0" } }, + "@apollo/react-common": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@apollo/react-common/-/react-common-3.1.4.tgz", + "integrity": "sha512-X5Kyro73bthWSCBJUC5XYQqMnG0dLWuDZmVkzog9dynovhfiVCV4kPSdgSIkqnb++cwCzOVuQ4rDKVwo2XRzQA==", + "requires": { + "ts-invariant": "^0.4.4", + "tslib": "^1.10.0" + } + }, + "@apollo/react-hooks": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@apollo/react-hooks/-/react-hooks-3.1.5.tgz", + "integrity": "sha512-y0CJ393DLxIIkksRup4nt+vSjxalbZBXnnXxYbviq/woj+zKa431zy0yT4LqyRKpFy9ahMIwxBnBwfwIoupqLQ==", + "requires": { + "@apollo/react-common": "^3.1.4", + "@wry/equality": "^0.1.9", + "ts-invariant": "^0.4.4", + "tslib": "^1.10.0" + } + }, + "@apollo/react-ssr": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@apollo/react-ssr/-/react-ssr-3.1.5.tgz", + "integrity": "sha512-wuLPkKlctNn3u8EU8rlECyktpOUCeekFfb0KhIKknpGY6Lza2Qu0bThx7D9MIbVEzhKadNNrzLcpk0Y8/5UuWg==", + "requires": { + "@apollo/react-common": "^3.1.4", + "@apollo/react-hooks": "^3.1.5", + "tslib": "^1.10.0" + } + }, "@babel/code-frame": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", @@ -1189,8 +1219,7 @@ "@types/node": { "version": "13.13.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.5.tgz", - "integrity": "sha512-3ySmiBYJPqgjiHA7oEaIo2Rzz0HrOZ7yrNO5HWyaE5q0lQ3BppDZ3N53Miz8bw2I7gh1/zir2MGVZBvpb1zq9g==", - "dev": true + "integrity": "sha512-3ySmiBYJPqgjiHA7oEaIo2Rzz0HrOZ7yrNO5HWyaE5q0lQ3BppDZ3N53Miz8bw2I7gh1/zir2MGVZBvpb1zq9g==" }, "@types/prop-types": { "version": "15.7.3", @@ -1213,6 +1242,11 @@ "csstype": "^2.2.0" } }, + "@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.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", @@ -1370,6 +1404,23 @@ "@xtuc/long": "4.2.2" } }, + "@wry/context": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.4.4.tgz", + "integrity": "sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==", + "requires": { + "@types/node": ">=6", + "tslib": "^1.9.3" + } + }, + "@wry/equality": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz", + "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==", + "requires": { + "tslib": "^1.9.3" + } + }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -1567,6 +1618,84 @@ } } }, + "apollo-cache": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz", + "integrity": "sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA==", + "requires": { + "apollo-utilities": "^1.3.4", + "tslib": "^1.10.0" + } + }, + "apollo-cache-inmemory": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz", + "integrity": "sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A==", + "requires": { + "apollo-cache": "^1.3.5", + "apollo-utilities": "^1.3.4", + "optimism": "^0.10.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0" + } + }, + "apollo-client": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.6.9.tgz", + "integrity": "sha512-l3z4Ddd82p5ezZWOlOd0TO+KyBh/EDZePNeB3fy3sjr/crvpCxNnQDdGfVadrzFX+DXRa8r8zSWANyWSDDUpdg==", + "requires": { + "@types/zen-observable": "^0.8.0", + "apollo-cache": "^1.3.5", + "apollo-link": "^1.0.0", + "apollo-utilities": "^1.3.4", + "symbol-observable": "^1.0.2", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0", + "zen-observable": "^0.8.0" + } + }, + "apollo-link": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", + "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", + "requires": { + "apollo-utilities": "^1.3.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.9.3", + "zen-observable-ts": "^0.8.21" + } + }, + "apollo-link-http": { + "version": "1.5.17", + "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.17.tgz", + "integrity": "sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg==", + "requires": { + "apollo-link": "^1.2.14", + "apollo-link-http-common": "^0.2.16", + "tslib": "^1.9.3" + } + }, + "apollo-link-http-common": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz", + "integrity": "sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg==", + "requires": { + "apollo-link": "^1.2.14", + "ts-invariant": "^0.4.0", + "tslib": "^1.9.3" + } + }, + "apollo-utilities": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz", + "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==", + "requires": { + "@wry/equality": "^0.1.2", + "fast-json-stable-stringify": "^2.0.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0" + } + }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -3499,6 +3628,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, + "graphql": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.0.0.tgz", + "integrity": "sha512-ZyVO1xIF9F+4cxfkdhOJINM+51B06Friuv4M66W7HzUOeFd+vNzUn4vtswYINPi6sysjf1M2Ri/rwZALqgwbaQ==" + }, "hammerjs": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", @@ -3944,6 +4078,15 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, + "isomorphic-unfetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.0.0.tgz", + "integrity": "sha512-V0tmJSYfkKokZ5mgl0cmfQMTb7MLHsBMngTkbLY0eXvKqiVRRoZP04Ly+KhKrJfKtzC9E6Pp15Jo+bwh7Vi2XQ==", + "requires": { + "node-fetch": "^2.2.0", + "unfetch": "^4.0.0" + } + }, "jest-worker": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", @@ -4658,6 +4801,14 @@ "wrappy": "1" } }, + "optimism": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.3.tgz", + "integrity": "sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw==", + "requires": { + "@wry/context": "^0.4.0" + } + }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -6760,6 +6911,11 @@ "util.promisify": "~1.0.0" } }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -6991,6 +7147,14 @@ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" }, + "ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "requires": { + "tslib": "^1.9.3" + } + }, "ts-pnp": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", @@ -7027,6 +7191,11 @@ "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", "dev": true }, + "unfetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.1.0.tgz", + "integrity": "sha512-crP/n3eAPUJxZXM9T80/yv0YhkTEx2K1D3h7D1AJM6fzsWZrxdyRuLN0JH/dkZh1LNH8LxCnBzoPFCPbb2iGpg==" + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -7373,6 +7542,20 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "zen-observable": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" + }, + "zen-observable-ts": { + "version": "0.8.21", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz", + "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==", + "requires": { + "tslib": "^1.9.3", + "zen-observable": "^0.8.0" + } } } } diff --git a/package.json b/package.json index 5d63a00..3344f7b 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,15 @@ "author": "", "license": "ISC", "dependencies": { + "@apollo/react-hooks": "^3.1.5", + "@apollo/react-ssr": "^3.1.5", "antd": "^4.2.2", + "apollo-cache-inmemory": "^1.6.6", + "apollo-client": "^2.6.9", + "apollo-link-http": "^1.5.17", "dotenv": "^8.2.0", + "graphql": "^15.0.0", + "isomorphic-unfetch": "^3.0.0", "next": "^9.4.0", "react": "^16.13.1", "react-dom": "^16.13.1", diff --git a/pages/_app.tsx b/pages/_app.tsx index 472706c..e0a6996 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -1,5 +1,6 @@ import 'antd/dist/antd.css'; import App from 'next/app'; +import { withApollo } from '../components/WithApollo'; class MyApp extends App { render() { @@ -8,4 +9,4 @@ class MyApp extends App { } } -export default MyApp; +export default withApollo({ ssr: true })(MyApp); diff --git a/utils/apolloClient.ts b/utils/apolloClient.ts new file mode 100644 index 0000000..bc299d9 --- /dev/null +++ b/utils/apolloClient.ts @@ -0,0 +1,23 @@ +import { ApolloClient } from 'apollo-client'; +import { InMemoryCache } from 'apollo-cache-inmemory'; +import { HttpLink } from 'apollo-link-http'; +import fetch from 'isomorphic-unfetch'; +import getConfig from 'next/config'; + +const { publicRuntimeConfig } = getConfig(); + +const { BRANCH, GRAPHCMSURL, GRAPHCMSPROJECTID } = publicRuntimeConfig.graphcms; + +export default function createApolloClient(initialState, ctx) { + // The `ctx` (NextPageContext) will only be present on the server. + // use it to extract auth headers (ctx.req) or similar. + return new ApolloClient({ + ssrMode: Boolean(ctx), + link: new HttpLink({ + uri: `${GRAPHCMSURL}/${GRAPHCMSPROJECTID}/${BRANCH}`, // Server URL (must be absolute) + credentials: 'same-origin', // Additional fetch() options like `credentials` or `headers` + fetch, + }), + cache: new InMemoryCache().restore(initialState), + }); +} From 298a2bdef4c9743c9c62202cef25f45d893ca8dd Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Thu, 14 May 2020 08:47:06 -0500 Subject: [PATCH 12/45] 12. Add GraphQL Request Files --- graphql/mutations/createRecipe.ts | 25 ++++++++++++++++++++++++ graphql/mutations/createUserLike.ts | 13 +++++++++++++ graphql/mutations/deleteAsset.ts | 9 +++++++++ graphql/mutations/deleteRecipe.ts | 9 +++++++++ graphql/mutations/deleteUserLike.ts | 10 ++++++++++ graphql/mutations/updateRecipe.ts | 28 +++++++++++++++++++++++++++ graphql/queries/recipe.ts | 26 +++++++++++++++++++++++++ graphql/queries/recipes.ts | 26 +++++++++++++++++++++++++ graphql/queries/userLike.ts | 30 +++++++++++++++++++++++++++++ graphql/queries/userLikes.ts | 30 +++++++++++++++++++++++++++++ package-lock.json | 5 +++++ package.json | 1 + 12 files changed, 212 insertions(+) create mode 100644 graphql/mutations/createRecipe.ts create mode 100644 graphql/mutations/createUserLike.ts create mode 100644 graphql/mutations/deleteAsset.ts create mode 100644 graphql/mutations/deleteRecipe.ts create mode 100644 graphql/mutations/deleteUserLike.ts create mode 100644 graphql/mutations/updateRecipe.ts create mode 100644 graphql/queries/recipe.ts create mode 100644 graphql/queries/recipes.ts create mode 100644 graphql/queries/userLike.ts create mode 100644 graphql/queries/userLikes.ts diff --git a/graphql/mutations/createRecipe.ts b/graphql/mutations/createRecipe.ts new file mode 100644 index 0000000..3e61b8f --- /dev/null +++ b/graphql/mutations/createRecipe.ts @@ -0,0 +1,25 @@ +import gql from 'graphql-tag'; + +export const createRecipeGraphQL = gql` + mutation createRecipeGraphQL($data: RecipeCreateInput!) { + createRecipe(data: $data) { + id + title + content + description + ingredients + userLikes { + id + } + owner + image { + id + fileName + height + width + size + handle + } + } + } +`; diff --git a/graphql/mutations/createUserLike.ts b/graphql/mutations/createUserLike.ts new file mode 100644 index 0000000..d212435 --- /dev/null +++ b/graphql/mutations/createUserLike.ts @@ -0,0 +1,13 @@ +import gql from 'graphql-tag'; + +export const createUserLikeGraphQL = gql` + mutation createUserLikeGraphQL($data: UserLikeCreateInput!) { + createUserLike(data: $data) { + id + user + recipe { + id + } + } + } +`; diff --git a/graphql/mutations/deleteAsset.ts b/graphql/mutations/deleteAsset.ts new file mode 100644 index 0000000..f946244 --- /dev/null +++ b/graphql/mutations/deleteAsset.ts @@ -0,0 +1,9 @@ +import gql from 'graphql-tag'; + +export const deleteAssetGraphQL = gql` + mutation deleteAssetGraphQL($where: AssetWhereUniqueInput!) { + deleteAsset(where: $where) { + id + } + } +`; diff --git a/graphql/mutations/deleteRecipe.ts b/graphql/mutations/deleteRecipe.ts new file mode 100644 index 0000000..5898d59 --- /dev/null +++ b/graphql/mutations/deleteRecipe.ts @@ -0,0 +1,9 @@ +import gql from 'graphql-tag'; + +export const deleteRecipeGraphQL = gql` + mutation deleteRecipeGraphQL($where: RecipeWhereUniqueInput!) { + deleteRecipe(where: $where) { + id + } + } +`; diff --git a/graphql/mutations/deleteUserLike.ts b/graphql/mutations/deleteUserLike.ts new file mode 100644 index 0000000..4f2b131 --- /dev/null +++ b/graphql/mutations/deleteUserLike.ts @@ -0,0 +1,10 @@ +import gql from 'graphql-tag'; + +export const deleteUserLikeGraphQL = gql` + mutation deleteUserLikeGraphQL($where: UserLikeWhereUniqueInput!) { + deleteUserLike(where: $where) { + id + user + } + } +`; diff --git a/graphql/mutations/updateRecipe.ts b/graphql/mutations/updateRecipe.ts new file mode 100644 index 0000000..3535520 --- /dev/null +++ b/graphql/mutations/updateRecipe.ts @@ -0,0 +1,28 @@ +import gql from 'graphql-tag'; + +export const updateRecipeGraphQL = gql` + mutation updateRecipeGraphQL( + $data: RecipeUpdateInput! + $where: RecipeWhereUniqueInput! + ) { + updateRecipe(data: $data, where: $where) { + id + title + content + description + ingredients + userLikes { + id + } + owner + image { + id + fileName + height + width + size + handle + } + } + } +`; diff --git a/graphql/queries/recipe.ts b/graphql/queries/recipe.ts new file mode 100644 index 0000000..9c7821f --- /dev/null +++ b/graphql/queries/recipe.ts @@ -0,0 +1,26 @@ +import gql from 'graphql-tag'; + +export const recipeGraphQL = gql` + query recipeGraphQL($where: RecipeWhereUniqueInput!) { + recipe(where: $where) { + id + title + content + description + ingredients + userLikes { + id + user + } + owner + image { + id + fileName + height + width + size + handle + } + } + } +`; diff --git a/graphql/queries/recipes.ts b/graphql/queries/recipes.ts new file mode 100644 index 0000000..b40b09c --- /dev/null +++ b/graphql/queries/recipes.ts @@ -0,0 +1,26 @@ +import gql from 'graphql-tag'; + +export const recipesGraphQL = gql` + query recipesGraphQL($where: RecipeWhereInput) { + recipes(where: $where) { + id + title + content + description + ingredients + userLikes { + id + user + } + owner + image { + id + fileName + height + width + size + handle + } + } + } +`; diff --git a/graphql/queries/userLike.ts b/graphql/queries/userLike.ts new file mode 100644 index 0000000..4f81802 --- /dev/null +++ b/graphql/queries/userLike.ts @@ -0,0 +1,30 @@ +import gql from 'graphql-tag'; + +export const userLikeGraphQL = gql` + query userLikeGraphQL($where: UserLikeWhereUniqueInput!) { + userLike(where: $where) { + id + user + recipe { + id + title + content + description + ingredients + userLikes { + id + user + } + owner + image { + id + fileName + height + width + size + handle + } + } + } + } +`; diff --git a/graphql/queries/userLikes.ts b/graphql/queries/userLikes.ts new file mode 100644 index 0000000..5a10a70 --- /dev/null +++ b/graphql/queries/userLikes.ts @@ -0,0 +1,30 @@ +import gql from 'graphql-tag'; + +export const userLikesGraphQL = gql` + query userLikesGraphQL($where: UserLikeWhereInput) { + userLikes(where: $where) { + id + user + recipe { + id + title + content + description + ingredients + userLikes { + id + user + } + owner + image { + id + fileName + height + width + size + handle + } + } + } + } +`; diff --git a/package-lock.json b/package-lock.json index cc11aab..c89a6aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3633,6 +3633,11 @@ "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.0.0.tgz", "integrity": "sha512-ZyVO1xIF9F+4cxfkdhOJINM+51B06Friuv4M66W7HzUOeFd+vNzUn4vtswYINPi6sysjf1M2Ri/rwZALqgwbaQ==" }, + "graphql-tag": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.10.3.tgz", + "integrity": "sha512-4FOv3ZKfA4WdOKJeHdz6B3F/vxBLSgmBcGeAFPf4n1F64ltJUvOOerNj0rsJxONQGdhUMynQIvd6LzB+1J5oKA==" + }, "hammerjs": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", diff --git a/package.json b/package.json index 3344f7b..7973cd8 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "apollo-link-http": "^1.5.17", "dotenv": "^8.2.0", "graphql": "^15.0.0", + "graphql-tag": "^2.10.3", "isomorphic-unfetch": "^3.0.0", "next": "^9.4.0", "react": "^16.13.1", From 85f53c8d172fa602505bd4f49b8cd997c5846546 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Thu, 14 May 2020 08:53:50 -0500 Subject: [PATCH 13/45] 13. Add GraphQLCodeGen --- codegen.yml | 8 + generated/apollo-components.tsx | 2291 ++++++++++++++++++++++++++ package-lock.json | 2727 +++++++++++++++++++++++++++++++ package.json | 6 +- 4 files changed, 5031 insertions(+), 1 deletion(-) create mode 100644 codegen.yml create mode 100644 generated/apollo-components.tsx diff --git a/codegen.yml b/codegen.yml new file mode 100644 index 0000000..69bc1d5 --- /dev/null +++ b/codegen.yml @@ -0,0 +1,8 @@ +overwrite: true +schema: '${GRAPHCMSURL}/${GRAPHCMSPROJECTID}/${BRANCH}' +documents: graphql/**/*.ts +generates: + generated/apollo-components.tsx: + plugins: + - 'typescript' + - 'typescript-operations' diff --git a/generated/apollo-components.tsx b/generated/apollo-components.tsx new file mode 100644 index 0000000..c216013 --- /dev/null +++ b/generated/apollo-components.tsx @@ -0,0 +1,2291 @@ +export type Maybe = T | null; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; + /** Raw JSON value */ + Json: any; + /** A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the date-timeformat outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representationof dates and times using the Gregorian calendar. */ + DateTime: any; + /** A date string, such as 2007-12-03 (YYYY-MM-DD), compliant with ISO 8601 standard for representation of dates using the Gregorian calendar. */ + Date: any; + /** Slate-compatible RichText AST */ + RichTextAST: any; + RGBATransparency: any; + Hex: any; + RGBAHue: any; + /** The Long scalar type represents non-fractional signed whole numeric values. Long can represent values between -(2^63) and 2^63 - 1. */ + Long: any; +}; + +/** Input type representing a RGBA color value: https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#rgb()_and_rgba() */ +export type RgbaInput = { + r: Scalars['RGBAHue']; + g: Scalars['RGBAHue']; + b: Scalars['RGBAHue']; + a: Scalars['RGBATransparency']; +}; + +export type AssetCreateLocalizationInput = { + /** Localization input */ + data: AssetCreateLocalizationDataInput; + locale: Locale; +}; + +/** Identifies documents */ +export type RecipeManyWhereInput = { + /** Contains search across all appropriate fields. */ + _search?: Maybe; + /** Logical AND on all given filters. */ + AND?: Maybe>; + /** Logical OR on all given filters. */ + OR?: Maybe>; + /** Logical NOT on all given filters combined by AND. */ + NOT?: Maybe>; + id?: Maybe; + /** All values that are not equal to given value. */ + id_not?: Maybe; + /** All values that are contained in given list. */ + id_in?: Maybe>; + /** All values that are not contained in given list. */ + id_not_in?: Maybe>; + /** All values containing the given string. */ + id_contains?: Maybe; + /** All values not containing the given string. */ + id_not_contains?: Maybe; + /** All values starting with the given string. */ + id_starts_with?: Maybe; + /** All values not starting with the given string. */ + id_not_starts_with?: Maybe; + /** All values ending with the given string. */ + id_ends_with?: Maybe; + /** All values not ending with the given string */ + id_not_ends_with?: Maybe; + createdAt?: Maybe; + /** All values that are not equal to given value. */ + createdAt_not?: Maybe; + /** All values that are contained in given list. */ + createdAt_in?: Maybe>; + /** All values that are not contained in given list. */ + createdAt_not_in?: Maybe>; + /** All values less than the given value. */ + createdAt_lt?: Maybe; + /** All values less than or equal the given value. */ + createdAt_lte?: Maybe; + /** All values greater than the given value. */ + createdAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + createdAt_gte?: Maybe; + updatedAt?: Maybe; + /** All values that are not equal to given value. */ + updatedAt_not?: Maybe; + /** All values that are contained in given list. */ + updatedAt_in?: Maybe>; + /** All values that are not contained in given list. */ + updatedAt_not_in?: Maybe>; + /** All values less than the given value. */ + updatedAt_lt?: Maybe; + /** All values less than or equal the given value. */ + updatedAt_lte?: Maybe; + /** All values greater than the given value. */ + updatedAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + updatedAt_gte?: Maybe; + publishedAt?: Maybe; + /** All values that are not equal to given value. */ + publishedAt_not?: Maybe; + /** All values that are contained in given list. */ + publishedAt_in?: Maybe>; + /** All values that are not contained in given list. */ + publishedAt_not_in?: Maybe>; + /** All values less than the given value. */ + publishedAt_lt?: Maybe; + /** All values less than or equal the given value. */ + publishedAt_lte?: Maybe; + /** All values greater than the given value. */ + publishedAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + publishedAt_gte?: Maybe; + title?: Maybe; + /** All values that are not equal to given value. */ + title_not?: Maybe; + /** All values that are contained in given list. */ + title_in?: Maybe>; + /** All values that are not contained in given list. */ + title_not_in?: Maybe>; + /** All values containing the given string. */ + title_contains?: Maybe; + /** All values not containing the given string. */ + title_not_contains?: Maybe; + /** All values starting with the given string. */ + title_starts_with?: Maybe; + /** All values not starting with the given string. */ + title_not_starts_with?: Maybe; + /** All values ending with the given string. */ + title_ends_with?: Maybe; + /** All values not ending with the given string */ + title_not_ends_with?: Maybe; + description?: Maybe; + /** All values that are not equal to given value. */ + description_not?: Maybe; + /** All values that are contained in given list. */ + description_in?: Maybe>; + /** All values that are not contained in given list. */ + description_not_in?: Maybe>; + /** All values containing the given string. */ + description_contains?: Maybe; + /** All values not containing the given string. */ + description_not_contains?: Maybe; + /** All values starting with the given string. */ + description_starts_with?: Maybe; + /** All values not starting with the given string. */ + description_not_starts_with?: Maybe; + /** All values ending with the given string. */ + description_ends_with?: Maybe; + /** All values not ending with the given string */ + description_not_ends_with?: Maybe; + content?: Maybe; + /** All values that are not equal to given value. */ + content_not?: Maybe; + /** All values that are contained in given list. */ + content_in?: Maybe>; + /** All values that are not contained in given list. */ + content_not_in?: Maybe>; + /** All values containing the given string. */ + content_contains?: Maybe; + /** All values not containing the given string. */ + content_not_contains?: Maybe; + /** All values starting with the given string. */ + content_starts_with?: Maybe; + /** All values not starting with the given string. */ + content_not_starts_with?: Maybe; + /** All values ending with the given string. */ + content_ends_with?: Maybe; + /** All values not ending with the given string */ + content_not_ends_with?: Maybe; + image?: Maybe; + owner?: Maybe; + /** All values that are not equal to given value. */ + owner_not?: Maybe; + /** All values that are contained in given list. */ + owner_in?: Maybe>; + /** All values that are not contained in given list. */ + owner_not_in?: Maybe>; + /** All values containing the given string. */ + owner_contains?: Maybe; + /** All values not containing the given string. */ + owner_not_contains?: Maybe; + /** All values starting with the given string. */ + owner_starts_with?: Maybe; + /** All values not starting with the given string. */ + owner_not_starts_with?: Maybe; + /** All values ending with the given string. */ + owner_ends_with?: Maybe; + /** All values not ending with the given string */ + owner_not_ends_with?: Maybe; + userLikes_every?: Maybe; + userLikes_some?: Maybe; + userLikes_none?: Maybe; +}; + +export enum _RelationKind { + Regular = 'regular', + Union = 'union' +} + +export type AssetUpdateWithNestedWhereUniqueInput = { + /** Unique document search */ + where: AssetWhereUniqueInput; + /** Document to update */ + data: AssetUpdateInput; +}; + +export type RecipeUpdateManyWithNestedWhereInput = { + /** Document search */ + where: RecipeWhereInput; + /** Update many input */ + data: RecipeUpdateManyInput; +}; + +/** Identifies documents */ +export type UserLikeManyWhereInput = { + /** Contains search across all appropriate fields. */ + _search?: Maybe; + /** Logical AND on all given filters. */ + AND?: Maybe>; + /** Logical OR on all given filters. */ + OR?: Maybe>; + /** Logical NOT on all given filters combined by AND. */ + NOT?: Maybe>; + id?: Maybe; + /** All values that are not equal to given value. */ + id_not?: Maybe; + /** All values that are contained in given list. */ + id_in?: Maybe>; + /** All values that are not contained in given list. */ + id_not_in?: Maybe>; + /** All values containing the given string. */ + id_contains?: Maybe; + /** All values not containing the given string. */ + id_not_contains?: Maybe; + /** All values starting with the given string. */ + id_starts_with?: Maybe; + /** All values not starting with the given string. */ + id_not_starts_with?: Maybe; + /** All values ending with the given string. */ + id_ends_with?: Maybe; + /** All values not ending with the given string */ + id_not_ends_with?: Maybe; + createdAt?: Maybe; + /** All values that are not equal to given value. */ + createdAt_not?: Maybe; + /** All values that are contained in given list. */ + createdAt_in?: Maybe>; + /** All values that are not contained in given list. */ + createdAt_not_in?: Maybe>; + /** All values less than the given value. */ + createdAt_lt?: Maybe; + /** All values less than or equal the given value. */ + createdAt_lte?: Maybe; + /** All values greater than the given value. */ + createdAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + createdAt_gte?: Maybe; + updatedAt?: Maybe; + /** All values that are not equal to given value. */ + updatedAt_not?: Maybe; + /** All values that are contained in given list. */ + updatedAt_in?: Maybe>; + /** All values that are not contained in given list. */ + updatedAt_not_in?: Maybe>; + /** All values less than the given value. */ + updatedAt_lt?: Maybe; + /** All values less than or equal the given value. */ + updatedAt_lte?: Maybe; + /** All values greater than the given value. */ + updatedAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + updatedAt_gte?: Maybe; + publishedAt?: Maybe; + /** All values that are not equal to given value. */ + publishedAt_not?: Maybe; + /** All values that are contained in given list. */ + publishedAt_in?: Maybe>; + /** All values that are not contained in given list. */ + publishedAt_not_in?: Maybe>; + /** All values less than the given value. */ + publishedAt_lt?: Maybe; + /** All values less than or equal the given value. */ + publishedAt_lte?: Maybe; + /** All values greater than the given value. */ + publishedAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + publishedAt_gte?: Maybe; + user?: Maybe; + /** All values that are not equal to given value. */ + user_not?: Maybe; + /** All values that are contained in given list. */ + user_in?: Maybe>; + /** All values that are not contained in given list. */ + user_not_in?: Maybe>; + /** All values containing the given string. */ + user_contains?: Maybe; + /** All values not containing the given string. */ + user_not_contains?: Maybe; + /** All values starting with the given string. */ + user_starts_with?: Maybe; + /** All values not starting with the given string. */ + user_not_starts_with?: Maybe; + /** All values ending with the given string. */ + user_ends_with?: Maybe; + /** All values not ending with the given string */ + user_not_ends_with?: Maybe; + recipe?: Maybe; +}; + +export type UserLikeCreateManyInlineInput = { + /** Create and connect multiple existing UserLike documents */ + create?: Maybe>; + /** Connect multiple existing UserLike documents */ + connect?: Maybe>; +}; + +export type AssetCreateLocalizationDataInput = { + createdAt?: Maybe; + updatedAt?: Maybe; + handle: Scalars['String']; + fileName: Scalars['String']; + height?: Maybe; + width?: Maybe; + size?: Maybe; + mimeType?: Maybe; +}; + +/** Identifies documents */ +export type RecipeWhereInput = { + /** Contains search across all appropriate fields. */ + _search?: Maybe; + /** Logical AND on all given filters. */ + AND?: Maybe>; + /** Logical OR on all given filters. */ + OR?: Maybe>; + /** Logical NOT on all given filters combined by AND. */ + NOT?: Maybe>; + id?: Maybe; + /** All values that are not equal to given value. */ + id_not?: Maybe; + /** All values that are contained in given list. */ + id_in?: Maybe>; + /** All values that are not contained in given list. */ + id_not_in?: Maybe>; + /** All values containing the given string. */ + id_contains?: Maybe; + /** All values not containing the given string. */ + id_not_contains?: Maybe; + /** All values starting with the given string. */ + id_starts_with?: Maybe; + /** All values not starting with the given string. */ + id_not_starts_with?: Maybe; + /** All values ending with the given string. */ + id_ends_with?: Maybe; + /** All values not ending with the given string */ + id_not_ends_with?: Maybe; + createdAt?: Maybe; + /** All values that are not equal to given value. */ + createdAt_not?: Maybe; + /** All values that are contained in given list. */ + createdAt_in?: Maybe>; + /** All values that are not contained in given list. */ + createdAt_not_in?: Maybe>; + /** All values less than the given value. */ + createdAt_lt?: Maybe; + /** All values less than or equal the given value. */ + createdAt_lte?: Maybe; + /** All values greater than the given value. */ + createdAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + createdAt_gte?: Maybe; + updatedAt?: Maybe; + /** All values that are not equal to given value. */ + updatedAt_not?: Maybe; + /** All values that are contained in given list. */ + updatedAt_in?: Maybe>; + /** All values that are not contained in given list. */ + updatedAt_not_in?: Maybe>; + /** All values less than the given value. */ + updatedAt_lt?: Maybe; + /** All values less than or equal the given value. */ + updatedAt_lte?: Maybe; + /** All values greater than the given value. */ + updatedAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + updatedAt_gte?: Maybe; + publishedAt?: Maybe; + /** All values that are not equal to given value. */ + publishedAt_not?: Maybe; + /** All values that are contained in given list. */ + publishedAt_in?: Maybe>; + /** All values that are not contained in given list. */ + publishedAt_not_in?: Maybe>; + /** All values less than the given value. */ + publishedAt_lt?: Maybe; + /** All values less than or equal the given value. */ + publishedAt_lte?: Maybe; + /** All values greater than the given value. */ + publishedAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + publishedAt_gte?: Maybe; + title?: Maybe; + /** All values that are not equal to given value. */ + title_not?: Maybe; + /** All values that are contained in given list. */ + title_in?: Maybe>; + /** All values that are not contained in given list. */ + title_not_in?: Maybe>; + /** All values containing the given string. */ + title_contains?: Maybe; + /** All values not containing the given string. */ + title_not_contains?: Maybe; + /** All values starting with the given string. */ + title_starts_with?: Maybe; + /** All values not starting with the given string. */ + title_not_starts_with?: Maybe; + /** All values ending with the given string. */ + title_ends_with?: Maybe; + /** All values not ending with the given string */ + title_not_ends_with?: Maybe; + description?: Maybe; + /** All values that are not equal to given value. */ + description_not?: Maybe; + /** All values that are contained in given list. */ + description_in?: Maybe>; + /** All values that are not contained in given list. */ + description_not_in?: Maybe>; + /** All values containing the given string. */ + description_contains?: Maybe; + /** All values not containing the given string. */ + description_not_contains?: Maybe; + /** All values starting with the given string. */ + description_starts_with?: Maybe; + /** All values not starting with the given string. */ + description_not_starts_with?: Maybe; + /** All values ending with the given string. */ + description_ends_with?: Maybe; + /** All values not ending with the given string */ + description_not_ends_with?: Maybe; + content?: Maybe; + /** All values that are not equal to given value. */ + content_not?: Maybe; + /** All values that are contained in given list. */ + content_in?: Maybe>; + /** All values that are not contained in given list. */ + content_not_in?: Maybe>; + /** All values containing the given string. */ + content_contains?: Maybe; + /** All values not containing the given string. */ + content_not_contains?: Maybe; + /** All values starting with the given string. */ + content_starts_with?: Maybe; + /** All values not starting with the given string. */ + content_not_starts_with?: Maybe; + /** All values ending with the given string. */ + content_ends_with?: Maybe; + /** All values not ending with the given string */ + content_not_ends_with?: Maybe; + image?: Maybe; + owner?: Maybe; + /** All values that are not equal to given value. */ + owner_not?: Maybe; + /** All values that are contained in given list. */ + owner_in?: Maybe>; + /** All values that are not contained in given list. */ + owner_not_in?: Maybe>; + /** All values containing the given string. */ + owner_contains?: Maybe; + /** All values not containing the given string. */ + owner_not_contains?: Maybe; + /** All values starting with the given string. */ + owner_starts_with?: Maybe; + /** All values not starting with the given string. */ + owner_not_starts_with?: Maybe; + /** All values ending with the given string. */ + owner_ends_with?: Maybe; + /** All values not ending with the given string */ + owner_not_ends_with?: Maybe; + userLikes_every?: Maybe; + userLikes_some?: Maybe; + userLikes_none?: Maybe; +}; + +export type UserLikeUpdateWithNestedWhereUniqueInput = { + /** Unique document search */ + where: UserLikeWhereUniqueInput; + /** Document to update */ + data: UserLikeUpdateInput; +}; + +export type UserLikeUpdateManyInlineInput = { + /** Create and connect multiple UserLike documents */ + create?: Maybe>; + /** Connect multiple existing UserLike documents */ + connect?: Maybe>; + /** Override currently-connected documents with multiple existing UserLike documents */ + set?: Maybe>; + /** Update multiple UserLike documents */ + update?: Maybe>; + /** Upsert multiple UserLike documents */ + upsert?: Maybe>; + /** Disconnect multiple UserLike documents */ + disconnect?: Maybe>; + /** Delete multiple UserLike documents */ + delete?: Maybe>; +}; + + +export type Recipe = Node & { + __typename?: 'Recipe'; + /** System stage field */ + stage: Stage; + /** Get the document in other stages */ + documentInStages: Array; + /** The unique identifier */ + id: Scalars['ID']; + /** The time the document was created */ + createdAt: Scalars['DateTime']; + /** The time the document was updated */ + updatedAt: Scalars['DateTime']; + /** The time the document was published. Null on documents in draft stage. */ + publishedAt?: Maybe; + title?: Maybe; + description?: Maybe; + content?: Maybe; + image?: Maybe; + ingredients?: Maybe; + owner?: Maybe; + userLikes: Array; +}; + + +export type RecipeDocumentInStagesArgs = { + stages?: Array; + includeCurrent?: Scalars['Boolean']; + inheritLocale?: Scalars['Boolean']; +}; + + +export type RecipeUserLikesArgs = { + where?: Maybe; + orderBy?: Maybe; + skip?: Maybe; + after?: Maybe; + before?: Maybe; + first?: Maybe; + last?: Maybe; +}; + +export type Mutation = { + __typename?: 'Mutation'; + /** + * Create one asset + * @deprecated Asset mutations will be overhauled soon + */ + createAsset?: Maybe; + /** Update one asset */ + updateAsset?: Maybe; + /** Delete one asset from _all_ existing stages. Returns deleted document. */ + deleteAsset?: Maybe; + /** Upsert one asset */ + upsertAsset?: Maybe; + /** Publish one asset */ + publishAsset?: Maybe; + /** Unpublish one asset from selected stages. Unpublish either the complete document with its relations, localizations and base data or specific localizations only. */ + unpublishAsset?: Maybe; + /** Update many assets */ + updateManyAssets: BatchPayload; + /** Delete many Asset documents */ + deleteManyAssets: BatchPayload; + /** Publish many Asset documents */ + publishManyAssets: BatchPayload; + /** Unpublish many Asset documents */ + unpublishManyAssets: BatchPayload; + /** Create one recipe */ + createRecipe?: Maybe; + /** Update one recipe */ + updateRecipe?: Maybe; + /** Delete one recipe from _all_ existing stages. Returns deleted document. */ + deleteRecipe?: Maybe; + /** Upsert one recipe */ + upsertRecipe?: Maybe; + /** Publish one recipe */ + publishRecipe?: Maybe; + /** Unpublish one recipe from selected stages. Unpublish either the complete document with its relations, localizations and base data or specific localizations only. */ + unpublishRecipe?: Maybe; + /** Update many recipes */ + updateManyRecipes: BatchPayload; + /** Delete many Recipe documents */ + deleteManyRecipes: BatchPayload; + /** Publish many Recipe documents */ + publishManyRecipes: BatchPayload; + /** Unpublish many Recipe documents */ + unpublishManyRecipes: BatchPayload; + /** Create one userLike */ + createUserLike?: Maybe; + /** Update one userLike */ + updateUserLike?: Maybe; + /** Delete one userLike from _all_ existing stages. Returns deleted document. */ + deleteUserLike?: Maybe; + /** Upsert one userLike */ + upsertUserLike?: Maybe; + /** Publish one userLike */ + publishUserLike?: Maybe; + /** Unpublish one userLike from selected stages. Unpublish either the complete document with its relations, localizations and base data or specific localizations only. */ + unpublishUserLike?: Maybe; + /** Update many userLikes */ + updateManyUserLikes: BatchPayload; + /** Delete many UserLike documents */ + deleteManyUserLikes: BatchPayload; + /** Publish many UserLike documents */ + publishManyUserLikes: BatchPayload; + /** Unpublish many UserLike documents */ + unpublishManyUserLikes: BatchPayload; +}; + + +export type MutationCreateAssetArgs = { + data: AssetCreateInput; +}; + + +export type MutationUpdateAssetArgs = { + where: AssetWhereUniqueInput; + data: AssetUpdateInput; +}; + + +export type MutationDeleteAssetArgs = { + where: AssetWhereUniqueInput; +}; + + +export type MutationUpsertAssetArgs = { + where: AssetWhereUniqueInput; + upsert: AssetUpsertInput; +}; + + +export type MutationPublishAssetArgs = { + where: AssetWhereUniqueInput; + locales?: Maybe>; + publishBase?: Maybe; + to?: Array; +}; + + +export type MutationUnpublishAssetArgs = { + where: AssetWhereUniqueInput; + from?: Array; + locales?: Maybe>; + unpublishBase?: Maybe; +}; + + +export type MutationUpdateManyAssetsArgs = { + where?: Maybe; + data: AssetUpdateManyInput; +}; + + +export type MutationDeleteManyAssetsArgs = { + where?: Maybe; +}; + + +export type MutationPublishManyAssetsArgs = { + where?: Maybe; + to?: Array; + locales?: Maybe>; + publishBase?: Maybe; +}; + + +export type MutationUnpublishManyAssetsArgs = { + where?: Maybe; + from?: Array; + locales?: Maybe>; + unpublishBase?: Maybe; +}; + + +export type MutationCreateRecipeArgs = { + data: RecipeCreateInput; +}; + + +export type MutationUpdateRecipeArgs = { + where: RecipeWhereUniqueInput; + data: RecipeUpdateInput; +}; + + +export type MutationDeleteRecipeArgs = { + where: RecipeWhereUniqueInput; +}; + + +export type MutationUpsertRecipeArgs = { + where: RecipeWhereUniqueInput; + upsert: RecipeUpsertInput; +}; + + +export type MutationPublishRecipeArgs = { + where: RecipeWhereUniqueInput; + to?: Array; +}; + + +export type MutationUnpublishRecipeArgs = { + where: RecipeWhereUniqueInput; + from?: Array; +}; + + +export type MutationUpdateManyRecipesArgs = { + where?: Maybe; + data: RecipeUpdateManyInput; +}; + + +export type MutationDeleteManyRecipesArgs = { + where?: Maybe; +}; + + +export type MutationPublishManyRecipesArgs = { + where?: Maybe; + to?: Array; +}; + + +export type MutationUnpublishManyRecipesArgs = { + where?: Maybe; + from?: Array; +}; + + +export type MutationCreateUserLikeArgs = { + data: UserLikeCreateInput; +}; + + +export type MutationUpdateUserLikeArgs = { + where: UserLikeWhereUniqueInput; + data: UserLikeUpdateInput; +}; + + +export type MutationDeleteUserLikeArgs = { + where: UserLikeWhereUniqueInput; +}; + + +export type MutationUpsertUserLikeArgs = { + where: UserLikeWhereUniqueInput; + upsert: UserLikeUpsertInput; +}; + + +export type MutationPublishUserLikeArgs = { + where: UserLikeWhereUniqueInput; + to?: Array; +}; + + +export type MutationUnpublishUserLikeArgs = { + where: UserLikeWhereUniqueInput; + from?: Array; +}; + + +export type MutationUpdateManyUserLikesArgs = { + where?: Maybe; + data: UserLikeUpdateManyInput; +}; + + +export type MutationDeleteManyUserLikesArgs = { + where?: Maybe; +}; + + +export type MutationPublishManyUserLikesArgs = { + where?: Maybe; + to?: Array; +}; + + +export type MutationUnpublishManyUserLikesArgs = { + where?: Maybe; + from?: Array; +}; + +export type Aggregate = { + __typename?: 'Aggregate'; + count: Scalars['Int']; +}; + +/** Stage system enumeration */ +export enum Stage { + /** System Draft Stage */ + Draft = 'DRAFT', + /** System Published Stage */ + Published = 'PUBLISHED' +} + +/** Transformations for Documents */ +export type DocumentTransformationInput = { + /** Changes the output for the file. */ + output?: Maybe; +}; + +export type RecipeConnectInput = { + /** Document to connect */ + where: RecipeWhereUniqueInput; + /** Allow to specify document position in list of connected documents, will default to appending at end of list */ + position?: Maybe; +}; + +/** An edge in a connection. */ +export type UserLikeEdge = { + __typename?: 'UserLikeEdge'; + /** The item at the end of the edge. */ + node: UserLike; + /** A cursor for use in pagination. */ + cursor: Scalars['String']; +}; + +export type PublishLocaleInput = { + /** Locales to publish */ + locale: Locale; + /** Stages to publish selected locales to */ + stages: Array; +}; + +/** Transformations for Images */ +export type ImageTransformationInput = { + /** Resizes the image */ + resize?: Maybe; +}; + +export type AssetCreateInput = { + createdAt?: Maybe; + updatedAt?: Maybe; + handle: Scalars['String']; + fileName: Scalars['String']; + height?: Maybe; + width?: Maybe; + size?: Maybe; + mimeType?: Maybe; + recipeImage?: Maybe; + /** Inline mutations for managing document localizations excluding the default locale */ + localizations?: Maybe; +}; + +/** A connection to a list of items. */ +export type RecipeConnection = { + __typename?: 'RecipeConnection'; + /** Information to aid in pagination. */ + pageInfo: PageInfo; + /** A list of edges. */ + edges: Array; + aggregate: Aggregate; +}; + +export type UserLikeUpsertInput = { + /** Create document if it didn't exist */ + create: UserLikeCreateInput; + /** Update document if it exists */ + update: UserLikeUpdateInput; +}; + +export type ImageResizeInput = { + /** The width in pixels to resize the image to. The value must be an integer from 1 to 10000. */ + width?: Maybe; + /** The height in pixels to resize the image to. The value must be an integer from 1 to 10000. */ + height?: Maybe; + /** The default value for the fit parameter is fit:clip. */ + fit?: Maybe; +}; + +export type RecipeUpdateManyInput = { + createdAt?: Maybe; + updatedAt?: Maybe; + title?: Maybe; + description?: Maybe; + content?: Maybe; + ingredients?: Maybe; + owner?: Maybe; +}; + +export type RecipeCreateManyInlineInput = { + /** Create and connect multiple existing Recipe documents */ + create?: Maybe>; + /** Connect multiple existing Recipe documents */ + connect?: Maybe>; +}; + +export enum _MutationInputFieldKind { + Scalar = 'scalar', + RichText = 'richText', + Enum = 'enum', + Relation = 'relation', + Union = 'union', + Virtual = 'virtual' +} + + +/** Asset system model */ +export type Asset = Node & { + __typename?: 'Asset'; + /** System stage field */ + stage: Stage; + /** System Locale field */ + locale: Locale; + /** Get the other localizations for this document */ + localizations: Array; + /** Get the document in other stages */ + documentInStages: Array; + /** The unique identifier */ + id: Scalars['ID']; + /** The time the document was created */ + createdAt: Scalars['DateTime']; + /** The time the document was updated */ + updatedAt: Scalars['DateTime']; + /** The time the document was published. Null on documents in draft stage. */ + publishedAt?: Maybe; + /** The file handle */ + handle: Scalars['String']; + /** The file name */ + fileName: Scalars['String']; + /** The height of the file */ + height?: Maybe; + /** The file width */ + width?: Maybe; + /** The file size */ + size?: Maybe; + /** The mime type of the file */ + mimeType?: Maybe; + recipeImage: Array; + /** Get the url for the asset with provided transformations applied. */ + url: Scalars['String']; +}; + + +/** Asset system model */ +export type AssetLocalizationsArgs = { + locales?: Array; + includeCurrent?: Scalars['Boolean']; +}; + + +/** Asset system model */ +export type AssetDocumentInStagesArgs = { + stages?: Array; + includeCurrent?: Scalars['Boolean']; + inheritLocale?: Scalars['Boolean']; +}; + + +/** Asset system model */ +export type AssetRecipeImageArgs = { + where?: Maybe; + orderBy?: Maybe; + skip?: Maybe; + after?: Maybe; + before?: Maybe; + first?: Maybe; + last?: Maybe; +}; + + +/** Asset system model */ +export type AssetUrlArgs = { + transformation?: Maybe; +}; + +export type AssetCreateManyInlineInput = { + /** Create and connect multiple existing Asset documents */ + create?: Maybe>; + /** Connect multiple existing Asset documents */ + connect?: Maybe>; +}; + + +/** Representing a RGBA color value: https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#rgb()_and_rgba() */ +export type Rgba = { + __typename?: 'RGBA'; + r: Scalars['RGBAHue']; + g: Scalars['RGBAHue']; + b: Scalars['RGBAHue']; + a: Scalars['RGBATransparency']; +}; + +export type UserLikeConnectInput = { + /** Document to connect */ + where: UserLikeWhereUniqueInput; + /** Allow to specify document position in list of connected documents, will default to appending at end of list */ + position?: Maybe; +}; + +export type AssetUpdateLocalizationDataInput = { + handle: Scalars['String']; + fileName: Scalars['String']; + height?: Maybe; + width?: Maybe; + size?: Maybe; + mimeType?: Maybe; +}; + +export type AssetUpdateManyLocalizationInput = { + fileName: Scalars['String']; + height?: Maybe; + width?: Maybe; + size?: Maybe; + mimeType?: Maybe; +}; + +/** References Recipe record uniquely */ +export type RecipeWhereUniqueInput = { + id?: Maybe; +}; + +export type BatchPayload = { + __typename?: 'BatchPayload'; + /** The number of nodes that have been affected by the Batch operation. */ + count: Scalars['Long']; +}; + +export type AssetUpdateLocalizationsInput = { + /** Localizations to create */ + create?: Maybe>; + /** Localizations to update */ + update?: Maybe>; + upsert?: Maybe>; + /** Localizations to delete */ + delete?: Maybe>; +}; + + +/** An object with an ID */ +export type Node = { + /** The id of the object. */ + id: Scalars['ID']; + /** The Stage of an object */ + stage: Stage; +}; + +export type AssetConnectInput = { + /** Document to connect */ + where: AssetWhereUniqueInput; + /** Allow to specify document position in list of connected documents, will default to appending at end of list */ + position?: Maybe; +}; + +export type AssetCreateLocalizationsInput = { + /** Create localizations for the newly-created document */ + create?: Maybe>; +}; + +export type UserLikeUpdateManyWithNestedWhereInput = { + /** Document search */ + where: UserLikeWhereInput; + /** Update many input */ + data: UserLikeUpdateManyInput; +}; + +/** Information about pagination in a connection. */ +export type PageInfo = { + __typename?: 'PageInfo'; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; +}; + +export type DocumentOutputInput = { + /** + * Transforms a document into a desired file type. + * See this matrix for format support: + * + * PDF: jpg, odp, ods, odt, png, svg, txt, and webp + * DOC: docx, html, jpg, odt, pdf, png, svg, txt, and webp + * DOCX: doc, html, jpg, odt, pdf, png, svg, txt, and webp + * ODT: doc, docx, html, jpg, pdf, png, svg, txt, and webp + * XLS: jpg, pdf, ods, png, svg, xlsx, and webp + * XLSX: jpg, pdf, ods, png, svg, xls, and webp + * ODS: jpg, pdf, png, xls, svg, xlsx, and webp + * PPT: jpg, odp, pdf, png, svg, pptx, and webp + * PPTX: jpg, odp, pdf, png, svg, ppt, and webp + * ODP: jpg, pdf, png, ppt, svg, pptx, and webp + * BMP: jpg, odp, ods, odt, pdf, png, svg, and webp + * GIF: jpg, odp, ods, odt, pdf, png, svg, and webp + * JPG: jpg, odp, ods, odt, pdf, png, svg, and webp + * PNG: jpg, odp, ods, odt, pdf, png, svg, and webp + * WEBP: jpg, odp, ods, odt, pdf, png, svg, and webp + * TIFF: jpg, odp, ods, odt, pdf, png, svg, and webp + * AI: jpg, odp, ods, odt, pdf, png, svg, and webp + * PSD: jpg, odp, ods, odt, pdf, png, svg, and webp + * SVG: jpg, odp, ods, odt, pdf, png, and webp + * HTML: jpg, odt, pdf, svg, txt, and webp + * TXT: jpg, html, odt, pdf, svg, and webp + */ + format?: Maybe; +}; + +export type AssetUpdateManyInput = { + createdAt?: Maybe; + updatedAt?: Maybe; + /** Optional updates to localizations */ + localizations?: Maybe>; +}; + +/** Identifies documents */ +export type AssetWhereInput = { + /** Contains search across all appropriate fields. */ + _search?: Maybe; + /** Logical AND on all given filters. */ + AND?: Maybe>; + /** Logical OR on all given filters. */ + OR?: Maybe>; + /** Logical NOT on all given filters combined by AND. */ + NOT?: Maybe>; + id?: Maybe; + /** All values that are not equal to given value. */ + id_not?: Maybe; + /** All values that are contained in given list. */ + id_in?: Maybe>; + /** All values that are not contained in given list. */ + id_not_in?: Maybe>; + /** All values containing the given string. */ + id_contains?: Maybe; + /** All values not containing the given string. */ + id_not_contains?: Maybe; + /** All values starting with the given string. */ + id_starts_with?: Maybe; + /** All values not starting with the given string. */ + id_not_starts_with?: Maybe; + /** All values ending with the given string. */ + id_ends_with?: Maybe; + /** All values not ending with the given string */ + id_not_ends_with?: Maybe; + createdAt?: Maybe; + /** All values that are not equal to given value. */ + createdAt_not?: Maybe; + /** All values that are contained in given list. */ + createdAt_in?: Maybe>; + /** All values that are not contained in given list. */ + createdAt_not_in?: Maybe>; + /** All values less than the given value. */ + createdAt_lt?: Maybe; + /** All values less than or equal the given value. */ + createdAt_lte?: Maybe; + /** All values greater than the given value. */ + createdAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + createdAt_gte?: Maybe; + updatedAt?: Maybe; + /** All values that are not equal to given value. */ + updatedAt_not?: Maybe; + /** All values that are contained in given list. */ + updatedAt_in?: Maybe>; + /** All values that are not contained in given list. */ + updatedAt_not_in?: Maybe>; + /** All values less than the given value. */ + updatedAt_lt?: Maybe; + /** All values less than or equal the given value. */ + updatedAt_lte?: Maybe; + /** All values greater than the given value. */ + updatedAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + updatedAt_gte?: Maybe; + publishedAt?: Maybe; + /** All values that are not equal to given value. */ + publishedAt_not?: Maybe; + /** All values that are contained in given list. */ + publishedAt_in?: Maybe>; + /** All values that are not contained in given list. */ + publishedAt_not_in?: Maybe>; + /** All values less than the given value. */ + publishedAt_lt?: Maybe; + /** All values less than or equal the given value. */ + publishedAt_lte?: Maybe; + /** All values greater than the given value. */ + publishedAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + publishedAt_gte?: Maybe; + handle?: Maybe; + /** All values that are not equal to given value. */ + handle_not?: Maybe; + /** All values that are contained in given list. */ + handle_in?: Maybe>; + /** All values that are not contained in given list. */ + handle_not_in?: Maybe>; + /** All values containing the given string. */ + handle_contains?: Maybe; + /** All values not containing the given string. */ + handle_not_contains?: Maybe; + /** All values starting with the given string. */ + handle_starts_with?: Maybe; + /** All values not starting with the given string. */ + handle_not_starts_with?: Maybe; + /** All values ending with the given string. */ + handle_ends_with?: Maybe; + /** All values not ending with the given string */ + handle_not_ends_with?: Maybe; + fileName?: Maybe; + /** All values that are not equal to given value. */ + fileName_not?: Maybe; + /** All values that are contained in given list. */ + fileName_in?: Maybe>; + /** All values that are not contained in given list. */ + fileName_not_in?: Maybe>; + /** All values containing the given string. */ + fileName_contains?: Maybe; + /** All values not containing the given string. */ + fileName_not_contains?: Maybe; + /** All values starting with the given string. */ + fileName_starts_with?: Maybe; + /** All values not starting with the given string. */ + fileName_not_starts_with?: Maybe; + /** All values ending with the given string. */ + fileName_ends_with?: Maybe; + /** All values not ending with the given string */ + fileName_not_ends_with?: Maybe; + height?: Maybe; + /** All values that are not equal to given value. */ + height_not?: Maybe; + /** All values that are contained in given list. */ + height_in?: Maybe>; + /** All values that are not contained in given list. */ + height_not_in?: Maybe>; + /** All values less than the given value. */ + height_lt?: Maybe; + /** All values less than or equal the given value. */ + height_lte?: Maybe; + /** All values greater than the given value. */ + height_gt?: Maybe; + /** All values greater than or equal the given value. */ + height_gte?: Maybe; + width?: Maybe; + /** All values that are not equal to given value. */ + width_not?: Maybe; + /** All values that are contained in given list. */ + width_in?: Maybe>; + /** All values that are not contained in given list. */ + width_not_in?: Maybe>; + /** All values less than the given value. */ + width_lt?: Maybe; + /** All values less than or equal the given value. */ + width_lte?: Maybe; + /** All values greater than the given value. */ + width_gt?: Maybe; + /** All values greater than or equal the given value. */ + width_gte?: Maybe; + size?: Maybe; + /** All values that are not equal to given value. */ + size_not?: Maybe; + /** All values that are contained in given list. */ + size_in?: Maybe>; + /** All values that are not contained in given list. */ + size_not_in?: Maybe>; + /** All values less than the given value. */ + size_lt?: Maybe; + /** All values less than or equal the given value. */ + size_lte?: Maybe; + /** All values greater than the given value. */ + size_gt?: Maybe; + /** All values greater than or equal the given value. */ + size_gte?: Maybe; + mimeType?: Maybe; + /** All values that are not equal to given value. */ + mimeType_not?: Maybe; + /** All values that are contained in given list. */ + mimeType_in?: Maybe>; + /** All values that are not contained in given list. */ + mimeType_not_in?: Maybe>; + /** All values containing the given string. */ + mimeType_contains?: Maybe; + /** All values not containing the given string. */ + mimeType_not_contains?: Maybe; + /** All values starting with the given string. */ + mimeType_starts_with?: Maybe; + /** All values not starting with the given string. */ + mimeType_not_starts_with?: Maybe; + /** All values ending with the given string. */ + mimeType_ends_with?: Maybe; + /** All values not ending with the given string */ + mimeType_not_ends_with?: Maybe; + recipeImage_every?: Maybe; + recipeImage_some?: Maybe; + recipeImage_none?: Maybe; +}; + +export type UserLike = Node & { + __typename?: 'UserLike'; + /** System stage field */ + stage: Stage; + /** Get the document in other stages */ + documentInStages: Array; + /** The unique identifier */ + id: Scalars['ID']; + /** The time the document was created */ + createdAt: Scalars['DateTime']; + /** The time the document was updated */ + updatedAt: Scalars['DateTime']; + /** The time the document was published. Null on documents in draft stage. */ + publishedAt?: Maybe; + user?: Maybe; + recipe?: Maybe; +}; + + +export type UserLikeDocumentInStagesArgs = { + stages?: Array; + includeCurrent?: Scalars['Boolean']; + inheritLocale?: Scalars['Boolean']; +}; + +export type UserLikeUpdateOneInlineInput = { + /** Create and connect one UserLike document */ + create?: Maybe; + /** Update single UserLike document */ + update?: Maybe; + /** Upsert single UserLike document */ + upsert?: Maybe; + /** Connect existing UserLike document */ + connect?: Maybe; + /** Disconnect currently connected UserLike document */ + disconnect?: Maybe; + /** Delete currently connected UserLike document */ + delete?: Maybe; +}; + + +/** Representing a color value comprising of HEX, RGBA and css color values */ +export type Color = { + __typename?: 'Color'; + hex: Scalars['Hex']; + rgba: Rgba; + css: Scalars['String']; +}; + +export enum AssetOrderByInput { + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + CreatedAtAsc = 'createdAt_ASC', + CreatedAtDesc = 'createdAt_DESC', + UpdatedAtAsc = 'updatedAt_ASC', + UpdatedAtDesc = 'updatedAt_DESC', + PublishedAtAsc = 'publishedAt_ASC', + PublishedAtDesc = 'publishedAt_DESC', + HandleAsc = 'handle_ASC', + HandleDesc = 'handle_DESC', + FileNameAsc = 'fileName_ASC', + FileNameDesc = 'fileName_DESC', + HeightAsc = 'height_ASC', + HeightDesc = 'height_DESC', + WidthAsc = 'width_ASC', + WidthDesc = 'width_DESC', + SizeAsc = 'size_ASC', + SizeDesc = 'size_DESC', + MimeTypeAsc = 'mimeType_ASC', + MimeTypeDesc = 'mimeType_DESC' +} + +export type UserLikeUpsertWithNestedWhereUniqueInput = { + /** Unique document search */ + where: UserLikeWhereUniqueInput; + /** Upsert data */ + data: UserLikeUpsertInput; +}; + +export type UserLikeUpdateManyInput = { + createdAt?: Maybe; + updatedAt?: Maybe; + user?: Maybe; +}; + +/** Representing a geolocation point with latitude and longitude */ +export type Location = { + __typename?: 'Location'; + latitude: Scalars['Float']; + longitude: Scalars['Float']; + distance: Scalars['Float']; +}; + + +/** Representing a geolocation point with latitude and longitude */ +export type LocationDistanceArgs = { + from: LocationInput; +}; + +/** Input for a geolocation point with latitude and longitude */ +export type LocationInput = { + latitude: Scalars['Float']; + longitude: Scalars['Float']; +}; + +export enum UserLikeOrderByInput { + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + CreatedAtAsc = 'createdAt_ASC', + CreatedAtDesc = 'createdAt_DESC', + UpdatedAtAsc = 'updatedAt_ASC', + UpdatedAtDesc = 'updatedAt_DESC', + PublishedAtAsc = 'publishedAt_ASC', + PublishedAtDesc = 'publishedAt_DESC', + UserAsc = 'user_ASC', + UserDesc = 'user_DESC' +} + +export type UserLikeCreateOneInlineInput = { + /** Create and connect one UserLike document */ + create?: Maybe; + /** Connect one existing UserLike document */ + connect?: Maybe; +}; + +export enum _RelationInputKind { + Create = 'create', + Update = 'update' +} + +/** A connection to a list of items. */ +export type UserLikeConnection = { + __typename?: 'UserLikeConnection'; + /** Information to aid in pagination. */ + pageInfo: PageInfo; + /** A list of edges. */ + edges: Array; + aggregate: Aggregate; +}; + +export type UserLikeCreateInput = { + createdAt?: Maybe; + updatedAt?: Maybe; + user?: Maybe; + recipe?: Maybe; +}; + + +export type Query = { + __typename?: 'Query'; + /** Fetches an object given its ID */ + node?: Maybe; + /** Retrieve multiple assets */ + assets: Array; + /** Retrieve a single asset */ + asset?: Maybe; + /** Retrieve multiple assets using the Relay connection interface */ + assetsConnection: AssetConnection; + /** Retrieve multiple recipes */ + recipes: Array; + /** Retrieve a single recipe */ + recipe?: Maybe; + /** Retrieve multiple recipes using the Relay connection interface */ + recipesConnection: RecipeConnection; + /** Retrieve multiple userLikes */ + userLikes: Array; + /** Retrieve a single userLike */ + userLike?: Maybe; + /** Retrieve multiple userLikes using the Relay connection interface */ + userLikesConnection: UserLikeConnection; +}; + + +export type QueryNodeArgs = { + id: Scalars['ID']; + stage?: Stage; + locales?: Array; +}; + + +export type QueryAssetsArgs = { + where?: Maybe; + orderBy?: Maybe; + skip?: Maybe; + after?: Maybe; + before?: Maybe; + first?: Maybe; + last?: Maybe; + stage?: Stage; + locales?: Array; +}; + + +export type QueryAssetArgs = { + where: AssetWhereUniqueInput; + stage?: Stage; + locales?: Array; +}; + + +export type QueryAssetsConnectionArgs = { + where?: Maybe; + orderBy?: Maybe; + skip?: Maybe; + after?: Maybe; + before?: Maybe; + first?: Maybe; + last?: Maybe; + stage?: Stage; + locales?: Array; +}; + + +export type QueryRecipesArgs = { + where?: Maybe; + orderBy?: Maybe; + skip?: Maybe; + after?: Maybe; + before?: Maybe; + first?: Maybe; + last?: Maybe; + stage?: Stage; +}; + + +export type QueryRecipeArgs = { + where: RecipeWhereUniqueInput; + stage?: Stage; +}; + + +export type QueryRecipesConnectionArgs = { + where?: Maybe; + orderBy?: Maybe; + skip?: Maybe; + after?: Maybe; + before?: Maybe; + first?: Maybe; + last?: Maybe; + stage?: Stage; +}; + + +export type QueryUserLikesArgs = { + where?: Maybe; + orderBy?: Maybe; + skip?: Maybe; + after?: Maybe; + before?: Maybe; + first?: Maybe; + last?: Maybe; + stage?: Stage; +}; + + +export type QueryUserLikeArgs = { + where: UserLikeWhereUniqueInput; + stage?: Stage; +}; + + +export type QueryUserLikesConnectionArgs = { + where?: Maybe; + orderBy?: Maybe; + skip?: Maybe; + after?: Maybe; + before?: Maybe; + first?: Maybe; + last?: Maybe; + stage?: Stage; +}; + +export enum RecipeOrderByInput { + IdAsc = 'id_ASC', + IdDesc = 'id_DESC', + CreatedAtAsc = 'createdAt_ASC', + CreatedAtDesc = 'createdAt_DESC', + UpdatedAtAsc = 'updatedAt_ASC', + UpdatedAtDesc = 'updatedAt_DESC', + PublishedAtAsc = 'publishedAt_ASC', + PublishedAtDesc = 'publishedAt_DESC', + TitleAsc = 'title_ASC', + TitleDesc = 'title_DESC', + DescriptionAsc = 'description_ASC', + DescriptionDesc = 'description_DESC', + ContentAsc = 'content_ASC', + ContentDesc = 'content_DESC', + OwnerAsc = 'owner_ASC', + OwnerDesc = 'owner_DESC' +} + +export type RecipeCreateInput = { + createdAt?: Maybe; + updatedAt?: Maybe; + title?: Maybe; + description?: Maybe; + content?: Maybe; + image?: Maybe; + ingredients?: Maybe; + owner?: Maybe; + userLikes?: Maybe; +}; + +export type UnpublishLocaleInput = { + /** Locales to unpublish */ + locale: Locale; + /** Stages to unpublish selected locales from */ + stages: Array; +}; + +export type RecipeUpdateManyInlineInput = { + /** Create and connect multiple Recipe documents */ + create?: Maybe>; + /** Connect multiple existing Recipe documents */ + connect?: Maybe>; + /** Override currently-connected documents with multiple existing Recipe documents */ + set?: Maybe>; + /** Update multiple Recipe documents */ + update?: Maybe>; + /** Upsert multiple Recipe documents */ + upsert?: Maybe>; + /** Disconnect multiple Recipe documents */ + disconnect?: Maybe>; + /** Delete multiple Recipe documents */ + delete?: Maybe>; +}; + +export enum _MutationKind { + Create = 'create', + Publish = 'publish', + Unpublish = 'unpublish', + Update = 'update', + Upsert = 'upsert', + Delete = 'delete', + UpdateMany = 'updateMany', + PublishMany = 'publishMany', + UnpublishMany = 'unpublishMany', + DeleteMany = 'deleteMany' +} + +export enum _FilterKind { + Search = 'search', + And = 'AND', + Or = 'OR', + Not = 'NOT', + Eq = 'eq', + EqNot = 'eq_not', + In = 'in', + NotIn = 'not_in', + Lt = 'lt', + Lte = 'lte', + Gt = 'gt', + Gte = 'gte', + Contains = 'contains', + NotContains = 'not_contains', + StartsWith = 'starts_with', + NotStartsWith = 'not_starts_with', + EndsWith = 'ends_with', + NotEndsWith = 'not_ends_with', + ContainsAll = 'contains_all', + ContainsSome = 'contains_some', + ContainsNone = 'contains_none', + RelationalSingle = 'relational_single', + RelationalEvery = 'relational_every', + RelationalSome = 'relational_some', + RelationalNone = 'relational_none' +} + + +/** Identifies documents */ +export type AssetManyWhereInput = { + /** Contains search across all appropriate fields. */ + _search?: Maybe; + /** Logical AND on all given filters. */ + AND?: Maybe>; + /** Logical OR on all given filters. */ + OR?: Maybe>; + /** Logical NOT on all given filters combined by AND. */ + NOT?: Maybe>; + id?: Maybe; + /** All values that are not equal to given value. */ + id_not?: Maybe; + /** All values that are contained in given list. */ + id_in?: Maybe>; + /** All values that are not contained in given list. */ + id_not_in?: Maybe>; + /** All values containing the given string. */ + id_contains?: Maybe; + /** All values not containing the given string. */ + id_not_contains?: Maybe; + /** All values starting with the given string. */ + id_starts_with?: Maybe; + /** All values not starting with the given string. */ + id_not_starts_with?: Maybe; + /** All values ending with the given string. */ + id_ends_with?: Maybe; + /** All values not ending with the given string */ + id_not_ends_with?: Maybe; + createdAt?: Maybe; + /** All values that are not equal to given value. */ + createdAt_not?: Maybe; + /** All values that are contained in given list. */ + createdAt_in?: Maybe>; + /** All values that are not contained in given list. */ + createdAt_not_in?: Maybe>; + /** All values less than the given value. */ + createdAt_lt?: Maybe; + /** All values less than or equal the given value. */ + createdAt_lte?: Maybe; + /** All values greater than the given value. */ + createdAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + createdAt_gte?: Maybe; + updatedAt?: Maybe; + /** All values that are not equal to given value. */ + updatedAt_not?: Maybe; + /** All values that are contained in given list. */ + updatedAt_in?: Maybe>; + /** All values that are not contained in given list. */ + updatedAt_not_in?: Maybe>; + /** All values less than the given value. */ + updatedAt_lt?: Maybe; + /** All values less than or equal the given value. */ + updatedAt_lte?: Maybe; + /** All values greater than the given value. */ + updatedAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + updatedAt_gte?: Maybe; + publishedAt?: Maybe; + /** All values that are not equal to given value. */ + publishedAt_not?: Maybe; + /** All values that are contained in given list. */ + publishedAt_in?: Maybe>; + /** All values that are not contained in given list. */ + publishedAt_not_in?: Maybe>; + /** All values less than the given value. */ + publishedAt_lt?: Maybe; + /** All values less than or equal the given value. */ + publishedAt_lte?: Maybe; + /** All values greater than the given value. */ + publishedAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + publishedAt_gte?: Maybe; + recipeImage_every?: Maybe; + recipeImage_some?: Maybe; + recipeImage_none?: Maybe; +}; + +export type AssetUpdateLocalizationInput = { + data: AssetUpdateLocalizationDataInput; + locale: Locale; +}; + +export type AssetUpdateManyInlineInput = { + /** Create and connect multiple Asset documents */ + create?: Maybe>; + /** Connect multiple existing Asset documents */ + connect?: Maybe>; + /** Override currently-connected documents with multiple existing Asset documents */ + set?: Maybe>; + /** Update multiple Asset documents */ + update?: Maybe>; + /** Upsert multiple Asset documents */ + upsert?: Maybe>; + /** Disconnect multiple Asset documents */ + disconnect?: Maybe>; + /** Delete multiple Asset documents */ + delete?: Maybe>; +}; + +export type RecipeUpsertInput = { + /** Create document if it didn't exist */ + create: RecipeCreateInput; + /** Update document if it exists */ + update: RecipeUpdateInput; +}; + +/** Custom type representing a rich text value comprising of raw rich text ast, html, markdown and text values */ +export type RichText = { + __typename?: 'RichText'; + /** Returns AST representation */ + raw: Scalars['RichTextAST']; + /** Returns HTMl representation */ + html: Scalars['String']; + /** Returns Markdown representation */ + markdown: Scalars['String']; + /** Returns plain-text contents of RichText */ + text: Scalars['String']; +}; + + +/** Accepts either HEX or RGBA color value. At least one of hex or rgba value should be passed. If both are passed RGBA is used. */ +export type ColorInput = { + hex?: Maybe; + rgba?: Maybe; +}; + +export enum DocumentFileTypes { + Jpg = 'jpg', + Odp = 'odp', + Ods = 'ods', + Odt = 'odt', + Png = 'png', + Svg = 'svg', + Txt = 'txt', + Webp = 'webp', + Docx = 'docx', + Pdf = 'pdf', + Html = 'html', + Doc = 'doc', + Xlsx = 'xlsx', + Xls = 'xls', + Pptx = 'pptx', + Ppt = 'ppt' +} + +export type AssetCreateOneInlineInput = { + /** Create and connect one Asset document */ + create?: Maybe; + /** Connect one existing Asset document */ + connect?: Maybe; +}; + +/** A connection to a list of items. */ +export type AssetConnection = { + __typename?: 'AssetConnection'; + /** Information to aid in pagination. */ + pageInfo: PageInfo; + /** A list of edges. */ + edges: Array; + aggregate: Aggregate; +}; + +/** References Asset record uniquely */ +export type AssetWhereUniqueInput = { + id?: Maybe; +}; + +export type AssetUpdateInput = { + handle?: Maybe; + fileName?: Maybe; + height?: Maybe; + width?: Maybe; + size?: Maybe; + mimeType?: Maybe; + recipeImage?: Maybe; + /** Manage document localizations */ + localizations?: Maybe; +}; + +export type AssetUpdateManyWithNestedWhereInput = { + /** Document search */ + where: AssetWhereInput; + /** Update many input */ + data: AssetUpdateManyInput; +}; + +export type RecipeUpdateWithNestedWhereUniqueInput = { + /** Unique document search */ + where: RecipeWhereUniqueInput; + /** Document to update */ + data: RecipeUpdateInput; +}; + +/** Identifies documents */ +export type UserLikeWhereInput = { + /** Contains search across all appropriate fields. */ + _search?: Maybe; + /** Logical AND on all given filters. */ + AND?: Maybe>; + /** Logical OR on all given filters. */ + OR?: Maybe>; + /** Logical NOT on all given filters combined by AND. */ + NOT?: Maybe>; + id?: Maybe; + /** All values that are not equal to given value. */ + id_not?: Maybe; + /** All values that are contained in given list. */ + id_in?: Maybe>; + /** All values that are not contained in given list. */ + id_not_in?: Maybe>; + /** All values containing the given string. */ + id_contains?: Maybe; + /** All values not containing the given string. */ + id_not_contains?: Maybe; + /** All values starting with the given string. */ + id_starts_with?: Maybe; + /** All values not starting with the given string. */ + id_not_starts_with?: Maybe; + /** All values ending with the given string. */ + id_ends_with?: Maybe; + /** All values not ending with the given string */ + id_not_ends_with?: Maybe; + createdAt?: Maybe; + /** All values that are not equal to given value. */ + createdAt_not?: Maybe; + /** All values that are contained in given list. */ + createdAt_in?: Maybe>; + /** All values that are not contained in given list. */ + createdAt_not_in?: Maybe>; + /** All values less than the given value. */ + createdAt_lt?: Maybe; + /** All values less than or equal the given value. */ + createdAt_lte?: Maybe; + /** All values greater than the given value. */ + createdAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + createdAt_gte?: Maybe; + updatedAt?: Maybe; + /** All values that are not equal to given value. */ + updatedAt_not?: Maybe; + /** All values that are contained in given list. */ + updatedAt_in?: Maybe>; + /** All values that are not contained in given list. */ + updatedAt_not_in?: Maybe>; + /** All values less than the given value. */ + updatedAt_lt?: Maybe; + /** All values less than or equal the given value. */ + updatedAt_lte?: Maybe; + /** All values greater than the given value. */ + updatedAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + updatedAt_gte?: Maybe; + publishedAt?: Maybe; + /** All values that are not equal to given value. */ + publishedAt_not?: Maybe; + /** All values that are contained in given list. */ + publishedAt_in?: Maybe>; + /** All values that are not contained in given list. */ + publishedAt_not_in?: Maybe>; + /** All values less than the given value. */ + publishedAt_lt?: Maybe; + /** All values less than or equal the given value. */ + publishedAt_lte?: Maybe; + /** All values greater than the given value. */ + publishedAt_gt?: Maybe; + /** All values greater than or equal the given value. */ + publishedAt_gte?: Maybe; + user?: Maybe; + /** All values that are not equal to given value. */ + user_not?: Maybe; + /** All values that are contained in given list. */ + user_in?: Maybe>; + /** All values that are not contained in given list. */ + user_not_in?: Maybe>; + /** All values containing the given string. */ + user_contains?: Maybe; + /** All values not containing the given string. */ + user_not_contains?: Maybe; + /** All values starting with the given string. */ + user_starts_with?: Maybe; + /** All values not starting with the given string. */ + user_not_starts_with?: Maybe; + /** All values ending with the given string. */ + user_ends_with?: Maybe; + /** All values not ending with the given string */ + user_not_ends_with?: Maybe; + recipe?: Maybe; +}; + +export type ConnectPositionInput = { + /** Connect document after specified document */ + after?: Maybe; + /** Connect document before specified document */ + before?: Maybe; + /** Connect document at first position */ + start?: Maybe; + /** Connect document at last position */ + end?: Maybe; +}; + +export enum _RelationInputCardinality { + One = 'one', + Many = 'many' +} + +export enum ImageFit { + /** Resizes the image to fit within the specified parameters without distorting, cropping, or changing the aspect ratio. */ + Clip = 'clip', + /** Resizes the image to fit the specified parameters exactly by removing any parts of the image that don't fit within the boundaries. */ + Crop = 'crop', + /** Resizes the image to fit the specified parameters exactly by scaling the image to the desired size. The aspect ratio of the image is not respected and the image can be distorted using this method. */ + Scale = 'scale', + /** Resizes the image to fit within the parameters, but as opposed to 'fit:clip' will not scale the image if the image is smaller than the output size. */ + Max = 'max' +} + +export type AssetUpsertLocalizationInput = { + update: AssetUpdateLocalizationDataInput; + create: AssetCreateLocalizationDataInput; + locale: Locale; +}; + +export type AssetUpdateOneInlineInput = { + /** Create and connect one Asset document */ + create?: Maybe; + /** Update single Asset document */ + update?: Maybe; + /** Upsert single Asset document */ + upsert?: Maybe; + /** Connect existing Asset document */ + connect?: Maybe; + /** Disconnect currently connected Asset document */ + disconnect?: Maybe; + /** Delete currently connected Asset document */ + delete?: Maybe; +}; + +export type UserLikeUpdateInput = { + user?: Maybe; + recipe?: Maybe; +}; + +export enum _OrderDirection { + Asc = 'asc', + Desc = 'desc' +} + +export type RecipeUpsertWithNestedWhereUniqueInput = { + /** Unique document search */ + where: RecipeWhereUniqueInput; + /** Upsert data */ + data: RecipeUpsertInput; +}; + +export type RecipeUpdateOneInlineInput = { + /** Create and connect one Recipe document */ + create?: Maybe; + /** Update single Recipe document */ + update?: Maybe; + /** Upsert single Recipe document */ + upsert?: Maybe; + /** Connect existing Recipe document */ + connect?: Maybe; + /** Disconnect currently connected Recipe document */ + disconnect?: Maybe; + /** Delete currently connected Recipe document */ + delete?: Maybe; +}; + +/** An edge in a connection. */ +export type AssetEdge = { + __typename?: 'AssetEdge'; + /** The item at the end of the edge. */ + node: Asset; + /** A cursor for use in pagination. */ + cursor: Scalars['String']; +}; + +export type AssetUpsertWithNestedWhereUniqueInput = { + /** Unique document search */ + where: AssetWhereUniqueInput; + /** Upsert data */ + data: AssetUpsertInput; +}; + +/** References UserLike record uniquely */ +export type UserLikeWhereUniqueInput = { + id?: Maybe; +}; + +export type AssetUpsertInput = { + /** Create document if it didn't exist */ + create: AssetCreateInput; + /** Update document if it exists */ + update: AssetUpdateInput; +}; + +/** An edge in a connection. */ +export type RecipeEdge = { + __typename?: 'RecipeEdge'; + /** The item at the end of the edge. */ + node: Recipe; + /** A cursor for use in pagination. */ + cursor: Scalars['String']; +}; + +export type RecipeUpdateInput = { + title?: Maybe; + description?: Maybe; + content?: Maybe; + image?: Maybe; + ingredients?: Maybe; + owner?: Maybe; + userLikes?: Maybe; +}; + +export type RecipeCreateOneInlineInput = { + /** Create and connect one Recipe document */ + create?: Maybe; + /** Connect one existing Recipe document */ + connect?: Maybe; +}; + +/** Locale system enumeration */ +export enum Locale { + /** System locale */ + En = 'en' +} + +/** Transformations for Assets */ +export type AssetTransformationInput = { + image?: Maybe; + document?: Maybe; + /** Pass true if you want to validate the passed transformation parameters */ + validateOptions?: Maybe; +}; + +export type CreateRecipeGraphQlMutationVariables = { + data: RecipeCreateInput; +}; + + +export type CreateRecipeGraphQlMutation = ( + { __typename?: 'Mutation' } + & { createRecipe?: Maybe<( + { __typename?: 'Recipe' } + & Pick + & { userLikes: Array<( + { __typename?: 'UserLike' } + & Pick + )>, image?: Maybe<( + { __typename?: 'Asset' } + & Pick + )> } + )> } +); + +export type CreateUserLikeGraphQlMutationVariables = { + data: UserLikeCreateInput; +}; + + +export type CreateUserLikeGraphQlMutation = ( + { __typename?: 'Mutation' } + & { createUserLike?: Maybe<( + { __typename?: 'UserLike' } + & Pick + & { recipe?: Maybe<( + { __typename?: 'Recipe' } + & Pick + )> } + )> } +); + +export type DeleteAssetGraphQlMutationVariables = { + where: AssetWhereUniqueInput; +}; + + +export type DeleteAssetGraphQlMutation = ( + { __typename?: 'Mutation' } + & { deleteAsset?: Maybe<( + { __typename?: 'Asset' } + & Pick + )> } +); + +export type DeleteRecipeGraphQlMutationVariables = { + where: RecipeWhereUniqueInput; +}; + + +export type DeleteRecipeGraphQlMutation = ( + { __typename?: 'Mutation' } + & { deleteRecipe?: Maybe<( + { __typename?: 'Recipe' } + & Pick + )> } +); + +export type DeleteUserLikeGraphQlMutationVariables = { + where: UserLikeWhereUniqueInput; +}; + + +export type DeleteUserLikeGraphQlMutation = ( + { __typename?: 'Mutation' } + & { deleteUserLike?: Maybe<( + { __typename?: 'UserLike' } + & Pick + )> } +); + +export type UpdateRecipeGraphQlMutationVariables = { + data: RecipeUpdateInput; + where: RecipeWhereUniqueInput; +}; + + +export type UpdateRecipeGraphQlMutation = ( + { __typename?: 'Mutation' } + & { updateRecipe?: Maybe<( + { __typename?: 'Recipe' } + & Pick + & { userLikes: Array<( + { __typename?: 'UserLike' } + & Pick + )>, image?: Maybe<( + { __typename?: 'Asset' } + & Pick + )> } + )> } +); + +export type RecipeGraphQlQueryVariables = { + where: RecipeWhereUniqueInput; +}; + + +export type RecipeGraphQlQuery = ( + { __typename?: 'Query' } + & { recipe?: Maybe<( + { __typename?: 'Recipe' } + & Pick + & { userLikes: Array<( + { __typename?: 'UserLike' } + & Pick + )>, image?: Maybe<( + { __typename?: 'Asset' } + & Pick + )> } + )> } +); + +export type RecipesGraphQlQueryVariables = { + where?: Maybe; +}; + + +export type RecipesGraphQlQuery = ( + { __typename?: 'Query' } + & { recipes: Array<( + { __typename?: 'Recipe' } + & Pick + & { userLikes: Array<( + { __typename?: 'UserLike' } + & Pick + )>, image?: Maybe<( + { __typename?: 'Asset' } + & Pick + )> } + )> } +); + +export type UserLikeGraphQlQueryVariables = { + where: UserLikeWhereUniqueInput; +}; + + +export type UserLikeGraphQlQuery = ( + { __typename?: 'Query' } + & { userLike?: Maybe<( + { __typename?: 'UserLike' } + & Pick + & { recipe?: Maybe<( + { __typename?: 'Recipe' } + & Pick + & { userLikes: Array<( + { __typename?: 'UserLike' } + & Pick + )>, image?: Maybe<( + { __typename?: 'Asset' } + & Pick + )> } + )> } + )> } +); + +export type UserLikesGraphQlQueryVariables = { + where?: Maybe; +}; + + +export type UserLikesGraphQlQuery = ( + { __typename?: 'Query' } + & { userLikes: Array<( + { __typename?: 'UserLike' } + & Pick + & { recipe?: Maybe<( + { __typename?: 'Recipe' } + & Pick + & { userLikes: Array<( + { __typename?: 'UserLike' } + & Pick + )>, image?: Maybe<( + { __typename?: 'Asset' } + & Pick + )> } + )> } + )> } +); diff --git a/package-lock.json b/package-lock.json index c89a6aa..6fd669e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -544,6 +544,14 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz", + "integrity": "sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -552,6 +560,14 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-flow": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz", + "integrity": "sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", @@ -716,6 +732,15 @@ "@babel/helper-plugin-utils": "^7.8.3" } }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz", + "integrity": "sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-flow": "^7.8.3" + } + }, "@babel/plugin-transform-for-of": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", @@ -1135,6 +1160,569 @@ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, + "@graphql-codegen/cli": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-1.13.5.tgz", + "integrity": "sha512-/A19GkD9NpFhRNSt6/sVepZ09hwwpQUhjgKthBea0cteH3jFXa/3h1Sgtk/0z90MLxRNRVaY9V85O7SUU21xBA==", + "requires": { + "@graphql-codegen/core": "1.13.5", + "@graphql-codegen/plugin-helpers": "1.13.5", + "@graphql-toolkit/apollo-engine-loader": "~0.10.4", + "@graphql-toolkit/code-file-loader": "~0.10.4", + "@graphql-toolkit/common": "~0.10.4", + "@graphql-toolkit/core": "~0.10.4", + "@graphql-toolkit/git-loader": "~0.10.4", + "@graphql-toolkit/github-loader": "~0.10.4", + "@graphql-toolkit/graphql-file-loader": "~0.10.4", + "@graphql-toolkit/json-file-loader": "~0.10.4", + "@graphql-toolkit/prisma-loader": "~0.10.4", + "@graphql-toolkit/url-loader": "~0.10.4", + "ansi-escapes": "4.3.1", + "camel-case": "4.1.1", + "chalk": "4.0.0", + "chokidar": "3.4.0", + "commander": "5.1.0", + "common-tags": "1.8.0", + "constant-case": "3.0.3", + "cosmiconfig": "6.0.0", + "debounce": "1.2.0", + "dependency-graph": "0.9.0", + "detect-indent": "6.0.0", + "glob": "7.1.6", + "graphql-config": "3.0.1", + "indent-string": "4.0.0", + "inquirer": "7.1.0", + "is-glob": "4.0.1", + "json-to-pretty-yaml": "1.2.2", + "listr": "0.14.3", + "listr-update-renderer": "0.5.0", + "log-symbols": "4.0.0", + "lower-case": "2.0.1", + "minimatch": "3.0.4", + "mkdirp": "1.0.4", + "pascal-case": "3.1.1", + "request": "2.88.2", + "ts-log": "2.1.4", + "tslib": "^1.11.1", + "upper-case": "2.0.1", + "valid-url": "1.0.9", + "wrap-ansi": "7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "@graphql-codegen/core": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@graphql-codegen/core/-/core-1.13.5.tgz", + "integrity": "sha512-RKkzvCXWfXaNeleHRpp5qWmiwnNCxsc6cVlLmSiZMQad363yOjU2m95oqy4a7WwL6pE/x0NqxtxCFLP7fD+LMQ==", + "requires": { + "@graphql-codegen/plugin-helpers": "1.13.5", + "@graphql-toolkit/common": "~0.10.4", + "@graphql-toolkit/schema-merging": "~0.10.4", + "tslib": "~1.11.1" + } + }, + "@graphql-codegen/plugin-helpers": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-1.13.5.tgz", + "integrity": "sha512-Vq+Qh1K74YHge4uxzekWr4Mf63dFem+RpVsw2w/EmssQLK8WasgIEJ1wQp5nWGwvc5Bj7gImO3+VZRxgMEcrcw==", + "requires": { + "@graphql-toolkit/common": "~0.10.4", + "camel-case": "4.1.1", + "common-tags": "1.8.0", + "constant-case": "3.0.3", + "import-from": "3.0.0", + "lower-case": "2.0.1", + "param-case": "3.0.3", + "pascal-case": "3.1.1", + "tslib": "~1.11.1", + "upper-case": "2.0.1" + } + }, + "@graphql-codegen/typescript": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-1.13.5.tgz", + "integrity": "sha512-wa9rF7xFaobxzw79Ok40pkjAS2as7nsgm+bRIwyP07YZSOYoa2TOepvAcT4NdZg5+ocmYWIZDpWwtchRHZoT5A==", + "requires": { + "@graphql-codegen/plugin-helpers": "1.13.5", + "@graphql-codegen/visitor-plugin-common": "1.13.5", + "auto-bind": "~4.0.0", + "tslib": "~1.11.1" + } + }, + "@graphql-codegen/typescript-operations": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-1.13.5.tgz", + "integrity": "sha512-OusFqBo2zUij0w4uLIw8+lWPXdRTWaW1sm56TjJZFwSHMQjZywYir+I0/x/wxZRX2aalE4sMJTy0AQVQx1f+Mg==", + "requires": { + "@graphql-codegen/plugin-helpers": "1.13.5", + "@graphql-codegen/typescript": "1.13.5", + "@graphql-codegen/visitor-plugin-common": "1.13.5", + "auto-bind": "~4.0.0", + "tslib": "~1.11.1" + } + }, + "@graphql-codegen/visitor-plugin-common": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-1.13.5.tgz", + "integrity": "sha512-NBQBYCGasRKXQK9JW91hjz3CdHK9QjXw7MjfXxkEGcyt7YKtvEKsfCapoUP5BUl7pQFmkqBUacoNg6iVMhtEKg==", + "requires": { + "@graphql-codegen/plugin-helpers": "1.13.5", + "@graphql-toolkit/relay-operation-optimizer": "~0.10.4", + "array.prototype.flatmap": "1.2.3", + "auto-bind": "~4.0.0", + "dependency-graph": "0.9.0", + "graphql-tag": "2.10.3", + "parse-filepath": "1.0.2", + "pascal-case": "3.1.1", + "tslib": "~1.11.1" + } + }, + "@graphql-toolkit/apollo-engine-loader": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@graphql-toolkit/apollo-engine-loader/-/apollo-engine-loader-0.10.6.tgz", + "integrity": "sha512-/IsLQiUwECkWtFkVpIeGt4OCXXBOzSbhZ7LYFoAph8eqJzjrnOb/L5XIFTj/pC/WPUHx4oC4KJz0/1ybjkEVRg==", + "requires": { + "@graphql-toolkit/common": "0.10.6", + "cross-fetch": "3.0.4", + "tslib": "1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } + } + }, + "@graphql-toolkit/code-file-loader": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@graphql-toolkit/code-file-loader/-/code-file-loader-0.10.6.tgz", + "integrity": "sha512-ITkPCURTtJGh0WmMshVQ5bh54AWwOgur8iuAil3Vh14gjuOYxhdOSVQ+L2AVQ22CXclhJLbcm6mhPKjtG7UmBw==", + "requires": { + "@graphql-toolkit/common": "0.10.6", + "@graphql-toolkit/graphql-tag-pluck": "0.10.6", + "tslib": "1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } + } + }, + "@graphql-toolkit/common": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@graphql-toolkit/common/-/common-0.10.6.tgz", + "integrity": "sha512-rrH/KPheh/wCZzqUmNayBHd+aNWl/751C4iTL/327TzONdAVrV7ZQOyEkpGLW6YEFWPIlWxNkaBoEALIjCxTGg==", + "requires": { + "aggregate-error": "3.0.1", + "camel-case": "4.1.1", + "graphql-tools": "5.0.0", + "lodash": "4.17.15" + } + }, + "@graphql-toolkit/core": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@graphql-toolkit/core/-/core-0.10.6.tgz", + "integrity": "sha512-dUgYTmyIZH+rBVacjPgqO+7qCG5b6pD8niHVghX2h4UAMEApx2o/2TAsSsAMFlqrMA/haW1UIMsmKPw8Yj19ZA==", + "requires": { + "@graphql-toolkit/common": "0.10.6", + "@graphql-toolkit/schema-merging": "0.10.6", + "aggregate-error": "3.0.1", + "globby": "11.0.0", + "import-from": "^3.0.0", + "is-glob": "4.0.1", + "lodash": "4.17.15", + "p-limit": "2.3.0", + "resolve-from": "5.0.0", + "tslib": "1.11.1", + "unixify": "1.0.0", + "valid-url": "1.0.9" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } + } + }, + "@graphql-toolkit/git-loader": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@graphql-toolkit/git-loader/-/git-loader-0.10.6.tgz", + "integrity": "sha512-n8ZeFTI9PFakLg4++okI9wdPbBUqnnvNsRPqTozdwgO+97kls0fvhe6Cp45dKLG4xVPPTDdqPazQbmjOQtW32g==", + "requires": { + "@graphql-toolkit/common": "0.10.6", + "@graphql-toolkit/graphql-tag-pluck": "0.10.6", + "simple-git": "1.132.0" + } + }, + "@graphql-toolkit/github-loader": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@graphql-toolkit/github-loader/-/github-loader-0.10.6.tgz", + "integrity": "sha512-fwwclgMmpcvUQqWCX4kh99N0R3Qjs5kXN6Fcz5IJQSI4ExNlAJk0xG1+8ipYp35oF5+1dc+dMezgLT/kMpRUOA==", + "requires": { + "@graphql-toolkit/common": "0.10.6", + "@graphql-toolkit/graphql-tag-pluck": "0.10.6", + "cross-fetch": "3.0.4" + } + }, + "@graphql-toolkit/graphql-file-loader": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@graphql-toolkit/graphql-file-loader/-/graphql-file-loader-0.10.6.tgz", + "integrity": "sha512-D5GutvfUccIFX5Cx/blvrHnt8fXxQ9gM51cgTyGV+6dL2VdCrmOJucEWG7+ki5baCAB78/OyhtP+/tmKNQVPKQ==", + "requires": { + "@graphql-toolkit/common": "0.10.6", + "tslib": "1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } + } + }, + "@graphql-toolkit/graphql-tag-pluck": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@graphql-toolkit/graphql-tag-pluck/-/graphql-tag-pluck-0.10.6.tgz", + "integrity": "sha512-LZpDGZpsRHlK6fyDVWAC7Bn82RBKrjwrSfi1UTL5uIXyZd1t7YbF3MwvTYMJ+bbJQv21D/vHhXeCDwiWTDaYZw==", + "requires": { + "@babel/parser": "7.9.4", + "@babel/traverse": "7.9.5", + "@babel/types": "7.9.5", + "@graphql-toolkit/common": "0.10.6", + "vue-template-compiler": "^2.6.11" + }, + "dependencies": { + "@babel/parser": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==" + }, + "@babel/traverse": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "requires": { + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@graphql-toolkit/json-file-loader": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@graphql-toolkit/json-file-loader/-/json-file-loader-0.10.6.tgz", + "integrity": "sha512-gTf3gWtc4ZH1OFLl79BRHX0DsjecV0xDxKLKFpGYx22ay72iJqddKFKXxRHeGWFjIrNIi90RUyKlKY8uGyYw2w==", + "requires": { + "@graphql-toolkit/common": "0.10.6", + "tslib": "1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } + } + }, + "@graphql-toolkit/prisma-loader": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@graphql-toolkit/prisma-loader/-/prisma-loader-0.10.6.tgz", + "integrity": "sha512-vjY5fHn0048Kedhj9DAe/z4+u8VKX6OSLtVQglWYPaxh3Plytv+EPQCsN7AMyjuaNkfQJYBZvTZOL4V/lyK0YQ==", + "requires": { + "@graphql-toolkit/common": "0.10.6", + "@graphql-toolkit/url-loader": "0.10.6", + "prisma-yml": "1.34.10", + "tslib": "1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } + } + }, + "@graphql-toolkit/relay-operation-optimizer": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@graphql-toolkit/relay-operation-optimizer/-/relay-operation-optimizer-0.10.6.tgz", + "integrity": "sha512-cbaVFJQc6xPRKBwz139RxwQgzrqEw0ggL+0Y7HkyjyiBScq+CzfqYjgwhaLYPGJiACwwjq6X6D6ESDtTS34HXQ==", + "requires": { + "@graphql-toolkit/common": "0.10.6", + "relay-compiler": "9.1.0" + } + }, + "@graphql-toolkit/schema-merging": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@graphql-toolkit/schema-merging/-/schema-merging-0.10.6.tgz", + "integrity": "sha512-BNABgYaNCw4Li3EiH/x7oDpkN+ml3M0SWqjnsW1Pf2NcyfGlv033Bda+O/q4XYtseZ0OOOh52GLXtUgwyPFb8A==", + "requires": { + "@graphql-toolkit/common": "0.10.6", + "deepmerge": "4.2.2", + "graphql-tools": "5.0.0", + "tslib": "1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } + } + }, + "@graphql-toolkit/url-loader": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@graphql-toolkit/url-loader/-/url-loader-0.10.6.tgz", + "integrity": "sha512-Ts8h4zfcOKSp9TNk6uOvmkwDofXUr5cspxO2cpmd0zLnxceHYhe0D2Q/Bq1SPw3NGN2AqvAr7zD8T2z5NDVUKQ==", + "requires": { + "@graphql-toolkit/common": "0.10.6", + "cross-fetch": "3.0.4", + "graphql-tools": "5.0.0", + "tslib": "1.11.1", + "valid-url": "1.0.9" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + } + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + }, + "dependencies": { + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + } + } + }, "@next/react-dev-overlay": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-9.4.0.tgz", @@ -1211,6 +1799,37 @@ "resolved": "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-9.4.0.tgz", "integrity": "sha512-AaEC/diS2two2JLsEItGhuAux8UfPo0o34/7l1SIw0t4SYunUYJsxM/Y55OR2ljiVn9ffKR1n1U9IEQhsK80jw==" }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==" + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", + "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", + "requires": { + "any-observable": "^0.3.0" + } + }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", @@ -1221,6 +1840,11 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.5.tgz", "integrity": "sha512-3ySmiBYJPqgjiHA7oEaIo2Rzz0HrOZ7yrNO5HWyaE5q0lQ3BppDZ3N53Miz8bw2I7gh1/zir2MGVZBvpb1zq9g==" }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, "@types/prop-types": { "version": "15.7.3", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", @@ -1486,6 +2110,14 @@ } } }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, "aggregate-error": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", @@ -1535,6 +2167,21 @@ "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.9.tgz", "integrity": "sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA==" }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" + } + } + }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", @@ -1599,6 +2246,11 @@ "warning": "~4.0.3" } }, + "any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==" + }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -1685,6 +2337,17 @@ "tslib": "^1.9.3" } }, + "apollo-upload-client": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/apollo-upload-client/-/apollo-upload-client-13.0.0.tgz", + "integrity": "sha512-lJ9/bk1BH1lD15WhWRha2J3+LrXrPIX5LP5EwiOUHv8PCORp4EUrcujrA3rI5hZeZygrTX8bshcuMdpqpSrvtA==", + "requires": { + "@babel/runtime": "^7.9.2", + "apollo-link": "^1.2.12", + "apollo-link-http-common": "^0.2.14", + "extract-files": "^8.0.0" + } + }, "apollo-utilities": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz", @@ -1734,11 +2397,39 @@ "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, + "array.prototype.flatmap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz", + "integrity": "sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, "asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", @@ -1764,6 +2455,11 @@ "util": "0.10.3" } }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -1779,11 +2475,31 @@ "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.3.0.tgz", "integrity": "sha512-cAHGD9EL8aCqWXjnb44q94MWiDFzUo1tMhvLb2WzcpWqGiKugsjWG9cvl+jPgkPca7asNbsBU3fa0cwkI/P+Xg==" }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, + "auto-bind": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", + "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -1860,6 +2576,11 @@ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==" + }, "babel-plugin-transform-define": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-define/-/babel-plugin-transform-define-2.0.0.tgz", @@ -1874,6 +2595,40 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" }, + "babel-preset-fbjs": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz", + "integrity": "sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw==", + "requires": { + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + } + }, "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", @@ -1950,6 +2705,14 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -2121,6 +2884,14 @@ "pkg-up": "^2.0.0" } }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "requires": { + "node-int64": "^0.4.0" + } + }, "buffer": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", @@ -2131,6 +2902,11 @@ "isarray": "^1.0.0" } }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -2187,6 +2963,11 @@ "unset-value": "^1.0.0" } }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", @@ -2208,6 +2989,15 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" }, + "camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "requires": { + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" + } + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -2234,6 +3024,11 @@ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001055.tgz", "integrity": "sha512-MbwsBmKrBSKIWldfdIagO5OJWZclpJtS4h0Jrk/4HFrXJxTdVdH23Fd+xCiHriVGvYcWyW8mR/CPsYajlH8Iuw==" }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -2254,6 +3049,11 @@ } } }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, "chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -2326,6 +3126,116 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + } + } + }, "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -2336,6 +3246,11 @@ "shallow-clone": "^3.0.0" } }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, "coa": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", @@ -2346,6 +3261,11 @@ "q": "^1.1.2" } }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -2386,11 +3306,24 @@ "simple-swizzle": "^0.2.2" } }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -2435,6 +3368,16 @@ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" }, + "constant-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.3.tgz", + "integrity": "sha512-FXtsSnnrFYpzDmvwDGQW+l8XK3GV1coLyBN0eBz16ZUzGaZcT2ANVCJmLeuw2GQgxKHQIe9e0w2dzkSfaRlUmA==", + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0", + "upper-case": "^2.0.1" + } + }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -2830,6 +3773,14 @@ "type": "^1.0.1" } }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, "data-uri-to-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.0.tgz", @@ -2838,6 +3789,22 @@ "buffer-from": "^1.1.1" } }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "optional": true + }, + "debounce": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz", + "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg==" + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -2846,11 +3813,21 @@ "ms": "^2.1.1" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -2896,6 +3873,21 @@ } } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "dependency-graph": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.9.0.tgz", + "integrity": "sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w==" + }, + "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.1", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", @@ -2905,6 +3897,11 @@ "minimalistic-assert": "^1.0.0" } }, + "detect-indent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", + "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==" + }, "diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -2922,6 +3919,14 @@ } } }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, "dom-align": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.11.1.tgz", @@ -2985,6 +3990,15 @@ } } }, + "dot-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz", + "integrity": "sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==", + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, "dot-prop": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", @@ -3009,11 +4023,33 @@ "stream-shift": "^1.0.0" } }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, "electron-to-chromium": { "version": "1.3.434", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.434.tgz", "integrity": "sha512-WjzGrE6appXvMyc2kH9Ide7OxsgTuRzag9sjQ5AcbOnbS9ut7P1HzOeEbJFLhr81IR7n2Hlr6qTTSGTXLIX5Pg==" }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=" + }, "elliptic": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", @@ -3035,11 +4071,24 @@ } } }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -3138,6 +4187,19 @@ "es6-symbol": "^3.1.1" } }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "requires": { + "es6-promise": "^4.0.3" + } + }, "es6-symbol": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", @@ -3258,6 +4320,11 @@ } } }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", @@ -3277,6 +4344,16 @@ } } }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, "extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", @@ -3336,21 +4413,136 @@ } } }, + "extract-files": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-8.1.0.tgz", + "integrity": "sha512-PTGtfthZK79WUMk+avLmwx3NGdU8+iVFXC2NMGxKsn0MnihOG2lvumj+AZo8CTwTrwjXDgZ5tztbRlEdRjBonQ==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, "fast-deep-equal": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" }, + "fast-glob": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", + "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, + "fastq": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", + "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "requires": { + "reusify": "^1.0.4" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "requires": { + "bser": "2.1.1" + } + }, + "fbjs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz", + "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==", + "requires": { + "core-js": "^2.4.1", + "fbjs-css-vars": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + }, + "fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, "figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -3410,6 +4602,11 @@ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, "fork-ts-checker-webpack-plugin": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", @@ -3515,6 +4712,16 @@ } } }, + "form-data": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", + "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -3532,6 +4739,16 @@ "readable-stream": "^2.0.0" } }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, "fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -3576,11 +4793,24 @@ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -3623,6 +4853,19 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, + "globby": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.0.tgz", + "integrity": "sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -3633,16 +4876,129 @@ "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.0.0.tgz", "integrity": "sha512-ZyVO1xIF9F+4cxfkdhOJINM+51B06Friuv4M66W7HzUOeFd+vNzUn4vtswYINPi6sysjf1M2Ri/rwZALqgwbaQ==" }, + "graphql-config": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-3.0.1.tgz", + "integrity": "sha512-RKktfOcMAh/Lg7jpXXR/u1yOlgWF+bvSUP1wT2aGeUnKfm0B4tu9SBoOAAtt2Vf/bIyOGUSKYkMzqQOiBLTuFw==", + "requires": { + "@graphql-toolkit/common": "~0.10.6", + "@graphql-toolkit/core": "~0.10.6", + "@graphql-toolkit/graphql-file-loader": "~0.10.6", + "@graphql-toolkit/json-file-loader": "~0.10.6", + "@graphql-toolkit/schema-merging": "~0.10.6", + "@graphql-toolkit/url-loader": "~0.10.6", + "cosmiconfig": "6.0.0", + "minimatch": "3.0.4", + "tslib": "^1.11.1" + }, + "dependencies": { + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + } + } + }, + "graphql-request": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-1.8.2.tgz", + "integrity": "sha512-dDX2M+VMsxXFCmUX0Vo0TopIZIX4ggzOtiCsThgtrKR4niiaagsGTDIHj3fsOMFETpa064vzovI+4YV4QnMbcg==", + "requires": { + "cross-fetch": "2.2.2" + }, + "dependencies": { + "cross-fetch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.2.tgz", + "integrity": "sha1-pH/09/xxLauo9qaVoRyUhEDUVyM=", + "requires": { + "node-fetch": "2.1.2", + "whatwg-fetch": "2.0.4" + } + }, + "node-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=" + }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + } + } + }, "graphql-tag": { "version": "2.10.3", "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.10.3.tgz", "integrity": "sha512-4FOv3ZKfA4WdOKJeHdz6B3F/vxBLSgmBcGeAFPf4n1F64ltJUvOOerNj0rsJxONQGdhUMynQIvd6LzB+1J5oKA==" }, + "graphql-tools": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-5.0.0.tgz", + "integrity": "sha512-5zn3vtn//382b7G3Wzz3d5q/sh+f7tVrnxeuhTMTJ7pWJijNqLxH7VEzv8VwXCq19zAzHYEosFHfXiK7qzvk7w==", + "requires": { + "apollo-link": "^1.2.14", + "apollo-upload-client": "^13.0.0", + "deprecated-decorator": "^0.1.6", + "form-data": "^3.0.0", + "iterall": "^1.3.0", + "node-fetch": "^2.6.0", + "tslib": "^1.11.1", + "uuid": "^7.0.3" + } + }, "hammerjs": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -3741,6 +5097,12 @@ "minimalistic-assert": "^1.0.1" } }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "optional": true + }, "hex-color-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", @@ -3797,11 +5159,72 @@ } } }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, "icss-utils": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", @@ -3820,6 +5243,16 @@ "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==" + }, + "immutable": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", + "integrity": "sha1-E7TTyxK++hVIKib+Gy665kAHHks=" + }, "import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", @@ -3829,6 +5262,21 @@ "resolve-from": "^3.0.0" } }, + "import-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + } + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -3863,6 +5311,72 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "inquirer": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "insert-css": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/insert-css/-/insert-css-2.0.0.tgz", @@ -3876,6 +5390,15 @@ "loose-envify": "^1.0.0" } }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, "is-absolute-url": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", @@ -3990,6 +5513,11 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -4021,6 +5549,14 @@ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "requires": { + "symbol-observable": "^1.1.0" + } + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -4034,6 +5570,11 @@ "isobject": "^3.0.1" } }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, "is-regex": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", @@ -4042,11 +5583,24 @@ "has": "^1.0.3" } }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "requires": { + "is-unc-path": "^1.0.0" + } + }, "is-resolvable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, "is-svg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", @@ -4063,6 +5617,19 @@ "has-symbols": "^1.0.1" } }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "requires": { + "unc-path-regex": "^0.1.2" + } + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -4083,6 +5650,26 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + }, + "dependencies": { + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + } + } + }, "isomorphic-unfetch": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.0.0.tgz", @@ -4092,6 +5679,16 @@ "unfetch": "^4.0.0" } }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "iterall": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", + "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" + }, "jest-worker": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", @@ -4115,6 +5712,11 @@ "esprima": "^4.0.0" } }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -4125,11 +5727,38 @@ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json-to-pretty-yaml": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz", + "integrity": "sha1-9M0L0KXo/h3yWq9boRiwmf2ZLVs=", + "requires": { + "remedial": "^1.0.7", + "remove-trailing-spaces": "^1.0.6" + } + }, "json2mq": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", @@ -4146,6 +5775,66 @@ "minimist": "^1.2.5" } }, + "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" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -4164,6 +5853,164 @@ "leven": "^3.1.0" } }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + }, + "listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "dependencies": { + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=" + }, + "listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "requires": { + "chalk": "^1.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + }, + "dependencies": { + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + } + } + }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -4193,11 +6040,46 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -4208,6 +6090,143 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "requires": { + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.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" + } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + } + } + } + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -4216,6 +6235,14 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "lower-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", + "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", + "requires": { + "tslib": "^1.10.0" + } + }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -4288,6 +6315,11 @@ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==" + }, "microevent.ts": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", @@ -4329,6 +6361,24 @@ } } }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, "mini-css-extract-plugin": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz", @@ -4513,6 +6563,11 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, "nan": { "version": "2.14.1", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", @@ -4612,11 +6667,25 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, + "no-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", + "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", + "requires": { + "lower-case": "^2.0.1", + "tslib": "^1.10.0" + } + }, "node-fetch": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + }, "node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", @@ -4695,6 +6764,21 @@ "boolbase": "~1.0.0" } }, + "nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -4806,6 +6890,14 @@ "wrappy": "1" } }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, "optimism": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.3.tgz", @@ -4819,6 +6911,11 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -4863,6 +6960,30 @@ "readable-stream": "^2.1.5" } }, + "param-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", + "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", + "requires": { + "dot-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + } + } + }, "parse-asn1": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", @@ -4876,6 +6997,16 @@ "safe-buffer": "^5.1.1" } }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -4885,6 +7016,15 @@ "json-parse-better-errors": "^1.0.1" } }, + "pascal-case": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", + "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", @@ -4915,6 +7055,24 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, "pbkdf2": { "version": "3.0.17", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", @@ -5513,6 +7671,72 @@ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" }, + "prisma-json-schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/prisma-json-schema/-/prisma-json-schema-0.1.3.tgz", + "integrity": "sha512-XZrf2080oR81mY8/OC8al68HiwBm0nXlFE727JIia0ZbNqwuV4MyRYk6E0+OIa6/9KEYxZrcAmoBs3EW1cCvnA==" + }, + "prisma-yml": { + "version": "1.34.10", + "resolved": "https://registry.npmjs.org/prisma-yml/-/prisma-yml-1.34.10.tgz", + "integrity": "sha512-N9on+Cf/XQKFGUULk/681tnpfqiZ19UBTurFMm+/9rnml37mteDaFr2k8yz+K8Gt2xpEJ7kBu7ikG5PrXI1uoA==", + "requires": { + "ajv": "5", + "bluebird": "^3.5.1", + "chalk": "^2.3.0", + "debug": "^3.1.0", + "dotenv": "^4.0.0", + "fs-extra": "^7.0.0", + "graphql-request": "^1.5.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "isomorphic-fetch": "^2.2.1", + "js-yaml": "^3.10.0", + "json-stable-stringify": "^1.0.1", + "jsonwebtoken": "^8.1.0", + "lodash": "^4.17.4", + "prisma-json-schema": "0.1.3", + "replaceall": "^0.1.6", + "scuid": "^1.0.2", + "yaml-ast-parser": "^0.0.40" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "dotenv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", + "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + } + } + }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -5528,6 +7752,14 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -5558,6 +7790,11 @@ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, "public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", @@ -5618,6 +7855,11 @@ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, "query-string": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", @@ -6138,11 +8380,73 @@ } } }, + "relay-compiler": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/relay-compiler/-/relay-compiler-9.1.0.tgz", + "integrity": "sha512-jsJx0Ux5RoxM+JFm3M3xl7UfZAJ0kUTY/r6jqOpcYgVI3GLJthvNI4IoziFRlWbhizEzGFbpkdshZcu9IObJYA==", + "requires": { + "@babel/core": "^7.0.0", + "@babel/generator": "^7.5.0", + "@babel/parser": "^7.0.0", + "@babel/runtime": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "babel-preset-fbjs": "^3.3.0", + "chalk": "^2.4.1", + "fast-glob": "^2.2.2", + "fb-watchman": "^2.0.0", + "fbjs": "^1.0.0", + "immutable": "~3.7.6", + "nullthrows": "^1.1.1", + "relay-runtime": "9.1.0", + "signedsource": "^1.0.0", + "yargs": "^14.2.0" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + } + } + }, + "relay-runtime": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-9.1.0.tgz", + "integrity": "sha512-6FE5YlZpR/b3R/HzGly85V+c4MdtLJhFY/outQARgxXonomrwqEik0Cr34LnPK4DmGS36cMLUliqhCs/DZyPVw==", + "requires": { + "@babel/runtime": "^7.0.0", + "fbjs": "^1.0.0" + } + }, + "remedial": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz", + "integrity": "sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==" + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, + "remove-trailing-spaces": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/remove-trailing-spaces/-/remove-trailing-spaces-1.0.7.tgz", + "integrity": "sha512-wjM17CJ2kk0SgoGyJ7ZMzRRCuTq+V8YhMwpZ5XEWX0uaked2OUq6utvHXGNBQrfkUzUUABFMyxlKn+85hMv4dg==" + }, "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", @@ -6153,6 +8457,65 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, + "replaceall": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/replaceall/-/replaceall-0.1.6.tgz", + "integrity": "sha1-gdgax663LX9cSUKt8ml6MiBojY4=" + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "resize-observer-polyfill": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", @@ -6228,11 +8591,25 @@ } } }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, "rework": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", @@ -6281,6 +8658,16 @@ "inherits": "^2.0.1" } }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==" + }, "run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", @@ -6289,6 +8676,14 @@ "aproba": "^1.1.1" } }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "requires": { + "tslib": "^1.9.0" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -6302,6 +8697,11 @@ "ret": "~0.1.10" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "sass-loader": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", @@ -6370,6 +8770,11 @@ "compute-scroll-into-view": "^1.0.13" } }, + "scuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/scuid/-/scuid-1.1.0.tgz", + "integrity": "sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==" + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -6380,6 +8785,11 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, "set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -6433,6 +8843,24 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "signedsource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", + "integrity": "sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo=" + }, + "simple-git": { + "version": "1.132.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.132.0.tgz", + "integrity": "sha512-xauHm1YqCTom1sC9eOjfq3/9RKiUA9iPnxBbrY2DdL8l4ADMu0jjM5l5lphQP5YWNqAL2aXC/OeuQ76vHtW5fg==", + "requires": { + "debug": "^4.0.1" + } + }, "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -6448,6 +8876,16 @@ } } }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -6620,6 +9058,22 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, "ssri": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", @@ -6711,6 +9165,16 @@ "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, "string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", @@ -7059,6 +9523,11 @@ } } }, + "through": { + "version": "2.3.8", + "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", @@ -7086,6 +9555,14 @@ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -7139,6 +9616,15 @@ "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, "tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", @@ -7160,6 +9646,11 @@ "tslib": "^1.9.3" } }, + "ts-log": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.1.4.tgz", + "integrity": "sha512-P1EJSoyV+N3bR/IWFeAqXzKPZwHpnLY6j7j58mAvewHRipo+BQM2Y1f9Y9BjEQznKwgqqZm7H8iuixmssU7tYQ==" + }, "ts-pnp": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", @@ -7175,6 +9666,19 @@ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, "type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", @@ -7196,6 +9700,16 @@ "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", "dev": true }, + "ua-parser-js": { + "version": "0.7.21", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", + "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==" + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" + }, "unfetch": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.1.0.tgz", @@ -7262,6 +9776,29 @@ "imurmurhash": "^0.1.4" } }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unixify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", + "integrity": "sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA=", + "requires": { + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, "unquote": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", @@ -7308,6 +9845,14 @@ "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" }, + "upper-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.1.tgz", + "integrity": "sha512-laAsbea9SY5osxrv7S99vH9xAaJKrw5Qpdh4ENRLcaxipjKsiaBwiAsxfa8X5mObKNTQPsupSq0J/VIxsSJe3A==", + "requires": { + "tslib": "^1.10.0" + } + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -7381,16 +9926,46 @@ "object.getownpropertydescriptors": "^2.1.0" } }, + "uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==" + }, + "valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=" + }, "vendors": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, + "vue-template-compiler": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz", + "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==", + "optional": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, "warning": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", @@ -7512,6 +10087,11 @@ "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=" + }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", @@ -7528,6 +10108,40 @@ "microevent.ts": "~0.1.1" } }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -7548,6 +10162,119 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "yaml": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.9.2.tgz", + "integrity": "sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg==", + "requires": { + "@babel/runtime": "^7.9.2" + } + }, + "yaml-ast-parser": { + "version": "0.0.40", + "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.40.tgz", + "integrity": "sha1-CFNtTnPTIrHJziB6uN1w4E0grm4=" + }, + "yargs": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^15.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", + "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, "zen-observable": { "version": "0.8.15", "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", diff --git a/package.json b/package.json index 7973cd8..1d2d46b 100644 --- a/package.json +++ b/package.json @@ -6,13 +6,17 @@ "scripts": { "dev": "next", "build": "next build", - "start": "next start" + "start": "next start", + "generate": "gql-gen --config codegen.yml --require dotenv/config" }, "author": "", "license": "ISC", "dependencies": { "@apollo/react-hooks": "^3.1.5", "@apollo/react-ssr": "^3.1.5", + "@graphql-codegen/cli": "^1.13.5", + "@graphql-codegen/typescript": "^1.13.5", + "@graphql-codegen/typescript-operations": "^1.13.5", "antd": "^4.2.2", "apollo-cache-inmemory": "^1.6.6", "apollo-client": "^2.6.9", From 363b68cb4c699edee7e8a870e7fcd073cf0630d4 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Thu, 14 May 2020 19:47:05 -0500 Subject: [PATCH 14/45] 14. Add RecipeList --- components/RecipesList.tsx | 47 ++++++++++++++++++++++++++++++++++++++ package.json | 1 + pages/index.tsx | 2 ++ 3 files changed, 50 insertions(+) create mode 100644 components/RecipesList.tsx diff --git a/components/RecipesList.tsx b/components/RecipesList.tsx new file mode 100644 index 0000000..2c6aaf7 --- /dev/null +++ b/components/RecipesList.tsx @@ -0,0 +1,47 @@ +import { QueryHookOptions, useQuery } from '@apollo/react-hooks'; +import { recipesGraphQL } from '../graphql/queries/recipes'; +import { userLikesGraphQL } from '../graphql/queries/userLikes'; +import * as _ from 'lodash'; +import { Row } from 'antd'; +import { Recipe } from '../generated/apollo-components'; + +export enum queryEnum { + userLikes = 'userLikes', + recipes = 'recipes', +} + +type RecipesListProps = { + options?: QueryHookOptions; + parentRoute: string; + queryType: queryEnum; +}; + +export const RecipesList = ({ + options, + parentRoute, + queryType, +}: RecipesListProps) => { + const query = + queryType === queryEnum.recipes ? recipesGraphQL : userLikesGraphQL; + + const { loading, data, error } = useQuery(query, options); + + const parentArray = _.get(data, queryType); + const recipesList = _.map(parentArray, (value) => + _.get(value, 'recipe', value), + ); + console.log(data); + console.log(parentArray); + + if (loading) return

Loading

; + if (error) return

Error

; + if (recipesList.length === 0) return

Warning

; + + return ( + + {recipesList.map((recipe: Recipe) => ( +

{recipe.title}

+ ))} +
+ ); +}; diff --git a/package.json b/package.json index 1d2d46b..c062eed 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "graphql": "^15.0.0", "graphql-tag": "^2.10.3", "isomorphic-unfetch": "^3.0.0", + "lodash": "^4.17.15", "next": "^9.4.0", "react": "^16.13.1", "react-dom": "^16.13.1", diff --git a/pages/index.tsx b/pages/index.tsx index c3069b9..83db086 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -1,5 +1,6 @@ import styled from 'styled-components'; import { MainLayout } from '../components/layout/MainLayout'; +import { RecipesList, queryEnum } from '../components/RecipesList'; const StyledHeader = styled.h1` ${({ theme }) => ` @@ -13,6 +14,7 @@ const Index = () => { return ( Index Page + ); }; From 503c1a7c16f9b3fa21e935e516d0214bdc264705 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Thu, 14 May 2020 20:04:36 -0500 Subject: [PATCH 15/45] 15. Add Alerts --- components/RecipesList.tsx | 17 ++++++++++++----- components/notify/Error.tsx | 19 +++++++++++++++++++ components/notify/Loading.tsx | 16 ++++++++++++++++ components/notify/Warning.tsx | 25 +++++++++++++++++++++++++ 4 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 components/notify/Error.tsx create mode 100644 components/notify/Loading.tsx create mode 100644 components/notify/Warning.tsx diff --git a/components/RecipesList.tsx b/components/RecipesList.tsx index 2c6aaf7..ec51c48 100644 --- a/components/RecipesList.tsx +++ b/components/RecipesList.tsx @@ -4,6 +4,9 @@ import { userLikesGraphQL } from '../graphql/queries/userLikes'; import * as _ from 'lodash'; import { Row } from 'antd'; import { Recipe } from '../generated/apollo-components'; +import { Loading } from './notify/Loading'; +import { Warning } from './notify/Warning'; +import { Error } from './notify/Error'; export enum queryEnum { userLikes = 'userLikes', @@ -30,12 +33,16 @@ export const RecipesList = ({ const recipesList = _.map(parentArray, (value) => _.get(value, 'recipe', value), ); - console.log(data); - console.log(parentArray); - if (loading) return

Loading

; - if (error) return

Error

; - if (recipesList.length === 0) return

Warning

; + if (loading) return ; + if (error) return ; + if (recipesList.length === 0) + return ( + + ); return ( diff --git a/components/notify/Error.tsx b/components/notify/Error.tsx new file mode 100644 index 0000000..f2afaba --- /dev/null +++ b/components/notify/Error.tsx @@ -0,0 +1,19 @@ +import { Row, Col, Alert } from 'antd'; +import styled from 'styled-components'; + +const StyledCol = styled(Col)` + text-align: center; + margin-top: 200px; +`; + +export const Error = ({ errorText }: { errorText: string }) => ( + + + + + +); diff --git a/components/notify/Loading.tsx b/components/notify/Loading.tsx new file mode 100644 index 0000000..eb5e03b --- /dev/null +++ b/components/notify/Loading.tsx @@ -0,0 +1,16 @@ +import { Spin } from 'antd'; +import styled from 'styled-components'; + +const StyledSpinner = styled.div` + text-align: center; + border-radius: 4px; + margin-bottom: 20px; + padding: 30px 50px; + margin: 200px 0; +`; + +export const Loading = () => ( + + + +); diff --git a/components/notify/Warning.tsx b/components/notify/Warning.tsx new file mode 100644 index 0000000..3531ce7 --- /dev/null +++ b/components/notify/Warning.tsx @@ -0,0 +1,25 @@ +import { Row, Col, Alert } from 'antd'; +import styled from 'styled-components'; + +const StyledCol = styled(Col)` + text-align: center; + margin-top: 200px; +`; + +export const Warning = ({ + warningHeader, + warningText, +}: { + warningHeader: string; + warningText: string; +}) => ( + + + + + +); From 15c6defa01207bbeed95e0281f476c09e41effad Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sun, 21 Jun 2020 17:17:37 -0500 Subject: [PATCH 16/45] 16. Add RecipeListItem --- components/RecipeListItem.tsx | 74 +++++++++++++++++++++++++++++++++++ components/RecipesList.tsx | 7 +++- package-lock.json | 32 +++++++++++++++ package.json | 2 + 4 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 components/RecipeListItem.tsx diff --git a/components/RecipeListItem.tsx b/components/RecipeListItem.tsx new file mode 100644 index 0000000..42ea9bc --- /dev/null +++ b/components/RecipeListItem.tsx @@ -0,0 +1,74 @@ +import { Recipe } from '../generated/apollo-components'; +import { Col } from 'antd'; +import styled from 'styled-components'; +import EllipsisText from 'react-ellipsis-text'; +import GraphImage from 'graphcms-image'; +import Link from 'next/link'; + +const StyledRecipe = styled(Col)` + ${({ theme }) => ` + padding: 0px ${theme['padding-small']}; + .card { + cursor: pointer; + margin-bottom: ${theme['margin-small']}; + height: 340px; + border-radius: 8px; + box-shadow: 0 0 16px ${theme['border-color']}; + border: ${theme['border-width']} solid ${theme['border-color']}; + } + .graphcms-image-outer-wrapper{ + border: 0px; + .graphcms-image-wrapper { + border: 0px; + position: relative; + float: left; + width: 100%; + height: 200px; + background-position: 50% 50%; + background-repeat: no-repeat; + background-size: cover; + img { + text-align: center; + border-radius: 6px 6px 0px 6px; + } + } + } + p { + padding: 0px ${theme['padding-small']}; + + } + h3 { + padding: 0px ${theme['padding-small']}; + line-height: 1.5em; + } + `} +`; + +export const RecipeListItem = ({ + recipe, + parentRoute, +}: { + recipe: Recipe; + parentRoute: string; +}) => { + const { title, description, image, id } = recipe; + + return ( + +
+ +
{image ? : null}
+ +

{title}

+

+ +

+
+
+ ); +}; diff --git a/components/RecipesList.tsx b/components/RecipesList.tsx index ec51c48..05f9386 100644 --- a/components/RecipesList.tsx +++ b/components/RecipesList.tsx @@ -7,6 +7,7 @@ import { Recipe } from '../generated/apollo-components'; import { Loading } from './notify/Loading'; import { Warning } from './notify/Warning'; import { Error } from './notify/Error'; +import { RecipeListItem } from './RecipeListItem'; export enum queryEnum { userLikes = 'userLikes', @@ -47,7 +48,11 @@ export const RecipesList = ({ return ( {recipesList.map((recipe: Recipe) => ( -

{recipe.title}

+ ))}
); diff --git a/package-lock.json b/package-lock.json index 6fd669e..57c8a40 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4871,6 +4871,15 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, + "graphcms-image": { + "version": "1.1.0-beta4", + "resolved": "https://registry.npmjs.org/graphcms-image/-/graphcms-image-1.1.0-beta4.tgz", + "integrity": "sha1-exLf/YuzzO9TJiJkSQe0BZhpinA=", + "requires": { + "intersection-observer": "^0.5.0", + "prop-types": "^15.6.0" + } + }, "graphql": { "version": "15.0.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.0.0.tgz", @@ -5382,6 +5391,11 @@ "resolved": "https://registry.npmjs.org/insert-css/-/insert-css-2.0.0.tgz", "integrity": "sha1-610Ql7dUL0x56jBg067gfQU4gPQ=" }, + "intersection-observer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.5.1.tgz", + "integrity": "sha512-Zd7Plneq82kiXFixs7bX62YnuZ0BMRci9br7io88LwDyF3V43cQMI+G5IiTlTNTt+LsDUppl19J/M2Fp9UkH6g==" + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -8262,6 +8276,24 @@ "scheduler": "^0.19.1" } }, + "react-ellipsis-text": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/react-ellipsis-text/-/react-ellipsis-text-1.2.1.tgz", + "integrity": "sha512-r9eybYj6KLolCb/stTookClwCwxu+5Gage1EI/v4EVQggo1dgce/sgSqj1WQEinYKbzN3vD2993teZIqaU/V5w==", + "requires": { + "core-js": "3", + "prop-types": "^15.7.2", + "react": "^16.8.6", + "react-dom": "^16.8.6" + }, + "dependencies": { + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" + } + } + }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", diff --git a/package.json b/package.json index c062eed..62fdff4 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "apollo-client": "^2.6.9", "apollo-link-http": "^1.5.17", "dotenv": "^8.2.0", + "graphcms-image": "^1.1.0-beta4", "graphql": "^15.0.0", "graphql-tag": "^2.10.3", "isomorphic-unfetch": "^3.0.0", @@ -29,6 +30,7 @@ "next": "^9.4.0", "react": "^16.13.1", "react-dom": "^16.13.1", + "react-ellipsis-text": "^1.2.1", "styled-components": "^5.1.0" }, "devDependencies": { From ccfcdf828f911e727f64c8ca343e4d0eff42701d Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Thu, 14 May 2020 21:04:24 -0500 Subject: [PATCH 17/45] 17. Add Recipe Page --- pages/recipe/[id].tsx | 50 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 pages/recipe/[id].tsx diff --git a/pages/recipe/[id].tsx b/pages/recipe/[id].tsx new file mode 100644 index 0000000..74dd4a4 --- /dev/null +++ b/pages/recipe/[id].tsx @@ -0,0 +1,50 @@ +import { useQuery } from '@apollo/react-hooks'; +import { recipeGraphQL } from '../../graphql/queries/recipe'; +import * as _ from 'lodash'; +import { Loading } from '../../components/notify/Loading'; +import { MainLayout } from '../../components/layout/MainLayout'; +import { Error } from '../../components/notify/Error'; + +const Recipe = ({ id }) => { + const { loading, data, error } = useQuery(recipeGraphQL, { + variables: { where: { id } }, + }); + const title = _.get(data, 'recipe.title'); + + if (loading) { + return ( + + + + ); + } + + if (error) { + return ( + + + + ); + } + + if (!title) { + return ( + + + + ); + } + + return ( + +

{title}

+
+ ); +}; + +Recipe.getInitialProps = ({ query }) => { + const { id } = query; + return { id }; +}; + +export default Recipe; From 0c4439dc41caf429fd727a5fb9071fb8c7c3832b Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Fri, 15 May 2020 18:44:17 -0500 Subject: [PATCH 18/45] 18. Added OneRecipe --- components/GenerateContent.tsx | 12 +++++ components/OneRecipe.tsx | 94 ++++++++++++++++++++++++++++++++++ package-lock.json | 5 ++ package.json | 1 + pages/recipe/[id].tsx | 3 +- utils/generateUnit.ts | 9 ++++ 6 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 components/GenerateContent.tsx create mode 100644 components/OneRecipe.tsx create mode 100644 utils/generateUnit.ts diff --git a/components/GenerateContent.tsx b/components/GenerateContent.tsx new file mode 100644 index 0000000..aa88e7c --- /dev/null +++ b/components/GenerateContent.tsx @@ -0,0 +1,12 @@ +import * as React from 'react'; + +export const GenerateContent = ({ textString }: { textString: string }) => ( +

+ {textString.split('\n').map((item, key) => ( + + {item} +
+
+ ))} +

+); diff --git a/components/OneRecipe.tsx b/components/OneRecipe.tsx new file mode 100644 index 0000000..b2ea2ea --- /dev/null +++ b/components/OneRecipe.tsx @@ -0,0 +1,94 @@ +import { Recipe } from '../generated/apollo-components'; +import { Row, Col, List } from 'antd'; +import styled from 'styled-components'; +import GraphImg from 'graphcms-image'; +import * as _ from 'lodash'; +import { generateUnit } from '../utils/generateUnit'; +import { GenerateContent } from './GenerateContent'; + +const StyledOneRecipe = styled(Col)` + ${({ theme }) => ` + margin-top: ${theme['margin-small']}; + min-height: 320px; + border-radius: 8px; + box-shadow: 0 0 16px ${theme['border-color']}; + border: ${theme['border-width']} solid ${theme['border-color']}; + + .graphcms-image-outer-wrapper { + border: 0px; + .graphcms-image-wrapper { + border: 0px; + position: relative; + float: left; + width: 100%; + height 400px; + background-position: 50% 50%; + background-repeat: no-repeat; + background-size: cover; + img { + text-align: center; + border-radius: 6px 6px 0px 0px; + } + } + } + h1, + h2 { + padding-top: ${theme['margin-small']}; + text-align: left; + } + h3{ + text-align: left; + } + `} +`; + +export const OneRecipe = ({ recipe }: { recipe: Recipe }) => { + const { image, title, description, content } = recipe; + const ingredients = _.get(recipe, 'ingredients'); + console.log(content); + return ( + + + + {image ? : null} + + + +

{title}

+

{description}

+ +
+ + + Ingredients:} + bordered + dataSource={ + ingredients || [{ type: 'None added', amount: 0, unit: '' }] + } + renderItem={({ amount, unit, type }) => { + return ( + + {ingredients + ? `${amount} ${generateUnit(unit, amount)} ${type}` + : `${type}`} + + ); + }} + > + + + + +

Directions:

+ + +
+
+
+ ); +}; diff --git a/package-lock.json b/package-lock.json index 57c8a40..b7aaae2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7180,6 +7180,11 @@ "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.3.tgz", "integrity": "sha1-ZGx3ARiZhwtqCQPnXpl+jlHadGE=" }, + "pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==" + }, "pnp-webpack-plugin": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", diff --git a/package.json b/package.json index 62fdff4..61ea466 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "isomorphic-unfetch": "^3.0.0", "lodash": "^4.17.15", "next": "^9.4.0", + "pluralize": "^8.0.0", "react": "^16.13.1", "react-dom": "^16.13.1", "react-ellipsis-text": "^1.2.1", diff --git a/pages/recipe/[id].tsx b/pages/recipe/[id].tsx index 74dd4a4..23e25a8 100644 --- a/pages/recipe/[id].tsx +++ b/pages/recipe/[id].tsx @@ -4,6 +4,7 @@ import * as _ from 'lodash'; import { Loading } from '../../components/notify/Loading'; import { MainLayout } from '../../components/layout/MainLayout'; import { Error } from '../../components/notify/Error'; +import { OneRecipe } from '../../components/OneRecipe'; const Recipe = ({ id }) => { const { loading, data, error } = useQuery(recipeGraphQL, { @@ -37,7 +38,7 @@ const Recipe = ({ id }) => { return ( -

{title}

+
); }; diff --git a/utils/generateUnit.ts b/utils/generateUnit.ts new file mode 100644 index 0000000..1f1582c --- /dev/null +++ b/utils/generateUnit.ts @@ -0,0 +1,9 @@ +import pluralize from 'pluralize'; + +export const generateUnit = (unit, amount) => { + if (unit !== '-') { + return pluralize(unit, parseInt(amount)); + } else { + return ''; + } +}; From a05b716dc4886fab413d07f37430e4c99c79a023 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 16 May 2020 12:50:18 -0500 Subject: [PATCH 19/45] 19. Deploy Using Vercel --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index fe04e15..f18282e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ node_modules .next .DS_Store -.env \ No newline at end of file +.env +.vercel \ No newline at end of file From badef6bc864797e2c7b1f17ebe34c52517cbf2b6 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 16 May 2020 13:25:31 -0500 Subject: [PATCH 20/45] 20. Add Auth0 --- next.config.js | 24 +++- package-lock.json | 331 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + utils/auth0.ts | 19 +++ 4 files changed, 374 insertions(+), 1 deletion(-) create mode 100644 utils/auth0.ts diff --git a/next.config.js b/next.config.js index c9b128b..121c71c 100644 --- a/next.config.js +++ b/next.config.js @@ -1,5 +1,16 @@ require('dotenv').config(); -const { BRANCH, GRAPHCMSURL, GRAPHCMSPROJECTID } = process.env; +const { + BRANCH, + GRAPHCMSURL, + GRAPHCMSPROJECTID, + domain, + clientId, + clientSecret, + scope, + redirectUri, + postLogoutRedirectUri, + cookieSecret, +} = process.env; module.exports = { publicRuntimeConfig: { @@ -9,4 +20,15 @@ module.exports = { GRAPHCMSPROJECTID, }, }, + serverRuntimeConfig: { + auth: { + domain, + clientId, + clientSecret, + scope, + redirectUri, + postLogoutRedirectUri, + }, + cookieSecret, + }, }; diff --git a/package-lock.json b/package-lock.json index b7aaae2..9d3fe8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -122,6 +122,17 @@ "tslib": "^1.10.0" } }, + "@auth0/nextjs-auth0": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@auth0/nextjs-auth0/-/nextjs-auth0-0.13.0.tgz", + "integrity": "sha512-1UZ/Fjm9mHCZtqMsHPfQex64n8Ili5/hWEd6xSauy44eM6+RqTz/Hy3DQCMtLGV+mh7TATNtz+TIDn63qMlv7A==", + "requires": { + "@hapi/iron": "^5.1.4", + "base64url": "^3.0.1", + "cookie": "^0.4.1", + "openid-client": "^3.15.0" + } + }, "@babel/code-frame": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", @@ -1707,6 +1718,52 @@ } } }, + "@hapi/b64": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-4.2.1.tgz", + "integrity": "sha512-zqHpQuH5CBMw6hADzKfU/IGNrxq1Q+/wTYV+OiZRQN9F3tMyk+9BUMeBvFRMamduuqL8iSp62QAnJ+7ATiYLWA==", + "requires": { + "@hapi/hoek": "8.x.x" + } + }, + "@hapi/boom": { + "version": "7.4.11", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-7.4.11.tgz", + "integrity": "sha512-VSU/Cnj1DXouukYxxkes4nNJonCnlogHvIff1v1RVoN4xzkKhMXX+GRmb3NyH1iar10I9WFPDv2JPwfH3GaV0A==", + "requires": { + "@hapi/hoek": "8.x.x" + } + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" + }, + "@hapi/cryptiles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-4.2.1.tgz", + "integrity": "sha512-XoqgKsHK0l/VpqPs+tr6j6vE+VQ3+2bkF2stvttmc7xAOf1oSAwHcJ0tlp/6MxMysktt1IEY0Csy3khKaP9/uQ==", + "requires": { + "@hapi/boom": "7.x.x" + } + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" + }, + "@hapi/iron": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-5.1.4.tgz", + "integrity": "sha512-+ElC+OCiwWLjlJBmm8ZEWjlfzTMQTdgPnU/TsoU5QsktspIWmWi9IU4kU83nH+X/SSya8TP8h8P11Wr5L7dkQQ==", + "requires": { + "@hapi/b64": "4.x.x", + "@hapi/boom": "7.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/cryptiles": "4.x.x", + "@hapi/hoek": "8.x.x" + } + }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -1822,6 +1879,11 @@ "fastq": "^1.6.0" } }, + "@panva/asn1.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz", + "integrity": "sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw==" + }, "@samverschueren/stream-to-observable": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", @@ -1830,11 +1892,46 @@ "any-observable": "^0.3.0" } }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" }, + "@types/got": { + "version": "9.6.11", + "resolved": "https://registry.npmjs.org/@types/got/-/got-9.6.11.tgz", + "integrity": "sha512-dr3IiDNg5TDesGyuwTrN77E1Cd7DCdmCFtEfSGqr83jMMtcwhf/SGPbN2goY4JUWQfvxwY56+e5tjfi+oXeSdA==", + "requires": { + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + }, + "dependencies": { + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } + } + }, "@types/node": { "version": "13.13.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.5.tgz", @@ -1866,6 +1963,11 @@ "csstype": "^2.2.0" } }, + "@types/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A==" + }, "@types/zen-observable": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.0.tgz", @@ -2705,6 +2807,11 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, + "base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -2963,6 +3070,40 @@ "unset-value": "^1.0.0" } }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" + } + } + }, "call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", @@ -3246,6 +3387,14 @@ "shallow-clone": "^3.0.0" } }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -3391,6 +3540,11 @@ "safe-buffer": "~5.1.1" } }, + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + }, "copy-concurrently": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", @@ -3823,11 +3977,24 @@ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, "deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -4012,6 +4179,11 @@ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -4798,6 +4970,14 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -4866,6 +5046,24 @@ "slash": "^3.0.0" } }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -5168,6 +5366,11 @@ } } }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, "http-proxy-agent": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", @@ -5712,6 +5915,14 @@ "supports-color": "^6.1.0" } }, + "jose": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-1.27.0.tgz", + "integrity": "sha512-SxYPCM9pWDaK070CXbxgL4ktVzLlE0yJxevDJtbWxv2WMQwYfpBZLYlG8PhChsiOfOXp6FrceRgTuZh1vZeDlg==", + "requires": { + "@panva/asn1.js": "^1.0.0" + } + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -5736,6 +5947,11 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -5849,6 +6065,14 @@ "safe-buffer": "^5.0.1" } }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -6257,6 +6481,11 @@ "tslib": "^1.10.0" } }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -6287,6 +6516,11 @@ } } }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -6393,6 +6627,11 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, "mini-css-extract-plugin": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz", @@ -6826,6 +7065,11 @@ } } }, + "object-hash": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.3.tgz", + "integrity": "sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==" + }, "object-inspect": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", @@ -6888,6 +7132,11 @@ "has": "^1.0.3" } }, + "oidc-token-hash": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.0.tgz", + "integrity": "sha512-8Yr4CZSv+Tn8ZkN3iN2i2w2G92mUKClp4z7EGUfdsERiYSbj7P4i/NHm72ft+aUdsiFx9UdIPSTwbyzQ6C4URg==" + }, "omit.js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/omit.js/-/omit.js-1.0.2.tgz", @@ -6912,6 +7161,23 @@ "mimic-fn": "^2.1.0" } }, + "openid-client": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-3.15.1.tgz", + "integrity": "sha512-USoxzLuL08IhRiA+4z5FW25nsLgBM6lOoh+U/XWqyKJzrMbjfmVWNfof7706RgMypyvAFcAPCxPtSFqb+GpHjA==", + "requires": { + "@types/got": "^9.6.9", + "base64url": "^3.0.1", + "got": "^9.6.0", + "jose": "^1.25.2", + "lodash": "^4.17.15", + "lru-cache": "^5.1.1", + "make-error": "^1.3.6", + "object-hash": "^2.0.1", + "oidc-token-hash": "^5.0.0", + "p-any": "^3.0.0" + } + }, "optimism": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.3.tgz", @@ -6930,6 +7196,27 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "p-any": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-any/-/p-any-3.0.0.tgz", + "integrity": "sha512-5rqbqfsRWNb0sukt0awwgJMlaep+8jV45S15SKKB34z4UuzjcofIfnriCBhWjZP2jbVtjt9yRl7buB6RlKsu9w==", + "requires": { + "p-cancelable": "^2.0.0", + "p-some": "^5.0.0" + }, + "dependencies": { + "p-cancelable": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", + "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" + } + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -6954,6 +7241,22 @@ "aggregate-error": "^3.0.0" } }, + "p-some": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-some/-/p-some-5.0.0.tgz", + "integrity": "sha512-Js5XZxo6vHjB9NOYAzWDYAIyyiPvva0DWESAIWIK7uhSpGsyg5FwUPxipU/SOQx5x9EqhOh545d1jo6cVkitig==", + "requires": { + "aggregate-error": "^3.0.0", + "p-cancelable": "^2.0.0" + }, + "dependencies": { + "p-cancelable": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", + "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" + } + } + }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -8628,6 +8931,14 @@ } } }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -9628,6 +9939,11 @@ } } }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", @@ -9919,6 +10235,21 @@ } } }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + } + } + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", diff --git a/package.json b/package.json index 61ea466..1da1c5c 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "dependencies": { "@apollo/react-hooks": "^3.1.5", "@apollo/react-ssr": "^3.1.5", + "@auth0/nextjs-auth0": "^0.13.0", "@graphql-codegen/cli": "^1.13.5", "@graphql-codegen/typescript": "^1.13.5", "@graphql-codegen/typescript-operations": "^1.13.5", diff --git a/utils/auth0.ts b/utils/auth0.ts new file mode 100644 index 0000000..5d9a021 --- /dev/null +++ b/utils/auth0.ts @@ -0,0 +1,19 @@ +import { initAuth0 } from '@auth0/nextjs-auth0'; +import getConfig from 'next/config'; +const { serverRuntimeConfig } = getConfig(); +const { auth, cookieSecret } = serverRuntimeConfig; + +export default initAuth0({ + ...auth, + session: { + cookieSecret, + cookieLifetime: 60 * 60 * 8, + storeIdToken: false, + storeAccessToken: false, + storeRefreshToken: false, + }, + oidcClient: { + httpTimeout: 2500, + clockTolerance: 10000, + }, +}); From 662dacab10c7db35fa1aa3ac58d6091e2b7a3cee Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 16 May 2020 13:43:41 -0500 Subject: [PATCH 21/45] 21. Add Auth0 Api --- pages/api/callback.ts | 10 ++++++++++ pages/api/login.ts | 10 ++++++++++ pages/api/logout.ts | 10 ++++++++++ pages/api/me.ts | 10 ++++++++++ 4 files changed, 40 insertions(+) create mode 100644 pages/api/callback.ts create mode 100644 pages/api/login.ts create mode 100644 pages/api/logout.ts create mode 100644 pages/api/me.ts diff --git a/pages/api/callback.ts b/pages/api/callback.ts new file mode 100644 index 0000000..5355f11 --- /dev/null +++ b/pages/api/callback.ts @@ -0,0 +1,10 @@ +import auth0 from '../../utils/auth0'; + +export default async function callback(req, res) { + try { + await auth0.handleCallback(req, res, { redirectTo: '/' }); + } catch (error) { + console.error(error); + res.status(error.status || 500).end(error.message); + } +} diff --git a/pages/api/login.ts b/pages/api/login.ts new file mode 100644 index 0000000..29a3644 --- /dev/null +++ b/pages/api/login.ts @@ -0,0 +1,10 @@ +import auth0 from '../../utils/auth0'; + +export default async function login(req, res) { + try { + await auth0.handleLogin(req, res, {}); + } catch (error) { + console.error(error); + res.status(error.status || 500).end(error.message); + } +} diff --git a/pages/api/logout.ts b/pages/api/logout.ts new file mode 100644 index 0000000..28c0219 --- /dev/null +++ b/pages/api/logout.ts @@ -0,0 +1,10 @@ +import auth0 from '../../utils/auth0'; + +export default async function logout(req, res) { + try { + await auth0.handleLogout(req, res); + } catch (error) { + console.error(error); + res.status(error.status || 500).end(error.message); + } +} diff --git a/pages/api/me.ts b/pages/api/me.ts new file mode 100644 index 0000000..66d6e6c --- /dev/null +++ b/pages/api/me.ts @@ -0,0 +1,10 @@ +import auth0 from '../../utils/auth0'; + +export default async function me(req, res) { + try { + await auth0.handleProfile(req, res); + } catch (error) { + console.error(error); + res.status(error.status || 500).end(error.message); + } +} From 5adff68bd9b11e6784c3f6b8416b4a2bb0638ef8 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 16 May 2020 13:59:09 -0500 Subject: [PATCH 22/45] 22. Add useFetchUser Hook --- utils/user.ts | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 utils/user.ts diff --git a/utils/user.ts b/utils/user.ts new file mode 100644 index 0000000..2222377 --- /dev/null +++ b/utils/user.ts @@ -0,0 +1,80 @@ +import { useState, useEffect } from 'react'; +import fetch from 'isomorphic-unfetch'; + +interface MyWindow extends Window { + __user: any; +} + +declare var window: MyWindow; + +export async function fetchUser(cookie = '') { + if (typeof window !== 'undefined' && window.__user) { + return window.__user; + } + + const res = await fetch( + '/api/me', + cookie + ? { + headers: { + cookie, + }, + } + : {}, + ); + + if (!res.ok) { + delete window.__user; + return null; + } + + const json = await res.json(); + if (typeof window !== 'undefined') { + window.__user = json; + } + return json; +} + +export function useFetchUser({ required } = {}) { + const [loading, setLoading] = useState( + () => !(typeof window !== 'undefined' && window.__user), + ); + const [user, setUser] = useState(() => { + if (typeof window === 'undefined') { + return null; + } + + return window.__user || null; + }); + + useEffect( + () => { + if (!loading && user) { + return; + } + setLoading(true); + let isMounted = true; + + fetchUser().then((user) => { + // Only set the user if the component is still mounted + if (isMounted) { + // When the user is not logged in but login is required + if (required && !user) { + window.location.href = '/api/login'; + return; + } + setUser(user); + setLoading(false); + } + }); + + return () => { + isMounted = false; + }; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [], + ); + + return { user, loading }; +} From 172768ded484cbb6b08d4b3191df8776208a94d4 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 16 May 2020 14:22:12 -0500 Subject: [PATCH 23/45] 23. Add Login / Logout --- components/layout/MainNavbar.tsx | 64 ++++++++++++++++++++++---------- utils/user.ts | 2 +- 2 files changed, 45 insertions(+), 21 deletions(-) diff --git a/components/layout/MainNavbar.tsx b/components/layout/MainNavbar.tsx index 0420596..833bb47 100644 --- a/components/layout/MainNavbar.tsx +++ b/components/layout/MainNavbar.tsx @@ -1,6 +1,7 @@ import styled from 'styled-components'; import { Layout, Menu } from 'antd'; import Link from 'next/link'; +import { useFetchUser } from '../../utils/user'; const { Header } = Layout; const TitleContainer = styled.div` @@ -60,24 +61,47 @@ const StyledMenu = styled(Menu)` } `; -export const MainNavbar = () => ( - - - - <img src="/logo.svg" alt="Next Chop Logo" /> - <div> - <h2>The Next Chop</h2> - <p>A recipe discovery app powered by Next.js</p> - </div> - - +export const MainNavbar = () => { + const { user, loading } = useFetchUser(); - - - - Home - - - - -); + return ( + + + + <img src="/logo.svg" alt="Next Chop Logo" /> + <div> + <h2>The Next Chop</h2> + <p>A recipe discovery app powered by Next.js</p> + </div> + + + + + + + Home + + + {user && !loading + ? [ + + + Logout + + , + ] + : [ + + + Login + + , + ]} + + + ); +}; diff --git a/utils/user.ts b/utils/user.ts index 2222377..19385ef 100644 --- a/utils/user.ts +++ b/utils/user.ts @@ -34,7 +34,7 @@ export async function fetchUser(cookie = '') { } return json; } - +// @ts-ignore export function useFetchUser({ required } = {}) { const [loading, setLoading] = useState( () => !(typeof window !== 'undefined' && window.__user), From a399a623fe31db42a873da442f04fac07733f774 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 16 May 2020 14:52:34 -0500 Subject: [PATCH 24/45] 24. Add My Recipes Page --- components/layout/MainNavbar.tsx | 5 ++++ pages/my-recipes/index.tsx | 47 ++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 pages/my-recipes/index.tsx diff --git a/components/layout/MainNavbar.tsx b/components/layout/MainNavbar.tsx index 833bb47..0d222b3 100644 --- a/components/layout/MainNavbar.tsx +++ b/components/layout/MainNavbar.tsx @@ -88,6 +88,11 @@ export const MainNavbar = () => { {user && !loading ? [ + + + My Recipes + + , Logout diff --git a/pages/my-recipes/index.tsx b/pages/my-recipes/index.tsx new file mode 100644 index 0000000..a0eeb0d --- /dev/null +++ b/pages/my-recipes/index.tsx @@ -0,0 +1,47 @@ +import styled from 'styled-components'; +import { MainLayout } from '../../components/layout/MainLayout'; +import { RecipesList, queryEnum } from '../../components/RecipesList'; +import { Col, Row } from 'antd'; +import { useFetchUser } from '../../utils/user'; +import * as _ from 'lodash'; +import Router from 'next/router'; +import { Loading } from '../../components/notify/Loading'; + +const StyledRow = styled(Row)` + ${({ theme }) => ` + padding: ${theme['padding-small']} ${theme['padding-small']}; + display: flex; + h1 { + padding-left: ${theme['padding-small']}; + text-align: left; + } + `} +`; + +const Index = () => { + const { user, loading: isFetchUser } = useFetchUser(); + const owner = _.get(user, 'sub'); + const options = owner ? { variables: { where: { owner } } } : {}; + + if (isFetchUser) return ; + if (!user) { + Router.replace('/'); + } + + return ( + + + +

My Recipes

+ +
+ +
+ ); +}; + +export default Index; From 1152328288b414ae41fcbbc1a7c17100666dcff4 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 16 May 2020 15:58:48 -0500 Subject: [PATCH 25/45] 25. Add Like Button --- components/LikeButton.tsx | 100 ++++++++++++++++++++++++++++++++++ components/OneRecipe.tsx | 9 ++- components/RecipeListItem.tsx | 8 ++- package.json | 1 + 4 files changed, 113 insertions(+), 5 deletions(-) create mode 100644 components/LikeButton.tsx diff --git a/components/LikeButton.tsx b/components/LikeButton.tsx new file mode 100644 index 0000000..e085818 --- /dev/null +++ b/components/LikeButton.tsx @@ -0,0 +1,100 @@ +import { UserLike } from '../generated/apollo-components'; +import styled from 'styled-components'; +import { HeartFilled, HeartTwoTone } from '@ant-design/icons'; +import { useMutation } from '@apollo/react-hooks'; +import { createUserLikeGraphQL } from '../graphql/mutations/createUserLike'; +import { deleteUserLikeGraphQL } from '../graphql/mutations/deleteUserLike'; + +import { useFetchUser } from '../utils/user'; +import * as _ from 'lodash'; +import { recipeGraphQL } from '../graphql/queries/recipe'; +import { userLikesGraphQL } from '../graphql/queries/userLikes'; + +const StyledSpan = styled.span` + ${({ theme }) => ` + padding-left: 8px; + font-size: ${theme['font-size-xs']} !important; + color: ${theme['heart-color']}; + i { + padding-left: 2px + } + `} +`; + +export const LikeButton = ({ + userLikes, + recipeId, +}: { + userLikes: UserLike[]; + recipeId: string; +}) => { + const { user, loading: isFetchingUser } = useFetchUser(); + const owner = _.get(user, 'sub'); + const [ + createUserLikeMutation, + { loading: createUserLikeLoading }, + ] = useMutation(createUserLikeGraphQL); + const [ + deleteUserLikeMutation, + { loading: deleteUserLikeLoading }, + ] = useMutation(deleteUserLikeGraphQL); + const userLike = _.filter(userLikes, { user: owner }); + const hasUserLiked = userLike.length > 0 ? true : false; + + const refetchQueries = [ + { + query: recipeGraphQL, + variables: { where: { id: recipeId } }, + }, + { + query: userLikesGraphQL, + variables: { where: { user: owner } }, + }, + ]; + + if (_.isEmpty(owner)) { + return ( + + {`${userLikes.length}`} + + + ); + } + + return ( + + {`${userLikes.length}`} + {hasUserLiked ? ( + { + deleteUserLikeMutation({ + refetchQueries, + variables: { + where: { + id: userLike[0].id, + }, + }, + }); + }} + /> + ) : ( + { + createUserLikeMutation({ + refetchQueries, + variables: { + data: { + user: owner, + recipe: { + connect: { id: recipeId }, + }, + }, + }, + }); + }} + twoToneColor="#eb2f96" + /> + )} + + ); +}; diff --git a/components/OneRecipe.tsx b/components/OneRecipe.tsx index b2ea2ea..f7bf5de 100644 --- a/components/OneRecipe.tsx +++ b/components/OneRecipe.tsx @@ -5,6 +5,7 @@ import GraphImg from 'graphcms-image'; import * as _ from 'lodash'; import { generateUnit } from '../utils/generateUnit'; import { GenerateContent } from './GenerateContent'; +import { LikeButton } from './LikeButton'; const StyledOneRecipe = styled(Col)` ${({ theme }) => ` @@ -43,9 +44,8 @@ const StyledOneRecipe = styled(Col)` `; export const OneRecipe = ({ recipe }: { recipe: Recipe }) => { - const { image, title, description, content } = recipe; + const { image, title, description, content, userLikes, id } = recipe; const ingredients = _.get(recipe, 'ingredients'); - console.log(content); return ( { -

{title}

+

+ {title} + +

{description}

diff --git a/components/RecipeListItem.tsx b/components/RecipeListItem.tsx index 42ea9bc..79326bb 100644 --- a/components/RecipeListItem.tsx +++ b/components/RecipeListItem.tsx @@ -4,6 +4,7 @@ import styled from 'styled-components'; import EllipsisText from 'react-ellipsis-text'; import GraphImage from 'graphcms-image'; import Link from 'next/link'; +import { LikeButton } from './LikeButton'; const StyledRecipe = styled(Col)` ${({ theme }) => ` @@ -51,7 +52,7 @@ export const RecipeListItem = ({ recipe: Recipe; parentRoute: string; }) => { - const { title, description, image, id } = recipe; + const { title, description, image, id, userLikes } = recipe; return (
{image ? : null}
-

{title}

+

+ {title} + +

diff --git a/package.json b/package.json index 1da1c5c..5b88929 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "author": "", "license": "ISC", "dependencies": { + "@ant-design/icons": "^4.1.0", "@apollo/react-hooks": "^3.1.5", "@apollo/react-ssr": "^3.1.5", "@auth0/nextjs-auth0": "^0.13.0", From 1772cf4b6f4e17f0bf8ef3bc9322cb0fb1385d72 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 16 May 2020 17:14:34 -0500 Subject: [PATCH 26/45] 26. Add Favorites Page --- components/layout/MainNavbar.tsx | 5 ++++ pages/favorites.tsx | 39 ++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 pages/favorites.tsx diff --git a/components/layout/MainNavbar.tsx b/components/layout/MainNavbar.tsx index 0d222b3..d386d81 100644 --- a/components/layout/MainNavbar.tsx +++ b/components/layout/MainNavbar.tsx @@ -88,6 +88,11 @@ export const MainNavbar = () => {
{user && !loading ? [ + + + Favorites + + , My Recipes diff --git a/pages/favorites.tsx b/pages/favorites.tsx new file mode 100644 index 0000000..79f0117 --- /dev/null +++ b/pages/favorites.tsx @@ -0,0 +1,39 @@ +import { MainLayout } from '../components/layout/MainLayout'; +import styled from 'styled-components'; +import { useFetchUser } from '../utils/user'; +import * as _ from 'lodash'; +import { Loading } from '../components/notify/Loading'; +import Router from 'next/router'; +import { RecipesList, queryEnum } from '../components/RecipesList'; + +const StyledHeader = styled.h1` + ${({ theme }) => ` + font-size: 2em; + text-align: left; + padding: ${theme['padding-small']} ${theme['padding-small']}; + `} +`; + +const Favorites = () => { + const { user, loading: isFetchUser } = useFetchUser(); + const owner = _.get(user, 'sub'); + const options = owner ? { variables: { where: { user: owner } } } : {}; + + if (isFetchUser) return ; + if (!user) { + Router.replace('/'); + } + + return ( + + My Favorites + + + ); +}; + +export default Favorites; From e2aaae84d0fc3479d947891612526640112c7028 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 16 May 2020 17:25:22 -0500 Subject: [PATCH 27/45] 27. Add Create Recipe Page --- pages/create.tsx | 18 ++++++++++++++++++ pages/my-recipes/index.tsx | 11 +++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 pages/create.tsx diff --git a/pages/create.tsx b/pages/create.tsx new file mode 100644 index 0000000..38465b1 --- /dev/null +++ b/pages/create.tsx @@ -0,0 +1,18 @@ +import { MainLayout } from '../components/layout/MainLayout'; +import styled from 'styled-components'; + +const StyledHeader = styled.h1` + ${({ theme }) => ` + padding: ${theme['padding-small']} ${theme['padding-small']}; + `} +`; + +const Create = () => { + return ( + + Create Recipe + + ); +}; + +export default Create; diff --git a/pages/my-recipes/index.tsx b/pages/my-recipes/index.tsx index a0eeb0d..ad43105 100644 --- a/pages/my-recipes/index.tsx +++ b/pages/my-recipes/index.tsx @@ -1,20 +1,24 @@ import styled from 'styled-components'; import { MainLayout } from '../../components/layout/MainLayout'; import { RecipesList, queryEnum } from '../../components/RecipesList'; -import { Col, Row } from 'antd'; +import { Col, Row, Button } from 'antd'; import { useFetchUser } from '../../utils/user'; import * as _ from 'lodash'; import Router from 'next/router'; import { Loading } from '../../components/notify/Loading'; +import Link from 'next/link'; const StyledRow = styled(Row)` ${({ theme }) => ` + div { padding: ${theme['padding-small']} ${theme['padding-small']}; display: flex; h1 { padding-left: ${theme['padding-small']}; text-align: left; } + } + `} `; @@ -31,7 +35,10 @@ const Index = () => { return ( - + + + +

My Recipes

From da4efc9a958c2683d56e9623917252d1f9eb8102 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 16 May 2020 17:51:02 -0500 Subject: [PATCH 28/45] 28. Add Create Recipe Form --- components/CreateRecipe.tsx | 25 +++++++++++++++++++++++++ pages/create.tsx | 2 ++ utils/submitForm.ts | 15 +++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 components/CreateRecipe.tsx create mode 100644 utils/submitForm.ts diff --git a/components/CreateRecipe.tsx b/components/CreateRecipe.tsx new file mode 100644 index 0000000..b066557 --- /dev/null +++ b/components/CreateRecipe.tsx @@ -0,0 +1,25 @@ +import { Row, Col, Form, Button } from 'antd'; +import { submitForm } from '../utils/submitForm'; + +export const CreateRecipe = () => { + const initiateCreateRecipe = () => { + console.log('submitted form'); + }; + + const { inputs, handleSubmit } = submitForm({}, initiateCreateRecipe); + + return ( +
+ + + + + + + + +
+ ); +}; diff --git a/pages/create.tsx b/pages/create.tsx index 38465b1..9dfcaed 100644 --- a/pages/create.tsx +++ b/pages/create.tsx @@ -1,5 +1,6 @@ import { MainLayout } from '../components/layout/MainLayout'; import styled from 'styled-components'; +import { CreateRecipe } from '../components/CreateRecipe'; const StyledHeader = styled.h1` ${({ theme }) => ` @@ -11,6 +12,7 @@ const Create = () => { return ( Create Recipe + ); }; diff --git a/utils/submitForm.ts b/utils/submitForm.ts new file mode 100644 index 0000000..ee83857 --- /dev/null +++ b/utils/submitForm.ts @@ -0,0 +1,15 @@ +import { useState } from 'react'; + +export const submitForm = (initialValues, callback) => { + const [inputs, setInputs] = useState(initialValues); + + const handleSubmit = () => { + callback(); + setInputs(() => ({ ...initialValues })); + }; + + return { + inputs, + handleSubmit, + }; +}; From 316760d07b4dc3ee29e7275c6768ddb1c46a17ca Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 16 May 2020 18:08:47 -0500 Subject: [PATCH 29/45] 29. Add Form Input --- components/CreateRecipe.tsx | 19 ++++++++++++++++++- components/GenerateFields.tsx | 26 ++++++++++++++++++++++++++ utils/submitForm.ts | 11 +++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 components/GenerateFields.tsx diff --git a/components/CreateRecipe.tsx b/components/CreateRecipe.tsx index b066557..4cf4f80 100644 --- a/components/CreateRecipe.tsx +++ b/components/CreateRecipe.tsx @@ -1,15 +1,32 @@ import { Row, Col, Form, Button } from 'antd'; import { submitForm } from '../utils/submitForm'; +import { GenerateInput } from './GenerateFields'; export const CreateRecipe = () => { const initiateCreateRecipe = () => { console.log('submitted form'); }; - const { inputs, handleSubmit } = submitForm({}, initiateCreateRecipe); + const { inputs, handleInputChange, handleSubmit } = submitForm( + { + title: '', + description: '', + }, + initiateCreateRecipe, + ); return (
+ + diff --git a/components/GenerateFields.tsx b/components/GenerateFields.tsx new file mode 100644 index 0000000..e1d3f09 --- /dev/null +++ b/components/GenerateFields.tsx @@ -0,0 +1,26 @@ +import { Row, Col, Form, Input } from 'antd'; + +type InputType = { + name: string; + value: string; + handleInputChange?: (event: any) => void; +}; + +export const GenerateInput = ({ + name, + value, + handleInputChange, +}: InputType) => ( + + + + + + + +); diff --git a/utils/submitForm.ts b/utils/submitForm.ts index ee83857..a62a457 100644 --- a/utils/submitForm.ts +++ b/utils/submitForm.ts @@ -1,8 +1,18 @@ import { useState } from 'react'; +import * as _ from 'lodash'; export const submitForm = (initialValues, callback) => { const [inputs, setInputs] = useState(initialValues); + const handleInputChange = (event) => { + event.persist(); + setInputs((inputs) => { + const newInputs = _.cloneDeep(inputs); + _.set(newInputs, event.target.name, event.target.value); + return newInputs; + }); + }; + const handleSubmit = () => { callback(); setInputs(() => ({ ...initialValues })); @@ -11,5 +21,6 @@ export const submitForm = (initialValues, callback) => { return { inputs, handleSubmit, + handleInputChange, }; }; From 959c9b66fb2d072700f880dfa5f6a80c88032c90 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Thu, 21 May 2020 20:52:29 -0500 Subject: [PATCH 30/45] 30. Add Form Text Area --- components/CreateRecipe.tsx | 9 ++++++++- components/GenerateFields.tsx | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/components/CreateRecipe.tsx b/components/CreateRecipe.tsx index 4cf4f80..b0b72c8 100644 --- a/components/CreateRecipe.tsx +++ b/components/CreateRecipe.tsx @@ -1,16 +1,18 @@ import { Row, Col, Form, Button } from 'antd'; import { submitForm } from '../utils/submitForm'; -import { GenerateInput } from './GenerateFields'; +import { GenerateInput, GenerateTextInput } from './GenerateFields'; export const CreateRecipe = () => { const initiateCreateRecipe = () => { console.log('submitted form'); + console.log(inputs); }; const { inputs, handleInputChange, handleSubmit } = submitForm( { title: '', description: '', + content: '', }, initiateCreateRecipe, ); @@ -27,6 +29,11 @@ export const CreateRecipe = () => { value={inputs.description} handleInputChange={handleInputChange} /> + diff --git a/components/GenerateFields.tsx b/components/GenerateFields.tsx index e1d3f09..774920b 100644 --- a/components/GenerateFields.tsx +++ b/components/GenerateFields.tsx @@ -24,3 +24,22 @@ export const GenerateInput = ({ ); + +export const GenerateTextInput = ({ + name, + value, + handleInputChange, +}: InputType) => ( + + + + + + + +); From 6cc0a8a04db85b4e23eb02290255bc292be64e50 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Thu, 21 May 2020 21:35:33 -0500 Subject: [PATCH 31/45] 31. Add Form Ingredient --- components/CreateRecipe.tsx | 17 +++++++- components/GenerateIngredients.tsx | 64 ++++++++++++++++++++++++++++++ utils/submitForm.ts | 23 +++++++++++ 3 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 components/GenerateIngredients.tsx diff --git a/components/CreateRecipe.tsx b/components/CreateRecipe.tsx index b0b72c8..4faadb3 100644 --- a/components/CreateRecipe.tsx +++ b/components/CreateRecipe.tsx @@ -1,6 +1,7 @@ import { Row, Col, Form, Button } from 'antd'; import { submitForm } from '../utils/submitForm'; import { GenerateInput, GenerateTextInput } from './GenerateFields'; +import { GenerateIngredients } from './GenerateIngredients'; export const CreateRecipe = () => { const initiateCreateRecipe = () => { @@ -8,11 +9,18 @@ export const CreateRecipe = () => { console.log(inputs); }; - const { inputs, handleInputChange, handleSubmit } = submitForm( + const { + inputs, + handleInputChange, + handleAddIngredient, + handleDeleteIngredient, + handleSubmit, + } = submitForm( { title: '', description: '', content: '', + ingredients: [], }, initiateCreateRecipe, ); @@ -34,6 +42,13 @@ export const CreateRecipe = () => { value={inputs.content} handleInputChange={handleInputChange} /> + diff --git a/components/GenerateIngredients.tsx b/components/GenerateIngredients.tsx new file mode 100644 index 0000000..05e187a --- /dev/null +++ b/components/GenerateIngredients.tsx @@ -0,0 +1,64 @@ +import { Row, Col, Button, Table, Input } from 'antd'; + +type IngredientsProps = { + names?: string[]; + values?: [{ amount: string; unit: string; type: string }]; + handleAddIngredient: (event: any) => void; + handleDeleteIngredient: (event: any) => void; + handleInputChange: (event: any) => void; + handleDropdownChange: (event: any) => void; +}; + +export const GenerateIngredients = ({ + names, + values, + handleAddIngredient, + handleDeleteIngredient, + handleInputChange, + handleDropdownChange, +}: IngredientsProps) => { + const columns = names.map((name) => ({ + title: `${name}`, + key: `${name}`, + render: (ingredient, _record, index: number) => { + return ( + + ); + }, + })); + + return ( + <> + + +

+ + ingredients: +

+ +
+ {values.length > 0 ? ( + + + + + + ) : null} + + ); +}; diff --git a/utils/submitForm.ts b/utils/submitForm.ts index a62a457..25cedfc 100644 --- a/utils/submitForm.ts +++ b/utils/submitForm.ts @@ -12,6 +12,27 @@ export const submitForm = (initialValues, callback) => { return newInputs; }); }; + const handleAddIngredient = (event) => { + console.log('added'); + + event.persist(); + setInputs((inputs) => { + const sortedIngredients = _.sortBy(inputs.ingredients, ['key']); + + const key = + sortedIngredients.length > 0 + ? sortedIngredients[sortedIngredients.length - 1].key + 1 + : 0; + return { + ...inputs, + ingredients: _.concat(inputs.ingredients, [ + { key, amount: '', unit: '-', type: '' }, + ]), + }; + }); + }; + + const handleDeleteIngredient = () => console.log('deleted'); const handleSubmit = () => { callback(); @@ -22,5 +43,7 @@ export const submitForm = (initialValues, callback) => { inputs, handleSubmit, handleInputChange, + handleAddIngredient, + handleDeleteIngredient, }; }; From fdddc9451ac9d5e425b7ac69d16ac212bbf1635b Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Thu, 21 May 2020 21:54:02 -0500 Subject: [PATCH 32/45] 32. Add Dropdown Input --- components/CreateRecipe.tsx | 2 ++ components/GenerateIngredients.tsx | 20 ++++++++++++++++++-- components/MenuList.tsx | 24 ++++++++++++++++++++++++ utils/submitForm.ts | 11 +++++++++-- 4 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 components/MenuList.tsx diff --git a/components/CreateRecipe.tsx b/components/CreateRecipe.tsx index 4faadb3..a6f01d8 100644 --- a/components/CreateRecipe.tsx +++ b/components/CreateRecipe.tsx @@ -14,6 +14,7 @@ export const CreateRecipe = () => { handleInputChange, handleAddIngredient, handleDeleteIngredient, + handleDropdownChange, handleSubmit, } = submitForm( { @@ -48,6 +49,7 @@ export const CreateRecipe = () => { handleAddIngredient={handleAddIngredient} handleDeleteIngredient={handleDeleteIngredient} handleInputChange={handleInputChange} + handleDropdownChange={handleDropdownChange} /> diff --git a/components/GenerateIngredients.tsx b/components/GenerateIngredients.tsx index 05e187a..04f91bc 100644 --- a/components/GenerateIngredients.tsx +++ b/components/GenerateIngredients.tsx @@ -1,4 +1,5 @@ -import { Row, Col, Button, Table, Input } from 'antd'; +import { Row, Col, Button, Table, Input, Dropdown } from 'antd'; +import { MenuList } from './MenuList'; type IngredientsProps = { names?: string[]; @@ -9,6 +10,8 @@ type IngredientsProps = { handleDropdownChange: (event: any) => void; }; +const units = ['-', 'ounce', 'lb', 'cup', 'tb', 'tsp', 'g', 'kg']; + export const GenerateIngredients = ({ names, values, @@ -21,7 +24,20 @@ export const GenerateIngredients = ({ title: `${name}`, key: `${name}`, render: (ingredient, _record, index: number) => { - return ( + return name === 'unit' ? ( + + } + placement="bottomLeft" + > + + + ) : ( void; +}; + +export const MenuList = ({ + iterableList, + name, + handleDropdownChange, +}: MenuListProps) => ( + + {iterableList.map((item: string) => ( + + {item} + + ))} + +); diff --git a/utils/submitForm.ts b/utils/submitForm.ts index 25cedfc..c159665 100644 --- a/utils/submitForm.ts +++ b/utils/submitForm.ts @@ -12,9 +12,15 @@ export const submitForm = (initialValues, callback) => { return newInputs; }); }; - const handleAddIngredient = (event) => { - console.log('added'); + const handleDropdownChange = (event) => { + setInputs((inputs) => { + const newInputs = _.cloneDeep(inputs); + _.set(newInputs, event.item.props.title, event.key); + return newInputs; + }); + }; + const handleAddIngredient = (event) => { event.persist(); setInputs((inputs) => { const sortedIngredients = _.sortBy(inputs.ingredients, ['key']); @@ -45,5 +51,6 @@ export const submitForm = (initialValues, callback) => { handleInputChange, handleAddIngredient, handleDeleteIngredient, + handleDropdownChange, }; }; From 2b366d24aa21def083699581239c4b21942cbe91 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Thu, 21 May 2020 22:07:35 -0500 Subject: [PATCH 33/45] 33. Controlled vs. Uncontrolled Components --- components/GenerateIngredients.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/components/GenerateIngredients.tsx b/components/GenerateIngredients.tsx index 04f91bc..e648899 100644 --- a/components/GenerateIngredients.tsx +++ b/components/GenerateIngredients.tsx @@ -39,6 +39,7 @@ export const GenerateIngredients = ({ ) : ( Date: Sat, 23 May 2020 12:54:39 -0500 Subject: [PATCH 34/45] 34. Add Delete Ingredient Button --- components/GenerateIngredients.tsx | 74 +++++++++++++++++++----------- utils/submitForm.ts | 13 +++++- 2 files changed, 59 insertions(+), 28 deletions(-) diff --git a/components/GenerateIngredients.tsx b/components/GenerateIngredients.tsx index e648899..bad4593 100644 --- a/components/GenerateIngredients.tsx +++ b/components/GenerateIngredients.tsx @@ -1,5 +1,6 @@ import { Row, Col, Button, Table, Input, Dropdown } from 'antd'; import { MenuList } from './MenuList'; +import * as _ from 'lodash'; type IngredientsProps = { names?: string[]; @@ -20,33 +21,52 @@ export const GenerateIngredients = ({ handleInputChange, handleDropdownChange, }: IngredientsProps) => { - const columns = names.map((name) => ({ - title: `${name}`, - key: `${name}`, - render: (ingredient, _record, index: number) => { - return name === 'unit' ? ( - - } - placement="bottomLeft" - > - - - ) : ( - - ); - }, - })); + const columns = _.concat( + names.map((name) => ({ + title: `${name}`, + key: `${name}`, + render: (ingredient, _record, index: number) => { + return name === 'unit' ? ( + + } + placement="bottomLeft" + > + + + ) : ( + + ); + }, + })), + [ + { + title: 'delete', + key: 'delete', + render: (_ingredient, _record, index: number) => ( + + ), + }, + ], + ); return ( <> diff --git a/utils/submitForm.ts b/utils/submitForm.ts index c159665..e963202 100644 --- a/utils/submitForm.ts +++ b/utils/submitForm.ts @@ -38,7 +38,18 @@ export const submitForm = (initialValues, callback) => { }); }; - const handleDeleteIngredient = () => console.log('deleted'); + const handleDeleteIngredient = (event) => { + console.log('deleted'); + event.persist(); + const position = parseInt(event.target.name); + setInputs((inputs) => ({ + ...inputs, + ingredients: _.filter( + inputs.ingredients, + (_i, index) => index !== position, + ), + })); + }; const handleSubmit = () => { callback(); From 4c80dede592477425c541849905cf115b72b4d85 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 23 May 2020 13:11:14 -0500 Subject: [PATCH 35/45] 35. Add Form Submit Mutation --- components/CreateRecipe.tsx | 25 ++++++++++++++++++++++--- utils/submitForm.ts | 1 - 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/components/CreateRecipe.tsx b/components/CreateRecipe.tsx index a6f01d8..3f1eb14 100644 --- a/components/CreateRecipe.tsx +++ b/components/CreateRecipe.tsx @@ -2,11 +2,28 @@ import { Row, Col, Form, Button } from 'antd'; import { submitForm } from '../utils/submitForm'; import { GenerateInput, GenerateTextInput } from './GenerateFields'; import { GenerateIngredients } from './GenerateIngredients'; +import { useMutation } from '@apollo/react-hooks'; +import { createRecipeGraphQL } from '../graphql/mutations/createRecipe'; +import { useFetchUser } from '../utils/user'; +import * as _ from 'lodash'; +import { Loading } from './notify/Loading'; +import Router from 'next/router'; export const CreateRecipe = () => { + const [createRecipeMutation, { loading }] = useMutation(createRecipeGraphQL); + const { user, loading: isFetchingUser } = useFetchUser(); + const owner = _.get(user, 'sub'); + const initiateCreateRecipe = () => { - console.log('submitted form'); - console.log(inputs); + createRecipeMutation({ + variables: { + data: { + ...inputs, + owner, + }, + }, + }); + Router.replace('/my-recipes'); }; const { @@ -26,6 +43,8 @@ export const CreateRecipe = () => { initiateCreateRecipe, ); + if (isFetchingUser) return ; + return ( { - diff --git a/utils/submitForm.ts b/utils/submitForm.ts index e963202..d9c65a5 100644 --- a/utils/submitForm.ts +++ b/utils/submitForm.ts @@ -39,7 +39,6 @@ export const submitForm = (initialValues, callback) => { }; const handleDeleteIngredient = (event) => { - console.log('deleted'); event.persist(); const position = parseInt(event.target.name); setInputs((inputs) => ({ From 8db5dfaa701ba4f15a3c5c629f508afa0bf596f3 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 23 May 2020 13:27:29 -0500 Subject: [PATCH 36/45] 36. Add Update Recipe Page --- pages/my-recipes/[id].tsx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 pages/my-recipes/[id].tsx diff --git a/pages/my-recipes/[id].tsx b/pages/my-recipes/[id].tsx new file mode 100644 index 0000000..b4e3ab6 --- /dev/null +++ b/pages/my-recipes/[id].tsx @@ -0,0 +1,16 @@ +import { MainLayout } from '../../components/layout/MainLayout'; + +const MyRecipe = ({ id }) => { + return ( + +

Update Recipe

+
+ ); +}; + +MyRecipe.getInitialProps = ({ query }) => { + const { id } = query; + return { id }; +}; + +export default MyRecipe; From 1649abdf19eaba8c3a17e9d141aa8c4c7abaaced Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 23 May 2020 13:57:50 -0500 Subject: [PATCH 37/45] 37. Add Update Recipe Form --- components/UpdateRecipe.tsx | 82 +++++++++++++++++++++++++++++++++++++ pages/my-recipes/[id].tsx | 2 + utils/submitForm.ts | 1 + 3 files changed, 85 insertions(+) create mode 100644 components/UpdateRecipe.tsx diff --git a/components/UpdateRecipe.tsx b/components/UpdateRecipe.tsx new file mode 100644 index 0000000..e02bb48 --- /dev/null +++ b/components/UpdateRecipe.tsx @@ -0,0 +1,82 @@ +import { useQuery } from '@apollo/react-hooks'; +import { recipeGraphQL } from '../graphql/queries/recipe'; +import { submitForm } from '../utils/submitForm'; +import { useState } from 'react'; +import * as _ from 'lodash'; +import { Form, Row, Col, Button } from 'antd'; +import { GenerateInput, GenerateTextInput } from './GenerateFields'; +import { GenerateIngredients } from './GenerateIngredients'; +import { Loading } from './notify/Loading'; + +export const UpdateRecipe = ({ id }) => { + const { loading: isQueryLoading, data, error } = useQuery(recipeGraphQL, { + variables: { where: { id } }, + }); + + const [recipeState, setRecipeState] = useState({ isQueryLoading: true }); + + const initiateUpdateRecipe = () => console.log('updated'); + + const { + inputs, + handleInputChange, + handleAddIngredient, + handleDeleteIngredient, + handleDropdownChange, + handleSubmit, + setInputs, + } = submitForm( + { + title: '', + description: '', + content: '', + ingredients: [], + }, + initiateUpdateRecipe, + ); + if (!isQueryLoading && recipeState.isQueryLoading) { + const { __type, ...loadedRecipe } = _.get(data, 'recipe'); + setInputs((state) => ({ ...state, ...loadedRecipe })); + setRecipeState((state) => ({ ...state, isQueryLoading })); + } + + if (!data) return ; + + return ( + + + + + + +
+ + + + + + + + ); +}; diff --git a/pages/my-recipes/[id].tsx b/pages/my-recipes/[id].tsx index b4e3ab6..6812882 100644 --- a/pages/my-recipes/[id].tsx +++ b/pages/my-recipes/[id].tsx @@ -1,9 +1,11 @@ import { MainLayout } from '../../components/layout/MainLayout'; +import { UpdateRecipe } from '../../components/UpdateRecipe'; const MyRecipe = ({ id }) => { return (

Update Recipe

+
); }; diff --git a/utils/submitForm.ts b/utils/submitForm.ts index d9c65a5..a2abb87 100644 --- a/utils/submitForm.ts +++ b/utils/submitForm.ts @@ -57,6 +57,7 @@ export const submitForm = (initialValues, callback) => { return { inputs, + setInputs, handleSubmit, handleInputChange, handleAddIngredient, From a6f2d38be00a1c00b8e2dc35dde8eb613c575291 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 23 May 2020 17:23:17 -0500 Subject: [PATCH 38/45] 38. Add Update Recipe Mutation --- components/CreateRecipe.tsx | 2 ++ components/UpdateRecipe.tsx | 30 +++++++++++++++++++++++++----- utils/createUpdateObj.ts | 14 ++++++++++++++ utils/submitForm.ts | 8 ++++++++ 4 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 utils/createUpdateObj.ts diff --git a/components/CreateRecipe.tsx b/components/CreateRecipe.tsx index 3f1eb14..b692cee 100644 --- a/components/CreateRecipe.tsx +++ b/components/CreateRecipe.tsx @@ -8,6 +8,7 @@ import { useFetchUser } from '../utils/user'; import * as _ from 'lodash'; import { Loading } from './notify/Loading'; import Router from 'next/router'; +import { recipesGraphQL } from '../graphql/queries/recipes'; export const CreateRecipe = () => { const [createRecipeMutation, { loading }] = useMutation(createRecipeGraphQL); @@ -16,6 +17,7 @@ export const CreateRecipe = () => { const initiateCreateRecipe = () => { createRecipeMutation({ + refetchQueries: [{ query: recipesGraphQL }], variables: { data: { ...inputs, diff --git a/components/UpdateRecipe.tsx b/components/UpdateRecipe.tsx index e02bb48..4b67c7c 100644 --- a/components/UpdateRecipe.tsx +++ b/components/UpdateRecipe.tsx @@ -1,4 +1,4 @@ -import { useQuery } from '@apollo/react-hooks'; +import { useQuery, useMutation } from '@apollo/react-hooks'; import { recipeGraphQL } from '../graphql/queries/recipe'; import { submitForm } from '../utils/submitForm'; import { useState } from 'react'; @@ -7,15 +7,31 @@ import { Form, Row, Col, Button } from 'antd'; import { GenerateInput, GenerateTextInput } from './GenerateFields'; import { GenerateIngredients } from './GenerateIngredients'; import { Loading } from './notify/Loading'; +import { createUpdateObj } from '../utils/createUpdateObj'; +import { updateRecipeGraphQL } from '../graphql/mutations/updateRecipe'; export const UpdateRecipe = ({ id }) => { const { loading: isQueryLoading, data, error } = useQuery(recipeGraphQL, { variables: { where: { id } }, }); + const [updateRecipeMutation, { loading: updateRecipeLoading }] = useMutation( + updateRecipeGraphQL, + ); const [recipeState, setRecipeState] = useState({ isQueryLoading: true }); - const initiateUpdateRecipe = () => console.log('updated'); + const initiateUpdateRecipe = () => { + const updateObj = createUpdateObj(data, inputs); + return updateRecipeMutation({ + refetchQueries: [{ query: recipeGraphQL, variables: { where: { id } } }], + variables: { + data: { + ...updateObj, + }, + where: { id }, + }, + }); + }; const { inputs, @@ -23,7 +39,7 @@ export const UpdateRecipe = ({ id }) => { handleAddIngredient, handleDeleteIngredient, handleDropdownChange, - handleSubmit, + handleUpdate, setInputs, } = submitForm( { @@ -43,7 +59,7 @@ export const UpdateRecipe = ({ id }) => { if (!data) return ; return ( -
+ {
- diff --git a/utils/createUpdateObj.ts b/utils/createUpdateObj.ts new file mode 100644 index 0000000..d106fe6 --- /dev/null +++ b/utils/createUpdateObj.ts @@ -0,0 +1,14 @@ +import * as _ from 'lodash'; + +export const createUpdateObj = (data, newObj) => { + const updateObj = {}; + + _.mapKeys(newObj, (value, key) => { + const oldValue = _.get(data, `recipe.${key}`); + if (!_.isEqual(oldValue, value)) { + updateObj[key] = value; + } + }); + + return updateObj; +}; diff --git a/utils/submitForm.ts b/utils/submitForm.ts index a2abb87..4100e56 100644 --- a/utils/submitForm.ts +++ b/utils/submitForm.ts @@ -50,6 +50,13 @@ export const submitForm = (initialValues, callback) => { })); }; + const handleUpdate = async () => { + const updatedResult = await callback(); + const { updateRecipe } = updatedResult.data; + const { content, description, status, title, ingredients } = updateRecipe; + setInputs(() => ({ content, description, status, title, ingredients })); + }; + const handleSubmit = () => { callback(); setInputs(() => ({ ...initialValues })); @@ -59,6 +66,7 @@ export const submitForm = (initialValues, callback) => { inputs, setInputs, handleSubmit, + handleUpdate, handleInputChange, handleAddIngredient, handleDeleteIngredient, From a5ffb381620f54e6e67ebb071939a24c1ef32b41 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 23 May 2020 17:43:02 -0500 Subject: [PATCH 39/45] 39. Add Delete Recipe Button --- components/DeleteButton.tsx | 52 +++++++++++++++++++++++++++++++++++++ components/UpdateRecipe.tsx | 12 ++++----- 2 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 components/DeleteButton.tsx diff --git a/components/DeleteButton.tsx b/components/DeleteButton.tsx new file mode 100644 index 0000000..51b4cfc --- /dev/null +++ b/components/DeleteButton.tsx @@ -0,0 +1,52 @@ +import { Button, Modal } from 'antd'; +import { useMutation } from '@apollo/react-hooks'; +import { deleteRecipeGraphQL } from '../graphql/mutations/deleteRecipe'; +import { useState } from 'react'; +import { recipesGraphQL } from '../graphql/queries/recipes'; +import Router from 'next/router'; + +export const DeleteButton = ({ + id, + disabled, +}: { + id: string; + disabled: boolean; +}) => { + const [deleteRecipeMutation, { loading: deleteRecipeLoading }] = useMutation( + deleteRecipeGraphQL, + ); + + const [isModalVisible, setModalVisibility] = useState(false); + + const handleOk = async () => { + if (!deleteRecipeLoading) { + await deleteRecipeMutation({ + refetchQueries: [{ query: recipesGraphQL }], + variables: { + where: { id }, + }, + }); + } + + setModalVisibility(false); + Router.replace('/my-recipes'); + }; + const handleShow = () => setModalVisibility(true); + const handleHide = () => setModalVisibility(false); + + return ( + <> + + +

Are you sure that you want to delete this recipe?

+
+ + ); +}; diff --git a/components/UpdateRecipe.tsx b/components/UpdateRecipe.tsx index 4b67c7c..aef8e57 100644 --- a/components/UpdateRecipe.tsx +++ b/components/UpdateRecipe.tsx @@ -9,6 +9,7 @@ import { GenerateIngredients } from './GenerateIngredients'; import { Loading } from './notify/Loading'; import { createUpdateObj } from '../utils/createUpdateObj'; import { updateRecipeGraphQL } from '../graphql/mutations/updateRecipe'; +import { DeleteButton } from './DeleteButton'; export const UpdateRecipe = ({ id }) => { const { loading: isQueryLoading, data, error } = useQuery(recipeGraphQL, { @@ -58,6 +59,8 @@ export const UpdateRecipe = ({ id }) => { if (!data) return ; + const disabled = isQueryLoading || updateRecipeLoading; + return ( {
- - + From c09e75b53282f6f68c265cbb7326e7d66d371e3d Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Sat, 23 May 2020 23:37:38 -0500 Subject: [PATCH 40/45] 40. Add GraphQL Proxy --- graphql/mutations/createRecipe.ts | 2 +- graphql/mutations/createUserLike.ts | 2 +- graphql/mutations/deleteAsset.ts | 2 +- graphql/mutations/deleteRecipe.ts | 2 +- graphql/mutations/deleteUserLike.ts | 2 +- graphql/mutations/updateRecipe.ts | 5 +---- graphql/queries/recipe.ts | 2 +- graphql/queries/recipes.ts | 2 +- graphql/queries/userLike.ts | 2 +- graphql/queries/userLikes.ts | 2 +- next.config.js | 6 ++++-- package.json | 1 + pages/api/graphql.ts | 22 ++++++++++++++++++++++ utils/apolloClient.ts | 4 ++-- 14 files changed, 39 insertions(+), 17 deletions(-) create mode 100644 pages/api/graphql.ts diff --git a/graphql/mutations/createRecipe.ts b/graphql/mutations/createRecipe.ts index 3e61b8f..bd23230 100644 --- a/graphql/mutations/createRecipe.ts +++ b/graphql/mutations/createRecipe.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; export const createRecipeGraphQL = gql` - mutation createRecipeGraphQL($data: RecipeCreateInput!) { + mutation($data: RecipeCreateInput!) { createRecipe(data: $data) { id title diff --git a/graphql/mutations/createUserLike.ts b/graphql/mutations/createUserLike.ts index d212435..bc051b1 100644 --- a/graphql/mutations/createUserLike.ts +++ b/graphql/mutations/createUserLike.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; export const createUserLikeGraphQL = gql` - mutation createUserLikeGraphQL($data: UserLikeCreateInput!) { + mutation($data: UserLikeCreateInput!) { createUserLike(data: $data) { id user diff --git a/graphql/mutations/deleteAsset.ts b/graphql/mutations/deleteAsset.ts index f946244..3563193 100644 --- a/graphql/mutations/deleteAsset.ts +++ b/graphql/mutations/deleteAsset.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; export const deleteAssetGraphQL = gql` - mutation deleteAssetGraphQL($where: AssetWhereUniqueInput!) { + mutation($where: AssetWhereUniqueInput!) { deleteAsset(where: $where) { id } diff --git a/graphql/mutations/deleteRecipe.ts b/graphql/mutations/deleteRecipe.ts index 5898d59..4a95363 100644 --- a/graphql/mutations/deleteRecipe.ts +++ b/graphql/mutations/deleteRecipe.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; export const deleteRecipeGraphQL = gql` - mutation deleteRecipeGraphQL($where: RecipeWhereUniqueInput!) { + mutation($where: RecipeWhereUniqueInput!) { deleteRecipe(where: $where) { id } diff --git a/graphql/mutations/deleteUserLike.ts b/graphql/mutations/deleteUserLike.ts index 4f2b131..9337909 100644 --- a/graphql/mutations/deleteUserLike.ts +++ b/graphql/mutations/deleteUserLike.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; export const deleteUserLikeGraphQL = gql` - mutation deleteUserLikeGraphQL($where: UserLikeWhereUniqueInput!) { + mutation($where: UserLikeWhereUniqueInput!) { deleteUserLike(where: $where) { id user diff --git a/graphql/mutations/updateRecipe.ts b/graphql/mutations/updateRecipe.ts index 3535520..a139ac4 100644 --- a/graphql/mutations/updateRecipe.ts +++ b/graphql/mutations/updateRecipe.ts @@ -1,10 +1,7 @@ import gql from 'graphql-tag'; export const updateRecipeGraphQL = gql` - mutation updateRecipeGraphQL( - $data: RecipeUpdateInput! - $where: RecipeWhereUniqueInput! - ) { + mutation($data: RecipeUpdateInput!, $where: RecipeWhereUniqueInput!) { updateRecipe(data: $data, where: $where) { id title diff --git a/graphql/queries/recipe.ts b/graphql/queries/recipe.ts index 9c7821f..dfd49fb 100644 --- a/graphql/queries/recipe.ts +++ b/graphql/queries/recipe.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; export const recipeGraphQL = gql` - query recipeGraphQL($where: RecipeWhereUniqueInput!) { + query($where: RecipeWhereUniqueInput!) { recipe(where: $where) { id title diff --git a/graphql/queries/recipes.ts b/graphql/queries/recipes.ts index b40b09c..76c042a 100644 --- a/graphql/queries/recipes.ts +++ b/graphql/queries/recipes.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; export const recipesGraphQL = gql` - query recipesGraphQL($where: RecipeWhereInput) { + query($where: RecipeWhereInput) { recipes(where: $where) { id title diff --git a/graphql/queries/userLike.ts b/graphql/queries/userLike.ts index 4f81802..f28f9d3 100644 --- a/graphql/queries/userLike.ts +++ b/graphql/queries/userLike.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; export const userLikeGraphQL = gql` - query userLikeGraphQL($where: UserLikeWhereUniqueInput!) { + query($where: UserLikeWhereUniqueInput!) { userLike(where: $where) { id user diff --git a/graphql/queries/userLikes.ts b/graphql/queries/userLikes.ts index 5a10a70..bb880e6 100644 --- a/graphql/queries/userLikes.ts +++ b/graphql/queries/userLikes.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; export const userLikesGraphQL = gql` - query userLikesGraphQL($where: UserLikeWhereInput) { + query($where: UserLikeWhereInput) { userLikes(where: $where) { id user diff --git a/next.config.js b/next.config.js index 121c71c..2cf7c9c 100644 --- a/next.config.js +++ b/next.config.js @@ -10,17 +10,19 @@ const { redirectUri, postLogoutRedirectUri, cookieSecret, + BACKEND_URL, } = process.env; module.exports = { publicRuntimeConfig: { + backend: { BACKEND_URL }, + }, + serverRuntimeConfig: { graphcms: { BRANCH, GRAPHCMSURL, GRAPHCMSPROJECTID, }, - }, - serverRuntimeConfig: { auth: { domain, clientId, diff --git a/package.json b/package.json index 5b88929..11a301c 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "dotenv": "^8.2.0", "graphcms-image": "^1.1.0-beta4", "graphql": "^15.0.0", + "graphql-request": "^1.8.2", "graphql-tag": "^2.10.3", "isomorphic-unfetch": "^3.0.0", "lodash": "^4.17.15", diff --git a/pages/api/graphql.ts b/pages/api/graphql.ts new file mode 100644 index 0000000..017a374 --- /dev/null +++ b/pages/api/graphql.ts @@ -0,0 +1,22 @@ +import getConfig from 'next/config'; +import { GraphQLClient } from 'graphql-request'; + +const { serverRuntimeConfig } = getConfig(); + +const { BRANCH, GRAPHCMSURL, GRAPHCMSPROJECTID } = serverRuntimeConfig.graphcms; + +const graphqlEndpoint = `${GRAPHCMSURL}/${GRAPHCMSPROJECTID}/${BRANCH}`; + +export const graphQLClient = new GraphQLClient(graphqlEndpoint, {}); + +async function proxyGraphql(req, res) { + try { + const { variables, query } = req.body; + const data = await graphQLClient.rawRequest(query, variables); + res.json(data); + } catch (e) { + res.json({ data: {}, errors: [{ message: e.message }] }); + } +} + +export default proxyGraphql; diff --git a/utils/apolloClient.ts b/utils/apolloClient.ts index bc299d9..428f21d 100644 --- a/utils/apolloClient.ts +++ b/utils/apolloClient.ts @@ -6,7 +6,7 @@ import getConfig from 'next/config'; const { publicRuntimeConfig } = getConfig(); -const { BRANCH, GRAPHCMSURL, GRAPHCMSPROJECTID } = publicRuntimeConfig.graphcms; +const { BACKEND_URL } = publicRuntimeConfig.backend; export default function createApolloClient(initialState, ctx) { // The `ctx` (NextPageContext) will only be present on the server. @@ -14,7 +14,7 @@ export default function createApolloClient(initialState, ctx) { return new ApolloClient({ ssrMode: Boolean(ctx), link: new HttpLink({ - uri: `${GRAPHCMSURL}/${GRAPHCMSPROJECTID}/${BRANCH}`, // Server URL (must be absolute) + uri: BACKEND_URL, // Server URL (must be absolute) credentials: 'same-origin', // Additional fetch() options like `credentials` or `headers` fetch, }), From 8243c14d38382ebe258f54d16a0f2115632c2845 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Mon, 25 May 2020 10:38:21 -0500 Subject: [PATCH 41/45] 41. Lock down GraphCMS Api --- next.config.js | 2 ++ pages/api/graphql.ts | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/next.config.js b/next.config.js index 2cf7c9c..fe621de 100644 --- a/next.config.js +++ b/next.config.js @@ -11,6 +11,7 @@ const { postLogoutRedirectUri, cookieSecret, BACKEND_URL, + GRAPHCMS_TOKEN, } = process.env; module.exports = { @@ -22,6 +23,7 @@ module.exports = { BRANCH, GRAPHCMSURL, GRAPHCMSPROJECTID, + GRAPHCMS_TOKEN, }, auth: { domain, diff --git a/pages/api/graphql.ts b/pages/api/graphql.ts index 017a374..d14234b 100644 --- a/pages/api/graphql.ts +++ b/pages/api/graphql.ts @@ -3,11 +3,20 @@ import { GraphQLClient } from 'graphql-request'; const { serverRuntimeConfig } = getConfig(); -const { BRANCH, GRAPHCMSURL, GRAPHCMSPROJECTID } = serverRuntimeConfig.graphcms; +const { + BRANCH, + GRAPHCMSURL, + GRAPHCMSPROJECTID, + GRAPHCMS_TOKEN, +} = serverRuntimeConfig.graphcms; const graphqlEndpoint = `${GRAPHCMSURL}/${GRAPHCMSPROJECTID}/${BRANCH}`; -export const graphQLClient = new GraphQLClient(graphqlEndpoint, {}); +export const graphQLClient = new GraphQLClient(graphqlEndpoint, { + headers: { + authorization: `Bearer ${GRAPHCMS_TOKEN}`, + }, +}); async function proxyGraphql(req, res) { try { From d6ada19944a30aa7858a05f782374cec89009e19 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Mon, 25 May 2020 10:49:21 -0500 Subject: [PATCH 42/45] 42. Add Banned Mutation Check --- pages/api/graphql.ts | 2 ++ utils/verify.ts | 11 +++++++++++ 2 files changed, 13 insertions(+) create mode 100644 utils/verify.ts diff --git a/pages/api/graphql.ts b/pages/api/graphql.ts index d14234b..ba1a9f0 100644 --- a/pages/api/graphql.ts +++ b/pages/api/graphql.ts @@ -1,5 +1,6 @@ import getConfig from 'next/config'; import { GraphQLClient } from 'graphql-request'; +import { verifyNotABannedMutation } from '../../utils/verify'; const { serverRuntimeConfig } = getConfig(); @@ -20,6 +21,7 @@ export const graphQLClient = new GraphQLClient(graphqlEndpoint, { async function proxyGraphql(req, res) { try { + await verifyNotABannedMutation(req, res); const { variables, query } = req.body; const data = await graphQLClient.rawRequest(query, variables); res.json(data); diff --git a/utils/verify.ts b/utils/verify.ts new file mode 100644 index 0000000..7eac95f --- /dev/null +++ b/utils/verify.ts @@ -0,0 +1,11 @@ +import * as _ from 'lodash'; + +export const verifyNotABannedMutation = async (req, res) => { + const isBannedMutation = req.body.query.match( + /deleteMany|updateMany|publishMany/g, + ); + + if (!_.isNil(isBannedMutation)) { + throw new Error('Invalid Mutation Requested'); + } +}; From 3b64ca65818698d4fed76ae922ec21b22dd3e495 Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Mon, 25 May 2020 13:27:05 -0500 Subject: [PATCH 43/45] 43. Add Verify User Check 43. Add Verify User Check --- pages/api/graphql.ts | 6 +++++- utils/getUserObject.ts | 31 +++++++++++++++++++++++++++++++ utils/verify.ts | 15 +++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 utils/getUserObject.ts diff --git a/pages/api/graphql.ts b/pages/api/graphql.ts index ba1a9f0..504205b 100644 --- a/pages/api/graphql.ts +++ b/pages/api/graphql.ts @@ -1,6 +1,9 @@ import getConfig from 'next/config'; import { GraphQLClient } from 'graphql-request'; -import { verifyNotABannedMutation } from '../../utils/verify'; +import { + verifyNotABannedMutation, + verifyUserMutation, +} from '../../utils/verify'; const { serverRuntimeConfig } = getConfig(); @@ -22,6 +25,7 @@ export const graphQLClient = new GraphQLClient(graphqlEndpoint, { async function proxyGraphql(req, res) { try { await verifyNotABannedMutation(req, res); + await verifyUserMutation(req, res); const { variables, query } = req.body; const data = await graphQLClient.rawRequest(query, variables); res.json(data); diff --git a/utils/getUserObject.ts b/utils/getUserObject.ts new file mode 100644 index 0000000..9f9fe44 --- /dev/null +++ b/utils/getUserObject.ts @@ -0,0 +1,31 @@ +import * as _ from 'lodash'; + +export const getUserObject = (currentItem) => { + let result = null; + + if (_.isArray(currentItem)) { + for (const item of currentItem) { + result = getUserObject(item); + if (result) { + break; + } + } + } else { + for (const prop in currentItem) { + if (prop === 'user') { + return currentItem.user; + } else if (prop === 'owner') { + return currentItem.owner; + } + + if (_.isObject(currentItem[prop]) || _.isArray(currentItem[prop])) { + result = getUserObject(currentItem[prop]); + if (result) { + break; + } + } + } + } + + return result; +}; diff --git a/utils/verify.ts b/utils/verify.ts index 7eac95f..cb9622a 100644 --- a/utils/verify.ts +++ b/utils/verify.ts @@ -1,4 +1,6 @@ import * as _ from 'lodash'; +import { getUserObject } from './getUserObject'; +import auth0 from './auth0'; export const verifyNotABannedMutation = async (req, res) => { const isBannedMutation = req.body.query.match( @@ -9,3 +11,16 @@ export const verifyNotABannedMutation = async (req, res) => { throw new Error('Invalid Mutation Requested'); } }; + +export const verifyUserMutation = async (req, res) => { + const requestedUserId = getUserObject(req.body.variables); + + if (!_.isNil(requestedUserId)) { + const { user } = await auth0.getSession(req); + + const actualUserId: string = _.get(user, 'sub'); + if (actualUserId !== requestedUserId) { + throw new Error('Invalid User Requested'); + } + } +}; From c77cc372468054d4dc81812d4aaf1c73209be09e Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Mon, 25 May 2020 12:03:13 -0500 Subject: [PATCH 44/45] 44. Add Verify User Permissions Check --- pages/api/graphql.ts | 2 ++ utils/verify.ts | 50 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/pages/api/graphql.ts b/pages/api/graphql.ts index 504205b..c7e0151 100644 --- a/pages/api/graphql.ts +++ b/pages/api/graphql.ts @@ -3,6 +3,7 @@ import { GraphQLClient } from 'graphql-request'; import { verifyNotABannedMutation, verifyUserMutation, + verifyUserPermissions, } from '../../utils/verify'; const { serverRuntimeConfig } = getConfig(); @@ -26,6 +27,7 @@ async function proxyGraphql(req, res) { try { await verifyNotABannedMutation(req, res); await verifyUserMutation(req, res); + await verifyUserPermissions(req, res); const { variables, query } = req.body; const data = await graphQLClient.rawRequest(query, variables); res.json(data); diff --git a/utils/verify.ts b/utils/verify.ts index cb9622a..a1a7e64 100644 --- a/utils/verify.ts +++ b/utils/verify.ts @@ -1,6 +1,11 @@ import * as _ from 'lodash'; +import { print } from 'graphql'; import { getUserObject } from './getUserObject'; import auth0 from './auth0'; +import { recipeGraphQL } from '../graphql/queries/recipe'; +import { userLikeGraphQL } from '../graphql/queries/userLike'; +import { recipesGraphQL } from '../graphql/queries/recipes'; +import { graphQLClient } from '../pages/api/graphql'; export const verifyNotABannedMutation = async (req, res) => { const isBannedMutation = req.body.query.match( @@ -24,3 +29,48 @@ export const verifyUserMutation = async (req, res) => { } } }; + +export const verifyUserPermissions = async (req, res) => { + const { variables } = req.body; + + const mutationToMatch = [ + { + match: /deleteRecipe/g, + queryToCheck: print(recipeGraphQL), + vars: variables, + path: 'recipe.owner', + }, + { + match: /deleteUserLike/g, + queryToCheck: print(userLikeGraphQL), + vars: variables, + path: 'userLike.user', + }, + { + match: /updateRecipe/g, + queryToCheck: print(recipeGraphQL), + vars: variables, + path: 'recipe.owner', + }, + ]; + + const doAnyVerificationsFail = await Promise.all( + mutationToMatch.map(async ({ match, queryToCheck, path, vars }) => { + const hasMatch = req.body.query.match(match); + if (!_.isNil(hasMatch)) { + const { user } = await auth0.getSession(req); + const actualUserId: string = _.get(user, 'sub'); + const result = await graphQLClient.request(queryToCheck, vars); + const owner = _.get(result, path); + if (owner !== actualUserId) { + return true; + } + return false; + } + }), + ); + + if (doAnyVerificationsFail.some((b) => !!b)) { + throw new Error('You are not authorized to make that change.'); + } +}; From 4910bf11f9ceb627fe6ecf1c7adf44928007829f Mon Sep 17 00:00:00 2001 From: Stephen Jensen Date: Mon, 22 Jun 2020 20:21:35 -0500 Subject: [PATCH 45/45] 45. Add Picture Uploader 45. Add Picture Uploader --- components/CreateRecipe.tsx | 25 ++++++++-- components/DeleteButton.tsx | 23 ++++++++- components/GenerateIngredients.tsx | 1 + components/PictureUploader.tsx | 76 ++++++++++++++++++++++++++++++ components/UpdateRecipe.tsx | 76 ++++++++++++++++++++++++------ next.config.js | 10 ++++ utils/submitForm.ts | 29 ++++++++++-- utils/verify.ts | 44 +++++++++-------- 8 files changed, 244 insertions(+), 40 deletions(-) create mode 100644 components/PictureUploader.tsx diff --git a/components/CreateRecipe.tsx b/components/CreateRecipe.tsx index b692cee..488a852 100644 --- a/components/CreateRecipe.tsx +++ b/components/CreateRecipe.tsx @@ -9,15 +9,21 @@ import * as _ from 'lodash'; import { Loading } from './notify/Loading'; import Router from 'next/router'; import { recipesGraphQL } from '../graphql/queries/recipes'; +import { PictureUploader } from './PictureUploader'; +import { useState } from 'react'; export const CreateRecipe = () => { + const [recipeState, setRecipeState] = useState({ isPicUploading: false }); const [createRecipeMutation, { loading }] = useMutation(createRecipeGraphQL); const { user, loading: isFetchingUser } = useFetchUser(); const owner = _.get(user, 'sub'); const initiateCreateRecipe = () => { createRecipeMutation({ - refetchQueries: [{ query: recipesGraphQL }], + refetchQueries: [ + { query: recipesGraphQL }, + { query: recipesGraphQL, variables: { where: { owner } } }, + ], variables: { data: { ...inputs, @@ -35,6 +41,7 @@ export const CreateRecipe = () => { handleDeleteIngredient, handleDropdownChange, handleSubmit, + handleSubmitImage, } = submitForm( { title: '', @@ -73,10 +80,22 @@ export const CreateRecipe = () => { handleDropdownChange={handleDropdownChange} /> - + + + + + + - diff --git a/components/DeleteButton.tsx b/components/DeleteButton.tsx index 51b4cfc..6aa9026 100644 --- a/components/DeleteButton.tsx +++ b/components/DeleteButton.tsx @@ -4,21 +4,36 @@ import { deleteRecipeGraphQL } from '../graphql/mutations/deleteRecipe'; import { useState } from 'react'; import { recipesGraphQL } from '../graphql/queries/recipes'; import Router from 'next/router'; +import { deleteAssetGraphQL } from '../graphql/mutations/deleteAsset'; export const DeleteButton = ({ id, disabled, + imageId, }: { id: string; disabled: boolean; + imageId: string; }) => { const [deleteRecipeMutation, { loading: deleteRecipeLoading }] = useMutation( deleteRecipeGraphQL, ); + const [deleteAssetMutation, { loading: deleteAssetLoading }] = useMutation( + deleteAssetGraphQL, + ); const [isModalVisible, setModalVisibility] = useState(false); const handleOk = async () => { + if (imageId && !deleteAssetLoading) { + await deleteAssetMutation({ + refetchQueries: [{ query: recipesGraphQL }], + variables: { + where: { id: imageId }, + }, + }); + } + if (!deleteRecipeLoading) { await deleteRecipeMutation({ refetchQueries: [{ query: recipesGraphQL }], @@ -36,7 +51,13 @@ export const DeleteButton = ({ return ( <> - ( + + ); +}; diff --git a/components/UpdateRecipe.tsx b/components/UpdateRecipe.tsx index aef8e57..d713b1c 100644 --- a/components/UpdateRecipe.tsx +++ b/components/UpdateRecipe.tsx @@ -10,6 +10,9 @@ import { Loading } from './notify/Loading'; import { createUpdateObj } from '../utils/createUpdateObj'; import { updateRecipeGraphQL } from '../graphql/mutations/updateRecipe'; import { DeleteButton } from './DeleteButton'; +import { PictureUploader } from './PictureUploader'; +import GraphImg from 'graphcms-image'; +import { deleteAssetGraphQL } from '../graphql/mutations/deleteAsset'; export const UpdateRecipe = ({ id }) => { const { loading: isQueryLoading, data, error } = useQuery(recipeGraphQL, { @@ -18,20 +21,47 @@ export const UpdateRecipe = ({ id }) => { const [updateRecipeMutation, { loading: updateRecipeLoading }] = useMutation( updateRecipeGraphQL, ); + const [deleteAssetMutation, { loading: deleteAssetLoading }] = useMutation( + deleteAssetGraphQL, + ); - const [recipeState, setRecipeState] = useState({ isQueryLoading: true }); + const [recipeState, setRecipeState] = useState({ + isQueryLoading: true, + isPicUploading: false, + }); - const initiateUpdateRecipe = () => { + const initiateUpdateRecipe = async () => { + const queryImageHandle = _.get(data, 'recipe.image.handle'); + const inputsImageHandle = _.get(inputs, 'image.create.handle'); + const queryImageId = _.get(data, 'recipe.image.id'); + if (queryImageHandle !== inputsImageHandle && !_.isNil(inputsImageHandle)) { + await deleteAssetMutation({ + variables: { + where: { + id: queryImageId, + }, + }, + }); + } const updateObj = createUpdateObj(data, inputs); - return updateRecipeMutation({ - refetchQueries: [{ query: recipeGraphQL, variables: { where: { id } } }], - variables: { - data: { - ...updateObj, + if (!_.isEmpty(updateObj)) { + const result = await updateRecipeMutation({ + refetchQueries: [ + { query: recipeGraphQL, variables: { where: { id } } }, + ], + variables: { + data: { + ...updateObj, + }, + where: { id }, }, - where: { id }, - }, - }); + }); + const updateRecipe = _.get(result, 'data.updateRecipe'); + return updateRecipe; + } else { + const recipe = _.get(data, 'recipe'); + return recipe; + } }; const { @@ -41,6 +71,7 @@ export const UpdateRecipe = ({ id }) => { handleDeleteIngredient, handleDropdownChange, handleUpdate, + handleSubmitImage, setInputs, } = submitForm( { @@ -52,14 +83,18 @@ export const UpdateRecipe = ({ id }) => { initiateUpdateRecipe, ); if (!isQueryLoading && recipeState.isQueryLoading) { - const { __type, ...loadedRecipe } = _.get(data, 'recipe'); + const { __typename, ...loadedRecipe } = _.get(data, 'recipe'); setInputs((state) => ({ ...state, ...loadedRecipe })); setRecipeState((state) => ({ ...state, isQueryLoading })); } if (!data) return ; - const disabled = isQueryLoading || updateRecipeLoading; + const disabled = + isQueryLoading || + updateRecipeLoading || + recipeState.isPicUploading || + deleteAssetLoading; return ( @@ -87,13 +122,26 @@ export const UpdateRecipe = ({ id }) => { handleDropdownChange={handleDropdownChange} /> - + + + + {inputs.image ? : null} + + + - + diff --git a/next.config.js b/next.config.js index fe621de..aded7fa 100644 --- a/next.config.js +++ b/next.config.js @@ -12,11 +12,21 @@ const { cookieSecret, BACKEND_URL, GRAPHCMS_TOKEN, + CDNBASE, + APIURL, + APIKEY, } = process.env; module.exports = { publicRuntimeConfig: { backend: { BACKEND_URL }, + graphcms: { + GRAPHCMSPROJECTID, + BRANCH, + CDNBASE, + APIURL, + APIKEY, + }, }, serverRuntimeConfig: { graphcms: { diff --git a/utils/submitForm.ts b/utils/submitForm.ts index 4100e56..bf7be35 100644 --- a/utils/submitForm.ts +++ b/utils/submitForm.ts @@ -52,9 +52,22 @@ export const submitForm = (initialValues, callback) => { const handleUpdate = async () => { const updatedResult = await callback(); - const { updateRecipe } = updatedResult.data; - const { content, description, status, title, ingredients } = updateRecipe; - setInputs(() => ({ content, description, status, title, ingredients })); + const { + content, + description, + status, + title, + ingredients, + image, + } = updatedResult; + setInputs(() => ({ + content, + description, + status, + title, + ingredients, + image, + })); }; const handleSubmit = () => { @@ -62,10 +75,20 @@ export const submitForm = (initialValues, callback) => { setInputs(() => ({ ...initialValues })); }; + const handleSubmitImage = (image) => { + setInputs((inputs) => { + const newInput = _.cloneDeep(inputs); + _.set(newInput, 'image', image); + console.log(newInput); + return newInput; + }); + }; + return { inputs, setInputs, handleSubmit, + handleSubmitImage, handleUpdate, handleInputChange, handleAddIngredient, diff --git a/utils/verify.ts b/utils/verify.ts index a1a7e64..203a701 100644 --- a/utils/verify.ts +++ b/utils/verify.ts @@ -1,19 +1,19 @@ -import * as _ from 'lodash'; -import { print } from 'graphql'; -import { getUserObject } from './getUserObject'; -import auth0 from './auth0'; -import { recipeGraphQL } from '../graphql/queries/recipe'; -import { userLikeGraphQL } from '../graphql/queries/userLike'; -import { recipesGraphQL } from '../graphql/queries/recipes'; -import { graphQLClient } from '../pages/api/graphql'; +import * as _ from "lodash"; +import { print } from "graphql"; +import { getUserObject } from "./getUserObject"; +import auth0 from "./auth0"; +import { recipeGraphQL } from "../graphql/queries/recipe"; +import { userLikeGraphQL } from "../graphql/queries/userLike"; +import { recipesGraphQL } from "../graphql/queries/recipes"; +import { graphQLClient } from "../pages/api/graphql"; export const verifyNotABannedMutation = async (req, res) => { const isBannedMutation = req.body.query.match( - /deleteMany|updateMany|publishMany/g, + /deleteMany|updateMany|publishMany/g ); if (!_.isNil(isBannedMutation)) { - throw new Error('Invalid Mutation Requested'); + throw new Error("Invalid Mutation Requested"); } }; @@ -23,9 +23,9 @@ export const verifyUserMutation = async (req, res) => { if (!_.isNil(requestedUserId)) { const { user } = await auth0.getSession(req); - const actualUserId: string = _.get(user, 'sub'); + const actualUserId: string = _.get(user, "sub"); if (actualUserId !== requestedUserId) { - throw new Error('Invalid User Requested'); + throw new Error("Invalid User Requested"); } } }; @@ -38,20 +38,26 @@ export const verifyUserPermissions = async (req, res) => { match: /deleteRecipe/g, queryToCheck: print(recipeGraphQL), vars: variables, - path: 'recipe.owner', + path: "recipe.owner" }, { match: /deleteUserLike/g, queryToCheck: print(userLikeGraphQL), vars: variables, - path: 'userLike.user', + path: "userLike.user" }, { match: /updateRecipe/g, queryToCheck: print(recipeGraphQL), vars: variables, - path: 'recipe.owner', + path: "recipe.owner" }, + { + match: /deleteAsset/g, + queryToCheck: print(recipesGraphQL), + vars: { where: { image: { id: _.get(variables, "where.id") } } }, + path: "recipes[0].owner" + } ]; const doAnyVerificationsFail = await Promise.all( @@ -59,7 +65,7 @@ export const verifyUserPermissions = async (req, res) => { const hasMatch = req.body.query.match(match); if (!_.isNil(hasMatch)) { const { user } = await auth0.getSession(req); - const actualUserId: string = _.get(user, 'sub'); + const actualUserId: string = _.get(user, "sub"); const result = await graphQLClient.request(queryToCheck, vars); const owner = _.get(result, path); if (owner !== actualUserId) { @@ -67,10 +73,10 @@ export const verifyUserPermissions = async (req, res) => { } return false; } - }), + }) ); - if (doAnyVerificationsFail.some((b) => !!b)) { - throw new Error('You are not authorized to make that change.'); + if (doAnyVerificationsFail.some(b => !!b)) { + throw new Error("You are not authorized to make that change."); } };