From 3b1ecf2a03d380bdf3d93f176534168477fd1ed9 Mon Sep 17 00:00:00 2001 From: jwnasambu <julietwamalwa@yahoo.com> Date: Wed, 22 Sep 2021 22:52:39 +0300 Subject: [PATCH] OCLOMRS-1044:Bug Fix: Pick Concepts from Source and Dictionaries --- package-lock.json | 1272 +++++++---------- package.json | 3 +- .../components/ConceptSourceSwitcher.tsx | 268 ++++ .../components/ViewConceptsHeader.tsx | 254 +++- src/apps/concepts/pages/ViewConceptsPage.tsx | 48 +- src/apps/dictionaries/api.ts | 4 + src/apps/dictionaries/logic.ts | 12 +- src/apps/dictionaries/redux/actionTypes.ts | 1 + src/apps/dictionaries/redux/actions.ts | 4 +- src/apps/dictionaries/redux/reducer.ts | 5 +- 10 files changed, 1094 insertions(+), 777 deletions(-) create mode 100644 src/apps/concepts/components/ConceptSourceSwitcher.tsx diff --git a/package-lock.json b/package-lock.json index 4fbc1d834..bc1a41e13 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,9 @@ { "name": "ocl-client", "version": "0.1.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, +<<<<<<< HEAD "packages": { "": { "name": "ocl-client", @@ -81,23 +82,27 @@ } }, "node_modules/@babel/code-frame": { +======= + "dependencies": { + "@babel/code-frame": { +>>>>>>> 7683e91... OCLOMRS-1044:Bug Fix: Pick Concepts from Source and Dictionaries "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "dependencies": { + "requires": { "@babel/highlight": "^7.12.13" } }, - "node_modules/@babel/compat-data": { + "@babel/compat-data": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.4.tgz", "integrity": "sha512-i2wXrWQNkH6JplJQGn3Rd2I4Pij8GdHkXwHMxm+zV5YG/Jci+bCNrWZEWC4o+umiDkRrRs4dVzH3X4GP7vyjQQ==" }, - "node_modules/@babel/core": { + "@babel/core": { "version": "7.14.3", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.3.tgz", "integrity": "sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg==", - "dependencies": { + "requires": { "@babel/code-frame": "^7.12.13", "@babel/generator": "^7.14.3", "@babel/helper-compilation-targets": "^7.13.16", @@ -114,69 +119,64 @@ "semver": "^6.3.0", "source-map": "^0.5.0" }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } } }, - "node_modules/@babel/generator": { + "@babel/generator": { "version": "7.14.3", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.3.tgz", "integrity": "sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA==", - "dependencies": { + "requires": { "@babel/types": "^7.14.2", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, - "node_modules/@babel/helper-annotate-as-pure": { + "@babel/helper-annotate-as-pure": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", - "dependencies": { + "requires": { "@babel/types": "^7.12.13" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", - "dependencies": { + "requires": { "@babel/helper-explode-assignable-expression": "^7.12.13", "@babel/types": "^7.12.13" } }, - "node_modules/@babel/helper-compilation-targets": { + "@babel/helper-compilation-targets": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.4.tgz", "integrity": "sha512-JgdzOYZ/qGaKTVkn5qEDV/SXAh8KcyUVkCoSWGN8T3bwrgd6m+/dJa2kVGi6RJYJgEYPBdZ84BZp9dUjNWkBaA==", - "dependencies": { + "requires": { "@babel/compat-data": "^7.14.4", "@babel/helper-validator-option": "^7.12.17", "browserslist": "^4.16.6", "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { + "@babel/helper-create-class-features-plugin": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.4.tgz", "integrity": "sha512-idr3pthFlDCpV+p/rMgGLGYIVtazeatrSOQk8YzO2pAepIjQhCN3myeihVg58ax2bbbGK9PUE1reFi7axOYIOw==", - "dependencies": { + "requires": { "@babel/helper-annotate-as-pure": "^7.12.13", "@babel/helper-function-name": "^7.14.2", "@babel/helper-member-expression-to-functions": "^7.13.12", @@ -185,20 +185,20 @@ "@babel/helper-split-export-declaration": "^7.12.13" } }, - "node_modules/@babel/helper-create-regexp-features-plugin": { + "@babel/helper-create-regexp-features-plugin": { "version": "7.14.3", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.3.tgz", "integrity": "sha512-JIB2+XJrb7v3zceV2XzDhGIB902CmKGSpSl4q2C6agU9SNLG/2V1RtFRGPG1Ajh9STj3+q6zJMOC+N/pp2P9DA==", - "dependencies": { + "requires": { "@babel/helper-annotate-as-pure": "^7.12.13", "regexpu-core": "^4.7.1" } }, - "node_modules/@babel/helper-define-polyfill-provider": { + "@babel/helper-define-polyfill-provider": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", - "dependencies": { + "requires": { "@babel/helper-compilation-targets": "^7.13.0", "@babel/helper-module-imports": "^7.12.13", "@babel/helper-plugin-utils": "^7.13.0", @@ -207,72 +207,71 @@ "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } } }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { + "@babel/helper-explode-assignable-expression": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", - "dependencies": { + "requires": { "@babel/types": "^7.13.0" } }, - "node_modules/@babel/helper-function-name": { + "@babel/helper-function-name": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz", "integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==", - "dependencies": { + "requires": { "@babel/helper-get-function-arity": "^7.12.13", "@babel/template": "^7.12.13", "@babel/types": "^7.14.2" } }, - "node_modules/@babel/helper-get-function-arity": { + "@babel/helper-get-function-arity": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", - "dependencies": { + "requires": { "@babel/types": "^7.12.13" } }, - "node_modules/@babel/helper-hoist-variables": { + "@babel/helper-hoist-variables": { "version": "7.13.16", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz", "integrity": "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==", - "dependencies": { + "requires": { "@babel/traverse": "^7.13.15", "@babel/types": "^7.13.16" } }, - "node_modules/@babel/helper-member-expression-to-functions": { + "@babel/helper-member-expression-to-functions": { "version": "7.13.12", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", - "dependencies": { + "requires": { "@babel/types": "^7.13.12" } }, - "node_modules/@babel/helper-module-imports": { + "@babel/helper-module-imports": { "version": "7.13.12", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", - "dependencies": { + "requires": { "@babel/types": "^7.13.12" } }, - "node_modules/@babel/helper-module-transforms": { + "@babel/helper-module-transforms": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz", "integrity": "sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==", - "dependencies": { + "requires": { "@babel/helper-module-imports": "^7.13.12", "@babel/helper-replace-supers": "^7.13.12", "@babel/helper-simple-access": "^7.13.12", @@ -283,224 +282,218 @@ "@babel/types": "^7.14.2" } }, - "node_modules/@babel/helper-optimise-call-expression": { + "@babel/helper-optimise-call-expression": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", - "dependencies": { + "requires": { "@babel/types": "^7.12.13" } }, - "node_modules/@babel/helper-plugin-utils": { + "@babel/helper-plugin-utils": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==" }, - "node_modules/@babel/helper-remap-async-to-generator": { + "@babel/helper-remap-async-to-generator": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", - "dependencies": { + "requires": { "@babel/helper-annotate-as-pure": "^7.12.13", "@babel/helper-wrap-function": "^7.13.0", "@babel/types": "^7.13.0" } }, - "node_modules/@babel/helper-replace-supers": { + "@babel/helper-replace-supers": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.4.tgz", "integrity": "sha512-zZ7uHCWlxfEAAOVDYQpEf/uyi1dmeC7fX4nCf2iz9drnCwi1zvwXL3HwWWNXUQEJ1k23yVn3VbddiI9iJEXaTQ==", - "dependencies": { + "requires": { "@babel/helper-member-expression-to-functions": "^7.13.12", "@babel/helper-optimise-call-expression": "^7.12.13", "@babel/traverse": "^7.14.2", "@babel/types": "^7.14.4" } }, - "node_modules/@babel/helper-simple-access": { + "@babel/helper-simple-access": { "version": "7.13.12", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", - "dependencies": { + "requires": { "@babel/types": "^7.13.12" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "@babel/helper-skip-transparent-expression-wrappers": { "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", - "dependencies": { + "requires": { "@babel/types": "^7.12.1" } }, - "node_modules/@babel/helper-split-export-declaration": { + "@babel/helper-split-export-declaration": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", - "dependencies": { + "requires": { "@babel/types": "^7.12.13" } }, - "node_modules/@babel/helper-validator-identifier": { + "@babel/helper-validator-identifier": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==" }, - "node_modules/@babel/helper-validator-option": { + "@babel/helper-validator-option": { "version": "7.12.17", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==" }, - "node_modules/@babel/helper-wrap-function": { + "@babel/helper-wrap-function": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", - "dependencies": { + "requires": { "@babel/helper-function-name": "^7.12.13", "@babel/template": "^7.12.13", "@babel/traverse": "^7.13.0", "@babel/types": "^7.13.0" } }, - "node_modules/@babel/helpers": { + "@babel/helpers": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", - "dependencies": { + "requires": { "@babel/template": "^7.12.13", "@babel/traverse": "^7.14.0", "@babel/types": "^7.14.0" } }, - "node_modules/@babel/highlight": { + "@babel/highlight": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", - "dependencies": { + "requires": { "@babel/helper-validator-identifier": "^7.14.0", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, - "node_modules/@babel/parser": { + "@babel/parser": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.4.tgz", - "integrity": "sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } + "integrity": "sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA==" }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.13.12", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-proposal-optional-chaining": "^7.13.12" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { + "@babel/plugin-proposal-async-generator-functions": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.2.tgz", "integrity": "sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-remap-async-to-generator": "^7.13.0", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, - "node_modules/@babel/plugin-proposal-class-properties": { + "@babel/plugin-proposal-class-properties": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", - "dependencies": { + "requires": { "@babel/helper-create-class-features-plugin": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-class-static-block": { + "@babel/plugin-proposal-class-static-block": { "version": "7.14.3", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.3.tgz", "integrity": "sha512-HEjzp5q+lWSjAgJtSluFDrGGosmwTgKwCXdDQZvhKsRlwv3YdkUEqxNrrjesJd+B9E9zvr1PVPVBvhYZ9msjvQ==", - "dependencies": { + "requires": { "@babel/helper-create-class-features-plugin": "^7.14.3", "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-class-static-block": "^7.12.13" } }, - "node_modules/@babel/plugin-proposal-decorators": { + "@babel/plugin-proposal-decorators": { "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz", "integrity": "sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ==", - "dependencies": { + "requires": { "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-decorators": "^7.12.1" } }, - "node_modules/@babel/plugin-proposal-dynamic-import": { + "@babel/plugin-proposal-dynamic-import": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.2.tgz", "integrity": "sha512-oxVQZIWFh91vuNEMKltqNsKLFWkOIyJc95k2Gv9lWVyDfPUQGSSlbDEgWuJUU1afGE9WwlzpucMZ3yDRHIItkA==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { + "@babel/plugin-proposal-export-namespace-from": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.2.tgz", "integrity": "sha512-sRxW3z3Zp3pFfLAgVEvzTFutTXax837oOatUIvSG9o5gRj9mKwm3br1Se5f4QalTQs9x4AzlA/HrCWbQIHASUQ==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, - "node_modules/@babel/plugin-proposal-json-strings": { + "@babel/plugin-proposal-json-strings": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.2.tgz", "integrity": "sha512-w2DtsfXBBJddJacXMBhElGEYqCZQqN99Se1qeYn8DVLB33owlrlLftIbMzn5nz1OITfDVknXF433tBrLEAOEjA==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "@babel/plugin-proposal-logical-assignment-operators": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.2.tgz", "integrity": "sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz", "integrity": "sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, - "node_modules/@babel/plugin-proposal-numeric-separator": { + "@babel/plugin-proposal-numeric-separator": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.2.tgz", "integrity": "sha512-DcTQY9syxu9BpU3Uo94fjCB3LN9/hgPS8oUL7KrSW3bA2ePrKZZPJcc5y0hoJAM9dft3pGfErtEUvxXQcfLxUg==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { + "@babel/plugin-proposal-object-rest-spread": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.4.tgz", "integrity": "sha512-AYosOWBlyyXEagrPRfLJ1enStufsr7D1+ddpj8OLi9k7B6+NdZ0t/9V7Fh+wJ4g2Jol8z2JkgczYqtWrZd4vbA==", - "dependencies": { + "requires": { "@babel/compat-data": "^7.14.4", "@babel/helper-compilation-targets": "^7.14.4", "@babel/helper-plugin-utils": "^7.13.0", @@ -508,256 +501,253 @@ "@babel/plugin-transform-parameters": "^7.14.2" } }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "@babel/plugin-proposal-optional-catch-binding": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz", "integrity": "sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, - "node_modules/@babel/plugin-proposal-optional-chaining": { + "@babel/plugin-proposal-optional-chaining": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz", "integrity": "sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, - "node_modules/@babel/plugin-proposal-private-methods": { + "@babel/plugin-proposal-private-methods": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", - "dependencies": { + "requires": { "@babel/helper-create-class-features-plugin": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { + "@babel/plugin-proposal-private-property-in-object": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz", "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==", - "dependencies": { + "requires": { "@babel/helper-annotate-as-pure": "^7.12.13", "@babel/helper-create-class-features-plugin": "^7.14.0", "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-private-property-in-object": "^7.14.0" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "@babel/plugin-proposal-unicode-property-regex": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", - "dependencies": { + "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" - }, - "engines": { - "node": ">=4" } }, - "node_modules/@babel/plugin-syntax-async-generators": { + "@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==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/@babel/plugin-syntax-bigint": { + "@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==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/@babel/plugin-syntax-class-properties": { + "@babel/plugin-syntax-class-properties": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { + "@babel/plugin-syntax-class-static-block": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz", "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-syntax-decorators": { + "@babel/plugin-syntax-decorators": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz", "integrity": "sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { + "@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==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { + "@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.3" } }, - "node_modules/@babel/plugin-syntax-flow": { + "@babel/plugin-syntax-flow": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz", "integrity": "sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-syntax-import-meta": { + "@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, - "node_modules/@babel/plugin-syntax-json-strings": { + "@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==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/@babel/plugin-syntax-jsx": { + "@babel/plugin-syntax-jsx": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "@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==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { + "@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { + "@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==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "@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==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { + "@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==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { + "@babel/plugin-syntax-private-property-in-object": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz", "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { + "@babel/plugin-syntax-top-level-await": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-syntax-typescript": { + "@babel/plugin-syntax-typescript": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz", "integrity": "sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { + "@babel/plugin-transform-arrow-functions": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { + "@babel/plugin-transform-async-to-generator": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", - "dependencies": { + "requires": { "@babel/helper-module-imports": "^7.12.13", "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-remap-async-to-generator": "^7.13.0" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { + "@babel/plugin-transform-block-scoped-functions": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-block-scoping": { + "@babel/plugin-transform-block-scoping": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.4.tgz", "integrity": "sha512-5KdpkGxsZlTk+fPleDtGKsA+pon28+ptYmMO8GBSa5fHERCJWAzj50uAfCKBqq42HO+Zot6JF1x37CRprwmN4g==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, - "node_modules/@babel/plugin-transform-classes": { + "@babel/plugin-transform-classes": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.4.tgz", "integrity": "sha512-p73t31SIj6y94RDVX57rafVjttNr8MvKEgs5YFatNB/xC68zM3pyosuOEcQmYsYlyQaGY9R7rAULVRcat5FKJQ==", - "dependencies": { + "requires": { "@babel/helper-annotate-as-pure": "^7.12.13", "@babel/helper-function-name": "^7.14.2", "@babel/helper-optimise-call-expression": "^7.12.13", @@ -767,116 +757,116 @@ "globals": "^11.1.0" } }, - "node_modules/@babel/plugin-transform-computed-properties": { + "@babel/plugin-transform-computed-properties": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, - "node_modules/@babel/plugin-transform-destructuring": { + "@babel/plugin-transform-destructuring": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.4.tgz", "integrity": "sha512-JyywKreTCGTUsL1OKu1A3ms/R1sTP0WxbpXlALeGzF53eB3bxtNkYdMj9SDgK7g6ImPy76J5oYYKoTtQImlhQA==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { + "@babel/plugin-transform-dotall-regex": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", - "dependencies": { + "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { + "@babel/plugin-transform-duplicate-keys": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { + "@babel/plugin-transform-exponentiation-operator": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", - "dependencies": { + "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-flow-strip-types": { + "@babel/plugin-transform-flow-strip-types": { "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz", "integrity": "sha512-8hAtkmsQb36yMmEtk2JZ9JnVyDSnDOdlB+0nEGzIDLuK4yR3JcEjfuFPYkdEPSh8Id+rAMeBEn+X0iVEyho6Hg==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-flow": "^7.12.1" } }, - "node_modules/@babel/plugin-transform-for-of": { + "@babel/plugin-transform-for-of": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, - "node_modules/@babel/plugin-transform-function-name": { + "@babel/plugin-transform-function-name": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", - "dependencies": { + "requires": { "@babel/helper-function-name": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-literals": { + "@babel/plugin-transform-literals": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { + "@babel/plugin-transform-member-expression-literals": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-modules-amd": { + "@babel/plugin-transform-modules-amd": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.2.tgz", "integrity": "sha512-hPC6XBswt8P3G2D1tSV2HzdKvkqOpmbyoy+g73JG0qlF/qx2y3KaMmXb1fLrpmWGLZYA0ojCvaHdzFWjlmV+Pw==", - "dependencies": { + "requires": { "@babel/helper-module-transforms": "^7.14.2", "@babel/helper-plugin-utils": "^7.13.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { + "@babel/plugin-transform-modules-commonjs": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", - "dependencies": { + "requires": { "@babel/helper-module-transforms": "^7.14.0", "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-simple-access": "^7.13.12", "babel-plugin-dynamic-import-node": "^2.3.3" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { + "@babel/plugin-transform-modules-systemjs": { "version": "7.13.8", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", - "dependencies": { + "requires": { "@babel/helper-hoist-variables": "^7.13.0", "@babel/helper-module-transforms": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0", @@ -884,77 +874,77 @@ "babel-plugin-dynamic-import-node": "^2.3.3" } }, - "node_modules/@babel/plugin-transform-modules-umd": { + "@babel/plugin-transform-modules-umd": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", - "dependencies": { + "requires": { "@babel/helper-module-transforms": "^7.14.0", "@babel/helper-plugin-utils": "^7.13.0" } }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", - "dependencies": { + "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-new-target": { + "@babel/plugin-transform-new-target": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-object-super": { + "@babel/plugin-transform-object-super": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13", "@babel/helper-replace-supers": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-parameters": { + "@babel/plugin-transform-parameters": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz", "integrity": "sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, - "node_modules/@babel/plugin-transform-property-literals": { + "@babel/plugin-transform-property-literals": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-react-constant-elements": { + "@babel/plugin-transform-react-constant-elements": { "version": "7.13.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.13.tgz", "integrity": "sha512-SNJU53VM/SjQL0bZhyU+f4kJQz7bQQajnrZRSaU21hruG/NWY41AEM9AWXeXX90pYr/C2yAmTgI6yW3LlLrAUQ==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, - "node_modules/@babel/plugin-transform-react-display-name": { + "@babel/plugin-transform-react-display-name": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.2.tgz", "integrity": "sha512-zCubvP+jjahpnFJvPaHPiGVfuVUjXHhFvJKQdNnsmSsiU9kR/rCZ41jHc++tERD2zV+p7Hr6is+t5b6iWTCqSw==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, - "node_modules/@babel/plugin-transform-react-jsx": { + "@babel/plugin-transform-react-jsx": { "version": "7.14.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.3.tgz", "integrity": "sha512-uuxuoUNVhdgYzERiHHFkE4dWoJx+UFVyuAl0aqN8P2/AKFHwqgUC5w2+4/PjpKXJsFgBlYAFXlUmDQ3k3DUkXw==", - "dependencies": { + "requires": { "@babel/helper-annotate-as-pure": "^7.12.13", "@babel/helper-module-imports": "^7.13.12", "@babel/helper-plugin-utils": "^7.13.0", @@ -962,147 +952,146 @@ "@babel/types": "^7.14.2" } }, - "node_modules/@babel/plugin-transform-react-jsx-development": { + "@babel/plugin-transform-react-jsx-development": { "version": "7.12.17", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz", "integrity": "sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ==", - "dependencies": { + "requires": { "@babel/plugin-transform-react-jsx": "^7.12.17" } }, - "node_modules/@babel/plugin-transform-react-jsx-self": { + "@babel/plugin-transform-react-jsx-self": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz", "integrity": "sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-react-jsx-source": { + "@babel/plugin-transform-react-jsx-source": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.14.2.tgz", "integrity": "sha512-OMorspVyjxghAjzgeAWc6O7W7vHbJhV69NeTGdl9Mxgz6PaweAuo7ffB9T5A1OQ9dGcw0As4SYMUhyNC4u7mVg==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { + "@babel/plugin-transform-react-pure-annotations": { "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz", "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", - "dependencies": { + "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" } }, - "node_modules/@babel/plugin-transform-regenerator": { + "@babel/plugin-transform-regenerator": { "version": "7.13.15", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", - "dependencies": { + "requires": { "regenerator-transform": "^0.14.2" } }, - "node_modules/@babel/plugin-transform-reserved-words": { + "@babel/plugin-transform-reserved-words": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-runtime": { + "@babel/plugin-transform-runtime": { "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz", "integrity": "sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg==", - "dependencies": { + "requires": { "@babel/helper-module-imports": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", "resolve": "^1.8.1", "semver": "^5.5.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { + "@babel/plugin-transform-shorthand-properties": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-spread": { + "@babel/plugin-transform-spread": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, - "node_modules/@babel/plugin-transform-sticky-regex": { + "@babel/plugin-transform-sticky-regex": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-template-literals": { + "@babel/plugin-transform-template-literals": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, - "node_modules/@babel/plugin-transform-typeof-symbol": { + "@babel/plugin-transform-typeof-symbol": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-typescript": { + "@babel/plugin-transform-typescript": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.4.tgz", "integrity": "sha512-WYdcGNEO7mCCZ2XzRlxwGj3PgeAr50ifkofOUC/+IN/GzKLB+biDPVBUAQN2C/dVZTvEXCp80kfQ1FFZPrwykQ==", - "dependencies": { + "requires": { "@babel/helper-create-class-features-plugin": "^7.14.4", "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-typescript": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-unicode-escapes": { + "@babel/plugin-transform-unicode-escapes": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/plugin-transform-unicode-regex": { + "@babel/plugin-transform-unicode-regex": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", - "dependencies": { + "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/@babel/preset-env": { + "@babel/preset-env": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.4.tgz", "integrity": "sha512-GwMMsuAnDtULyOtuxHhzzuSRxFeP0aR/LNzrHRzP8y6AgDNgqnrfCCBm/1cRdTU75tRs28Eh76poHLcg9VF0LA==", - "dependencies": { + "requires": { "@babel/compat-data": "^7.14.4", "@babel/helper-compilation-targets": "^7.14.4", "@babel/helper-plugin-utils": "^7.13.0", @@ -1176,21 +1165,20 @@ "babel-plugin-polyfill-regenerator": "^0.2.0", "core-js-compat": "^3.9.0", "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } } }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/preset-modules": { + "@babel/preset-modules": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", - "dependencies": { + "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", @@ -1198,11 +1186,11 @@ "esutils": "^2.0.2" } }, - "node_modules/@babel/preset-react": { + "@babel/preset-react": { "version": "7.13.13", "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.13.13.tgz", "integrity": "sha512-gx+tDLIE06sRjKJkVtpZ/t3mzCDOnPG+ggHZG9lffUbX8+wC739x20YQc9V35Do6ZAxaUc/HhVHIiOzz5MvDmA==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-validator-option": "^7.12.17", "@babel/plugin-transform-react-display-name": "^7.12.13", @@ -1211,50 +1199,58 @@ "@babel/plugin-transform-react-pure-annotations": "^7.12.1" } }, - "node_modules/@babel/preset-typescript": { + "@babel/preset-typescript": { "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz", "integrity": "sha512-hNK/DhmoJPsksdHuI/RVrcEws7GN5eamhi28JkO52MqIxU8Z0QpmiSOQxZHWOHV7I3P4UjHV97ay4TcamMA6Kw==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-transform-typescript": "^7.12.1" } }, +<<<<<<< HEAD "node_modules/@babel/runtime": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", "dependencies": { +======= + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "requires": { +>>>>>>> 7683e91... OCLOMRS-1044:Bug Fix: Pick Concepts from Source and Dictionaries "regenerator-runtime": "^0.13.4" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/runtime-corejs3": { + "@babel/runtime-corejs3": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.0.tgz", "integrity": "sha512-0R0HTZWHLk6G8jIk0FtoX+AatCtKnswS98VhXwGImFc759PJRp4Tru0PQYZofyijTFUr+gT8Mu7sgXVJLQ0ceg==", - "dependencies": { + "requires": { "core-js-pure": "^3.0.0", "regenerator-runtime": "^0.13.4" } }, - "node_modules/@babel/template": { + "@babel/template": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dependencies": { + "requires": { "@babel/code-frame": "^7.12.13", "@babel/parser": "^7.12.13", "@babel/types": "^7.12.13" } }, - "node_modules/@babel/traverse": { + "@babel/traverse": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz", "integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==", - "dependencies": { + "requires": { "@babel/code-frame": "^7.12.13", "@babel/generator": "^7.14.2", "@babel/helper-function-name": "^7.14.2", @@ -1265,53 +1261,45 @@ "globals": "^11.1.0" } }, - "node_modules/@babel/types": { + "@babel/types": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.4.tgz", "integrity": "sha512-lCj4aIs0xUefJFQnwwQv2Bxg7Omd6bgquZ6LGC+gGMh6/s5qDVfjuCMlDmYQ15SLsWHd9n+X3E75lKIhl5Lkiw==", - "dependencies": { + "requires": { "@babel/helper-validator-identifier": "^7.14.0", "to-fast-properties": "^2.0.0" } }, - "node_modules/@bcoe/v8-coverage": { + "@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" }, - "node_modules/@cnakazawa/watch": { + "@cnakazawa/watch": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", - "dependencies": { + "requires": { "exec-sh": "^0.3.2", "minimist": "^1.2.0" - }, - "bin": { - "watch": "cli.js" - }, - "engines": { - "node": ">=0.1.95" } }, - "node_modules/@csstools/convert-colors": { + "@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", - "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", - "engines": { - "node": ">=4.0.0" - } + "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" }, - "node_modules/@csstools/normalize.css": { + "@csstools/normalize.css": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" }, - "node_modules/@cypress/browserify-preprocessor": { + "@cypress/browserify-preprocessor": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@cypress/browserify-preprocessor/-/browserify-preprocessor-3.0.1.tgz", "integrity": "sha512-sErmFSEr5287bLMRl0POGnyFtJCs/lSk5yxrUIJUIHZ8eDvtTEr0V93xRgLjJVG54gJU4MbpHy1mRPA9VZbtQA==", "dev": true, +<<<<<<< HEAD "dependencies": { "@babel/core": "7.4.5", "@babel/plugin-proposal-class-properties": "7.3.0", @@ -26637,6 +26625,8 @@ "resolved": "https://registry.npmjs.org/@cypress/browserify-preprocessor/-/browserify-preprocessor-3.0.1.tgz", "integrity": "sha512-sErmFSEr5287bLMRl0POGnyFtJCs/lSk5yxrUIJUIHZ8eDvtTEr0V93xRgLjJVG54gJU4MbpHy1mRPA9VZbtQA==", "dev": true, +======= +>>>>>>> 7683e91... OCLOMRS-1044:Bug Fix: Pick Concepts from Source and Dictionaries "requires": { "@babel/core": "7.4.5", "@babel/plugin-proposal-class-properties": "7.3.0", @@ -26658,6 +26648,12 @@ "watchify": "3.11.1" }, "dependencies": { + "@babel/compat-data": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "dev": true + }, "@babel/core": { "version": "7.4.5", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.5.tgz", @@ -26680,6 +26676,32 @@ "source-map": "^0.5.0" } }, + "@babel/helper-compilation-targets": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", + "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, "@babel/plugin-proposal-class-properties": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz", @@ -26769,16 +26791,33 @@ }, "dependencies": { "@babel/plugin-proposal-object-rest-spread": { - "version": "7.14.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.4.tgz", - "integrity": "sha512-AYosOWBlyyXEagrPRfLJ1enStufsr7D1+ddpj8OLi9k7B6+NdZ0t/9V7Fh+wJ4g2Jol8z2JkgczYqtWrZd4vbA==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz", + "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==", "dev": true, "requires": { - "@babel/compat-data": "^7.14.4", - "@babel/helper-compilation-targets": "^7.14.4", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.14.2" + "@babel/plugin-transform-parameters": "^7.15.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true + }, + "@babel/plugin-transform-parameters": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz", + "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + } } } } @@ -28146,12 +28185,12 @@ "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==" }, "@reduxjs/toolkit": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.5.1.tgz", - "integrity": "sha512-PngZKuwVZsd+mimnmhiOQzoD0FiMjqVks6ituO1//Ft5UEX5Ca9of13NEjo//pU22Jk7z/mdXVsmDfgsig1osA==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.6.2.tgz", + "integrity": "sha512-HbfI/hOVrAcMGAYsMWxw3UJyIoAS9JTdwddsjlr5w3S50tXhWb+EMyhIw+IAvCVCLETkzdjgH91RjDSYZekVBA==", "requires": { - "immer": "^8.0.1", - "redux": "^4.0.0", + "immer": "^9.0.6", + "redux": "^4.1.0", "redux-thunk": "^2.3.0", "reselect": "^4.0.0" } @@ -29241,6 +29280,16 @@ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -29373,9 +29422,9 @@ "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", @@ -29580,6 +29629,17 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, + "assertion-error-formatter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error-formatter/-/assertion-error-formatter-2.0.1.tgz", + "integrity": "sha512-cjC3jUCh9spkroKue5PDSKH5RFQ/KNuZJhk3GwHYmB/8qqETxLOmMdLH+ohi/VukNzxDlMvIe7zScvLoOdhb6Q==", + "dev": true, + "requires": { + "diff": "^3.0.0", + "pad-right": "^0.2.2", + "repeat-string": "^1.6.1" + } + }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -29660,11 +29720,11 @@ "integrity": "sha512-evY7DN8qSIbsW2H/TWQ1bX3sXN1d4MNb5Vb4n7BzPuCwRHdkZ1H2eNLuSh73EoQqkGKUtju2G2HCcjCfhvZIAA==" }, "axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "requires": { - "follow-redirects": "^1.10.0" + "follow-redirects": "^1.14.0" } }, "axobject-query": { @@ -30655,9 +30715,9 @@ "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", "dev": true, "requires": { + "JSONStream": "^1.0.3", "combine-source-map": "~0.8.0", "defined": "^1.0.0", - "JSONStream": "^1.0.3", "safe-buffer": "^5.1.1", "through2": "^2.0.0", "umd": "^3.0.0" @@ -30691,6 +30751,7 @@ "integrity": "sha512-zQt/Gd1+W+IY+h/xX2NYMW4orQWhqSwyV+xsblycTtpOuB27h1fZhhNQuipJ4t79ohw4P4mMem0jp/ZkISQtjQ==", "dev": true, "requires": { + "JSONStream": "^1.0.3", "assert": "^1.4.0", "browser-pack": "^6.0.1", "browser-resolve": "^1.11.0", @@ -30712,7 +30773,6 @@ "https-browserify": "^1.0.0", "inherits": "~2.0.1", "insert-module-globals": "^7.0.0", - "JSONStream": "^1.0.3", "labeled-stream-splicer": "^2.0.0", "mkdirp": "^0.5.0", "module-deps": "^6.0.0", @@ -32126,6 +32186,74 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz", "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==" }, + "cucumber": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/cucumber/-/cucumber-4.2.1.tgz", + "integrity": "sha512-3gQ0Vv4kSHsvXEFC6b1c+TfLRDzWD1/kU7e5vm8Kh8j35b95k6favan9/4ixcBNqd7UsU1T6FYcawC87+DlNKw==", + "dev": true, + "requires": { + "assertion-error-formatter": "^2.0.1", + "babel-runtime": "^6.11.6", + "bluebird": "^3.4.1", + "cli-table": "^0.3.1", + "colors": "^1.1.2", + "commander": "^2.9.0", + "cucumber-expressions": "^5.0.13", + "cucumber-tag-expressions": "^1.1.1", + "duration": "^0.2.0", + "escape-string-regexp": "^1.0.5", + "figures": "2.0.0", + "gherkin": "^5.0.0", + "glob": "^7.0.0", + "indent-string": "^3.1.0", + "is-generator": "^1.0.2", + "is-stream": "^1.1.0", + "knuth-shuffle-seeded": "^1.0.6", + "lodash": "^4.17.4", + "mz": "^2.4.0", + "progress": "^2.0.0", + "resolve": "^1.3.3", + "serialize-error": "^2.1.0", + "stack-chain": "^2.0.0", + "stacktrace-js": "^2.0.0", + "string-argv": "0.0.2", + "title-case": "^2.1.1", + "util-arity": "^1.0.2", + "verror": "^1.9.0" + }, + "dependencies": { + "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==", + "dev": true + }, + "cucumber-expressions": { + "version": "5.0.18", + "resolved": "https://registry.npmjs.org/cucumber-expressions/-/cucumber-expressions-5.0.18.tgz", + "integrity": "sha1-bHB3nv0668Xp54U5OLERAyJClZY=", + "dev": true, + "requires": { + "becke-ch--regex--s0-0-v1--base--pl--lib": "^1.2.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + } + } + }, "cucumber-expressions": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/cucumber-expressions/-/cucumber-expressions-6.6.2.tgz", @@ -32374,14 +32502,14 @@ } }, "cypress-cucumber-preprocessor": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-4.1.2.tgz", - "integrity": "sha512-9TPpYeF5VGAO99TWzGnEMIwXamhDvvJP+may/CZKbaEeY8w3Bh82FIGgRiE59OnA92oe/BXJwNrduNgPQ1qt5w==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-4.3.0.tgz", + "integrity": "sha512-/jgkC5BN6NrSQSMDaxxDzq9hIbhhtVcQg4u7soW3rJn57vFhIAs1x38N0kYgv7+JZ0UafDdVM7FllUSHhjM9KQ==", "dev": true, "requires": { "@cypress/browserify-preprocessor": "^3.0.1", "chai": "^4.2.0", - "chokidar": "2.1.8", + "chokidar": "3.5.2", "cosmiconfig": "^4.0.0", "cucumber": "^4.2.1", "cucumber-expressions": "^6.0.1", @@ -32395,99 +32523,22 @@ "through": "^2.3.8" }, "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "assertion-error-formatter": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error-formatter/-/assertion-error-formatter-2.0.1.tgz", - "integrity": "sha512-cjC3jUCh9spkroKue5PDSKH5RFQ/KNuZJhk3GwHYmB/8qqETxLOmMdLH+ohi/VukNzxDlMvIe7zScvLoOdhb6Q==", - "dev": true, - "requires": { - "diff": "^3.0.0", - "pad-right": "^0.2.2", - "repeat-string": "^1.6.1" - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "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=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "dev": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.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==", - "dev": true - }, "cosmiconfig": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", @@ -32500,53 +32551,6 @@ "require-from-string": "^2.0.1" } }, - "cucumber": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/cucumber/-/cucumber-4.2.1.tgz", - "integrity": "sha512-3gQ0Vv4kSHsvXEFC6b1c+TfLRDzWD1/kU7e5vm8Kh8j35b95k6favan9/4ixcBNqd7UsU1T6FYcawC87+DlNKw==", - "dev": true, - "requires": { - "assertion-error-formatter": "^2.0.1", - "babel-runtime": "^6.11.6", - "bluebird": "^3.4.1", - "cli-table": "^0.3.1", - "colors": "^1.1.2", - "commander": "^2.9.0", - "cucumber-expressions": "^5.0.13", - "cucumber-tag-expressions": "^1.1.1", - "duration": "^0.2.0", - "escape-string-regexp": "^1.0.5", - "figures": "2.0.0", - "gherkin": "^5.0.0", - "glob": "^7.0.0", - "indent-string": "^3.1.0", - "is-generator": "^1.0.2", - "is-stream": "^1.1.0", - "knuth-shuffle-seeded": "^1.0.6", - "lodash": "^4.17.4", - "mz": "^2.4.0", - "progress": "^2.0.0", - "resolve": "^1.3.3", - "serialize-error": "^2.1.0", - "stack-chain": "^2.0.0", - "stacktrace-js": "^2.0.0", - "string-argv": "0.0.2", - "title-case": "^2.1.1", - "util-arity": "^1.0.2", - "verror": "^1.9.0" - }, - "dependencies": { - "cucumber-expressions": { - "version": "5.0.18", - "resolved": "https://registry.npmjs.org/cucumber-expressions/-/cucumber-expressions-5.0.18.tgz", - "integrity": "sha1-bHB3nv0668Xp54U5OLERAyJClZY=", - "dev": true, - "requires": { - "becke-ch--regex--s0-0-v1--base--pl--lib": "^1.2.0" - } - } - } - }, "debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -32556,144 +32560,6 @@ "ms": "^2.1.1" } }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "gherkin": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/gherkin/-/gherkin-5.1.0.tgz", - "integrity": "sha1-aEu7A63STq9731RPWAM+so+zxtU=", - "dev": true - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "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=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "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" - } - }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -32704,55 +32570,13 @@ "json-parse-better-errors": "^1.0.1" } }, - "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==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "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==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-argv": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", - "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=", - "dev": true - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "picomatch": "^2.2.1" } } } @@ -33077,6 +32901,12 @@ "minimist": "^1.1.1" } }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, "diff-sequences": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", @@ -34684,9 +34514,9 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "fast-safe-stringify": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "dev": true }, "fastq": { @@ -35279,6 +35109,12 @@ "assert-plus": "^1.0.0" } }, + "gherkin": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/gherkin/-/gherkin-5.1.0.tgz", + "integrity": "sha1-aEu7A63STq9731RPWAM+so+zxtU=", + "dev": true + }, "glob": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", @@ -35961,9 +35797,9 @@ "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" }, "immer": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/immer/-/immer-8.0.4.tgz", - "integrity": "sha512-jMfL18P+/6P6epANRvRk6q8t+3gGhqsJ9EuJ25AXE+9bNTYtssvzeYbEd0mXRYWCmmXSIbnlpz6vd6iJlmGGGQ==" + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.6.tgz", + "integrity": "sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ==" }, "import-cwd": { "version": "2.1.0", @@ -36070,11 +35906,11 @@ "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", "dev": true, "requires": { + "JSONStream": "^1.0.3", "acorn-node": "^1.5.2", "combine-source-map": "^0.8.0", "concat-stream": "^1.6.1", "is-buffer": "^1.1.0", - "JSONStream": "^1.0.3", "path-is-absolute": "^1.0.1", "process": "~0.11.0", "through2": "^2.0.0", @@ -38283,16 +38119,6 @@ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -39142,6 +38968,7 @@ "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", "dev": true, "requires": { + "JSONStream": "^1.0.3", "browser-resolve": "^2.0.0", "cached-path-relative": "^1.0.2", "concat-stream": "~1.6.0", @@ -39149,7 +38976,6 @@ "detective": "^5.2.0", "duplexer2": "^0.1.2", "inherits": "^2.0.1", - "JSONStream": "^1.0.3", "parents": "^1.0.0", "readable-stream": "^2.0.2", "resolve": "^1.4.0", @@ -40030,6 +39856,11 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -40188,27 +40019,18 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "dependencies": { "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "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" - } } } }, @@ -41801,8 +41623,15 @@ "react-ga": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/react-ga/-/react-ga-3.3.0.tgz", - "integrity": "sha512-o8RScHj6Lb8cwy3GMrVH6NJvL+y0zpJvKtc0+wmH7Bt23rszJmnqEQxRbyrqUzk9DTJIHoP42bfO5rswC9SWBQ==", - "requires": {} + "integrity": "sha512-o8RScHj6Lb8cwy3GMrVH6NJvL+y0zpJvKtc0+wmH7Bt23rszJmnqEQxRbyrqUzk9DTJIHoP42bfO5rswC9SWBQ==" + }, + "react-infinite-scroll-component": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-infinite-scroll-component/-/react-infinite-scroll-component-6.1.0.tgz", + "integrity": "sha512-SQu5nCqy8DxQWpnUVLx7V7b7LcA37aM7tvoWjTLZp1dk6EJibM5/4EJKzOnl07/BsM1Y40sKLuqjCwwH/xV0TQ==", + "requires": { + "throttle-debounce": "^2.1.0" + } }, "react-input-autosize": { "version": "3.0.0", @@ -42417,9 +42246,9 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, "resolve-url-loader": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.3.tgz", - "integrity": "sha512-WbDSNFiKPPLem1ln+EVTE+bFUBdTTytfQZWbmghroaFNFaAVmGq0Saqw6F/306CwgPXsGwXVxbODE+3xAo/YbA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.4.tgz", + "integrity": "sha512-D3sQ04o0eeQEySLrcz4DsX3saHfsr8/N6tfhblxgZKXxMT2Louargg12oGNfoTRLV09GXhVUe5/qgA5vdgNigg==", "requires": { "adjust-sourcemap-loader": "3.0.0", "camelcase": "5.3.1", @@ -42427,7 +42256,7 @@ "convert-source-map": "1.7.0", "es6-iterator": "2.0.3", "loader-utils": "1.2.3", - "postcss": "7.0.21", + "postcss": "7.0.36", "rework": "1.0.1", "rework-visit": "1.0.0", "source-map": "0.6.1" @@ -42462,9 +42291,9 @@ } }, "postcss": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", - "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -43785,20 +43614,11 @@ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "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==" - } - } + "string-argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", + "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=", + "dev": true }, "string-length": { "version": "4.0.2", @@ -43857,6 +43677,21 @@ "define-properties": "^1.1.3" } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "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==" + } + } + }, "stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -44078,9 +43913,9 @@ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" }, "tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -44282,6 +44117,11 @@ "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==" }, + "throttle-debounce": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.3.0.tgz", + "integrity": "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ==" + }, "throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", @@ -44397,9 +44237,9 @@ } }, "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, "to-arraybuffer": { "version": "1.0.1", @@ -44880,9 +44720,9 @@ } }, "url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -46192,14 +46032,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, - "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" - } - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -46225,6 +46057,14 @@ } } }, + "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": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -46276,9 +46116,9 @@ } }, "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "requires": { "async-limiter": "~1.0.0" } diff --git a/package.json b/package.json index a37f8ef3e..141878dd6 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "react-csv": "^2.0.3", "react-dom": "^17.0.2", "react-ga": "^3.3.0", + "react-infinite-scroll-component": "^6.1.0", "react-redux": "^7.2.2", "react-router-dom": "^5.1.2", "react-scripts": "^4.0.3", @@ -102,7 +103,7 @@ "@types/jest": "^26.0.23", "@types/node": "^12.7.12", "cypress": "^7.5.0", - "cypress-cucumber-preprocessor": "^4.1.2", + "cypress-cucumber-preprocessor": "^4.1.0", "cypress-wait-until": "^1.7.1", "eslint-plugin-cypress": "^2.11.2", "husky": "^6.0.0", diff --git a/src/apps/concepts/components/ConceptSourceSwitcher.tsx b/src/apps/concepts/components/ConceptSourceSwitcher.tsx new file mode 100644 index 000000000..dd07cb473 --- /dev/null +++ b/src/apps/concepts/components/ConceptSourceSwitcher.tsx @@ -0,0 +1,268 @@ +import React, { useEffect, useState } from "react"; +import { Link } from "react-router-dom"; +import { DICTIONARY_VERSION_CONTAINER, SOURCE_CONTAINER } from "../constants"; +import { getContainerIdFromUrl } from "../utils"; +import { + Button, + FormControlLabel, + Grid, + IconButton, + Input, + InputAdornment, + Menu, + MenuItem, + Switch, + Theme +} from "@mui/material"; +import { PREFERRED_SOURCES_VIEW_ONLY, useAnchor } from "../../../utils"; +import { APISource } from "../../sources"; +import { + AccountTreeOutlined, + FolderOpen, + Search as SearchIcon +} from "@mui/icons-material"; +import { APIDictionary } from "../../dictionaries/types"; +import { createStyles, makeStyles } from "@mui/styles"; +import InfiniteScroll from "react-infinite-scroll-component"; +import { partialRight, pick } from "lodash"; +import dictionaryApi from "../../dictionaries/api"; +import sourceApi from "../../sources/api"; + +interface Props { + containerType: string; + containerUrl?: string; + gimmeAUrl: Function; + addConceptToDictionary?: string; + sources: APISource[]; + dictionaries: APIDictionary[]; + showOnlyVerified: boolean; + toggleShowVerified: React.ChangeEventHandler<HTMLInputElement>; + goTo: Function; + initialSearch: string; + pathUrl: Function; + dictionaryMeta?: { + num_found?: number; + page_number?: number; + pages?: number; + num_returned?: number; + }; + sourcesMeta?: { + num_found?: number; + page_number?: number; + pages?: number; + num_returned?: number; + }; +} + +const useStyles = makeStyles((theme: Theme) => + createStyles({ + lightColour: { + color: "white !important" + }, + textField: { + padding: "0.2rem 1rem", + cursor: "none" + }, + sourcesDropdownHeader: { + padding: "0.5rem 1rem" + }, + input: { + cursor: "pointer", + borderBottom: "1px dotted black", + paddingBottom: "0.25rem" + }, + underline: { + "&&&:before": { + borderBottom: "none" + }, + "&&:after": { + borderBottom: "none" + } + }, + sourceIcon: { + marginRight: "0.2rem", + fill: "#8080809c" + }, + searchInput: { + textAlign: "center", + fontSize: "larger" + } + }) +); +const ConceptSourceSwitcher: React.FC<Props> = ({ + containerType, + containerUrl, + gimmeAUrl, + addConceptToDictionary, + sources, + dictionaries, + goTo, + initialSearch, + pathUrl +}) => { + const [queryString, setQueryString] = useState(initialSearch); + const [currentSources, setCurrentSources] = useState< + { name: string; url: string }[] + >(); + const [useSources, setUseSources] = useState(true); + const [currentPage, setCurrentPage] = useState(1); + const [apiMethod, setApiMethod] = useState< + | typeof sourceApi.sources.retrieve.private + | typeof dictionaryApi.dictionaries.retrieve.private + >(sourceApi.sources.retrieve.private); + const [totalResultCount, setTotalResultCount] = useState(0); + const [currentResultCount, setCurrentResultCount] = useState(0); + const [resultsLoadedCount, setResultsLoadedCount] = useState(0); + + useEffect(() => { + const defaultSources = Object.entries( + PREFERRED_SOURCES_VIEW_ONLY + ).map(([key, value]) => ({ name: key, url: value })); + const allSources = defaultSources + .concat(sources.map((s) => ({ name: s.name, url: s.url }))) + .concat(dictionaries.map((d) => ({ name: d.name, url: d.url }))); + setCurrentSources(allSources); + }, [sources, dictionaries, initialSearch]); + + useEffect(() => setCurrentPage(0), [useSources]); + useEffect( + () => + useSources + ? setApiMethod(sourceApi.sources.retrieve.private) + : setApiMethod(dictionaryApi.dictionaries.retrieve.private), + [useSources] + ); + + useEffect(() => { + const url = useSources ? "/sources/" : "/collections/"; + + apiMethod(url, undefined, 25, currentPage).then((results) => { + const sources = results.data.map(partialRight(pick, "name", "url")) as { + name: string; + url: string; + }[]; + + if (currentPage === 1) { + setTotalResultCount(results.headers.num_found); + } + + setCurrentResultCount(results.headers.num_returned); + setResultsLoadedCount( + results.headers.offset + results.headers.num_returned + ); + + const existingSources = currentSources ? currentSources : []; + setCurrentSources([...existingSources, ...sources]); + }); + }, [apiMethod, currentPage, currentSources, useSources]); + + const loadData = () => { + setCurrentPage(currentPage + 1); + }; + + const handleSearch = (q: string) => goTo(pathUrl({ q })); + + const classes = useStyles(); + const isSourceContainer = containerType === SOURCE_CONTAINER; + const isAddToDictionary = isSourceContainer && !!addConceptToDictionary; + const [ + switchSourceAnchor, + handleSwitchSourceClick, + handleSwitchSourceClose + ] = useAnchor(); + + return !isAddToDictionary ? null : ( + <> + <Button + data-testid="switch-source" + className={classes.lightColour} + variant="text" + size="large" + aria-haspopup="true" + onClick={handleSwitchSourceClick} + > + Switch source (Currently {getContainerIdFromUrl(containerUrl)}) + </Button> + <Menu + PaperProps={{ + style: { + marginTop: "30px", + marginLeft: "10px" + } + }} + anchorEl={switchSourceAnchor} + keepMounted + open={!!switchSourceAnchor} + onClose={handleSwitchSourceClose} + > + <Grid + container + direction="column" + className={classes.sourcesDropdownHeader} + > + <FormControlLabel + control={ + <Switch + checked={useSources} + onChange={() => setUseSources(!useSources)} + color="primary" + name="displayVerified" + /> + } + label={useSources ? `Showing all Sources` : `Show all Dictionaries`} + /> + <form + onSubmit={(e: React.SyntheticEvent) => { + e.preventDefault(); + handleSearch(queryString); + }} + > + <Input + color="primary" + type="search" + fullWidth + placeholder={"Select an alternative source"} + value={queryString} + onChange={(e) => setQueryString(e.target.value)} + endAdornment={ + <InputAdornment position="end"> + <IconButton onClick={() => handleSearch(queryString)}> + <SearchIcon /> + </IconButton> + </InputAdornment> + } + /> + </form> + </Grid> + <InfiniteScroll + dataLength={currentResultCount} + next={loadData} + hasMore={resultsLoadedCount < totalResultCount} + loader={<h4>Loading...</h4>} + endMessage={<h4>end</h4>} + scrollableTarget="scrollableDiv" + > + {currentSources?.map(({ name, url }) => ( + <MenuItem + // replace because we want to keep the back button useful + replace + to={gimmeAUrl({}, `${url}concepts/`)} + key={name} + component={Link} + onClick={handleSwitchSourceClose} + > + {url?.includes("/collection") ? ( + <FolderOpen className={classes.sourceIcon} /> + ) : ( + <AccountTreeOutlined className={classes.sourceIcon} /> + )} + {name} + </MenuItem> + ))} + </InfiniteScroll> + </Menu> + </> + ); +}; + +export default ConceptSourceSwitcher; diff --git a/src/apps/concepts/components/ViewConceptsHeader.tsx b/src/apps/concepts/components/ViewConceptsHeader.tsx index 46003bb34..8558085b6 100644 --- a/src/apps/concepts/components/ViewConceptsHeader.tsx +++ b/src/apps/concepts/components/ViewConceptsHeader.tsx @@ -7,12 +7,31 @@ import { SOURCE_CONTAINER } from "../constants"; import { getContainerIdFromUrl } from "../utils"; -import { Button, Menu, MenuItem, TextField, Theme } from "@mui/material"; +import { + Button, + FormControlLabel, + Grid, + IconButton, + Input, + InputAdornment, + Menu, + MenuItem, + Switch, + Theme +} from "@mui/material"; import { PREFERRED_SOURCES_VIEW_ONLY, useAnchor } from "../../../utils"; import { APISource } from "../../sources"; -import { AccountTreeOutlined, FolderOpen } from "@mui/icons-material"; +import { + AccountTreeOutlined, + FolderOpen, + Search as SearchIcon +} from "@mui/icons-material"; import { APIDictionary } from "../../dictionaries/types"; import { createStyles, makeStyles } from "@mui/styles"; +import InfiniteScroll from "react-infinite-scroll-component"; +import { partialRight, pick } from "lodash"; +import dictionaryApi from "../../dictionaries/api"; +import sourceApi from "../../sources/api"; interface Props { containerType: string; @@ -22,6 +41,23 @@ interface Props { children?: React.ReactNode[]; sources: APISource[]; dictionaries: APIDictionary[]; + showOnlyVerified: boolean; + toggleShowVerified: React.ChangeEventHandler<HTMLInputElement>; + goTo: Function; + initialSearch: string; + pathUrl: Function; + dictionaryMeta?: { + num_found?: number; + page_number?: number; + pages?: number; + num_returned?: number; + }; + sourcesMeta?: { + num_found?: number; + page_number?: number; + pages?: number; + num_returned?: number; + }; } const useStyles = makeStyles((theme: Theme) => @@ -33,6 +69,9 @@ const useStyles = makeStyles((theme: Theme) => padding: "0.2rem 1rem", cursor: "none" }, + sourcesDropdownHeader: { + padding: "0.5rem 1rem" + }, input: { cursor: "pointer", borderBottom: "1px dotted black", @@ -48,12 +87,14 @@ const useStyles = makeStyles((theme: Theme) => }, sourceIcon: { marginRight: "0.2rem", - fill: "#8080809c", - color:"#000000ad" + fill: "#8080809c" + }, + searchInput: { + textAlign: "center", + fontSize: "larger" } }) ); - const ViewConceptsHeader: React.FC<Props> = ({ containerType, containerUrl, @@ -61,24 +102,82 @@ const ViewConceptsHeader: React.FC<Props> = ({ addConceptToDictionary, children, sources, - dictionaries + dictionaries, + goTo, + initialSearch, + pathUrl }) => { - const [showSources, setShowSources] = useState(false); - const [preferredSources, setPreferredSources] = useState< + const [showAllSources, setShowAllSources] = useState(false); + const [queryString, setQueryString] = useState(initialSearch); + const [currentSources, setCurrentSources] = useState< { name: string; url: string }[] >(); + const [useSources, setUseSources] = useState(true); + const [currentPage, setCurrentPage] = useState(1); + const [apiMethod, setApiMethod] = useState< + | typeof sourceApi.sources.retrieve.private + | typeof dictionaryApi.dictionaries.retrieve.private + >(sourceApi.sources.retrieve.private); + const [totalResultCount, setTotalResultCount] = useState(0); + const [currentResultCount, setCurrentResultCount] = useState(0); + const [resultsLoadedCount, setResultsLoadedCount] = useState(0); + useEffect(() => { const defaultSources = Object.entries( PREFERRED_SOURCES_VIEW_ONLY ).map(([key, value]) => ({ name: key, url: value })); - if (showSources) { + if (showAllSources) { const allSources = defaultSources - .concat(sources.map(s => ({ name: s.name, url: s.url }))) - .concat(dictionaries.map(d => ({ name: d.name, url: d.url }))); - setPreferredSources(allSources); - } else setPreferredSources(defaultSources); - }, [showSources, sources, dictionaries]); + .concat(sources.map((s) => ({ name: s.name, url: s.url }))) + .concat(dictionaries.map((d) => ({ name: d.name, url: d.url }))); + setCurrentSources(allSources); + } else setCurrentSources(defaultSources); + }, [showAllSources, sources, dictionaries, initialSearch]); + + useEffect(() => setCurrentPage(0), [useSources]); + useEffect( + () => + useSources + ? setApiMethod(sourceApi.sources.retrieve.private) + : setApiMethod(dictionaryApi.dictionaries.retrieve.private), + [useSources] + ); + + const fetchMoreData = (page: number) => { + setCurrentPage(page); + apiMethod( + useSources ? "/sources/" : "/collections/", + "", + 25, + currentPage + ).then((results) => { + const sources = results.data.map(partialRight(pick, "name", "url")) as { + name: string; + url: string; + }[]; + if (currentPage === 1) { + setTotalResultCount(results.headers.num_found); + } + + setCurrentResultCount(results.headers.num_returned); + setResultsLoadedCount( + results.headers.offset + results.headers.num_returned + ); + + const existingSources = currentSources ? currentSources : []; + setCurrentSources([...existingSources, ...sources]); + }); + }; + + const loadData = () => { + fetchMoreData(currentPage + 1); + }; + + const handleSearch = (q: string) => goTo(pathUrl({ q })); + const handleShowSources = (event: React.ChangeEvent<HTMLInputElement>) => { + setShowAllSources(event.target.checked); + }; const classes = useStyles(); const isSourceContainer = containerType === SOURCE_CONTAINER; const isAddToDictionary = isSourceContainer && !!addConceptToDictionary; @@ -87,7 +186,6 @@ const ViewConceptsHeader: React.FC<Props> = ({ handleSwitchSourceClick, handleSwitchSourceClose ] = useAnchor(); - const getTitleBasedOnContainerType = () => { return isAddToDictionary ? `Import existing concept from ${getContainerIdFromUrl(containerUrl)}` @@ -118,48 +216,103 @@ const ViewConceptsHeader: React.FC<Props> = ({ }} anchorEl={switchSourceAnchor} keepMounted - open={Boolean(switchSourceAnchor)} + open={!!switchSourceAnchor} onClose={handleSwitchSourceClose} > - <TextField - multiline - className={classes.textField} - InputProps={{ - className: classes.underline - }} - inputProps={{ - className: classes.input - }} - value={ - showSources - ? "Choose a source/dictionary" - : "Select a different source/dictionary" - } - onClick={() => setShowSources(!showSources)} - /> - {preferredSources?.map(({ name, url }) => ( - <MenuItem - // replace because we want to keep the back button useful - replace - to={gimmeAUrl({}, `${url}concepts/`)} - key={name} - component={Link} - onClick={handleSwitchSourceClose} - data-testid={name} + <Grid + container + direction="column" + className={classes.sourcesDropdownHeader} + > + <FormControlLabel + control={ + <Switch + checked={showAllSources} + onChange={handleShowSources} + color="primary" + name="displayVerified" + /> + } + label={ + showAllSources ? `Showing all Sources` : `Show all Sources` + } + /> + {showAllSources && ( + <form + onSubmit={(e: React.SyntheticEvent) => { + e.preventDefault(); + handleSearch(queryString); + }} + > + <Input + color="primary" + type="search" + fullWidth + placeholder={"Select an alternative source"} + value={queryString} + onChange={(e) => setQueryString(e.target.value)} + endAdornment={ + <InputAdornment position="end"> + <IconButton onClick={() => handleSearch(queryString)}> + <SearchIcon /> + </IconButton> + </InputAdornment> + } + /> + </form> + )} + </Grid> + {showAllSources ? ( + <InfiniteScroll + dataLength={currentResultCount} + next={loadData} + hasMore={resultsLoadedCount < totalResultCount} + loader={<h4>Loading...</h4>} + endMessage={<h4>end</h4>} + scrollableTarget="scrollableDiv" > - {url?.includes("/collection") ? ( - <FolderOpen className={classes.sourceIcon} /> - ) : ( - <AccountTreeOutlined className={classes.sourceIcon} /> - )} - {name} - </MenuItem> - ))} + {currentSources?.map(({ name, url }) => ( + <MenuItem + // replace because we want to keep the back button useful + replace + to={gimmeAUrl({}, `${url}concepts/`)} + key={name} + component={Link} + onClick={handleSwitchSourceClose} + > + {url?.includes("/collection") ? ( + <FolderOpen className={classes.sourceIcon} /> + ) : ( + <AccountTreeOutlined className={classes.sourceIcon} /> + )} + {name} + </MenuItem> + ))} + </InfiniteScroll> + ) : ( + currentSources?.map(({ name, url }) => ( + <MenuItem + // replace because we want to keep the back button useful + replace + to={gimmeAUrl({}, `${url}concepts/`)} + key={name} + component={Link} + onClick={handleSwitchSourceClose} + data-testid={name} + > + {url?.includes("/collection") ? ( + <FolderOpen className={classes.sourceIcon} /> + ) : ( + <AccountTreeOutlined className={classes.sourceIcon} /> + )} + {name} + </MenuItem> + )) + )} </Menu> </> ); }; - return ( <Header title={getTitleBasedOnContainerType()} @@ -177,5 +330,4 @@ const ViewConceptsHeader: React.FC<Props> = ({ </Header> ); }; - export default ViewConceptsHeader; diff --git a/src/apps/concepts/pages/ViewConceptsPage.tsx b/src/apps/concepts/pages/ViewConceptsPage.tsx index 521c5d38a..c27db7345 100644 --- a/src/apps/concepts/pages/ViewConceptsPage.tsx +++ b/src/apps/concepts/pages/ViewConceptsPage.tsx @@ -61,6 +61,18 @@ export interface StateProps { loading: boolean; errors?: {}; meta?: { num_found?: number }; + dictionaryMeta?: { + num_found?: number; + page_number?: number; + pages?: number; + num_returned?: number; + }; + sourcesMeta?: { + num_found?: number; + page_number?: number; + pages?: number; + num_returned?: number; + }; profile?: APIProfile; usersOrgs?: APIOrg[]; } @@ -129,6 +141,8 @@ const ViewConceptsPage: React.FC<Props> = ({ retrievePublicDictionaries, retrieveSource, meta = {}, + dictionaryMeta = {}, + sourcesMeta = {}, profile, usersOrgs, containerType, @@ -174,6 +188,9 @@ const ViewConceptsPage: React.FC<Props> = ({ addToDictionary: dictionaryToAddTo } = queryParams; + const headerQueryParams: { q?: string } = useQueryParams(); + const { q: initialSearch = "" } = queryParams; + const sourceUrl = "/sources/"; const collectionsUrl = "/collections/"; const sourcesLimit = 0; @@ -222,6 +239,7 @@ const ViewConceptsPage: React.FC<Props> = ({ const isImporting = dictionaryToAddTo !== undefined; const [q, setQ] = useState(initialQ); + const [showOnlyVerified, setShowOnlyVerified] = useState(false); const gimmeAUrl = (params: QueryParams = {}, conceptsUrl: string = url) => { const newParams: QueryParams = { @@ -239,6 +257,14 @@ const ViewConceptsPage: React.FC<Props> = ({ return `${conceptsUrl}?${qs.stringify(newParams)}`; }; + const pathUrl = (params: { q?: string }) => { + const newParams: { q?: string } = { + ...headerQueryParams, + ...params + }; + return `${url}?${qs.stringify(newParams)}`; + }; + useEffect(() => { if (containerUrl) { // we don't make this reactive(only depend on the initial values), because the requirement @@ -307,6 +333,13 @@ const ViewConceptsPage: React.FC<Props> = ({ addConceptToDictionary={dictionaryToAddTo} sources={sources} dictionaries={dictionaries} + showOnlyVerified={showOnlyVerified} + toggleShowVerified={(e) => setShowOnlyVerified(e.target.checked)} + goTo={goTo} + initialSearch={initialSearch} + pathUrl={pathUrl} + dictionaryMeta={dictionaryMeta} + sourcesMeta={sourcesMeta} > <Grid container @@ -390,7 +423,7 @@ const ViewConceptsPage: React.FC<Props> = ({ [ getContainerIdFromUrl(linkedSource), ...FILTER_SOURCE_IDS - ].filter(source => source !== undefined) as string[] + ].filter((source) => source !== undefined) as string[] } url={gimmeAUrl()} /> @@ -414,8 +447,8 @@ const ViewConceptsPage: React.FC<Props> = ({ const mapStateToProps = (state: AppState) => { const dictionary = dictionarySelector(state); const concepts = state.concepts.concepts.items || []; - const dictionaryConcepts = dictionary?.references?.map(r => r.expression); - const modifiedConcepts = concepts?.map(c => + const dictionaryConcepts = dictionary?.references?.map((r) => r.expression); + const modifiedConcepts = concepts?.map((c) => includes(dictionaryConcepts, c.version_url) ? { ...c, added: true } : { ...c } @@ -435,6 +468,15 @@ const mapStateToProps = (state: AppState) => { meta: state.concepts.concepts ? state.concepts.concepts.responseMeta : undefined, + dictionaryMeta: state.dictionaries.dictionaries[ + PUBLIC_DICTIONARIES_ACTION_INDEX + ] + ? state.dictionaries.dictionaries[PUBLIC_DICTIONARIES_ACTION_INDEX] + .responseMeta + : undefined, + sourcesMeta: state.sources.sources[PUBLIC_SOURCES_ACTION_INDEX] + ? state.sources.sources[PUBLIC_SOURCES_ACTION_INDEX].responseMeta + : undefined, loading: viewConceptsLoadingSelector(state) || retrieveDictionaryLoadingSelector(state) || diff --git a/src/apps/dictionaries/api.ts b/src/apps/dictionaries/api.ts index 471f49172..02c975859 100644 --- a/src/apps/dictionaries/api.ts +++ b/src/apps/dictionaries/api.ts @@ -11,6 +11,10 @@ import { default as containerAPI } from "../containers/api"; const api = { ...containerAPI, + dictionariesCount: { + retrieveCount: (dictionaryUrl: string) => + authenticatedInstance.head(`${dictionaryUrl}dictionaries`), + }, create: (ownerUrl: string, data: NewAPIDictionary) => authenticatedInstance.post(`${ownerUrl}collections/`, data), update: (dictionaryUrl: string, data: EditableDictionaryFields) => diff --git a/src/apps/dictionaries/logic.ts b/src/apps/dictionaries/logic.ts index bb4503efa..dcfb559e3 100644 --- a/src/apps/dictionaries/logic.ts +++ b/src/apps/dictionaries/logic.ts @@ -1,6 +1,7 @@ import api from "./api"; import { APIMapping, InternalAPIMapping } from "../concepts"; import { union } from "lodash"; +import { AxiosResponse } from "axios"; const fetchConceptMappings = async ( sourceUrl: string, @@ -73,4 +74,13 @@ const recursivelyFetchToConcepts = async ( return getConceptUrls(mappingsLists); }; -export { recursivelyFetchToConcepts }; +const retrieveDictionariesCount = async ( + dictionaryUrl: string, +): Promise<AxiosResponse<any>> => { + const totalCount = api.dictionariesCount.retrieveCount(dictionaryUrl) + const response = await totalCount + console.log(response) + return response + +} +export { recursivelyFetchToConcepts, retrieveDictionariesCount }; \ No newline at end of file diff --git a/src/apps/dictionaries/redux/actionTypes.ts b/src/apps/dictionaries/redux/actionTypes.ts index fe3e86a56..3d6bfbd74 100644 --- a/src/apps/dictionaries/redux/actionTypes.ts +++ b/src/apps/dictionaries/redux/actionTypes.ts @@ -3,6 +3,7 @@ export const CREATE_SOURCE_AND_DICTIONARY_ACTION = "dictionaries/createSourceAndDictionary"; export const RETRIEVE_DICTIONARY_ACTION = "dictionaries/retrieveDictionary"; export const RETRIEVE_DICTIONARIES_ACTION = "dictionaries/retrieveDictionaries"; +export const RETRIEVE_DICTIONARIES_COUNT_ACTION = "dictionaries/retrieveDictionaries"; export const EDIT_SOURCE_AND_DICTIONARY_ACTION = "dictionaries/editSourceAndDictionary"; export const CREATE_AND_ADD_LINKED_SOURCE_ACTION = diff --git a/src/apps/dictionaries/redux/actions.ts b/src/apps/dictionaries/redux/actions.ts index 2e43ac4d0..623849614 100644 --- a/src/apps/dictionaries/redux/actions.ts +++ b/src/apps/dictionaries/redux/actions.ts @@ -197,7 +197,7 @@ export const retrieveDictionaryAndDetailsAction = (dictionaryUrl: string) => { export const retrievePublicDictionariesAction = createActionThunk( RETRIEVE_DICTIONARIES_ACTION, api.dictionaries.retrieve.public -); +) export const retrievePersonalDictionariesAction = createActionThunk( indexedAction( RETRIEVE_DICTIONARIES_ACTION, @@ -381,7 +381,7 @@ export const recursivelyAddConceptsToDictionaryAction = ( } if (!concept.hasOwnProperty("source_url") || !!!concept.source_url) { - concept.source_url = concept.url.split("/", 5).join("/") + "/"; + return {...concept, source_url: concept.url.split("/", 5).join("/") + "/"}; } return concept; diff --git a/src/apps/dictionaries/redux/reducer.ts b/src/apps/dictionaries/redux/reducer.ts index bc2327832..a4c6f49bf 100644 --- a/src/apps/dictionaries/redux/reducer.ts +++ b/src/apps/dictionaries/redux/reducer.ts @@ -12,15 +12,14 @@ import { RETRIEVE_DICTIONARIES_ACTION, RETRIEVE_DICTIONARY_ACTION, RETRIEVE_DICTIONARY_VERSIONS_ACTION, - TOGGLE_SHOW_VERIFIED_ACTION -} from "./actionTypes"; + TOGGLE_SHOW_VERIFIED_ACTION} from "./actionTypes"; import { LOGOUT_ACTION } from "../../authentication/redux/actionTypes"; const initialState: DictionaryState = { dictionaries: [], versions: [], addReferencesResults: [], - showOnlyVerified: false + showOnlyVerified: false, }; export const reducer = createReducer(initialState, { [TOGGLE_SHOW_VERIFIED_ACTION]: (state, action) => ({