diff --git a/.gitignore b/.gitignore index 2a5910af1..7c2eb6861 100644 --- a/.gitignore +++ b/.gitignore @@ -10,5 +10,14 @@ build # Generated Styles for AreaPlugin core/src/plugins/areaPlugin/style.css.d.ts +yarn-error.log +server/google_credentials.json +server/files/ + +# Ignore lockfiles +yarn.lock +package-lock.json .idea -server/.env \ No newline at end of file + +.env.local +.env.*.local \ No newline at end of file diff --git a/.npmrc b/.npmrc index 8f34f30da..ab47afe5e 100644 --- a/.npmrc +++ b/.npmrc @@ -1,4 +1,2 @@ -# Add Github npm package registry, so we can install private npm packages -@latitudegames:registry=https://npm.pkg.github.com/ -//npm.pkg.github.com/:_authToken=${NPM_TOKEN} - +legacy-peer-deps=true +shamefully-hoist=true \ No newline at end of file diff --git a/.nvmrc b/.nvmrc index 5595ae1aa..357607e88 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -14.17.6 +16.6.2 diff --git a/.vscode/launch.json b/.vscode/launch.json index c55e938d5..8f3978a1d 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -14,8 +14,8 @@ "trace": true, "sourceMapPathOverrides": { "webpack://thothCore/./*": "${workspaceFolder}/core/*", - "webpack://@thoth/client/./*": "${workspaceFolder}/client/*", - "webpack://@thoth/client/thothCore/*": "${workspaceFolder}/core/*" + "webpack://@latitudegames/thoth-client/./*": "${workspaceFolder}/client/*", + "webpack://@latitudegames/thoth-client/thothCore/*": "${workspaceFolder}/core/*" } } ] diff --git a/.vscode/settings.json b/.vscode/settings.json index cf15556f4..2f3b760bc 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,7 +2,7 @@ "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", "prettier.configPath": "./.prettierrc.json", - "eslint.workingDirectories": ["./client", "./core"], + "eslint.workingDirectories": ["./client", "./core", "./server"], "typescript.tsserver.experimental.enableProjectDiagnostics": true, "cSpell.enabled": false } diff --git a/LICENSE b/LICENSE index 7a4a3ea24..06ce74565 100644 --- a/LICENSE +++ b/LICENSE @@ -1,182 +1,193 @@ +Copyright (c) 2022 Latitude, Inc. +All rights reserved. +https://www.latitude.io + +Licensed under the Apache License version 2.0 (the "License"); +You may not use this software except in compliance with the License. +You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" @@ -187,16 +198,16 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] +Copyright [yyyy] [name of copyright owner] - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/NOTICE.txt b/NOTICE.txt deleted file mode 100644 index 11b6ca683..000000000 --- a/NOTICE.txt +++ /dev/null @@ -1,6 +0,0 @@ -Voyage Thoth -Copyright 2021 Latitude, Inc. - -This product includes software developed at Latitude, Inc. (https://www.latitude.io). - -Licensed under Apache License 2.0 \ No newline at end of file diff --git a/README.md b/README.md index c717b27dc..24690681c 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,46 @@ Thoth is a multishot system builder. It leverages a visual coding style interface to allows game designers and developers to rapidly create powerful natural language systems and prototype games. +## Quickstart + +You will need **yarn or npm** and **Docker** installed, along with **Node.js 16 or higher**. We use Docker to run a local Postgres database. You can skip the docker and install postgres directly, but you are almost always better off just using Docker. +For **Linux** and **MAC** users, **sleep** and **concurently** commands must be installed in the machine. + +First, clone and set up Thoth + +``` +git clone https://github.com/TheNexusCity/thoth +``` + +Next, install dependencies + +``` +yarn install +OR +npm i +``` + +You will need to make a few environment variable modifications +To keep values privates, create a new file for each .env, called .env.local (these files are safe from the .gitignore) + +In order to run the client and server use +``` +yarn run dev + +If on Windows run: +yarn run dev:windows +``` + +### Local Development + +We use dotenv-flow for local environment variable management + +Go to client folder, and create a new file called .env.local -- copy and .env vars you want to set from .env there +If you are developing independently and are not a member of Latitude Games team, set **REACT_APP_USE_LATITUDE=false** + +Go to server folder, and create a new file called .env.local -- copy and .env vars you want to set from .env there +If you are developing independently and are not a member of Latitude Games team, set **USE_LATITUDE=false** + ## Client Setup 1. Generate a [Personal Access Token](https://github.com/settings/tokens) on Github which will allow you to install private latitude packages. Make sure you check the `write:packages` option. (`read:packages` will suffice as well if you aren't planning on publishing new versions of @latitudegames/thoth-core) @@ -9,11 +49,11 @@ Thoth is a multishot system builder. It leverages a visual coding style interfac 1. Clone the repository 1. Navigate to the project root by running `cd thoth` 1. Run `yarn install` to install project dependencies -1. Run `yarn start` to start the @thoth/client app +1. Run `yarn start` to start the @latitudegames/thoth-client app ## Core Local Setup -1. Core the contents of `core/.env.example` to `core/.env` +1. Core the contents of `core/.env.default` to `core/.env` and modify the secrets as necessary 1. Step 2 in Monorepo Development Setup ## Monorepo Development @@ -47,14 +87,19 @@ for the next prerelease. In the project directory, you can run: +### `yarn run dev` + +Runs both server and client.\ +Open [https://localhost:3001](https://localhost:3001) to view it in the browser. + ### `yarn start` -Runs @thoth/client in the development mode.\ -Open [http://localhost:3001](http://localhost:3001) to view it in the browser. +Runs @latitudegames/thoth-client in the development mode.\ +Open [https://localhost:3001](https://localhost:3001) to view it in the browser. ### `yarn build` -Builds the @thoth/client app for production to the `client/build` folder. +Builds the @latitudegames/thoth-client app for production to the `client/build` folder. ### `yarn build:core` diff --git a/client/.env b/client/.env index a17d2ddf5..db8314c27 100644 --- a/client/.env +++ b/client/.env @@ -1,16 +1,36 @@ -EXTEND_ESLINT = true +# Leave this true if you are developing against the Latitude API +# Set this to false if you are developing against the included server +REACT_APP_USE_LATITUDE=false # This prod site root assumes the netlify build context $URL is available, replace for other hosts REACT_APP_SITE_ROOT_URL_PROD=https://thoth.latitude.io -REACT_APP_SITE_ROOT_URL=http://localhost:3001 -REACT_APP_LAPI_ROOT_URL=http://localhost:8000 +# This prod site root assumes the netlify build context $URL is available, replace for other hosts +REACT_APP_SITE_ROOT_URL_PROD=$URL +REACT_APP_SITE_ROOT_URL=https://localhost:8001 +# Latitude API URL (if using) +REACT_APP_LAPI_ROOT_URL=https://localhost:8001 REACT_APP_LAPI_ROOT_URL_PROD=https://api.latitude.io + +# Thoth API URL +REACT_APP_API_ROOT_URL=https://localhost:8001 +REACT_APP_API_ROOT_URL_PROD=https://localhost:8001 + +REACT_APP_CORS_URL=https://localhost:8002 + REACT_APP_SITE_STAGING=https://62264f21c3a9860ad1e5bdd3--optimistic-turing-def916.netlify.app/ # Oauth Client Id +REACT_APP_OAUTH_CLIENT_ID=a6b51c87-7565-42ab-a4b0-38a07f3b6c56 + +EXTEND_ESLINT=true + +REACT_APP_SPEECH_SERVER_URL=https://localhost:65532 +REACT_APP_SEARCH_SERVER_URL=https://localhost:65531 + +REACT_APP_API_URL=https://localhost:8001 REACT_APP_OAUTH_CLIENT_ID=a6b51c87-7565-42ab-a4b0-38a07f3b6c56 diff --git a/client/.env.example b/client/.env.example deleted file mode 100644 index d1294695d..000000000 --- a/client/.env.example +++ /dev/null @@ -1,11 +0,0 @@ -EXTEND_ESLINT = true - -# This prod site root assumes the netlify build context $URL is available, replace for other hosts -REACT_APP_SITE_ROOT_URL_PROD=$URL -REACT_APP_SITE_ROOT_URL=http://localhost:3001 -REACT_APP_LAPI_ROOT_URL=http://localhost:8000 -REACT_APP_LAPI_ROOT_URL_PROD=https://api.latitude.io -REACT_APP_SITE_STAGING=https://62264f21c3a9860ad1e5bdd3--optimistic-turing-def916.netlify.app/ - -# Oauth Client Id -REACT_APP_OAUTH_CLIENT_ID=a6b51c87-7565-42ab-a4b0-38a07f3b6c56 \ No newline at end of file diff --git a/client/.gitignore b/client/.gitignore index a4a2ded88..f624e91b8 100644 --- a/client/.gitignore +++ b/client/.gitignore @@ -2,4 +2,5 @@ node_modules build .DS_Store dist -LICENSE \ No newline at end of file +.env.local +.env.*.local diff --git a/client/README.md b/client/README.md index 4a03076fb..09407a5e5 100644 --- a/client/README.md +++ b/client/README.md @@ -15,7 +15,7 @@ In the project directory, you can run: ### `yarn start` Runs the app in the development mode.\ -Open [http://localhost:3001](http://localhost:3001) to view it in the browser. +Open [https://localhost:3001](https://localhost:3001) to view it in the browser. The page will reload if you make edits.\ You will also see any lint errors in the console. diff --git a/client/certs/cert.pem b/client/certs/cert.pem new file mode 100755 index 000000000..018b342da --- /dev/null +++ b/client/certs/cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDizCCAnOgAwIBAgIULwTo5maP4GdL/ji1pPspiwQ4KjswDQYJKoZIhvcNAQEL +BQAwUzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRQwEgYDVQQHDAtMb3MgQW5n +ZWxlczEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMB4XDTIwMDcy +OTEwMDE0M1oXDTIyMTEwMTEwMDE0M1owUzELMAkGA1UEBhMCVVMxCzAJBgNVBAgM +AkNBMRQwEgYDVQQHDAtMb3MgQW5nZWxlczEhMB8GA1UECgwYSW50ZXJuZXQgV2lk +Z2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuo9C +zT4SGB7D/c74HbR0kX5L/zwVGxDEBrXjyQrTW1D2KnQLBKW9C737dtBPY7knivd5 +zM5LGejE1ko9+uYz4c9w6UBshooQXx4C0t811//mUrbBj/pmRm2+YsrVE0oNs2zC +8cJCM4Hq+MnuXhp+B8MxFhjFJIZ6yb8nn3w2Lf4Z+DrErl8kVd8eyxAksaC3kjAr +V6MCadn6Ln/Fbwdx2en8RPMsqVv2oT3vhANvFLq48tbC1HxGJ0EOyAO2aC3pcUxV +lb8tQG7D4orSjvSW1HErb/HjoScqipGvB52rH/j5fsxEpGgyjiqGVlpZYDSA/s8F +/CWzfgKkjWIOXdUf9wIDAQABo1cwVTAfBgNVHSMEGDAWgBTPYFhcx9rw/BF+DRm0 +OS1BusbdrDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE8DAaBgNVHREEEzARgglsb2Nh +bGhvc3SHBH8AAAEwDQYJKoZIhvcNAQELBQADggEBALbcEhBd3KAgD22zG7bhKowh +krjAji11IhznalWK/30cHRMxT936uu/IMZ2WokKHlSy5XFmZQpGfc5vBEKKlAqmW +3SidSc6h1RULEjciznbh06sVV1lMjqtEObv+kjpAlImeRnx2zybOuCKlL9UDtTsG +ojGO0u8Aevx5vK5VCUZkYn+d5KhBqFKgoMSy8V+3HWvUBr/k0xWX55B3V31r+iD2 +tCOBzfMuA1+Mux8H9O+f746vf/PPVIjwlFGHxlZVGiWe63PGUnmq4d9gjOdQEWeZ +MjhGBegZcIc29tMIULmesXG9TZN0dDUguVB97ghuezNgiGq33rZl+e8K2MfPvA4= +-----END CERTIFICATE----- diff --git a/client/certs/key.pem b/client/certs/key.pem new file mode 100755 index 000000000..d33ace9cf --- /dev/null +++ b/client/certs/key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAuo9CzT4SGB7D/c74HbR0kX5L/zwVGxDEBrXjyQrTW1D2KnQL +BKW9C737dtBPY7knivd5zM5LGejE1ko9+uYz4c9w6UBshooQXx4C0t811//mUrbB +j/pmRm2+YsrVE0oNs2zC8cJCM4Hq+MnuXhp+B8MxFhjFJIZ6yb8nn3w2Lf4Z+DrE +rl8kVd8eyxAksaC3kjArV6MCadn6Ln/Fbwdx2en8RPMsqVv2oT3vhANvFLq48tbC +1HxGJ0EOyAO2aC3pcUxVlb8tQG7D4orSjvSW1HErb/HjoScqipGvB52rH/j5fsxE +pGgyjiqGVlpZYDSA/s8F/CWzfgKkjWIOXdUf9wIDAQABAoIBAEIIhU+aYdMxyJOk +14PEJOJ+vq2X+ax70bbCWN8HOup+jLNYIbJCa9ilJUXX09HrboissesBNen0zv8+ +hhOxubl6sG+PQxqX8dWJDNzQ7wEGbeLnFzo8GklhfNsBCkxqkNDqdVIXPVF38dCf +wQSEAgoDV/OHTvhvtTSFuaOk1pSOWlsg5av6hH+czCjmN9kZWXHQ7a1bXMfCOzce +WrsVDIIFpJZyLLd1PkMBkS/kXfcK04VDISirVpLrDJMaY3VCXzxQY/FzjxcwxAPc +tXy4lW720oAWhR76oCFPqW+e86S0cL6//5jr/8e3dsFbYnax8jqZZU3ZExdSXnfS +JfGVOBECgYEA6ainNVp7a2cbZyGspEaDRX+38qgFJy5KjGyD94bMYRtW7OefcLYD +fuIfbr6Y4Xa8qHq7aIJancf7GT0qM1PjeEQ7qhI1b4HsEgFz6pjL2RwuzsQ5KGlQ +3JNGUAz27MRnzidkUo/50KYMq5m0NXNSd8/Re5GHlPYvLt5IMY28iRkCgYEAzGW+ +qEUtNItiBN9LgFZxTS1h0CaVUviPplXCWmDgsmXMyDnh4s0P/KvdBlsUQQMsBc64 +dJPVc7pg/d9wuEmKel9WevUi28O+PgoXRwf7OjAP7w1VgVF3Hl5qj7BBBc7WEpMi +nTySv8JcLhfWUGYvZgAlqEQTec3gfAFmaQQbQ48CgYBer+fCqT4mkgv6yRyrHaAI +w+8JOKmN7SZsrXT1E/0yxN9+9YYZKMlV29CdEkPl6jYdmE7l1R1fnzDUU4MMdcxS +amQ7UVGyNFY0Hb6ZrP2+p7sYM1BuXe9U06HEwtw1qonecvwmsQ2tTf0IdSsgFfGv +d9oOVzU4WmNYfN+IpUVn0QKBgQDJcnGhCGTQR5s4cBbKiueqB9NCQfSjzKRPbHBb +gOWUDa7xm9KcJDzga0YwMG3a0VR++Mlk5BrYr1VOgPxoNNrNVs816goMDHSgUnO0 +pxIcvCfIFB00keTTwnxF15GONtdXgTn5PCzp35XYO9gWb0/BuN1kZIvJXXYk4YBc +ehag0wKBgD+jpySpsAHcxFHloLrfgBr7FpebJh31VijL3qjCqHyeO9m7qsta+hpu +NgWOiNXgpqzHEZm9/j4DjcI7y6l0kOUi1UcYGBk0dngAjUrcxVbaILb7qfNx0BPX +Y9ARanhm32LcIIquiI3DuRDbevJ9PDYZNU6KEia+0ffWvHiCk5kL +-----END RSA PRIVATE KEY----- diff --git a/client/package.json b/client/package.json index f85e683a7..f175a922f 100644 --- a/client/package.json +++ b/client/package.json @@ -1,5 +1,5 @@ { - "name": "@thoth/client", + "name": "@latitudegames/thoth-client", "version": "0.1.0", "license": "Apache-2.0", "author": "Michael Sharpe (https://www.project89.org)", @@ -19,17 +19,30 @@ "test": "echo test", "install:canary": "yarn add @latitudegames/thoth-core@canary" }, + "resolutions": { + "@types/react": "18.0.0" + }, "dependencies": { "@callstack/async-storage": "^2.0.3", + "@material-ui/core": "^4.12.1", + "@material-ui/icons": "^4.11.2", "@emotion/react": "^11.8.2", "@emotion/styled": "^11.8.1", - "@latitudegames/thoth-core": "^0.0.66", + "@latitudegames/thoth-core": "^0.0.67", "@monaco-editor/react": "^4.2.1", "@mui/icons-material": "^5.5.1", "@mui/material": "^5.5.3", "@mui/styles": "^5.5.3", "@rebass/forms": "^4.0.6", "@reduxjs/toolkit": "^1.6.2", + "@types/deep-equal": "^1.0.1", + "@types/jest": "^26.0.24", + "@types/node": "^16.4.3", + "@types/react": "^18.0.0", + "@types/react-dom": "^18.0.0", + "@types/react-redux": "^7.1.18", + "axios": "^0.21.4", + "better-react-spinkit": "^2.0.4", "add": "^2.0.6", "classnames": "^2.3.1", "deep-equal": "^2.0.5", @@ -42,18 +55,22 @@ "prism-themes": "^1.7.0", "prismjs": "^1.24.0", "pubsub-js": "^1.9.3", - "react": "^17.0.2", + "react": "^18.0.0", "react-console-emulator": "^5.0.1", + "react-csv": "^2.2.2", + "react-custom-scrollbars": "^4.2.1", "react-custom-scrollbars-2": "^4.4.0", - "react-dom": "^17.0.2", + "react-dom": "^18.0.0", "react-hook-form": "^7.15.4", "react-hotkeys-hook": "^3.3.2", "react-icons": "^4.2.0", "react-redux": "^7.2.5", - "react-router": "^6.0.0-beta.8", - "react-router-dom": "6", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", + "react-scroll-to-bottom": "^4.2.0", "react-select": "^4.3.1", "react-simple-code-editor": "^0.11.0", + "react-table": "7.7.0", "rebass": "^4.0.7", "reconnecting-websocket": "^4.4.0", "redux": "^4.1.1", @@ -63,6 +80,9 @@ "rete-connection-reroute-plugin": "^0.4.0", "rete-context-menu-plugin": "^0.6.0-rc.1", "rete-react-render-plugin": "^0.2.1", + "socket.io-client": "^4.4.1", + "vite-plugin-env-compatible": "^1.1.1", + "vite-plugin-react": "^4.0.1", "sharedb": "^2.2.5", "unique-names-generator": "^4.5.0", "uuid": "^8.3.2", @@ -81,8 +101,10 @@ "@types/jest": "^26.0.24", "@types/node": "^16.4.3", "@types/react": "^17.0.15", + "@types/react-csv": "^1.1.2", "@types/react-dom": "^17.0.9", "@types/react-redux": "^7.1.18", + "@types/react-table": "7.7.9", "@welldone-software/why-did-you-render": "^6.2.1", "babel-loader": "^8.2.2", "babel-plugin-transform-class-properties": "^6.24.1", @@ -91,7 +113,7 @@ "crypto-browserify": "^3.12.0", "css-loader": "^6.3.0", "css-modules-typescript-loader": "^4.0.1", - "dotenv-webpack": "^7.0.3", + "dotenv-flow-webpack": "^1.1.0", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.6", "enzyme-to-json": "^3.6.2", diff --git a/client/scripts/engine.ts b/client/scripts/engine.ts deleted file mode 100644 index 01f43d336..000000000 --- a/client/scripts/engine.ts +++ /dev/null @@ -1,33 +0,0 @@ -import thothCore from '@latitudegames/thoth-core/dist/server' - -const { - components: { moduleInput, moduleOutput, tenseTransformer }, -} = thothCore - -export const components = [ - // new ActionTypeComponent(), - // new Alert(), - // new BooleanGate(), - // new Code(), - // new DifficultyDetectorComponent(), - // new EnkiTask(), - // new EntityDetector(), - // new ForEach(), - // new Generator(), - // new InputComponent(), - // new ItemTypeComponent(), - // new JoinListComponent(), - // new ModuleComponent(), - moduleInput(), - moduleOutput(), - // new PlaytestPrint(), - // new PlaytestInput(), - // new RunInputComponent(), - // new SafetyVerifier(), - // new StateWrite(), - // new StateRead(), - // new StringProcessor(), - // new SwitchGate(), - tenseTransformer(), - // new TimeDetectorComponent(), -] diff --git a/client/scripts/module.ts b/client/scripts/module.ts deleted file mode 100644 index 3af54c543..000000000 --- a/client/scripts/module.ts +++ /dev/null @@ -1,26 +0,0 @@ -export class Module { - inputs: object; - outputs: object; - constructor() { - this.inputs = {}; - this.outputs = {}; - } - - read(inputs) { - this.inputs = inputs; - } - - write(outputs) { - Object.keys(this.outputs).forEach((key) => { - outputs[key] = this.outputs[key]; - }); - } - - getInput(key) { - return this.inputs[key]; - } - - setOutput(key, value) { - this.outputs[key] = value; - } -} diff --git a/client/scripts/package-lock.json b/client/scripts/package-lock.json deleted file mode 100644 index 64730ed37..000000000 --- a/client/scripts/package-lock.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "requires": true, - "lockfileVersion": 1, - "dependencies": { - "@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==" - }, - "@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", - "requires": { - "@cspotcode/source-map-consumer": "0.8.0" - } - }, - "@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==" - }, - "@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==" - }, - "@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==" - }, - "@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==" - }, - "acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==" - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "ts-node": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.3.0.tgz", - "integrity": "sha512-RYIy3i8IgpFH45AX4fQHExrT8BxDeKTdC83QFJkNzkvt8uFB6QJ8XMyhynYiKMLxt9a7yuXaDBZNOYS3XjDcYw==", - "requires": { - "@cspotcode/source-map-support": "0.7.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "yn": "3.1.1" - } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==" - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" - } - } -} diff --git a/client/scripts/package.json b/client/scripts/package.json deleted file mode 100644 index b49ac1a16..000000000 --- a/client/scripts/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "commonjs", - "dependencies": { - "ts-node": "^10.3.0", - "typescript": "^4.4.4" - } -} diff --git a/client/scripts/spell.ts b/client/scripts/spell.ts deleted file mode 100644 index 0f4347502..000000000 --- a/client/scripts/spell.ts +++ /dev/null @@ -1,182 +0,0 @@ -const spell = { - id: "demo@0.1.0", - nodes: { - 2: { - id: 2, - data: { - socketKey: "02c8ac4b-c7e5-45fc-9e6e-62680bd158e5", - name: "name", - }, - inputs: {}, - outputs: { - output: { - connections: [ - { - node: 5, - input: "name", - data: {}, - }, - ], - }, - }, - position: [-704.5584311572628, -73.13445406248034], - name: "Module Input", - }, - 3: { - id: 3, - data: { - socketKey: "22628386-aa18-40cd-8b6a-4e7c03fecb81", - name: "text", - }, - inputs: {}, - outputs: { - output: { - connections: [ - { - node: 5, - input: "text", - data: {}, - }, - ], - }, - }, - position: [-705.6770417976608, -207.50874335082628], - name: "Module Input", - }, - 4: { - id: 4, - data: { - socketKey: "1a819a65-e1e2-4f77-9a42-9f99f546f7c4", - name: "trigger", - }, - inputs: {}, - outputs: { - trigger: { - connections: [ - { - node: 5, - input: "trigger", - data: {}, - }, - ], - }, - }, - position: [-703.6864534694615, -338.11887296523986], - name: "Module Trigger In", - }, - 5: { - id: 5, - data: { - fewshot: - 'Change each statement to be in the third person present tense and correct all grammar.\n\nMatt: am sleepy.\nThird Person: Matt is sleepy.\n---\nMatt: bllogha bloghs.\nThird Person: Matt makes nonsensical sounds.\n--\nJackson: tell the king that you won\'t help him.\nThird Person: Jackson tells the king that he won\'t help him.\n---\nJill: can I have a mug of ale?\nThird Person: Jill says, "Can I have a mug of ale?"\n---\nSam: say i\'d be happy to help you\nThird Person: Sam says, "I\'d be happy to help you."\n---\nCogsworth: draw my sword of light and slice myself in the forehead.\nThird Person: Cogsworth draws his sword of light and slices himself in the forehead.\n---\nJon: say but you said I could have it. Please?\nThird Person: Jon says, "But you said I could have it. Please?"\n---\nEliza: ask my friend where he\'s going\nThird Person: Eliza asks her friend where he\'s going.\n---\nAaron: am sleepy.\nThird Person: Aaron is sleepy.\n---\nRobert: say I think I can resist it if you give me potion of Mind Shield. Do u have one?\nThird Person: Robert says, "I think I can resist it if you give me a potion of Mind Shield. Do you have one?"\n---\nJack: go talk to the knight\nThird Person: Jack goes to talk to the knight\n---\nJack: say What are you doing?!\nThird Person: Jack says, "What are you doing?!"\n---\nJames: I\'m confident that I can kill the dragon!\nThird Person: James says, "I\'m confident that I can kill the dragon!"\n---\nErica: want to go to the store but trip over my own shoes.\nThird Person: Erica wants to go to the store but she trips over her own shoes.\n---\nTom: told her that it was over.\nThird Person: Tom told her that it was over.\n---\nFred: ask what time is it?\nThird Person: Fred asks, "What time is it?"\n---\nJames: okay!\nThird Person: James says, "Okay!"\n--\nFred: command the mercenaries to attack the dragon while you rescue the princess.\nThird Person: Fred commands the mercenaries to attack the dragon while he rescues the princess.\n---\n', - }, - inputs: { - trigger: { - connections: [ - { - node: 4, - output: "trigger", - data: {}, - }, - ], - }, - text: { - connections: [ - { - node: 3, - output: "output", - data: {}, - }, - ], - }, - name: { - connections: [ - { - node: 2, - output: "output", - data: {}, - }, - ], - }, - }, - outputs: { - action: { - connections: [ - { - node: 21, - input: "input", - data: {}, - }, - ], - }, - trigger: { - connections: [ - { - node: 21, - input: "trigger", - data: {}, - }, - { - node: 20, - input: "trigger", - data: {}, - }, - ], - }, - }, - position: [-281.2092672559847, -302.30118353826043], - name: "Tense Transformer", - }, - 20: { - id: 20, - data: { - socketKey: "a48cfd41-46c6-4c59-8292-45483dfbfa3b", - }, - inputs: { - trigger: { - connections: [ - { - node: 5, - output: "trigger", - data: {}, - }, - ], - }, - }, - outputs: {}, - position: [156.14996337890625, -321.1500244140625], - name: "Module Trigger Out", - }, - 21: { - id: 21, - data: { - socketKey: "df7ecf3e-a2f9-4637-a2df-f05d59523030", - }, - inputs: { - input: { - connections: [ - { - node: 5, - output: "action", - data: {}, - }, - ], - }, - trigger: { - connections: [ - { - node: 5, - output: "trigger", - data: {}, - }, - ], - }, - }, - outputs: {}, - position: [154.16241455078125, -196.77505493164062], - name: "Module Output", - }, - }, -}; - -export default spell; diff --git a/client/scripts/tsconfig.json b/client/scripts/tsconfig.json deleted file mode 100644 index 588d98c44..000000000 --- a/client/scripts/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "isolatedModules": false, - "module": "CommonJS" - } -} diff --git a/client/src/App.css b/client/src/App.css index b2ae8f3bc..9c108e79c 100644 --- a/client/src/App.css +++ b/client/src/App.css @@ -43,26 +43,32 @@ body, .socket.input.number { background: #fcbd03; } + .socket.output.trigger, .socket.input.trigger { background: #7027dd; } + .socket { height: var(--small); width: var(--small); border: 1px solid var(--primary); } + .socket.output { position: relative; right: -5px; } + .socket.input { position: relative; left: -5px; } + .socket:hover { background-color: var(--dark-1); } + .node.selected { background-color: #05c807 !important; } @@ -75,6 +81,7 @@ body, drop-shadow(-1px 0px 0px var(--dark-0)) drop-shadow(1px 0px 0px var(--dark-0)); } + button { box-sizing: border-box; color: #fff; @@ -93,26 +100,31 @@ button { display: flex; align-items: center; } + button.option { border: none; margin: 0; border-radius: 0; } + button.primary { background-color: var(--primary); } + button.list { background-color: var(--dark-2); padding: 3px; padding-left: var(--small); padding-right: var(--small); } + button.small { background-color: var(--dark-3s); padding: 8px; padding-left: var(--small); padding-right: var(--small); } + button.extra-small { background-color: var(--dark-3); padding: 4px; @@ -121,27 +133,33 @@ button.extra-small { font-size: 8px; height: 16px; } + button:hover { filter: brightness(1.1); } + button:active { filter: brightness(0.9); } + button.disabled { box-shadow: none; pointer-events: none; opacity: 0.5; background-color: var(--dark-2); } + .node.selected button { background-color: var(--primary) !important; } + .context-menu { padding: 0 !important; - width: var(--c25) !important; + width: var(--c30) !important; box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.2); z-index: 999999999 !important; } + .context-menu .item { box-sizing: border-box; border: 1px solid var(--dark-3) !important; @@ -153,13 +171,17 @@ button.disabled { padding: var(--extraSmall) !important; padding-left: var(--small) !important; text-transform: capitalize !important; + width: var(--c30) !important; } + .context-menu .item:hover { background-color: var(--primary) !important; } + .context-menu .item:first-child { border-top: 1px solid var(--dark-3) !important; } + .context-menu .item:last-child { border-bottom: 1px solid var(--dark-3) !important; } @@ -177,9 +199,8 @@ button.disabled { .context-menu .search input { box-sizing: border-box !important; - padding: var( - --extraSmall - ) !important; /* not using a var here to optically correct for base + cap of typeface */ + padding: var(--extraSmall) !important; + /* not using a var here to optically correct for base + cap of typeface */ background-color: var(--dark-2) !important; padding-left: var(--small) !important; padding-right: var(--small) !important; @@ -197,12 +218,14 @@ button.disabled { position: relative; height: 100%; } + .flexlayout__tab { overflow: hidden; border-radius: 0px 0px 4px 4px; border: 1px solid #333; border-top: 0; } + .flexlayout__tabset { box-sizing: border-box; border: 1px solid #333; @@ -213,22 +236,28 @@ button.disabled { .flexlayout__tabset-selected { background: var(--dark-0); } + .flexlayout__tabset_tabbar_inner_tab_container_top { border-top: none; background-color: var(--dark-2); } + .flexlayout__tabset_tabbar_outer_top { border-bottom: none; } + .flexlayout__tabset { font-size: 16px; } + .flexlayout__tab { background-color: var(--dark-3); } + .flexlayout__tab_toolbar { background-color: var(--dark-2); } + .flexlayout__tab_button { margin: 0; background-color: var(--dark-3); @@ -236,28 +265,33 @@ button.disabled { padding-left: var(--extraSmall); padding-right: var(--extraSmall); } + .flexlayout__tab_button { border-radius: 0; visibility: inherit !important; } + .flexlayout__tab_button--unselected { background-color: var(--dark-2); } + .flexlayout__tab_button:hover { filter: brightness(2.1); /* background-color: var(--dark-3); */ } + .flexlayout__splitter { background-color: transparent; } + /* .view-line span { font-family: 'IBM Plex Mono', sans-serif; } */ + input[type='text'] { box-sizing: border-box; - padding: var( - --extraSmall - ); /* not using a var here to optically correct for base + cap of typeface */ + padding: var(--extraSmall); + /* not using a var here to optically correct for base + cap of typeface */ background-color: var(--dark-2); padding-left: var(--small); padding-right: var(--small); @@ -270,3 +304,228 @@ input[type='text'] { font-size: 11px; height: var(--c4); } + +.App { + width: calc(100% - 180px); +} + +.agents-container { + display: flex; +} + +.agent-header { + display: flex; +} + +.agent-createModal { + position: relative; + right: 400px; + bottom: 350px; +} + +.nav { + width: 180px; + float: left; + height: 100vh; +} + +.nav-item, +.nav-item-active { + cursor: pointer; + margin: 2em; + display: block; +} + +.nav-item-active { + color: white; +} + +.flex-container { + margin: 0.5em; + width: calc(100% - 2em); + justify-content: center; + display: flex; + flex-wrap: wrap; +} + +.flex-item { + display: flex; + margin: 0.5em; +} + +.form-item { + padding: 1em 0; +} + +.entBtns { + display: flex; +} + +.form-item-label { + display: block; + margin-bottom: 0.5em; +} + +.form-text-area, +.agent-select > select, +.search-corpus > select { + width: 100%; + box-sizing: border-box; + padding: var(--extraSmall); + /* not using a var here to optically correct for base + cap of typeface */ + background-color: var(--dark-2); + color: #fff; + border-radius: 4px; + cursor: default; + border: 1px solid var(--dark-4); + box-shadow: inset 0px 5px 5px rgba(0, 0, 0, 0.1); + font-family: 'IBM Plex Mono', monospace !important; + font-size: 11px; + height: var(--c4); +} + +.search-corpus > select { + width: 50%; +} + +.search-corpus-btns { + vertical-align: middle; + display: inline-flex; + justify-content: space-between; + margin: 0 1rem; + width: 25%; +} + +.search-corpus-documents-list { + margin: 1rem 0; +} + +.search-corpus-document, +.content-obj { + margin: 1rem 0; + padding: 1rem; + border-radius: 0.5rem; +} +.search-corpus-document { + background: #545454; +} +.content-obj { + background: var(--dark-3); +} + +.search-corpus-btn { + height: var(--c20); + background-color: #2e2e2e; + border: none; + margin: 0 0.4rem; +} + +.admin-container { + margin-left: 11em; + margin-top: 1em; +} + +.agent-select { + margin: 1em 0; +} + +.agentFields { + padding-right: 10px; +} + +.agentBtns { + display: flex; +} + +.agentBtns button { + background-color: #878587; +} + +.agentBtns .updateBtn { + margin-left: auto; + order: 2; +} + +.form-text-area, +.agent-Manager select { + background: #fff; + color: #636363; +} + +.dialogInput { + min-height: 100px; +} +.personalityInput, +.MonologueInput, +.FactsInput { + min-height: 50px; +} +.gettingsInput { + min-height: 80px; +} + +.agent-container { + max-width: 100%; + padding: 2em; + height: calc(100% - 4em); + overflow: auto; +} + +.agent-editor { + padding: 2em; + height: calc(100% - 4em); + overflow: auto; +} + +.form-item > input[type='text'] { + width: 100%; +} + +.form-item > input[type='checkbox'] { + display: inline-flex; +} + +.d-flex { + display: flex; +} + +.flex-column { + flex-direction: column; +} + +.justify-content-center { + justify-content: center; +} + +.justify-content-between { + justify-content: space-between; +} + +.justify-content-around { + justify-content: space-around; +} + +.align-items-center { + align-items: center; +} + +.custom-checkbox { + width: 1.5rem; + height: 1.5rem; + border-radius: 0.4rem; + margin: 0 0.5rem; +} + +.bare-input { + padding: 0; + margin: 0; + border: 0; + background: transparent; + outline: none; + font-size: 0.975rem; +} + +.adminActive div { + background-color: #05c807 !important; + color: red !important; +} diff --git a/client/src/App.tsx b/client/src/App.tsx index c5920d86f..93fcc24c6 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -1,8 +1,9 @@ +import * as React from 'react' import { Routes, Route, Navigate } from 'react-router-dom' - import RequireAuth from './components/RequireAuth/RequireAuth' import ThothPageWrapper from './components/ThothPage/ThothPageWrapper' import HomeScreen from './screens/HomeScreen/HomeScreen' +import Admin from './screens/Admin/routes' import Thoth from './screens/Thoth/Thoth' import { useAuth } from './contexts/AuthProvider' @@ -12,6 +13,8 @@ import './App.css' import { activeTabSelector, selectAllTabs } from './state/tabs' import { useSelector } from 'react-redux' import { RootState } from './state/store' +import { useLatitude } from './config' + //These need to be imported last to override styles. function App() { @@ -21,11 +24,15 @@ function App() { const { user } = useAuth() const redirect = () => { - if (user && tabs.length > 0) { + if ((!useLatitude || user) && tabs.length > 0) { return } - return user ? : + return !useLatitude || user ? ( + + ) : ( + + ) } return ( @@ -35,6 +42,14 @@ function App() { } /> } /> } /> + ...}> + + + } + /> diff --git a/client/src/components/accordion-overrides.css b/client/src/components/Accordion/accordion-overrides.css similarity index 100% rename from client/src/components/accordion-overrides.css rename to client/src/components/Accordion/accordion-overrides.css diff --git a/client/src/components/accordion-overrides.css.d.ts b/client/src/components/Accordion/accordion-overrides.css.d.ts similarity index 100% rename from client/src/components/accordion-overrides.css.d.ts rename to client/src/components/Accordion/accordion-overrides.css.d.ts diff --git a/client/src/components/accordion.module.css b/client/src/components/Accordion/accordion.module.css similarity index 100% rename from client/src/components/accordion.module.css rename to client/src/components/Accordion/accordion.module.css diff --git a/client/src/components/accordion.module.css.d.ts b/client/src/components/Accordion/accordion.module.css.d.ts similarity index 100% rename from client/src/components/accordion.module.css.d.ts rename to client/src/components/Accordion/accordion.module.css.d.ts diff --git a/client/src/components/Accordion.tsx b/client/src/components/Accordion/index.tsx similarity index 93% rename from client/src/components/Accordion.tsx rename to client/src/components/Accordion/index.tsx index ebd4cd10c..4627b77f8 100644 --- a/client/src/components/Accordion.tsx +++ b/client/src/components/Accordion/index.tsx @@ -6,7 +6,7 @@ import Typography from '@mui/material/Typography' import ExpandMoreIcon from '@mui/icons-material/ExpandMore' import css from './accordion.module.css' -import Icon from './Icon/Icon' +import Icon from '../Icon/Icon' import './accordion-overrides.css' const useStyles = makeStyles(theme => ({ @@ -37,8 +37,8 @@ const useStyles = makeStyles(theme => ({ }, })) -export const SimpleAccordion = ({ setExpanded = x => {}, ...props }) => { - const classes = useStyles() +export const SimpleAccordion = ({ setExpanded = x => { }, ...props }) => { + const classes = useStyles() as any const onChange = (_, expanded) => { setExpanded(expanded) diff --git a/client/src/components/Chip/Chip.jsx b/client/src/components/Chip/Chip.jsx new file mode 100644 index 000000000..ffbf10105 --- /dev/null +++ b/client/src/components/Chip/Chip.jsx @@ -0,0 +1,24 @@ +import Icon from '../Icon/Icon' +import css from './chip.module.css' + +const Chip = ({ + label, + onClick, + noEvents, +}: { + label: string + onClick?: () => {} + noEvents?: boolean +}) => { + return ( +
+ {label} + {!noEvents && } +
+ ) +} + +export default Chip diff --git a/client/src/components/MenuBar/MenuBar.tsx b/client/src/components/MenuBar/MenuBar.tsx index f67acd12c..55d281e6a 100644 --- a/client/src/components/MenuBar/MenuBar.tsx +++ b/client/src/components/MenuBar/MenuBar.tsx @@ -1,13 +1,13 @@ -import React, { useState, useEffect, useRef } from 'react' +import { activeTabSelector, Tab } from '@/state/tabs' +import React, { useEffect, useRef, useState } from 'react' import { useHotkeys } from 'react-hotkeys-hook' +import { useSelector } from 'react-redux' +import { useNavigate } from 'react-router-dom' +import thothlogo from './thoth.png' import { useModal } from '../../contexts/ModalProvider' import { usePubSub } from '../../contexts/PubSubProvider' import css from './menuBar.module.css' -import thothlogo from './thoth.png' -import { useNavigate } from 'react-router-dom' -import { useSelector } from 'react-redux' -import { activeTabSelector, Tab } from '@/state/tabs' const MenuBar = () => { const navigate = useNavigate() @@ -21,16 +21,20 @@ const MenuBar = () => { useEffect(() => { if (!activeTab) return activeTabRef.current = activeTab + console.log('changing current to ', activeTabRef.current) }, [activeTab]) // grab all events we need const { $SAVE_SPELL, $CREATE_STATE_MANAGER, + $CREATE_ENT_MANAGER, $CREATE_PLAYTEST, $CREATE_INSPECTOR, + $CREATE_SEARCH_CORPUS, $CREATE_TEXT_EDITOR, $CREATE_CONSOLE, + $CREATE_EVENT_MANAGER, $SERIALIZE, $EXPORT, $UNDO, @@ -86,6 +90,14 @@ const MenuBar = () => { publish($CREATE_STATE_MANAGER(activeTabRef.current.id)) } + const onCreateSearchCorpus = () => { + publish($CREATE_SEARCH_CORPUS(activeTabRef.current?.id)) + } + + const onEntityManagerCreate = () => { + publish($CREATE_ENT_MANAGER(activeTabRef.current?.id)) + } + const onPlaytestCreate = () => { if (!activeTabRef.current) return publish($CREATE_PLAYTEST(activeTabRef.current.id)) @@ -111,6 +123,31 @@ const MenuBar = () => { publish($CREATE_CONSOLE(activeTabRef.current.id)) } + const onEventManagerCreate = () => { + if (!activeTabRef.current) return + publish($CREATE_EVENT_MANAGER(activeTabRef.current.id)) + } + + //Menu bar hotkeys + useHotkeys( + 'cmd+s, crtl+s', + event => { + event.preventDefault() + onSave() + }, + { enableOnTags: ['INPUT'] }, + [onSave] + ) + + useHotkeys( + 'option+n, crtl+n', + event => { + event.preventDefault() + onNew() + }, + { enableOnTags: ['INPUT'] }, + [onNew] + ) const onUndo = () => { if (!activeTabRef.current) return publish($UNDO(activeTabRef.current.id)) @@ -181,12 +218,21 @@ const MenuBar = () => { state_manager: { onClick: onStateManagerCreate, }, + search_corpus: { + onClick: onCreateSearchCorpus, + }, + ent_manager: { + onClick: onEntityManagerCreate, + }, playtest: { onClick: onPlaytestCreate, }, console: { onClick: onConsole, }, + event_manager: { + onClick: onEventManagerCreate, + }, }, }, } @@ -244,7 +290,7 @@ const MenuBar = () => { {hotKeyLabel && {parseStringToUnicode(hotKeyLabel)}} {children &&
} {/* {!topLevel &&
} */} - {children && children} + {children} ) } diff --git a/client/src/components/Modal/modal.module.css b/client/src/components/Modal/modal.module.css index b3b6c602a..c737c71cc 100644 --- a/client/src/components/Modal/modal.module.css +++ b/client/src/components/Modal/modal.module.css @@ -14,19 +14,23 @@ overflow: hidden; } +.modal-main-div { + padding: 1rem; + background: var(--dark-2); + border-radius: var(--extraSmall); + width: calc(25% - 4px); +} + .modal-panel { animation: modal 0.3s ease-out; - overflow: hidden; + overflow-y: auto; background-color: var(--dark-2); - border-radius: var(--extraSmall); - background-size: cover; - background-position: center; - box-sizing: border-box; - display: inline-block; - margin-bottom: 10px; - box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.3); - width: calc(25% - 4px); - padding: var(--small); + max-height: calc(100vh - 100px); +} + +.modal-panel-content { + display: flex; + flex-direction: column; } .modal-action-strip { @@ -35,15 +39,22 @@ display: flex; flex-direction: row; justify-content: flex-end; - padding-top: var(--small); + padding: var(--small); margin-top: var(--small); width: 100%; gap: var(--extraSmall); + position: sticky; + bottom: 0; + background: var(--dark-2); } .modal-title { + padding: 15px 10px; display: flex; align-items: center; + position: sticky; + top: 0; + background: var(--dark-2); } .modal-title h1 { diff --git a/client/src/components/Modal/modal.module.css.d.ts b/client/src/components/Modal/modal.module.css.d.ts index 9af9a66f9..a4d3ba5cb 100644 --- a/client/src/components/Modal/modal.module.css.d.ts +++ b/client/src/components/Modal/modal.module.css.d.ts @@ -4,7 +4,9 @@ interface CssExports { 'modal': string; 'modal-action-strip': string; 'modal-bg': string; + 'modal-main-div': string; 'modal-panel': string; + 'modal-panel-content': string; 'modal-title': string; 'vertical': string; } diff --git a/client/src/components/Modals/AgentModal.tsx b/client/src/components/Modals/AgentModal.tsx new file mode 100644 index 000000000..351822b4a --- /dev/null +++ b/client/src/components/Modals/AgentModal.tsx @@ -0,0 +1,29 @@ +import { useState } from 'react' +import Modal from '../Modal/Modal' + +const AgentModal = ({ content, onClose, options: _options }) => { + const [message, setMessage] = useState('') + const options = [ + { + label: 'Create Agent', + className: 'primary', + onClick: () => { + onClose({ name: message }) + }, + }, + ] + const updateNotes = e => { + console.log("message is ", e.target.value) + setMessage(e.target.value) + } + + return ( + +
+

Agent Name

+ +
+ ) +} + +export default AgentModal diff --git a/client/src/components/Modals/ContentObjEditModal.tsx b/client/src/components/Modals/ContentObjEditModal.tsx new file mode 100644 index 000000000..ba311eb97 --- /dev/null +++ b/client/src/components/Modals/ContentObjEditModal.tsx @@ -0,0 +1,21 @@ +import ContentObject from '@/workspaces/spells/windows/ContentObject'; +import Modal from '../Modal/Modal' + +const ContentObjEditModal = ({ contents, getContentObjects }) => { + + return ( + +
+ {contents.length > 0 ? + contents.map(content => ( + + ) + ) : ( +

No content objects exists

+ )} + +
+ ); +} + +export default ContentObjEditModal; \ No newline at end of file diff --git a/client/src/components/Modals/DocumentAddModal.tsx b/client/src/components/Modals/DocumentAddModal.tsx new file mode 100644 index 000000000..65c8d62aa --- /dev/null +++ b/client/src/components/Modals/DocumentAddModal.tsx @@ -0,0 +1,81 @@ +import { useState } from 'react' +import Modal from '../Modal/Modal' +import css from './modalForms.module.css' +import axios from 'axios' + +const DocumentAddModal = ({ closeModal, storeId, documentId, isContentObject, getDocuments, getContentObjects }) => { + let parentId = isContentObject ? 'documentId' : 'storeId' + let doc = { + description: '', + keywords: '', + is_included: true, + [parentId]: isContentObject ? parseInt(documentId) : parseInt(storeId) + } + const title = isContentObject ? 'Add Content Object' : 'Add Document' + const [newDocument, setNewDocument] = useState(doc) + + const add = async () => { + const body = { ...newDocument } + let url = + isContentObject ? + `${process.env.REACT_APP_SEARCH_SERVER_URL}/content-object` : + `${process.env.REACT_APP_SEARCH_SERVER_URL}/document` + + await axios.post(url, body) + await getDocuments() + if(isContentObject) await getContentObjects() + closeModal() + } + const options = [ + { + className: `${css['loginButton']} secondary`, + label: 'Add', + onClick: add, + }, + ] + return ( + +
+
+ setNewDocument({ + ...newDocument, + is_included: !newDocument.is_included + })} + checked={newDocument.is_included} + /> + Include +
+
+ Keywords + setNewDocument({ + ...newDocument, + keywords: e.target.value + })} + defaultValue={newDocument.keywords} + > +
+
+ Description + setNewDocument({ + ...newDocument, + description: e.target.value + })} + defaultValue={newDocument.description} + > +
+
+
+ ); +} + +export default DocumentAddModal; \ No newline at end of file diff --git a/client/src/components/Modals/DocumentDeleteModal.tsx b/client/src/components/Modals/DocumentDeleteModal.tsx new file mode 100644 index 000000000..9b34bbc5a --- /dev/null +++ b/client/src/components/Modals/DocumentDeleteModal.tsx @@ -0,0 +1,39 @@ +//@ts-nocheck +import Modal from '../Modal/Modal' +import css from './modalForms.module.css' +import axios from 'axios' + +const DocumentDeleteModal = ({ closeModal, documentId, objId, isContentObj, getDocuments, getContentObjects }) => { + let url = isContentObj ? + `${process.env.REACT_APP_SEARCH_SERVER_URL}/content-object` : + `${process.env.REACT_APP_SEARCH_SERVER_URL}/document` + let params = isContentObj ? { + objId + } : { + documentId + } + let entityToDelete = isContentObj ? 'content' : 'document' + + const deleteEntity = async () => { + await axios.delete(url, { params: params }) + if(isContentObj) await getContentObjects() + else await getDocuments() + closeModal() + } + + const options = [ + { + className: `${css['loginButton']} secondary`, + label: 'Delete', + onClick: deleteEntity, + }, + ] + + return ( + +

Are you sure to delete the {entityToDelete}?

+
+ ); +} + +export default DocumentDeleteModal; \ No newline at end of file diff --git a/client/src/components/Modals/DocumentEditModal.tsx b/client/src/components/Modals/DocumentEditModal.tsx new file mode 100644 index 000000000..d2eea4482 --- /dev/null +++ b/client/src/components/Modals/DocumentEditModal.tsx @@ -0,0 +1,56 @@ +import { useState } from 'react' +import Modal from '../Modal/Modal' +import css from './modalForms.module.css' +import axios from 'axios' + +const capitalizeFirstLetter = (word: string) => { + if(!word) return '' + return word.charAt(0).toUpperCase() + word.slice(1) +} + +const DocumentEditModal = ({ closeModal, field, document, getDocuments }) => { + const [val, setValue] = useState(document[field]) + + const update = async () => { + console.log('value ::: ', val); + const body = { + ...document, + documentId: document.id, + storeId: document.store_id, + [field]: val + } + console.log('body ::: ', body); + await axios.post( + `${process.env.REACT_APP_SEARCH_SERVER_URL}/update_document`, + body + ) + await getDocuments() + closeModal() + } + + const options = [ + { + className: `${css['loginButton']} secondary`, + label: 'Update', + onClick: update, + }, + ] + + return ( + +
+
+ {capitalizeFirstLetter(field)} + setValue(e.target.value)} + > +
+
+
+ ); +} + +export default DocumentEditModal; \ No newline at end of file diff --git a/client/src/components/Modals/EditSpellModal.tsx b/client/src/components/Modals/EditSpellModal.tsx index 6fa4ce226..fd6d59601 100644 --- a/client/src/components/Modals/EditSpellModal.tsx +++ b/client/src/components/Modals/EditSpellModal.tsx @@ -4,9 +4,11 @@ import { usePatchSpellMutation } from '../../state/api/spells' import { useForm } from 'react-hook-form' import Modal from '../Modal/Modal' import css from './modalForms.module.css' +import { useAuth } from '@/contexts/AuthProvider' const EditSpellModal = ({ closeModal, spellId, name, tab }) => { const [error, setError] = useState('') + const { user } = useAuth() const [patchSpell, { isLoading }] = usePatchSpellMutation() const { enqueueSnackbar } = useSnackbar() @@ -15,9 +17,14 @@ const EditSpellModal = ({ closeModal, spellId, name, tab }) => { handleSubmit, // formState: { errors }, } = useForm() - + console.log('tab ::: ', tab); + const onSubmit = handleSubmit(async data => { - const response: any = await patchSpell({ spellId, update: data }) + const response: any = await patchSpell({ + spellId: tab.spellId, + userId: user?.id as string, + update: data + }) if (response.error) { setError(response.error.data.error.message) diff --git a/client/src/components/Modals/SaveAsModal.tsx b/client/src/components/Modals/SaveAsModal.tsx index 544ef89df..c56cfd68a 100644 --- a/client/src/components/Modals/SaveAsModal.tsx +++ b/client/src/components/Modals/SaveAsModal.tsx @@ -6,12 +6,17 @@ import Modal from '../Modal/Modal' import css from './modalForms.module.css' import { openTab } from '@/state/tabs' import { useDispatch } from 'react-redux' +import { useAuth } from '@/contexts/AuthProvider' const EditSpellModal = ({ tab, closeModal }) => { const dispatch = useDispatch() const [error, setError] = useState('') const [saveSpell, { isLoading }] = useSaveSpellMutation() - const { data: spell } = useGetSpellQuery(tab.spellId, { + const { user } = useAuth() + const { data: spell } = useGetSpellQuery({ + spellId: tab.spellId, + userId: user?.id as string + }, { skip: !tab.spellId, }) const { enqueueSnackbar } = useSnackbar() @@ -26,6 +31,7 @@ const EditSpellModal = ({ tab, closeModal }) => { const saveResponse: any = await saveSpell({ ...spell, name: data.name, + user: user?.id }) if (saveResponse.error) { diff --git a/client/src/components/Modals/SearchCorpus/StoreAddEditModal.tsx b/client/src/components/Modals/SearchCorpus/StoreAddEditModal.tsx new file mode 100644 index 000000000..396db7dd9 --- /dev/null +++ b/client/src/components/Modals/SearchCorpus/StoreAddEditModal.tsx @@ -0,0 +1,82 @@ +//@ts-nocheck +import { useState } from 'react' +import Modal from '../../Modal/Modal' +import css from '../modalForms.module.css' +import axios from 'axios' + +const StoreAddEditModal = ({ closeModal, store, getDocumentsStores, opType }) => { + const [name, setName] = useState(store ? store.name : '') + const [error, setError] = useState('') + const performOperation = async () => { + switch(opType) { + case 'add': { + let body = { name } + if(!name){ + setError('Store Can not be Empty') + }else{ + setError('') + await axios.post( + `${process.env.REACT_APP_SEARCH_SERVER_URL}/document-store`, + body + ) + closeModal() + } + break + } + case 'edit': { + let body = { + id: store.id, + name + } + if(!name){ + setError('Store Can not be Empty') + }else{ + setError('') + await axios.put( + `${process.env.REACT_APP_SEARCH_SERVER_URL}/document-store`, + body + ) + closeModal() + } + break + } + default: break + } + await getDocumentsStores() + } + const operation = opType === 'add' ? 'Add' : 'Update' + const title = `${operation} Store` + const options = [ + { + className: `${css['loginButton']} secondary`, + label: operation, + onClick: performOperation, + }, + ] + + const onChange = (e) =>{ + setName(e.target.value) + if(name){ + setError('') + } + } + + return ( + +
+
+ Store Name: + onChange(e)} + defaultValue={name} + > +

{error}

+
+
+
+ ); +} + +export default StoreAddEditModal; \ No newline at end of file diff --git a/client/src/components/Modals/SearchCorpus/StoreDeleteModal.tsx b/client/src/components/Modals/SearchCorpus/StoreDeleteModal.tsx new file mode 100644 index 000000000..b0b57bd2b --- /dev/null +++ b/client/src/components/Modals/SearchCorpus/StoreDeleteModal.tsx @@ -0,0 +1,35 @@ +//@ts-nocheck +import Modal from '../../Modal/Modal' +import css from '../modalForms.module.css' +import axios from 'axios' + +const StoreDeleteModal = ({ closeModal, store, getDocumentsStores }) => { + const deleteStore = async () => { + await axios.delete( + `${process.env.REACT_APP_SEARCH_SERVER_URL}/document-store`, + { + params: { + storeId: store.id, + }, + } + ) + await getDocumentsStores() + closeModal() + } + + const options = [ + { + className: `${css['loginButton']} secondary`, + label: 'Delete', + onClick: deleteStore, + }, + ] + + return ( + +

Are you sure to delete store `{store.name}`?

+
+ ); +} + +export default StoreDeleteModal; \ No newline at end of file diff --git a/client/src/components/Node/Node.js b/client/src/components/Node/Node.js new file mode 100644 index 000000000..f993ad09d --- /dev/null +++ b/client/src/components/Node/Node.js @@ -0,0 +1,103 @@ +import { Node, Socket, Control } from 'rete-react-render-plugin' + +import Icon, { componentCategories } from '../Icon/Icon' +import css from './Node.module.css' +import icons from '../Icon/icon.module.css' + +export class MyNode extends Node { + props: { node: any; bindSocket: any; bindControl: any } + state: { outputs: any; controls: any; inputs: any; selected: any } + + render() { + const { node, bindSocket, bindControl } = this.props + const { outputs, controls, inputs, selected } = this.state + + const name = node.displayName ? node.displayName : node.name + const fullName = node.data.name ? `${name} - ${node.data.name}` : name + const hasError = node.data.error + const hasSuccess = node.data.success + const nodeLocked = node.data.nodeLocked + + return ( +
+ {node.deprecated &&
} + {nodeLocked && ( +
+ )} +
+

{node.id}

+
+
+ + {fullName} + {node.deprecated && ( +
DEPRECATED
+ )} +
+
+ {inputs.length > 0 && ( +
+ {inputs.map(input => ( +
+ + {!input.showControl() && ( +
{input.name}
+ )} + {input.showControl() && ( + + )} +
+ ))} +
+ )} + {outputs.length > 0 && ( +
+ {outputs.map(output => ( +
+
{output.name}
+ +
+ ))} +
+ )} +
+
+ {/* Controls */} + {controls.map(control => ( + + ))} +
+
+ ) + } +} diff --git a/client/src/components/Node/Node.tsx b/client/src/components/Node/Node.tsx index f993ad09d..193d9590c 100644 --- a/client/src/components/Node/Node.tsx +++ b/client/src/components/Node/Node.tsx @@ -20,18 +20,16 @@ export class MyNode extends Node { return (
{node.deprecated &&
} {nodeLocked && (
)}

{node.id}

diff --git a/client/src/components/RequireAuth/RequireAuth.tsx b/client/src/components/RequireAuth/RequireAuth.tsx index d214f2cbc..8ac46f67d 100644 --- a/client/src/components/RequireAuth/RequireAuth.tsx +++ b/client/src/components/RequireAuth/RequireAuth.tsx @@ -1,9 +1,11 @@ +import { useLatitude } from '@/config' import { Outlet } from 'react-router-dom' import { useAuth } from '../../contexts/AuthProvider' const defaultGroups = ['internal', 'thoth', 'creator-tester'] const RequireAuth = (props: Record) => { + if (!useLatitude) return const { user, loginRedirect } = useAuth() const groups = props?.access ? [...props?.access, ...defaultGroups] diff --git a/client/src/components/Switch/Switch.tsx b/client/src/components/Switch/Switch.tsx index 71622a1d9..ddacc09e4 100644 --- a/client/src/components/Switch/Switch.tsx +++ b/client/src/components/Switch/Switch.tsx @@ -3,11 +3,10 @@ import FormControlLabel from '@mui/material/FormControlLabel' const SwitchComponent = ({ label: _label, checked, onChange }) => { const label = { inputProps: { 'aria-label': _label } } - return ( } + control={} /> ) } diff --git a/client/src/config.d.ts b/client/src/config.d.ts new file mode 100644 index 000000000..8b9df66f6 --- /dev/null +++ b/client/src/config.d.ts @@ -0,0 +1,5 @@ +export declare const latitudeApiRootUrl: string; +export declare const thothApiRootUrl: string; +export declare const oAuthClientId: string | undefined; +export declare const appRootUrl: string | undefined; +export declare const useLatitude: boolean; diff --git a/client/src/config.ts b/client/src/config.ts index 210ecaf97..0d723a958 100644 --- a/client/src/config.ts +++ b/client/src/config.ts @@ -3,6 +3,11 @@ export const latitudeApiRootUrl = ? (process.env.REACT_APP_LAPI_ROOT_URL_PROD as string) : (process.env.REACT_APP_LAPI_ROOT_URL as string) +export const thothApiRootUrl = + process.env.NODE_ENV === 'production' + ? (process.env.REACT_APP_API_ROOT_URL_PROD as string) + : (process.env.REACT_APP_API_ROOT_URL as string) + export const oAuthClientId = process.env.REACT_APP_OAUTH_CLIENT_ID export const appRootUrl = @@ -10,6 +15,7 @@ export const appRootUrl = ? process.env.REACT_APP_SITE_ROOT_URL_PROD : process.env.REACT_APP_SITE_ROOT_URL +export const useLatitude = process.env.REACT_APP_USE_LATITUDE === 'true'; // coercing this into a boolean export const sharedb = process.env.REACT_APP_SHAREDB === 'true' export const websocketUrl = 'ws://localhost:8080' diff --git a/client/src/contexts/AppProviders.tsx b/client/src/contexts/AppProviders.tsx index 74891f2a4..80d552fda 100644 --- a/client/src/contexts/AppProviders.tsx +++ b/client/src/contexts/AppProviders.tsx @@ -12,7 +12,7 @@ import ToastProvider from './ToastProvider' declare module '@mui/styles/defaultTheme' { // eslint-disable-next-line @typescript-eslint/no-empty-interface - interface DefaultTheme extends Theme {} + interface DefaultTheme extends Theme { } } const darkTheme = createTheme( diff --git a/client/src/contexts/AuthProvider.tsx b/client/src/contexts/AuthProvider.tsx index 8327b9027..11268c497 100644 --- a/client/src/contexts/AuthProvider.tsx +++ b/client/src/contexts/AuthProvider.tsx @@ -22,7 +22,7 @@ interface SessionInfoType { } export interface UserInfoType { - id: number + id: string email: string groups: string[] username: string @@ -31,9 +31,9 @@ export interface UserInfoType { const initialState = { session: {} as SessionInfoType | null, user: {} as UserInfoType | null, - logoutAndRedirect: () => {}, - loginRedirect: (force?: boolean, returnToPath?: string) => {}, - refreshSession: (origin: string) => {}, + logoutAndRedirect: () => { }, + loginRedirect: (force?: boolean, returnToPath?: string) => { }, + refreshSession: (origin: string) => { }, } const AuthContext = createContext(initialState) @@ -68,8 +68,8 @@ const AuthProvider = ({ children }: { children: ReactElement }) => { if (search) { let queryDictionary = JSON.parse( '{"' + - search.substring(1).replace(/&/g, '","').replace(/=/g, '":"') + - '"}', + search.substring(1).replace(/&/g, '","').replace(/=/g, '":"') + + '"}', function (key, value) { return key === '' ? value : decodeURIComponent(value) } @@ -139,7 +139,7 @@ const AuthProvider = ({ children }: { children: ReactElement }) => { } useEffect(() => { - ;(async () => { + ; (async () => { try { // Check if User has an existing sessionId in local storage const sessionId = await getSessionId() @@ -204,6 +204,18 @@ const AuthProvider = ({ children }: { children: ReactElement }) => { } } } else { + // Setting static user data + let userId = localStorage.getItem('userId') + if(!userId) { + userId = uuidv4() + localStorage.setItem('userId', userId) + } + setUserInfo({ + id: userId, + email: '', + groups: [], + username: '' + }) setDone(true) } })() diff --git a/client/src/contexts/ModalProvider.jsx b/client/src/contexts/ModalProvider.jsx index 1ffcd1d04..e072a1ebb 100644 --- a/client/src/contexts/ModalProvider.jsx +++ b/client/src/contexts/ModalProvider.jsx @@ -5,8 +5,8 @@ import { getModals } from '../components/Modals' const Context = React.createContext({ activeModal: '', // eslint-disable-next-line @typescript-eslint/no-unused-vars - openModal: options => {}, - closeModal: () => {}, + openModal: options => { }, + closeModal: () => { }, }) export const useModal = () => React.useContext(Context) diff --git a/client/src/contexts/ModuleProvider.tsx.bak b/client/src/contexts/ModuleProvider.tsx.bak index ceed9fbff..f997d08b4 100644 --- a/client/src/contexts/ModuleProvider.tsx.bak +++ b/client/src/contexts/ModuleProvider.tsx.bak @@ -80,7 +80,7 @@ const ModuleProvider = ({ children }) => { const getSpellModules = async spell => { // should actually look for spells that have a data.module key set to a string - const moduleNames = Object.values(spell.chain.nodes) + const moduleNames = Object.values(spell.graph.nodes) .filter((n: any) => n.name === 'Module') .map((n: any) => n.data.name) diff --git a/client/src/contexts/PubSubProvider.tsx b/client/src/contexts/PubSubProvider.tsx index 849548ee6..5640f70cc 100644 --- a/client/src/contexts/PubSubProvider.tsx +++ b/client/src/contexts/PubSubProvider.tsx @@ -38,7 +38,12 @@ export const events = { $CREATE_PLAYTEST: tabId => `createPlaytest:${tabId}`, $CREATE_INSPECTOR: tabId => `createInspector:${tabId}`, $CREATE_TEXT_EDITOR: tabId => `createTextEditor:${tabId}`, + $CREATE_ENT_MANAGER: tabId => `createEntManager:${tabId}`, + $CREATE_VIDEO_TRANSCRIPTION: tabId => `createVideoTranscription:${tabId}`, + $CREATE_SEARCH_CORPUS: tabId => `createSearchCorpus:${tabId}`, + $CREATE_DEBUG_CONSOLE: tabId => `createDebugConsole:${tabId}`, $CREATE_CONSOLE: tabId => `createDebugConsole:${tabId}`, + $CREATE_EVENT_MANAGER: tabId => `createEventManager:${tabId}`, $SERIALIZE: tabId => `serialize:${tabId}`, $PROCESS: tabId => `process:${tabId}`, $EXPORT: tabId => `export:${tabId}`, diff --git a/client/src/contexts/TabManagerProvider.jsx b/client/src/contexts/TabManagerProvider.jsx new file mode 100644 index 000000000..ad98c0c10 --- /dev/null +++ b/client/src/contexts/TabManagerProvider.jsx @@ -0,0 +1,167 @@ +import { useContext, createContext, useEffect, useState } from 'react' +import { v4 as uuidv4 } from 'uuid' +import { useNavigate } from 'react-router-dom' + +import LoadingScreen from '../components/LoadingScreen/LoadingScreen' +import { useDB } from './DatabaseProvider' +import defaultJson from '../data/layouts/defaultLayout.json' +import { usePubSub } from './PubSubProvider' + +const Context = createContext({ + tabs: [], + activeTab: {}, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + openTab: async options => { }, + switchTab: x => { }, + closeTab: x => { }, + saveTabLayout: () => { }, + clearTabs: () => { }, + closeTabBySpellId: spellId => { }, + updateTab: (tabId, update) => Promise.resolve(), +}) + +// Map of workspaces +const workspaceMap = { + default: defaultJson, +} + +export const useTabManager = () => useContext(Context) + +const TabManager = ({ children }) => { + const { db } = useDB() + + // eslint-disable-next-line no-unused-vars + const { events, publish } = usePubSub() + const navigate = useNavigate() + const [tabs, setTabs] = useState(null) + const [activeTab, setActiveTab] = useState(null) + + // Suscribe to changes in the database for active tab, and all tabs + useEffect(() => { + if (!db) return + ; (async () => { + refreshTabs() + })() + }, [db]) + + const filterTabs = tabDocs => { + return tabDocs + .map(tab => tab.toJSON()) + .map(({ active, ...rest }) => ({ ...rest })) + } + + const refreshTabs = async () => { + const activeTab = await db.tabs + .findOne({ selector: { active: true } }) + .exec() + if (activeTab) setActiveTab(activeTab.toJSON()) + + // We want to exclude the 'active' field soince this changes,which causes rerenders we dont want. + const tabDocs = await db.tabs.find().exec() + const tabs = filterTabs(tabDocs) + if (tabs && tabs.length > 0) setTabs(tabs) + if (!tabs || tabs.length === 0) setTabs([]) + } + + const updateTab = async (tabId, update) => { + const tab = await db.tabs.findOne({ selector: { id: tabId } }).exec() + if (!tab) return + + await tab.atomicPatch(update) + await refreshTabs() + } + + const openTab = async ({ + workspace = 'default', + name = 'Untitled', + type = 'module', + moduleName = '', + spellId = null, + openNew = true, + }) => { + // don't open a new tab if one is already open + if (!openNew && type === 'module') { + const tabOpened = await switchTab(null, { module: { $eq: moduleName } }) + if (tabOpened) return + } + + if (!openNew && type === 'spell') { + const tabOpened = await switchTab(null, { spell: { $eq: spellId } }) + if (tabOpened) return + } + + const newTab = { + layoutJson: workspaceMap[workspace], + name, + id: uuidv4(), + spell: spellId, + module: moduleName, + type: type, + active: true, + } + + const newTabDoc = await db.tabs.insert(newTab) + refreshTabs() + } + + const closeTab = async tabId => { + const tab = await db.tabs.findOne({ selector: { id: tabId } }).exec() + if (!tab) return + publish(events.$CLOSE_EDITOR(tabId)) + await tab.remove() + const tabs = await db.tabs.find().exec() + await refreshTabs() + + // Switch to the last tab down. + if (tabs.length === 0) { + navigate('/home') + return + } + switchTab(tabs[0].id) + } + + const switchTab = async (tabId, query) => { + const selector = query ? query : { id: tabId } + const tab = await db.tabs.findOne({ selector }).exec() + if (!tab) return false + await tab.atomicPatch({ active: true }) + + await refreshTabs() + return true + } + + const clearTabs = async () => { + await db.tabs.find().remove() + } + + const closeTabBySpellId = async spellId => { + const tab = await db.tabs.findOne({ selector: { spell: spellId } }).exec() + if (!tab) return false + + await closeTab(tab.id) + return true + } + + const saveTabLayout = async (tabId, json) => { + const tab = await db.tabs.findOne({ selector: { id: tabId } }).exec() + await tab.atomicPatch({ layoutJson: json }) + } + + const publicInterface = { + tabs, + activeTab, + openTab, + switchTab, + closeTab, + saveTabLayout, + clearTabs, + updateTab, + closeTabBySpellId, + } + + if (!tabs) return + + return {children} +} + +export default TabManager diff --git a/client/src/data/chains/default.ts b/client/src/data/chains/default.ts index 58b78715b..ebcae1d77 100644 --- a/client/src/data/chains/default.ts +++ b/client/src/data/chains/default.ts @@ -1,4 +1,4 @@ -const chain = { +const graph = { id: 'demo@0.1.0', nodes: { '124': { @@ -72,4 +72,4 @@ const chain = { }, } -export default chain +export default graph diff --git a/client/src/data/config/clientSettings.ts b/client/src/data/config/clientSettings.ts new file mode 100644 index 000000000..70774cae4 --- /dev/null +++ b/client/src/data/config/clientSettings.ts @@ -0,0 +1,184 @@ +const apiKeys = [ + { + client: 'Discord', + name: 'discord_api_token', + type: 'string', + defaultValue: '', + }, + { + client: 'twitter', + name: 'twitterConsumerKey', + type: 'string', + defaultValue: '', + }, + { + client: 'twitter', + name: 'twitterConsumerSecret', + type: 'string', + defaultValue: '', + }, + { + client: 'twitter', + name: 'twitterAccessToken', + type: 'string', + defaultValue: '', + }, + { + client: 'twitter', + name: 'twitterAccessTokenSecret', + type: 'string', + defaultValue: '', + }, + { + client: 'twitter', + name: 'ngrokToken', + type: 'string', + defaultValue: '', + }, + { + client: 'twitter', + name: 'twitterWebhookPort', + type: 'string', + defaultValue: '3002', + }, + { + client: 'twitter', + name: 'twitterID', + type: 'string', + defaultValue: '', + }, + { + client: 'twitter', + name: 'twitterBearerToken', + type: 'string', + defaultValue: '', + }, + { + client: 'twitter', + name: 'twitterTweetRules', + type: 'string', + defaultValue: 'digital,being,digital being', + }, + { + client: 'discord', + name: 'loadDiscordLogger', + type: 'string', + defaultValue: false, + }, + { + client: 'twilio', + name: 'twilioAccountSID', + type: 'string', + defaultValue: '', + }, + { + client: 'twilio', + name: 'twiolioPhoneNumber', + type: 'string', + defaultValue: '', + }, + { + client: 'twilio', + name: 'twiolioAuthToken', + type: 'string', + defaultValue: '', + }, + { + client: 'twilio', + name: 'twiolioPhoneNumber', + type: 'string', + defaultValue: '', + }, + { + client: 'telegram', + name: 'telegramBotToken', + type: 'string', + defaultValue: '', + }, + { + client: 'xr-engine', + name: 'xrEngineURL', + type: 'string', + defaultValue: 'https://dev.theoverlay.io/location/bot', + }, + { + client: 'whatsapp', + name: 'whatsappBotName', + type: 'string', + defaultValue: '', + }, + { + client: 'harmony', + name: 'harmonyURL', + type: 'string', + defaultValue: '', + }, + { + client: 'zoom', + name: 'zoomInvitationLink', + type: 'string', + defaultValue: '', + }, + { + client: 'zoom', + name: 'zoomPassword', + type: 'string', + defaultValue: '', + }, + { + client: 'messenger', + name: 'messengertoken', + type: 'string', + defaultValue: '', + }, + { + client: 'messenger', + name: 'messengerVerifyToken', + type: 'string', + defaultValue: '', + }, + { + client: 'reddit', + name: 'redditAppID', + type: 'string', + defaultValue: '', + }, + { + client: 'reddit', + name: 'redditAppSecretID', + type: 'string', + defaultValue: '', + }, + { + client: 'reddit', + name: 'redditUsername', + type: 'string', + defaultValue: '', + }, + { + client: 'reddit', + name: 'redditPassword', + type: 'string', + defaultValue: '', + }, + { + client: 'reddit', + name: 'redditOAthToken', + type: 'string', + defaultValue: '', + }, + { + client: 'instagram', + name: 'instagramUsername', + type: 'string', + defaultValue: '', + }, + { + client: 'instagram', + name: 'instagramPassword', + type: 'string', + defaultValue: '', + }, +] + +export default apiKeys diff --git a/client/src/data/config/configData.ts b/client/src/data/config/configData.ts new file mode 100644 index 000000000..ca93951fa --- /dev/null +++ b/client/src/data/config/configData.ts @@ -0,0 +1,86 @@ +const data = { + ball: 'football', + + whatsappBotName: '', + + harmonyURL: '', + + zoomInvitationLink: '', + zoomPassword: '', + messengerToken: '', + + messengerVerifyToken: '', + + botNameRegex: '((?:digital|being)(?: |$))', + + chatHistoryMessagesCount: 20, + + botName: 'digital being', + + botNameHandler: 'digital being', + + digitalBeingsOnly: false, + redditAppID: '', + redditAppSecretID: '', + + redditUsername: '', + redditPassword: '', + + redditOAthToken: '', + instagramUsername: '', + instagramPassword: '', + fastMode: false, + + discord_calendar_channel: '', + discussion_channel_topics: 'Apples|Trees|Space|Universe', + use_logtail: false, + logtail_key: '', + initCalendar: false, + + enabledServices: 'Discord', + + agent: 'Thales', + + openai_api_key: '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', + + google_project_id: '', + + hf_api_token: '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', + + use_gptj: false, + + discord_api_token: '', + + twitterConsumerKey: '', + + twitterConsumerSecret: '', + + twitterAccessToken: '', + twitterAccessTokenSecret: '', + + ngrokToken: '', + twitterWebhookPort: 3002, + + twitterID: '', + + twitterBearerToken: '', + + twitterTweetRules: 'digital,being,digital being', + + loadDiscordLogger: false, + + editMessageMaxCount: 5, + + logDMUserID: '', + + twilioAccountSID: '', + + twiolioPhoneNumber: '', + + twiolioAuthToken: '', + + telegramBotToken: '', + + xrEngineURL: '', +} +export default data diff --git a/client/src/data/config/scopedata.ts b/client/src/data/config/scopedata.ts new file mode 100644 index 000000000..66ab890a0 --- /dev/null +++ b/client/src/data/config/scopedata.ts @@ -0,0 +1,268 @@ +const data = [ + { + table: '43 tables', + Fullsize: '1.8MB', + size: '792 KB', + count: 0, + }, + { + table: '_3d_world_understanding_prompt', + Fullsize: '16 KB', + size: '8 KB', + count: 0, + }, + { + table: 'actions', + Fullsize: '8 KB', + size: '0 Bytes', + count: 0, + }, + { + table: 'agent_config', + Fullsize: '48 KB', + size: '8 KB', + count: 0, + }, + { + table: 'agent_fact_summarization', + Fullsize: '48 KB', + size: '8 KB', + count: 0, + }, + { + table: 'agent_facts', + Fullsize: '72 KB', + size: '40 KB', + count: 3, + }, + { + table: 'agent_facts_archive', + Fullsize: '8 KB', + size: '0 Bytes', + count: 0, + }, + { + table: 'agents_instance', + Fullsize: '! KB', + size: '8 KB', + count: 0, + }, + { + table: 'agents', + Fullsize: '48 KB', + size: '8 KB', + count: 3, + }, + { + table: 'bad_words', + Fullsize: '80 KB', + size: '48 KB', + count: 0, + }, + { + table: 'blocked users', + Fullsize: '0 Bytes', + size: '0 Bytes', + count: 0, + }, + { + table: 'chat_history', + Fullsize: '8 KB', + size: '0 Bytes', + count: 0, + }, + { + table: 'client_settings', + Fullsize: '16 KB', + size: '8 KB', + count: 0, + }, + { + table: 'config', + Fullsize: '48 KB', + size: '8 KB', + count: 0, + }, + { + table: 'context', + Fullsize: '48KB', + size: '8 KB', + count: 0, + }, + { + table: 'conversation', + Fullsize: '368KB', + size: '336KB', + count: 20, + }, + { + table: 'dialogue', + Fullsize: '72 KB', + size: '40 KB', + count: 3, + }, + { + table: 'ethics', + Fullsize: '16 MB', + size: '8 KB', + count: 3, + }, + { + table: 'facts', + Fullsize: '8 KB', + size: '0 Bytes', + count: 0, + }, + { + table: 'ignored_keywords', + Fullsize: '48 KB', + size: '8 KB', + count: 0, + }, + { + table: 'keywords', + Fullsize: '48 KB', + size: '8 KB', + count: 0, + }, + { + table: 'leading_statements', + Fullsize: '16 KB', + size: '8 KB', + count: 0, + }, + { + table: 'meta', + Fullsize: '64 KB', + size: '24 KB', + count: 4, + }, + { + table: 'monologue', + Fullsize: '8 KB', + size: '0 Bytes', + count: 0, + }, + { + table: 'morals', + Fullsize: '48 KB', + size: '8 KB', + count: 0, + }, + { + table: 'needs_motivations', + Fullsize: '48 KB', + size: '16 KB', + count: 3, + }, + { + table: 'opinion_form_prompt', + Fullsize: '16 KB', + size: '8 KB', + count: 0, + }, + { + table: 'personality', + Fullsize: '48 KB', + size: '16 KB', + count: 3, + }, + { + table: 'personality_questions', + Fullsize: '48 KB', + size: '8 KB', + count: 0, + }, + { + table: 'profane_responses', + Fullsize: '48 KB', + size: '8 KB', + count: 0, + }, + { + table: 'rating', + Fullsize: '48 KB', + size: '8 KB', + count: 0, + }, + { + table: 'relationship_matrix', + Fullsize: '48 KB', + size: '8 KB', + count: 0, + }, + { + table: 'room', + Fullsize: '8 KB', + size: '0 Bytes', + count: 0, + }, + { + table: 'sensitive_phrases', + Fullsize: '16 KB', + size: '8 KB', + count: 0, + }, + { + table: 'sensitive_response', + Fullsize: '48 KB', + size: '8 KB', + count: 0, + }, + { + table: 'sensitive_words', + Fullsize: '16 KB', + size: '8 KB', + count: 0, + }, + { + table: 'speaker_fact_summarization', + Fullsize: '48 KB', + size: '8 KB', + count: 0, + }, + { + table: 'speaker_profan_responses', + Fullsize: '48 KB', + size: '8 KB', + count: 0, + }, + { + table: 'speaker_facts', + Fullsize: '16 KB', + size: '8 KB', + count: 0, + }, + { + table: 'speaker_facts_archive', + Fullsize: '8 KB', + size: '0 Bytes', + count: 0, + }, + { + table: 'speaker_model', + Fullsize: '8 KB', + size: '0 Bytes', + count: 0, + }, + { + table: 'starting_messages', + Fullsize: '48 kB', + size: '8 KB', + count: 0, + }, + { + table: 'wikipedia', + Fullsize: '96 KB', + size: '64 KB', + count: 0, + }, + { + table: 'xr_engine_room_prompt', + Fullsize: '16 KB', + size: '8 KB', + count: 0, + }, +] + +export default data diff --git a/client/src/data/graphs/default.ts b/client/src/data/graphs/default.ts new file mode 100644 index 000000000..ebcae1d77 --- /dev/null +++ b/client/src/data/graphs/default.ts @@ -0,0 +1,75 @@ +const graph = { + id: 'demo@0.1.0', + nodes: { + '124': { + id: 124, + data: { + name: 'default', + socketKey: '20c0d2db-1916-433f-88c6-69d3ae123217', + dataControls: { + name: { + expanded: true, + }, + }, + }, + inputs: {}, + outputs: { + trigger: { + connections: [], + }, + }, + position: [-1555.4724883179474, -132.7648214211178], + name: 'Module Trigger In', + }, + '232': { + id: 232, + data: { + playtestToggle: { + receivePlaytest: false, + outputs: [], + }, + socketKey: '9d61118c-3c5a-4379-9dae-41965e56207f', + text: 'Input text here', + dataControls: { + name: { + expanded: true, + }, + playtestToggle: { + expanded: true, + }, + }, + name: 'Input', + outputs: [], + }, + inputs: {}, + outputs: { + output: { + connections: [], + }, + }, + position: [-1554.8394720686588, -362.87500885530955], + name: 'Universal Input', + }, + '233': { + id: 233, + data: {}, + inputs: { + text: { + connections: [], + }, + trigger: { + connections: [], + }, + }, + outputs: { + trigger: { + connections: [], + }, + }, + position: [-828.9994593860473, -299.2588216155752], + name: 'Output', + }, + }, +} + +export default graph diff --git a/client/src/data/layouts/defaultLayout.json b/client/src/data/layouts/defaultLayout.json index a526a2fb5..0429eddc0 100644 --- a/client/src/data/layouts/defaultLayout.json +++ b/client/src/data/layouts/defaultLayout.json @@ -63,7 +63,7 @@ "children": [ { "type": "tabset", - "id": "#13", + "id": "#14", "weight": 50, "children": [ { @@ -72,11 +72,35 @@ "name": "Text Editor", "component": "textEditor" }, + { + "type": "tab", + "id": "", + "name": "Video Transcription", + "component": "videoTranscription" + }, { "type": "tab", "id": "#10", "name": "State Manager", "component": "stateManager" + }, + { + "type": "tab", + "id": "#12", + "name": "Ent Manager", + "component": "entityManager" + }, + { + "type": "tab", + "id": "#16", + "name": "Search Corpus", + "component": "searchCorpus" + }, + { + "type": "tab", + "id": "#19", + "name": "Event Manager", + "component": "eventManager" } ] }, diff --git a/client/src/database/models/moduleModel.ts.bak b/client/src/database/models/moduleModel.ts.bak index cb29430c9..e9ae17916 100644 --- a/client/src/database/models/moduleModel.ts.bak +++ b/client/src/database/models/moduleModel.ts.bak @@ -97,7 +97,7 @@ const loadModuleModel = db => { } const getSpellModules = async spell => { - const nodes = spell?.chain?.nodes || spell?.graph?.nodes + const nodes = spell?.graph?.nodes || spell?.graph?.nodes if (!nodes) return const moduleNames = Object.values(nodes) diff --git a/client/src/index.tsx b/client/src/index.tsx index c5e3d1dd2..72131d21c 100644 --- a/client/src/index.tsx +++ b/client/src/index.tsx @@ -12,17 +12,17 @@ import reportWebVitals from './reportWebVitals' import { persistor, store } from './state/store' ReactDOM.render( - - - - - + + + + + - - - - - , + + + + + , document.getElementById('root') ) diff --git a/client/src/screens/Admin/Layout/index.module.css.d.ts b/client/src/screens/Admin/Layout/index.module.css.d.ts new file mode 100644 index 000000000..10b0e3f92 --- /dev/null +++ b/client/src/screens/Admin/Layout/index.module.css.d.ts @@ -0,0 +1,7 @@ +// This file is automatically generated. +// Please do not change this file! +interface CssExports { + 'selected': string; +} +export const cssExports: CssExports; +export default cssExports; diff --git a/client/src/screens/Admin/Layout/index.tsx b/client/src/screens/Admin/Layout/index.tsx new file mode 100644 index 000000000..299d1074f --- /dev/null +++ b/client/src/screens/Admin/Layout/index.tsx @@ -0,0 +1,91 @@ +import Box from '@mui/material/Box' +import Drawer from '@mui/material/Drawer' +import AppBar from '@mui/material/AppBar' +import CssBaseline from '@mui/material/CssBaseline' +import Toolbar from '@mui/material/Toolbar' +import List from '@mui/material/List' +import Typography from '@mui/material/Typography' +import ListItem from '@mui/material/ListItem' +import ListItemIcon from '@mui/material/ListItemIcon' +import ListItemText from '@mui/material/ListItemText' +import InboxIcon from '@mui/icons-material/MoveToInbox' +import { Outlet } from 'react-router-dom' +import { styled } from '@mui/material/styles' +import { NavLink, useLocation } from 'react-router-dom' + +const drawerWidth = 240 + +const StyledLink = styled(NavLink)({ + textDecoration: 'none', + color: 'white', +}) + +const AdminDashboard = () => { + const location = useLocation() + return ( + + + theme.zIndex.drawer + 1 }} + > + + + Thoth + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) +} + +export default AdminDashboard diff --git a/client/src/screens/Admin/Scope.tsx b/client/src/screens/Admin/Scope.tsx new file mode 100644 index 000000000..2d212eb30 --- /dev/null +++ b/client/src/screens/Admin/Scope.tsx @@ -0,0 +1,176 @@ +import * as React from 'react' +import { styled } from '@mui/material/styles' +import Table from '@mui/material/Table' +import TableBody from '@mui/material/TableBody' +import TableCell, { tableCellClasses } from '@mui/material/TableCell' +import TableContainer from '@mui/material/TableContainer' +import TableHead from '@mui/material/TableHead' +import TableRow from '@mui/material/TableRow' +import Paper from '@mui/material/Paper' +import Checkbox from '@mui/material/Checkbox' +import data from '../../data/config/scopedata' +import Pagination from '@mui/material/Pagination' +import MoreHoriz from '@mui/icons-material/MoreHoriz' +import IconButton from '@mui/material/IconButton' +import FormControl from '@mui/material/FormControl' +import OutlinedInput from '@mui/material/OutlinedInput' +import Grid from '@mui/material/Grid' +import Button from '@mui/material/Button' +import Typography from '@mui/material/Typography' + +const StyledTableCell = styled(TableCell)(({ theme }) => ({ + [`&.${tableCellClasses.head}`]: { + backgroundColor: 'rgba(70, 70, 70, 0.95)', + color: theme.palette.common.white, + fontSize: 16, + }, + [`&.${tableCellClasses.body}`]: { + fontSize: 14, + }, +})) + +const StyledTableRow = styled(TableRow)(({ theme }) => ({ + '&:nth-of-type(odd)': { + // backgroundColor: theme.palette.action.hover, + }, + // hide last border + 'td, th': { + border: 0, + }, +})) + +// function createData( +// client: string, +// name: string, +// type: string, +// defaultValue: string +// ) { +// return { client, name, type, defaultValue } +// } + +const Container = styled(Grid)({ + marginBottom: '1.5rem', +}) + +const ButtonCustom = styled(Button)({ + background: '#424242', + color: '#fff', + border: '1px solid #636363', + '&:hover': { + background: '#424242', + }, +}) + +const OutlineButton = styled(Button)({ + color: '#fff', + border: '2px solid #636363', + '&:hover': { + border: '1px solid #636363', + }, +}) + +export default function ScopeTable() { + const [page, setPage] = React.useState(1) + // const rows = data.slice(0, 10) + const PER_PAGE = 10 + + const count = Math.ceil(data.length / PER_PAGE) + + const paginatedData = data.slice((page - 1) * PER_PAGE, page * PER_PAGE) + const handleChangePage = (event: unknown, newPage: number) => { + setPage(newPage) + } + + // const handleChangeRowsPerPage = (event: React.ChangeEvent) => { + // setRowsPerPage(parseInt(event.target.value, 10)); + // setPage(0); + // }; + + return ( +
+ + Scope + + + + + These are all the scopes you have created + + + + + Add Scope + + + + + + + + + + + + + Filter + + + + + + + + Select + Tables + Full table size + Table size + Record count + Action + + + + {paginatedData.map(row => ( + + + + + {row.table} + {row.Fullsize} + {row.size} + {row.count} + + + + + + + + ))} + +
+
+ +
+ +
+
+ ) +} diff --git a/client/src/screens/Admin/Tables.tsx b/client/src/screens/Admin/Tables.tsx new file mode 100644 index 000000000..8f80b0056 --- /dev/null +++ b/client/src/screens/Admin/Tables.tsx @@ -0,0 +1,174 @@ +import * as React from 'react' +import { styled } from '@mui/material/styles' +import Table from '@mui/material/Table' +import TableBody from '@mui/material/TableBody' +import TableCell, { tableCellClasses } from '@mui/material/TableCell' +import TableContainer from '@mui/material/TableContainer' +import TableHead from '@mui/material/TableHead' +import TableRow from '@mui/material/TableRow' +import Paper from '@mui/material/Paper' +import Checkbox from '@mui/material/Checkbox' +import data from '../../data/config/clientSettings' +import Pagination from '@mui/material/Pagination' +import MoreHoriz from '@mui/icons-material/MoreHoriz' +import IconButton from '@mui/material/IconButton' +import FormControl from '@mui/material/FormControl' +import OutlinedInput from '@mui/material/OutlinedInput' +import Grid from '@mui/material/Grid' +import Button from '@mui/material/Button' +import Typography from '@mui/material/Typography' + +const StyledTableCell = styled(TableCell)(({ theme }) => ({ + [`&.${tableCellClasses.head}`]: { + backgroundColor: 'rgba(70, 70, 70, 0.95)', + color: theme.palette.common.white, + fontSize: 16, + }, + [`&.${tableCellClasses.body}`]: { + fontSize: 14, + }, +})) + +const StyledTableRow = styled(TableRow)(({ theme }) => ({ + '&:nth-of-type(odd)': { + // backgroundColor: theme.palette.action.hover, + }, + // hide last border + 'td, th': { + border: 0, + }, +})) + +const Container = styled(Grid)({ + marginBottom: '1.5rem', +}) + +const ButtonCustom = styled(Button)({ + background: '#424242', + color: '#fff', + border: '1px solid #636363', + '&:hover': { + background: '#424242', + }, +}) + +const OutlineButton = styled(Button)({ + color: '#fff', + border: '2px solid #636363', + '&:hover': { + border: '1px solid #636363', + }, +}) + +// function createData( +// client: string, +// name: string, +// type: string, +// defaultValue: string +// ) { +// return { client, name, type, defaultValue } +// } + +const rows = data.slice(0, 10) + +export default function CustomizedTables() { + const [page, setPage] = React.useState(0) + + const handleChangePage = (event: unknown, newPage: number) => { + setPage(newPage) + } + + // const handleChangeRowsPerPage = (event: React.ChangeEvent) => { + // setRowsPerPage(parseInt(event.target.value, 10)); + // setPage(0); + // }; + + return ( +
+ + Client Settings + + + + + These are all the Client settings you have created + + + + + Add Setting + + + + + + + + + + + + + Filter + + + + + + + + Select + Client + Name + Type + Default Value + Action + + + + {rows.map(row => ( + + + + + {row.client} + {row.name} + {row.type} + + {row.defaultValue} + + + + + + + + ))} + +
+
+ +
+ +
+
+ ) +} diff --git a/client/src/screens/Admin/configTable.tsx b/client/src/screens/Admin/configTable.tsx new file mode 100644 index 000000000..98d4ec7e5 --- /dev/null +++ b/client/src/screens/Admin/configTable.tsx @@ -0,0 +1,173 @@ +import * as React from 'react' +import { styled } from '@mui/material/styles' +import Table from '@mui/material/Table' +import TableBody from '@mui/material/TableBody' +import TableCell, { tableCellClasses } from '@mui/material/TableCell' +import TableContainer from '@mui/material/TableContainer' +import TableHead from '@mui/material/TableHead' +import TableRow from '@mui/material/TableRow' +import Paper from '@mui/material/Paper' +import Checkbox from '@mui/material/Checkbox' +import data from '../../data/config/configData' +import Pagination from '@mui/material/Pagination' +import MoreHoriz from '@mui/icons-material/MoreHoriz' +import IconButton from '@mui/material/IconButton' +import FormControl from '@mui/material/FormControl' +import OutlinedInput from '@mui/material/OutlinedInput' +import Grid from '@mui/material/Grid' +import Button from '@mui/material/Button' +import Typography from '@mui/material/Typography' + +const StyledTableCell = styled(TableCell)(({ theme }) => ({ + [`&.${tableCellClasses.head}`]: { + backgroundColor: 'rgba(70, 70, 70, 0.95)', + color: theme.palette.common.white, + fontSize: 16, + }, + [`&.${tableCellClasses.body}`]: { + fontSize: 14, + }, +})) + +const StyledTableRow = styled(TableRow)(({ theme }) => ({ + '&:nth-of-type(odd)': { + // backgroundColor: theme.palette.action.hover, + }, + // hide last border + 'td, th': { + border: 0, + }, +})) + +// function createData( +// client: string, +// name: string, +// type: string, +// defaultValue: string +// ) { +// return { client, name, type, defaultValue } +// } + +const Container = styled(Grid)({ + marginBottom: '1.5rem', +}) + +const ButtonCustom = styled(Button)({ + background: '#424242', + color: '#fff', + border: '1px solid #636363', + '&:hover': { + background: '#424242', + }, +}) + +const OutlineButton = styled(Button)({ + color: '#fff', + border: '2px solid #636363', + '&:hover': { + border: '1px solid #636363', + }, +}) + +export default function ConfigTable() { + const [page, setPage] = React.useState(1) + + const rows = Object.entries(data) + const PER_PAGE = 10 + + const count = Math.ceil(rows.length / PER_PAGE) + + const paginatedData = rows.slice((page - 1) * PER_PAGE, page * PER_PAGE) + + const handleChangePage = (event: unknown, newPage: number) => { + setPage(newPage) + } + + // const handleChangeRowsPerPage = (event: React.ChangeEvent) => { + // setRowsPerPage(parseInt(event.target.value, 10)); + // setPage(0); + // }; + + return ( +
+ + Configuration + + + + + These are all the Configurations you have created + + + + + Add Config + + + + + + + + + + + + + Filter + + + + + + + + Select + Key + Value + Action + + + + {paginatedData.map(([key, val], i) => ( + + + + + {key} + {val} + + + + + + + ))} + +
+
+ +
+ +
+
+ ) +} diff --git a/client/src/screens/Admin/routes/index.tsx b/client/src/screens/Admin/routes/index.tsx new file mode 100644 index 000000000..98f1c8ea7 --- /dev/null +++ b/client/src/screens/Admin/routes/index.tsx @@ -0,0 +1,18 @@ +import { Routes, Route } from 'react-router-dom' +import AdminLayout from '../Layout' +import Scope from '../Scope' +import ClientSetting from '../Tables' +import Config from '../configTable' + +export default function AdminRoute() { + return ( + + }> + } /> + } /> + } /> + } /> + + + ) +} diff --git a/client/src/screens/HomeScreen/HomeScreen.tsx b/client/src/screens/HomeScreen/HomeScreen.tsx index 85ccfba4d..232f779b0 100644 --- a/client/src/screens/HomeScreen/HomeScreen.tsx +++ b/client/src/screens/HomeScreen/HomeScreen.tsx @@ -11,8 +11,10 @@ import CreateNew from './screens/CreateNew' import OpenProject from './screens/OpenProject' import css from './homeScreen.module.css' import LoadingScreen from '../../components/LoadingScreen/LoadingScreen' -import { closeTab, openTab } from '@/state/tabs' -import { useDispatch } from 'react-redux' +import { closeTab, openTab, selectAllTabs } from '@/state/tabs' +import { useDispatch, useSelector } from 'react-redux' +import { RootState } from '@/state/store' +import { useAuth } from '@/contexts/AuthProvider' //MAIN @@ -20,24 +22,28 @@ const StartScreen = () => { const dispatch = useDispatch() const navigate = useNavigate() - + const { user } = useAuth() const [deleteSpell] = useDeleteSpellMutation() - const { data: spells } = useGetSpellsQuery() + const { data: spells } = useGetSpellsQuery(user?.id as string) const [newSpell] = useNewSpellMutation() + const tabs = useSelector((state: RootState) => selectAllTabs(state.tabs)) + const onReaderLoad = async event => { const spellData = JSON.parse(event.target.result) - if (spellData.graph) { - spellData.chain = spellData.graph + /* This part deletes the graph key from the spelldata, which causes the spell to not be imported */ + /* if (spellData.graph) { + spellData.graph = spellData.graph delete spellData.graph - } + } */ // TODO check for proper values here and throw errors // Create new spell await newSpell({ - chain: spellData.chain, + graph: spellData.graph, name: spellData.name, gameState: spellData.gameState, + user: user?.id }) dispatch( @@ -59,8 +65,9 @@ const StartScreen = () => { const onDelete = async spellId => { try { - await deleteSpell(spellId) - dispatch(closeTab(spellId)) + await deleteSpell({ spellId, userId: user?.id as string }) + const [tab] = tabs.filter(tab => tab.spellId === spellId) + dispatch(closeTab(tab.id)) } catch (err) { console.log('Error deleting spell', err) } diff --git a/client/src/screens/HomeScreen/components/VideoInput.jsx b/client/src/screens/HomeScreen/components/VideoInput.jsx new file mode 100644 index 000000000..a5b062246 --- /dev/null +++ b/client/src/screens/HomeScreen/components/VideoInput.jsx @@ -0,0 +1,33 @@ +import React from 'react' + +import Icon from '../../../components/Icon/Icon' + +const VideoInput = ({ loadFile }) => { + const hiddenFileInput = React.useRef(null) + + const handleClick = () => { + hiddenFileInput.current.click() + } + + const handleChange = event => { + const fileUploaded = event.target.files[0] + loadFile(fileUploaded) + } + return ( + <> + + + + ) +} + +export default VideoInput diff --git a/client/src/screens/HomeScreen/screens/CreateNew.tsx b/client/src/screens/HomeScreen/screens/CreateNew.tsx index d09683506..fc1951002 100644 --- a/client/src/screens/HomeScreen/screens/CreateNew.tsx +++ b/client/src/screens/HomeScreen/screens/CreateNew.tsx @@ -15,8 +15,9 @@ import enkiImg from '../enki.png' import langImg from '../lang.png' import css from '../homeScreen.module.css' import TemplatePanel from '../components/TemplatePanel' -import defaultChain from '../../../data/chains/default' -import { ChainData } from '@latitudegames/thoth-core/types' +import defaultGraph from '../../../data/graphs/default' +import { GraphData } from '@latitudegames/thoth-core/types' +import { useAuth } from '@/contexts/AuthProvider' const customConfig = { dictionaries: [adjectives, colors], @@ -27,13 +28,13 @@ const customConfig = { export type Template = { label: string bg: string - chain: ChainData + graph: GraphData } export const thothTemplates = [ - { label: 'Starter', bg: emptyImg, chain: defaultChain }, - { label: 'Language example', bg: langImg, chain: defaultChain }, - { label: 'Enki example', bg: enkiImg, chain: defaultChain }, + { label: 'Starter', bg: emptyImg, graph: defaultGraph }, + { label: 'Language example', bg: langImg, graph: defaultGraph }, + { label: 'Enki example', bg: enkiImg, graph: defaultGraph }, ] const CreateNew = () => { @@ -45,7 +46,7 @@ const CreateNew = () => { const { enqueueSnackbar } = useSnackbar() const navigate = useNavigate() const [newSpell] = useNewSpellMutation() - + const { user } = useAuth() const { register, handleSubmit, @@ -57,8 +58,9 @@ const CreateNew = () => { const placeholderName = uniqueNamesGenerator(customConfig) const name = data.name || placeholderName const response = await newSpell({ - chain: selectedTemplate?.chain, + graph: selectedTemplate?.graph, name, + user: user?.id }) if ('error' in response) { diff --git a/client/src/screens/HomeScreen/screens/OpenProject.tsx b/client/src/screens/HomeScreen/screens/OpenProject.tsx index 8ee7a4737..d9d21eb37 100644 --- a/client/src/screens/HomeScreen/screens/OpenProject.tsx +++ b/client/src/screens/HomeScreen/screens/OpenProject.tsx @@ -10,7 +10,7 @@ import { useSelector } from 'react-redux' import { selectAllTabs } from '@/state/tabs' import { RootState } from '@/state/store' -const getThothVersion = () => '0.0.1' +const getThothVersion = () => '1' const OpenProject = ({ spells, diff --git a/client/src/screens/HomeScreen/screens/spells/default.ts b/client/src/screens/HomeScreen/screens/spells/default.ts new file mode 100644 index 000000000..ebcae1d77 --- /dev/null +++ b/client/src/screens/HomeScreen/screens/spells/default.ts @@ -0,0 +1,75 @@ +const graph = { + id: 'demo@0.1.0', + nodes: { + '124': { + id: 124, + data: { + name: 'default', + socketKey: '20c0d2db-1916-433f-88c6-69d3ae123217', + dataControls: { + name: { + expanded: true, + }, + }, + }, + inputs: {}, + outputs: { + trigger: { + connections: [], + }, + }, + position: [-1555.4724883179474, -132.7648214211178], + name: 'Module Trigger In', + }, + '232': { + id: 232, + data: { + playtestToggle: { + receivePlaytest: false, + outputs: [], + }, + socketKey: '9d61118c-3c5a-4379-9dae-41965e56207f', + text: 'Input text here', + dataControls: { + name: { + expanded: true, + }, + playtestToggle: { + expanded: true, + }, + }, + name: 'Input', + outputs: [], + }, + inputs: {}, + outputs: { + output: { + connections: [], + }, + }, + position: [-1554.8394720686588, -362.87500885530955], + name: 'Universal Input', + }, + '233': { + id: 233, + data: {}, + inputs: { + text: { + connections: [], + }, + trigger: { + connections: [], + }, + }, + outputs: { + trigger: { + connections: [], + }, + }, + position: [-828.9994593860473, -299.2588216155752], + name: 'Output', + }, + }, +} + +export default graph diff --git a/client/src/screens/Thoth/Thoth.tsx b/client/src/screens/Thoth/Thoth.tsx index df51a865c..34876e522 100644 --- a/client/src/screens/Thoth/Thoth.tsx +++ b/client/src/screens/Thoth/Thoth.tsx @@ -1,5 +1,5 @@ import { RootState } from '@/state/store' -import { activeTabSelector, selectAllTabs, openTab } from '@/state/tabs' +import { activeTabSelector, selectAllTabs, openTab, closeTab } from '@/state/tabs' import { useEffect } from 'react' import { useHotkeys } from 'react-hotkeys-hook' import { useDispatch, useSelector } from 'react-redux' @@ -36,6 +36,14 @@ const Thoth = ({ empty = false }) => { useEffect(() => { if (!spellName) return + // Return if navigating to the spell that is already active + if(activeTab && activeTab.spellId === spellName) return + + // Close spell tab if it is exists + let spellNameTab = tabs.filter(tab => tab.spellId === spellName) + let isSpellNameTabPresent = spellNameTab.length + if(isSpellNameTabPresent) dispatch(closeTab(spellNameTab[0].id)) + dispatch( openTab({ spellId: spellName, @@ -47,7 +55,26 @@ const Thoth = ({ empty = false }) => { }, [spellName]) useHotkeys( - 'Option+Delete', + 'Control+z', + () => { + if (!pubSub || !activeTab) return + + publish(events.$UNDO(activeTab.id)) + }, + [pubSub, activeTab] + ) + + useHotkeys( + 'Control+Shift+z', + () => { + if (!pubSub || !activeTab) return + publish(events.$REDO(activeTab.id)) + }, + [pubSub, activeTab] + ) + + useHotkeys( + 'Control+Delete', () => { if (!pubSub || !activeTab) return publish(events.$DELETE(activeTab.id)) diff --git a/client/src/screens/Thoth/components/EventHandler.tsx b/client/src/screens/Thoth/components/EventHandler.tsx index db96c05fa..b9a462c13 100644 --- a/client/src/screens/Thoth/components/EventHandler.tsx +++ b/client/src/screens/Thoth/components/EventHandler.tsx @@ -1,5 +1,5 @@ import { useEffect, useRef } from 'react' -import { ChainData, Spell } from '@latitudegames/thoth-core/dist/types' +import { GraphData, Spell } from '@latitudegames/thoth-core/types' import { uniqueNamesGenerator, @@ -12,12 +12,13 @@ import { useGetSpellQuery, useSaveDiffMutation, } from '../../../state/api/spells' -import { useEditor } from '../../../workspaces/contexts/EditorProvider' import { useLayout } from '../../../workspaces/contexts/LayoutProvider' +import { useEditor } from '../../../workspaces/contexts/EditorProvider' import { diff } from '@/utils/json0' import { useSnackbar } from 'notistack' import { sharedb } from '@/config' import { useSharedb } from '@/contexts/SharedbProvider' +import { useAuth } from '@/contexts/AuthProvider' // Config for unique name generator const customConfig = { @@ -34,7 +35,11 @@ const EventHandler = ({ pubSub, tab }) => { const [saveSpellMutation] = useSaveSpellMutation() const [saveDiff] = useSaveDiffMutation() - const { data: spell } = useGetSpellQuery(tab.spellId) + const { user } = useAuth() + const { data: spell } = useGetSpellQuery({ + spellId: tab.spellId, + userId: user?.id as string, + }) // Spell ref because callbacks cant hold values from state without them const spellRef = useRef(null) @@ -55,9 +60,12 @@ const EventHandler = ({ pubSub, tab }) => { $SAVE_SPELL, $SAVE_SPELL_DIFF, $CREATE_STATE_MANAGER, + $CREATE_SEARCH_CORPUS, + $CREATE_ENT_MANAGER, $CREATE_PLAYTEST, $CREATE_INSPECTOR, $CREATE_CONSOLE, + $CREATE_EVENT_MANAGER, $CREATE_TEXT_EDITOR, $SERIALIZE, $EXPORT, @@ -67,9 +75,9 @@ const EventHandler = ({ pubSub, tab }) => { const saveSpell = async () => { const currentSpell = spellRef.current - const chain = serialize() as ChainData + const graph = serialize() as GraphData - await saveSpellMutation({ ...currentSpell, chain }) + await saveSpellMutation({ ...currentSpell, graph, user: user?.id }) } const sharedbDiff = async (event, update) => { @@ -125,6 +133,14 @@ const EventHandler = ({ pubSub, tab }) => { createOrFocus(windowTypes.STATE_MANAGER, 'State Manager') } + const createSearchCorpus = () => { + createOrFocus(windowTypes.SEARCH_CORPUS, 'Search Corpus') + } + + const createEntityManager = () => { + createOrFocus(windowTypes.ENT_MANAGER, 'Ent Manager') + } + const createPlaytest = () => { createOrFocus(windowTypes.PLAYTEST, 'Playtest') } @@ -141,6 +157,10 @@ const EventHandler = ({ pubSub, tab }) => { createOrFocus(windowTypes.CONSOLE, 'Console') } + const createEventManager = () => { + createOrFocus(windowTypes.EVENT_MANAGER, 'Event Manager') + } + const onSerialize = () => { // eslint-disable-next-line no-console console.log(serialize()) @@ -168,7 +188,7 @@ const EventHandler = ({ pubSub, tab }) => { const onExport = async () => { // refetch spell from local DB to ensure it is the most up to date const spell = { ...spellRef.current } - spell.chain = serialize() as ChainData + spell.graph = serialize() as GraphData spell.name = uniqueNamesGenerator(customConfig) const json = JSON.stringify(spell) @@ -201,10 +221,13 @@ const EventHandler = ({ pubSub, tab }) => { const handlerMap = { [$SAVE_SPELL(tab.id)]: saveSpell, [$CREATE_STATE_MANAGER(tab.id)]: createStateManager, + [$CREATE_SEARCH_CORPUS(tab.id)]: createSearchCorpus, + [$CREATE_ENT_MANAGER(tab.id)]: createEntityManager, [$CREATE_PLAYTEST(tab.id)]: createPlaytest, [$CREATE_INSPECTOR(tab.id)]: createInspector, [$CREATE_TEXT_EDITOR(tab.id)]: createTextEditor, [$CREATE_CONSOLE(tab.id)]: createConsole, + [$CREATE_EVENT_MANAGER(tab.id)]: createEventManager, [$SERIALIZE(tab.id)]: onSerialize, [$EXPORT(tab.id)]: onExport, [$CLOSE_EDITOR(tab.id)]: onCloseEditor, diff --git a/client/src/screens/Thoth/thoth.module.css b/client/src/screens/Thoth/thoth.module.css index c8e73e2d3..1d65fd05e 100644 --- a/client/src/screens/Thoth/thoth.module.css +++ b/client/src/screens/Thoth/thoth.module.css @@ -124,3 +124,15 @@ flex-direction: row; gap: var(--extraSmall); } +.form-text-area { + color: #fff; + border-radius: 4px; + cursor: default; + background-color: var(--dark-2); + border: 1px solid var(--dark-3); + box-shadow: inset 0px 5px 5px rgba(0, 0, 0, 0.1); + flex: 1; + height: var(--c4); + margin-right: var(--extraSmall); + padding: var(--c2); +} diff --git a/client/src/screens/Thoth/thoth.module.css.d.ts b/client/src/screens/Thoth/thoth.module.css.d.ts index 4333bcc6a..802475a19 100644 --- a/client/src/screens/Thoth/thoth.module.css.d.ts +++ b/client/src/screens/Thoth/thoth.module.css.d.ts @@ -4,6 +4,7 @@ interface CssExports { 'active': string; 'bottom-container': string; 'code-editor': string; + 'form-text-area': string; 'node-bottom-container': string; 'node-grid': string; 'node-grid-item': string; diff --git a/client/src/speechUtils.d.ts b/client/src/speechUtils.d.ts new file mode 100644 index 000000000..f111f8035 --- /dev/null +++ b/client/src/speechUtils.d.ts @@ -0,0 +1,26 @@ +export declare class singleton { + static instance: speechUtils; + static getInstance(): speechUtils; +} +declare class speechUtils { + bufferSize: number; + AudioContext: any; + context: any; + processor: any; + input: any; + globalStream: any; + finalWord: boolean; + removeLastSentence: boolean; + streamStreaming: boolean; + constraints: { + audio: boolean; + video: boolean; + }; + socket: import("socket.io-client").Socket; + constructor(); + initRecording: (newMessageCallback: Function) => void; + microphoneProcess: (e: any) => void; + stopRecording: () => void; + downsampleBuffer: (buffer: any, sampleRate: any, outSampleRate: any) => any; +} +export default singleton; diff --git a/client/src/speechUtils.ts b/client/src/speechUtils.ts new file mode 100644 index 000000000..28d29aabb --- /dev/null +++ b/client/src/speechUtils.ts @@ -0,0 +1,159 @@ +/* eslint-disable prefer-const */ +/* eslint-disable no-console */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable no-invalid-this */ +import socketIOClient from 'socket.io-client' + +export class singleton { + static instance: speechUtils + + static getInstance() { + if (!singleton.instance) { + singleton.instance = new speechUtils() + } + + return singleton.instance + } +} + +class speechUtils { + bufferSize = 2048 + AudioContext: any + context: any + processor: any + input: any + globalStream: any + + finalWord = false + removeLastSentence = true + + streamStreaming = false + + constraints = { + audio: true, + video: false, + } + + socket + + constructor() { + this.socket = socketIOClient( + process.env.REACT_APP_SPEECH_SERVER_URL as string + ) + console.log( + 'connected to speach server at:', + process.env.REACT_APP_SPEECH_SERVER_URL, + ':', + this.socket.connected + ) + } + + initRecording = (newMessageCallback: Function) => { + console.log('init recording') + this.socket.emit('startGoogleCloudStream', '') + this.streamStreaming = true + this.AudioContext = + window.AudioContext || (window as any).webkitAudioContext + this.context = new AudioContext() + this.processor = this.context.createScriptProcessor(this.bufferSize, 1, 1) + this.processor.connect(this.context.destination) + this.context.resume() + + const handleSuccess = (stream: any) => { + this.globalStream = stream + this.input = this.context.createMediaStreamSource(stream) + this.input.connect(this.processor) + + this.processor.onaudioprocess = (e: any) => { + this.microphoneProcess(e) + } + } + + navigator.mediaDevices.getUserMedia(this.constraints).then(handleSuccess) + + this.socket.on('connect', () => { + console.log('connected to speech server') + this.socket.emit('join', 'connected') + }) + + this.socket.on('messages', (data: any) => { + console.log('messages', data) + console.log('messages: ', data) + }) + + this.socket.on('speechData', (data: any) => { + const dataFinal = undefined || data.results[0].isFinal + + if (dataFinal === true) { + let finalString = data.results[0].alternatives[0].transcript + console.log("Google Speech sent 'final' Sentence and it is:") + console.log(finalString) + newMessageCallback(finalString) + + this.finalWord = true + this.removeLastSentence = false + } + }) + } + + microphoneProcess = (e: any) => { + const left = e.inputBuffer.getChannelData(0) + const left16 = this.downsampleBuffer(left, 44100, 16000) + this.socket.emit('binaryData', left16) + } + + stopRecording = () => { + if (!this.streamStreaming) { + return + } + + this.streamStreaming = false + this.socket.emit('endGoogleCloudStream', '') + + let track = this.globalStream.getTracks()[0] + track.stop() + + this.input.disconnect(this.processor) + this.processor.disconnect(this.context.destination) + this.context.close().then(() => { + this.input = null + this.processor = null + this.context = null + this.AudioContext = null + }) + } + + downsampleBuffer = (buffer: any, sampleRate: any, outSampleRate: any) => { + if (outSampleRate == sampleRate) { + return buffer + } + if (outSampleRate > sampleRate) { + throw 'downsampling rate should be smaller than original sample rate' + } + const sampleRateRatio = sampleRate / outSampleRate + const newLength = Math.round(buffer.length / sampleRateRatio) + let result = new Int16Array(newLength) + let offsetResult = 0 + let offsetBuffer = 0 + while (offsetResult < result.length) { + const nextOffsetBuffer = Math.round((offsetResult + 1) * sampleRateRatio) + let accum = 0, + count = 0 + for ( + let i = offsetBuffer; + i < nextOffsetBuffer && i < buffer.length; + i++ + ) { + accum += buffer[i] + count++ + } + + result[offsetResult] = Math.min(1, accum / count) * 0x7fff + offsetResult++ + offsetBuffer = nextOffsetBuffer + } + return result.buffer + } +} + +export default singleton diff --git a/client/src/state/api/api.ts b/client/src/state/api/api.ts index 4f69f76a4..9d901673a 100644 --- a/client/src/state/api/api.ts +++ b/client/src/state/api/api.ts @@ -1,12 +1,11 @@ import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react' import { getAuthHeader } from '../../contexts/AuthProvider' -import { latitudeApiRootUrl } from '../../config' - +import { thothApiRootUrl } from '../../config' // initialize an empty api service that we'll inject endpoints into later as needed export const rootApi = createApi({ reducerPath: 'api', baseQuery: fetchBaseQuery({ - baseUrl: latitudeApiRootUrl, + baseUrl: thothApiRootUrl, prepareHeaders: async headers => { const authHeader = await getAuthHeader() if (authHeader?.Authorization) @@ -17,3 +16,6 @@ export const rootApi = createApi({ tagTypes: ['Spell', 'Spells', 'Version'], endpoints: () => ({}), }) + +console.log("rootApi is") +console.log(rootApi) \ No newline at end of file diff --git a/client/src/state/api/spells.ts b/client/src/state/api/spells.ts index bf707c95d..59b0eb6e3 100644 --- a/client/src/state/api/spells.ts +++ b/client/src/state/api/spells.ts @@ -3,7 +3,7 @@ import { FetchBaseQueryError } from '@reduxjs/toolkit/query/react' import { QueryReturnValue } from '@reduxjs/toolkit/dist/query/baseQueryTypes' import { rootApi } from './api' -import { ChainData, Spell } from '@latitudegames/thoth-core/types' +import { GraphData, Spell } from '@latitudegames/thoth-core/types' // function camelize(str) { // return str // .replace(/(?:^\w|[A-Z]|\b\w)/g, function (word, index) { @@ -22,11 +22,12 @@ export interface DeployedSpellVersion { message?: string versionName?: string url?: string - chain?: ChainData + graph?: GraphData } export interface DeployArgs { spellId: string + userId: string message: string } @@ -37,6 +38,7 @@ export interface GetDeployArgs { export interface PatchArgs { spellId: string + userId: string update: Partial } @@ -46,23 +48,32 @@ export interface RunSpell { inputs: Record } +export interface UserSpellArgs { + spellId: string + userId: string +} + export const spellApi = rootApi.injectEndpoints({ endpoints: builder => ({ - getSpells: builder.query({ + getSpells: builder.query({ providesTags: ['Spells'], - query: () => 'game/spells', + query: userId => ({ + url: `game/spells`, + params: { userId } + }), }), - getSpell: builder.query({ + getSpell: builder.query({ providesTags: ['Spell'], - query: spellId => { + query: ({ spellId, userId }) => { return { url: `game/spells/${spellId}`, + params: { userId } } }, }), runSpell: builder.mutation, RunSpell>({ query: ({ spellId, version = 'latest', inputs }) => ({ - url: `game/chains/${spellId}/${version}`, + url: `game/graphs/${spellId}/${version}`, method: 'POST', body: inputs, }), @@ -77,10 +88,11 @@ export const spellApi = rootApi.injectEndpoints({ saveSpell: builder.mutation, Partial | Spell>({ invalidatesTags: ['Spell'], // needed to use queryFn as query option didnt seem to allow async functions. - async queryFn(spell, { dispatch }, extraOptions, baseQuery) { + async queryFn({ user, ...spell }, { dispatch }, extraOptions, baseQuery) { const baseQueryOptions = { url: 'game/spells/save', body: spell, + params: { userId: user }, method: 'POST', } @@ -103,29 +115,32 @@ export const spellApi = rootApi.injectEndpoints({ }), patchSpell: builder.mutation({ invalidatesTags: ['Spell'], - query({ spellId, update }) { + query({ spellId, userId, update }) { return { url: `game/spells/${spellId}`, body: { ...update, }, + params: { userId }, method: 'PATCH', } }, }), - deleteSpell: builder.mutation({ + deleteSpell: builder.mutation({ invalidatesTags: ['Spells'], - query: spellId => ({ + query: ({ spellId, userId }) => ({ url: `game/spells/${spellId}`, + params: { userId }, method: 'DELETE', }), }), deploySpell: builder.mutation({ invalidatesTags: ['Version'], - query({ spellId, ...update }) { + query({ spellId, userId, ...update }) { return { url: `game/spells/${spellId}/deploy`, body: update, + params: { userId }, method: 'POST', } }, @@ -143,7 +158,7 @@ export const spellApi = rootApi.injectEndpoints({ }), }) -const selectSpellResults = spellApi.endpoints.getSpells.select() +const selectSpellResults = spellApi.endpoints.getSpells.select('') const emptySpells = [] export const selectAllSpells = createSelector( @@ -167,4 +182,4 @@ export const { } = spellApi export const useGetSpellSubscription = - spellApi.endpoints.getSpell.useLazyQuerySubscription + spellApi.endpoints.getSpell.useLazyQuerySubscription \ No newline at end of file diff --git a/client/src/state/gameState.ts b/client/src/state/gameState.ts new file mode 100644 index 000000000..6a48336f2 --- /dev/null +++ b/client/src/state/gameState.ts @@ -0,0 +1,78 @@ +// @ts-nocheck + +import { createDraftSafeSelector } from '@reduxjs/toolkit' +import { v4 as uuidv4 } from 'uuid' + +import { + createSlice, + // createSelector, + createEntityAdapter, +} from '@reduxjs/toolkit' + +export interface GameState { + id: string + state: Record + spellId: string +} + +const gameStateAdapater = createEntityAdapter() +const gameStateSelectors = gameStateAdapater.getSelectors() +const initialState = gameStateAdapater.getInitialState() + +const gameStateSlice = createSlice({ + name: 'gameState', + initialState, + reducers: { + setGameState: (state, action) => { + const gameState = selectGameStateBySpellId(state, action.payload.spellId) + + if (!gameState) { + gameStateAdapater.addOne(state, { id: uuidv4(), ...action.payload }) + } else { + const payload = { + id: gameState.id, + ...action.payload.state, + } + gameStateAdapater.setOne(state, payload) + } + }, + updateGameState: (state, action) => { + const gameState = selectGameStateBySpellId(state, action.payload.spellId) + + if (!gameState) { + gameStateAdapater.addOne(state, { id: uuidv4(), ...action.payload }) + } else { + const changes = { + state: { + ...gameState.state, + ...action.payload.state, + }, + } + gameStateAdapater.updateOne(state, { + id: gameState.id, + changes: changes, + }) + } + }, + createGameState: (state, action) => { + const newGameState = { + ...action.payload, + history: [], + } + + gameStateAdapater.addOne(state, newGameState) + }, + }, +}) + +export const selectGameStateBySpellId = createDraftSafeSelector( + [gameStateSelectors.selectAll, (_, spellId) => spellId], + (gameStates: GameState[], spellId) => { + return gameStates.find(state => state.spellId === spellId) + } +) + +export const { selectById } = gameStateSelectors +export const { updateGameState, createGameState, setGameState } = + gameStateSlice.actions +export default gameStateSlice.reducer diff --git a/client/src/state/tabs.ts b/client/src/state/tabs.ts index b040f1adb..eea9ec6c1 100644 --- a/client/src/state/tabs.ts +++ b/client/src/state/tabs.ts @@ -76,7 +76,7 @@ export const tabSlice = createSlice({ }) // Check if the tab is already open. - const existingTab = selectTabBySpellId(state, action.payload.spellId) + const existingTab = selectTabBySpellId(state) if (existingTab && !switchActive) return @@ -97,7 +97,7 @@ export const tabSlice = createSlice({ closeTab: tabAdapater.removeOne, switchTab: tabAdapater.updateOne, clearTabs: tabAdapater.removeAll, - saveTabLayout: (state, action) => {}, + saveTabLayout: (state, action) => { }, }, }) diff --git a/client/src/utils/huggingfaceHelper.js b/client/src/utils/huggingfaceHelper.js index b37f9d052..0ea73738f 100644 --- a/client/src/utils/huggingfaceHelper.js +++ b/client/src/utils/huggingfaceHelper.js @@ -1,14 +1,23 @@ +import axios from 'axios' + export const invokeInference = async (model, data) => { const API_TOKEN = process.env.REACT_APP_HUGGINGFACE_API_TOKEN - const response = await fetch( - `https://api-inference.huggingface.co/models/${model}`, - { - headers: { Authorization: `Bearer ${API_TOKEN}` }, - method: 'POST', - body: JSON.stringify(data), - } - ) - const result = await response.json() - return result + try { + const resp = await axios.post( + `https://api-inference.huggingface.co/models/${model}`, + data, + { + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${API_TOKEN}`, + }, + } + ) + const result = await resp.data + return result + } catch (error) { + console.error(error) + return { error: JSON.stringify(error) } + } } diff --git a/client/src/workspaces/contexts/EditorProvider.tsx b/client/src/workspaces/contexts/EditorProvider.tsx index 1273e6435..60e7bd5dc 100644 --- a/client/src/workspaces/contexts/EditorProvider.tsx +++ b/client/src/workspaces/contexts/EditorProvider.tsx @@ -1,10 +1,10 @@ -import { initEditor, zoomAt } from '@latitudegames/thoth-core' +import { initEditor } from '@latitudegames/thoth-core/src' import { - ChainData, + GraphData, EditorContext, Spell, ThothEditor, -} from '@latitudegames/thoth-core/dist/types' +} from '@latitudegames/thoth-core/types' import React, { useRef, useContext, @@ -20,6 +20,8 @@ import { MyNode } from '../../components/Node/Node' import gridimg from '@/grid.png' import { usePubSub } from '../../contexts/PubSubProvider' import { useThothInterface } from './ThothInterfaceProvider' +import { zoomAt } from '@latitudegames/thoth-core/src/plugins/areaPlugin/zoom-at' +import { useAuth } from '@/contexts/AuthProvider' export type ThothTab = { layoutJson: string @@ -33,26 +35,26 @@ export type ThothTab = { // TODO give better typing to the editor const Context = createContext({ - run: () => {}, + run: () => { }, getEditor: (): ThothEditor | null => null, editor: {} as ThothEditor | null, - serialize: (): ChainData | undefined => undefined, + serialize: (): GraphData | undefined => undefined, buildEditor: ( el: HTMLDivElement, // todo update this to use proper spell type spell: Spell | undefined, tab: ThothTab, reteInterface: EditorContext - ) => {}, - setEditor: (editor: any) => {}, - getNodeMap: () => {}, - getNodes: () => {}, - loadChain: (chain: any) => {}, - setContainer: () => {}, - undo: () => {}, - redo: () => {}, - del: () => {}, - centerNode: (nodeId: number): void => {}, + ) => { }, + setEditor: (editor: any) => { }, + getNodeMap: () => { }, + getNodes: () => { }, + loadGraph: (graph: any) => { }, + setContainer: () => { }, + undo: () => { }, + redo: () => { }, + del: () => { }, + centerNode: (nodeId: number): void => { }, }) export const useEditor = () => useContext(Context) @@ -90,7 +92,7 @@ const EditorProvider = ({ children }) => { if (tab.type === 'spell') { // copy spell in case it is read onl const spell = JSON.parse(JSON.stringify(_spell)) - newEditor.loadGraph(spell.chain) + newEditor.loadGraph(spell.graph) } if (tab.type === 'module') { @@ -139,7 +141,7 @@ const EditorProvider = ({ children }) => { return editor && Object.fromEntries(editor.components) } - const loadChain = graph => { + const loadGraph = graph => { if (!editorRef.current) return editorRef.current.loadGraph(graph) } @@ -156,7 +158,7 @@ const EditorProvider = ({ children }) => { buildEditor, getNodeMap, getNodes, - loadChain, + loadGraph, setEditor, getEditor, undo, @@ -170,6 +172,7 @@ const EditorProvider = ({ children }) => { } const RawEditor = ({ tab, children }) => { + const { user } = useAuth() const [getSpell, { data: spell, isLoading }] = useLazyGetSpellQuery() const [loaded, setLoaded] = useState(false) const { buildEditor } = useEditor() @@ -179,7 +182,10 @@ const RawEditor = ({ tab, children }) => { useEffect(() => { if (!tab) return - if (tab?.spellId) getSpell(tab.spellId) + if (tab?.spellId) getSpell({ + spellId: tab.spellId, + userId: user?.id as string + }) }, [tab]) if (!tab || (tab.type === 'spell' && (isLoading || !spell))) @@ -199,7 +205,7 @@ const RawEditor = ({ tab, children }) => { onDragOver={e => { e.preventDefault() }} - onDrop={e => {}} + onDrop={e => { }} >
{ @@ -219,4 +225,4 @@ export const Editor = React.memo(RawEditor) Editor.whyDidYouRender = false -export default EditorProvider +export default EditorProvider \ No newline at end of file diff --git a/client/src/workspaces/contexts/InspectorProvider.tsx b/client/src/workspaces/contexts/InspectorProvider.tsx index d06029dfb..85b39d42b 100644 --- a/client/src/workspaces/contexts/InspectorProvider.tsx +++ b/client/src/workspaces/contexts/InspectorProvider.tsx @@ -109,4 +109,4 @@ const InspectorProvider = ({ children, tab }) => { return {children} } -export default InspectorProvider +export default InspectorProvider \ No newline at end of file diff --git a/client/src/workspaces/contexts/ThothInterfaceProvider.tsx b/client/src/workspaces/contexts/ThothInterfaceProvider.tsx index 1e8403a92..e905fef5d 100644 --- a/client/src/workspaces/contexts/ThothInterfaceProvider.tsx +++ b/client/src/workspaces/contexts/ThothInterfaceProvider.tsx @@ -2,7 +2,7 @@ import { EditorContext, Spell, ThothWorkerInputs, -} from '@latitudegames/thoth-core/dist/types' +} from '@latitudegames/thoth-core/types' import { useContext, createContext, useRef, useEffect } from 'react' import { postEnkiCompletion } from '../../services/game-api/enki' @@ -11,6 +11,7 @@ import { invokeInference } from '../../utils/huggingfaceHelper' import { usePubSub } from '../../contexts/PubSubProvider' import { useFetchFromImageCacheMutation } from '@/state/api/visualGenerationsApi' import { useGetSpellQuery, useRunSpellMutation } from '@/state/api/spells' +import { useAuth } from '@/contexts/AuthProvider' /* Some notes here. The new rete provider, not to be confused with the old rete provider renamed to the editor provider, is designed to serve as the single source of truth for interfacing with the rete internal system. This unified interface will also allow us to replicate the same API in the server, where rete expects certain functions to exist but doesn't care what is behind these functions so long as they work. @@ -25,8 +26,12 @@ const ThothInterfaceProvider = ({ children, tab }) => { const { events, publish, subscribe } = usePubSub() const spellRef = useRef(null) const [fetchFromImageCache] = useFetchFromImageCacheMutation() + const { user } = useAuth() const [_runSpell] = useRunSpellMutation() - const { data: _spell } = useGetSpellQuery(tab.spellId, { + const { data: _spell } = useGetSpellQuery({ + spellId: tab.spellId, + userId: user?.id as string + }, { skip: !tab.spellId, }) @@ -135,7 +140,8 @@ const ThothInterfaceProvider = ({ children, tab }) => { const processCode = (code, inputs, data) => { const flattenedInputs = Object.entries(inputs as ThothWorkerInputs).reduce( (acc, [key, value]) => { - acc[key as string] = value[0] + // @ts-ignore + acc[key as string] = value[0] as any return acc }, {} as Record @@ -212,4 +218,4 @@ const ThothInterfaceProvider = ({ children, tab }) => { return {children} } -export default ThothInterfaceProvider +export default ThothInterfaceProvider \ No newline at end of file diff --git a/client/src/workspaces/spells/DataControls/DataControls.jsx b/client/src/workspaces/spells/DataControls/DataControls.jsx index f30d2e6f7..68a6641c6 100644 --- a/client/src/workspaces/spells/DataControls/DataControls.jsx +++ b/client/src/workspaces/spells/DataControls/DataControls.jsx @@ -40,7 +40,7 @@ const DataControls = ({ data, inspectorData, nodeId, - tab, + tab = null, }) => { if (!dataControls) return

No component selected

diff --git a/client/src/workspaces/spells/DataControls/SpellSelect.tsx b/client/src/workspaces/spells/DataControls/SpellSelect.tsx index 4c34c412e..00da6d666 100644 --- a/client/src/workspaces/spells/DataControls/SpellSelect.tsx +++ b/client/src/workspaces/spells/DataControls/SpellSelect.tsx @@ -9,15 +9,17 @@ import { useGetSpellsQuery, useNewSpellMutation, } from '@/state/api/spells' -import defaultChain from '@/data/chains/default' -import { ChainData } from '@latitudegames/thoth-core/types' +import defaultGraph from '@/data/graphs/default' +import { GraphData } from '@latitudegames/thoth-core/types' import { useEffect } from 'react' +import { useAuth } from '@/contexts/AuthProvider' -const SpellSelect = ({ control, updateData, initialValue, tab }) => { +const ModuleSelect = ({ control, updateData, initialValue }) => { const dispatch = useAppDispatch() const [getSpell, { data: spell }] = useLazyGetSpellQuery() - const { data: spells } = useGetSpellsQuery() + const { user } = useAuth() + const { data: spells } = useGetSpellsQuery(user?.id as string) const [newSpell] = useNewSpellMutation() const { enqueueSnackbar } = useSnackbar() @@ -27,23 +29,16 @@ const SpellSelect = ({ control, updateData, initialValue, tab }) => { useEffect(() => { if (!spell) return - // here we send the whole spell so the control can modify the nodes sockets. - // However, we only store the name of the spell after processing the full spell. update(spell) _openTab(spell) }, [spell]) const optionArray = () => { if (!spells) return - return ( - spells - // Make sure we don't allow someone to select the current spell as a submodule. No infinite loops. - .filter(spell => spell.name !== tab.id) - .map((spell, index) => ({ - value: spell.name, - label: spell.name, - })) - ) + return spells.map((module, index) => ({ + value: module.name, + label: module.name, + })) } const _openTab = async spell => { @@ -60,7 +55,10 @@ const SpellSelect = ({ control, updateData, initialValue, tab }) => { // TODO fix on change to handle loading a single spell const onChange = async ({ value }) => { - getSpell(value) + getSpell({ + spellId: value, + userId: user?.id as string + }) } const update = update => { @@ -71,10 +69,14 @@ const SpellSelect = ({ control, updateData, initialValue, tab }) => { try { await newSpell({ name: value, - chain: defaultChain as unknown as ChainData, + graph: defaultGraph as unknown as GraphData, + user: user?.id }) - getSpell(value) + getSpell({ + spellId: value, + userId: user?.id as string + }) } catch (err) { // eslint-disable-next-line no-console console.warn('Error creating module', err) @@ -85,7 +87,7 @@ const SpellSelect = ({ control, updateData, initialValue, tab }) => { } const noOptionsMessage = inputValue => { - return Start typing to find or creat a spell + return Start typing to create a module } const isValidNewOption = (inputValue, selectValue, selectOptions) => { @@ -113,4 +115,4 @@ const SpellSelect = ({ control, updateData, initialValue, tab }) => { ) } -export default SpellSelect +export default ModuleSelect diff --git a/client/src/workspaces/spells/index.tsx b/client/src/workspaces/spells/index.tsx index 0651310b7..c08015f3c 100644 --- a/client/src/workspaces/spells/index.tsx +++ b/client/src/workspaces/spells/index.tsx @@ -2,8 +2,9 @@ import { useEffect, useRef, useState } from 'react' import { useEditor } from '@/workspaces/contexts/EditorProvider' import { Layout } from '@/workspaces/contexts/LayoutProvider' -import { useLazyGetSpellQuery } from '@/state/api/spells' +import { useLazyGetSpellQuery, useSaveDiffMutation } from '@/state/api/spells' import { debounce } from '@/utils/debounce' +import { useSnackbar } from 'notistack' import EditorWindow from './windows/EditorWindow/' import EventHandler from '@/screens/Thoth/components/EventHandler' import Inspector from './windows/InspectorWindow' @@ -15,16 +16,25 @@ import { Spell } from '@latitudegames/thoth-core/types' import { usePubSub } from '@/contexts/PubSubProvider' import { useSharedb } from '@/contexts/SharedbProvider' import { sharedb } from '@/config' +import SearchCorpus from './windows/SearchCorpusWindow' +import EntityManagerWindow from './windows/EntityManagerWindow' +import { diff } from '@/utils/json0' +import EventManagerWindow from './windows/EventManager' +import { useAuth } from '@/contexts/AuthProvider' const Workspace = ({ tab, tabs, pubSub }) => { const spellRef = useRef() const { events, publish } = usePubSub() const { getSpellDoc } = useSharedb() + const { user } = useAuth() const [loadSpell, { data: spellData }] = useLazyGetSpellQuery() - const { serialize, editor } = useEditor() + const { editor } = useEditor() + const [saveDiff] = useSaveDiffMutation() const [docLoaded, setDocLoaded] = useState(false) + const { enqueueSnackbar } = useSnackbar() + // Set up autosave for the workspaces useEffect(() => { if (!editor?.on) return @@ -33,7 +43,25 @@ const Workspace = ({ tab, tabs, pubSub }) => { 'save nodecreated noderemoved connectioncreated connectionremoved nodetranslated commentremoved commentcreated addcomment removecomment editcomment connectionpath', debounce(async data => { if (tab.type === 'spell' && spellRef.current) { - publish(events.$SAVE_SPELL_DIFF(tab.id), { chain: serialize() }) + const jsonDiff = diff(spellRef.current?.graph, editor.toJSON()) + console.log('Saving diff', jsonDiff) + if (jsonDiff == [] || !jsonDiff) return + + const response = await saveDiff({ + name: spellRef.current.name, + diff: jsonDiff, + }) + loadSpell({ + spellId: tab.spellId, + userId: user?.id as string, + }) + + if ('error' in response) { + enqueueSnackbar('Error saving spell', { + variant: 'error', + }) + } + // publish(events.$SAVE_SPELL_DIFF(tab.id), { graph: serialize() }) } }, 1000) ) @@ -51,7 +79,7 @@ const Workspace = ({ tab, tabs, pubSub }) => { const event = events.$SUBSPELL_UPDATED(spellRef.current.name) const spell = { ...spellRef.current, - chain: editor.toJSON(), + graph: editor.toJSON(), } publish(event, spell) }) as Function @@ -73,8 +101,8 @@ const Workspace = ({ tab, tabs, pubSub }) => { doc.on('op batch', (op, origin) => { if (origin) return - console.log('UPDATED CHAIN', spellData.chain) - editor.loadGraph(doc.data.chain, true) + console.log('UPDATED GRAPH', spellData.graph) + editor.loadGraph(doc.data.graph, true) }) setDocLoaded(true) @@ -82,7 +110,10 @@ const Workspace = ({ tab, tabs, pubSub }) => { useEffect(() => { if (!tab || !tab.spellId) return - loadSpell(tab.spellId) + loadSpell({ + spellId: tab.spellId, + userId: user?.id as string, + }) }, [tab]) const factory = tab => { @@ -105,6 +136,12 @@ const Workspace = ({ tab, tabs, pubSub }) => { return case 'debugConsole': return + case 'searchCorpus': + return + case 'entityManager': + return + case 'eventManager': + return default: return

} diff --git a/client/src/workspaces/spells/windows/ContentObject.tsx b/client/src/workspaces/spells/windows/ContentObject.tsx new file mode 100644 index 000000000..90e40e724 --- /dev/null +++ b/client/src/workspaces/spells/windows/ContentObject.tsx @@ -0,0 +1,94 @@ +//@ts-nocheck +import { useEffect, useState } from 'react' +import { useModal } from '@/contexts/ModalProvider'; +import { VscWand, VscTrash, VscSave } from 'react-icons/vsc' +import axios from 'axios' +import { useModal } from '@/contexts/ModalProvider'; + +const ContentObject = ({ content, getContentObjects }) => { + const [contentObj, setContentObj] = useState({ + objId: content.id, + keywords: content.keywords, + description: content.description, + is_included: content.is_included, + documentId: content.document_id + }) + const { openModal } = useModal() + + const updateObj = async () => { + const body = { ...contentObj } + await axios.put(`${process.env.REACT_APP_SEARCH_SERVER_URL}/content-object`, body) + await getContentObjects() + } + const deleteObj = () => { + openModal({ + modal: 'documentDeleteModal', + isContentObj: true, + objId: content.id, + getContentObjects + }) + } + + return ( +
+
+
+ setContentObj({ + ...contentObj, + is_included: !contentObj.is_included + })} + /> + Include +
+
+ + +
+
+
+ Keywords +
+ setContentObj({ + ...contentObj, + keywords: e.target.value + })} + > +
+
+
+ Description +
+ setContentObj({ + ...contentObj, + description: e.target.value + })} + > +
+
+
+ Type + +
+
+ ); +} + +export default ContentObject; \ No newline at end of file diff --git a/client/src/workspaces/spells/windows/DebugConsole/index.tsx b/client/src/workspaces/spells/windows/DebugConsole/index.tsx index b441dd413..9e8f77013 100644 --- a/client/src/workspaces/spells/windows/DebugConsole/index.tsx +++ b/client/src/workspaces/spells/windows/DebugConsole/index.tsx @@ -36,13 +36,11 @@ const DebugConsole = ({ tab }) => { } const formatErrorMessage = message => - `> Node ${message.nodeId}: Error in ${message.from} component ${ - message.name ?? 'unnamed' + `> Node ${message.nodeId}: Error in ${message.from} component ${message.name ?? 'unnamed' }.` const formatLogMessage = message => - `> Node ${message.nodeId}: Message from ${message.from} component ${ - message.name ?? 'unnamed' + `> Node ${message.nodeId}: Message from ${message.from} component ${message.name ?? 'unnamed' }.` const Message = (message, type) => ( diff --git a/client/src/workspaces/spells/windows/EditorWindow/Deployment.tsx b/client/src/workspaces/spells/windows/EditorWindow/Deployment.tsx index eda8a15f3..61da79324 100644 --- a/client/src/workspaces/spells/windows/EditorWindow/Deployment.tsx +++ b/client/src/workspaces/spells/windows/EditorWindow/Deployment.tsx @@ -19,17 +19,22 @@ import { } from '@/state/api/spells' import { useEditor } from '@/workspaces/contexts/EditorProvider' import { latitudeApiRootUrl } from '@/config' +import { useAuth } from '@/contexts/AuthProvider' const DeploymentView = ({ open, setOpen, spellId, close }) => { const [loadingVersion, setLoadingVersion] = useState(false) - const { loadChain } = useEditor() + const { loadGraph } = useEditor() const { openModal, closeModal } = useModal() const { enqueueSnackbar } = useSnackbar() const [deploySpell] = useDeploySpellMutation() const [saveSpell] = useSaveSpellMutation() const [getDeplopyment, { data: deploymentData }] = useLazyGetDeploymentQuery() - const { data: spell } = useGetSpellQuery(spellId, { + const { user } = useAuth() + const { data: spell } = useGetSpellQuery({ + spellId: spellId, + userId: user?.id as string + }, { skip: !spellId, }) const name = spell?.name as string @@ -39,13 +44,13 @@ const DeploymentView = ({ open, setOpen, spellId, close }) => { const deploy = data => { if (!spell) return - deploySpell({ spellId: spell.name, ...data }) + deploySpell({ spellId: spell.name, userId: user?.id, ...data }) enqueueSnackbar('Spell deployed', { variant: 'success' }) } const buildUrl = version => { // return encodeURI(`${latitudeApiRootUrl}/games/spells/${spellId}/${version}`) - return encodeURI(`${latitudeApiRootUrl}/games/chains/${spellId}/${version}`) + return encodeURI(`${latitudeApiRootUrl}/games/graphs/${spellId}/${version}`) } const loadVersion = async version => { @@ -65,15 +70,15 @@ const DeploymentView = ({ open, setOpen, spellId, close }) => { useEffect(() => { if (!deploymentData || !loadingVersion) return - ;(async () => { - close() - await saveSpell({ ...spell, chain: deploymentData.chain }) - enqueueSnackbar(`version ${deploymentData.version} loaded!`, { - variant: 'success', - }) - setLoadingVersion(false) - loadChain(deploymentData.chain) - })() + ; (async () => { + close() + await saveSpell({ ...spell, graph: deploymentData.graph, user: user?.id }) + enqueueSnackbar(`version ${deploymentData.version} loaded!`, { + variant: 'success', + }) + setLoadingVersion(false) + loadGraph(deploymentData.graph) + })() }, [deploymentData, loadingVersion]) const copy = url => { @@ -150,9 +155,8 @@ const DeploymentView = ({ open, setOpen, spellId, close }) => { return ( { + setEnabled(e.target.checked) + }} + /> +
+
+ Voice Enabled + { + setUseVoice(e.target.checked) + }} + /> +
+ + {use_voice && ( + +
+ Voice Provider + +
+ +
+ Character + { + setVoiceCharacter(e.target.value) + }} + /> +
+ +
+ Language Code + { + setVoiceLanguageCode(e.target.value) + }} + /> +
+
+ )} + + {enabled && ( + <> +
+ Discord Enabled + { + setDiscordEnabled(e.target.checked) + }} + /> +
+ + {discord_enabled && ( + <> +
+ Discord API Key + { + setDiscordApiKey(e.target.value) + }} + /> +
+ +
+ Discord Starting Words + { + setDiscordStartingWords(e.target.value) + }} + /> +
+ +
+ Discord Bot Name Regex + { + setDiscordBotNameRegex(e.target.value) + }} + /> +
+ +
+ Discord Bot Name + { + setDiscordBotName(e.target.value) + }} + /> +
+ +
+ Discord Empty Responses + { + setDiscordEmptyResponses(e.target.value) + }} + /> +
+ +
+ + Spell Handler (Incoming Message Handler) + + +
+ +
+ Interval Update Handler + +
+ +
+ Event Feed Handler + +
+ + )} + +
+ XREngine Enabled + { + setxrengine_enabled(e.target.checked) + }} + /> +
+ + {xrengine_enabled && ( + <> +
+ Room URL + { + setXREngineUrl(e.target.value) + }} + /> +
+ +
+ Starting Words + { + setXREngineStartingWords(e.target.value) + }} + /> +
+ +
+ Bot Name Regex + { + setXREngineBotNameRegex(e.target.value) + }} + /> +
+ +
+ Bot Name + { + setXREngineBotName(e.target.value) + }} + /> +
+ +
+ Empty Responses + { + setXREngineEmptyResponses(e.target.value) + }} + /> +
+ +
+ + Spell Handler (Incoming Message Handler) + + +
+ +
+ Interval Update Handler + +
+ +
+ Event Feed Handler + +
+ + )} + +
+ Twitter Client Enabled + { + setTwitterClientEnable(e.target.checked) + }} + /> +
+ + {twitter_client_enable && ( + <> +
+ Bearer Token + { + setTwitterToken(e.target.value) + }} + /> +
+
+ Twitter ID + { + setTwitterId(e.target.value) + }} + /> +
+
+ Twitter App Token + { + setTwitterAppToken(e.target.value) + }} + /> +
+
+ + Twitter App Token Secret + + { + setTwitterAppTokenSecret(e.target.value) + }} + /> +
+
+ Twitter Access Token + { + setTwitterAccessToken(e.target.value) + }} + /> +
+
+ + Twitter Access Token Secret + + { + setTwitterAccessTokenSecret(e.target.value) + }} + /> +
+
+ Bot Name + { + setTwitterBotName(e.target.value) + }} + /> +
+
+ Bot Name Regex + { + setTwitterBotNameRegex(e.target.value) + }} + /> +
+ + )} + {/*
+ Twilio Client Enabled + { + setTwilioClientEnable(e.target.checked) + }} + /> +
*/} + + {/* {twilio_client_enable && + ( + <> +
+ Twilio Account SID + { + setTwilioSid(e.target.value) + }} + /> +
+
+ Twilio Auth Token + { + setTwilioAuthToken(e.target.value) + }} + /> +
+
+ Twilio Phone Number + { + setTwilioPhoneNumber(e.target.value) + }} + /> +
+ + ) + } */} + + )} +
+ + + +
+
+ ) +} + +export default EntityWindow diff --git a/client/src/workspaces/spells/windows/EventManager/EventTable.tsx b/client/src/workspaces/spells/windows/EventManager/EventTable.tsx new file mode 100644 index 000000000..109541ede --- /dev/null +++ b/client/src/workspaces/spells/windows/EventManager/EventTable.tsx @@ -0,0 +1,268 @@ +// @ts-nocheck +import { useEffect, useMemo, useState } from 'react' +import { + useAsyncDebounce, + useGlobalFilter, + useFilters, + usePagination, + useSortBy, + useTable +} from 'react-table' +import { + TableContainer, + Table, + TableHead, + TableBody, + TableRow, + TableCell, + Paper, + Pagination, + Stack, + IconButton, + Grid, +} from '@mui/material' +import { VscArrowDown, VscArrowUp, VscTrash } from 'react-icons/vsc' +import { FaFileCsv } from 'react-icons/fa' +import { useSnackbar } from 'notistack' +import axios from 'axios' +import _ from 'lodash' +import { CSVLink } from 'react-csv' + +const GlobalFilter = ({ globalFilter, setGlobalFilter }) => { + const [value, setValue] = useState(globalFilter) + const onChange = useAsyncDebounce((value) => { + setGlobalFilter(value || undefined) + }, 500) + return ( + { + setValue(e.target.value) + onChange(e.target.value) + }} + placeholder='Search events...' + style={{ width: '30%' }} + /> + ) +} + +const DefaultColumnFilter = ({ + column: { filterValue, setFilter, Header }, +}) => { + return ( + { + setFilter(e.target.value || undefined) + }} + placeholder={'Search ' + Header} + style={{ + width: '80%', + height: 'unset', + paddingTop: '4px', + paddingBottom: '4px' + }} + /> + ) +} + +function EventTable({ events, updateCallback }) { + const { enqueueSnackbar } = useSnackbar() + + const columns = useMemo(() => [ + { + Header: 'Agent', + accessor: 'agent', + disableSortBy: true + }, + { + Header: 'Client', + accessor: 'client', + disableSortBy: true + }, + { + Header: 'Sender', + accessor: 'sender', + disableSortBy: true + }, + { + Header: 'Text', + accessor: 'text', + disableSortBy: true + }, + { + Header: 'Type', + accessor: 'type', + disableSortBy: true + }, + { + Header: 'Channel', + accessor: 'channel', + disableSortBy: true + }, + { + Header: 'Date', + accessor: 'date', + disableFilters: true + }, + { + Header: 'Actions', + Cell: row => ( + handleEventDelete(row.row.original)}> + + + ) + }, + ], []) + + const updateEvent = async ({ id, ...rowData }, columnId, value) => { + let reqBody = { + ...rowData, + [columnId]: value + } + if(!_.isEqual(reqBody, rowData)) { + const isUpdated = await axios.put(`${process.env.REACT_APP_API_ROOT_URL}/event/${id}`, reqBody) + if(isUpdated) enqueueSnackbar('Event updated', { variant: 'success' }) + else enqueueSnackbar('Error updating event', { variant: 'error' }) + updateCallback() + } + } + + const EditableCell = ({ value, row: { original: row }, column: { id }, updateEvent }) => { + const [val, setVal] = useState(value) + const onChange = (e) => setVal(e.target.value) + const onBlur = (e) => updateEvent(row, id, val) + useEffect(() => setVal(value), [value]) + return + } + + const defaultColumn = { + Cell: EditableCell, + Filter: DefaultColumnFilter + } + + const { + getTableProps, + getTableBodyProps, + headerGroups, + page, + flatRows, + prepareRow, + pageOptions, + gotoPage, + setGlobalFilter, + state + } = useTable( + { + columns, + data: events, + defaultColumn, + updateEvent + }, + useFilters, + useGlobalFilter, + useSortBy, + usePagination + ) + + const handlePageChange = (page: number) => { + const pageIndex = page - 1 + gotoPage(pageIndex) + } + + const handleEventDelete = async (event: any) => { + console.log('event to delete ::: ', event); + const isDeleted = await axios.delete(`${process.env.REACT_APP_API_ROOT_URL}/event/${event.id}`) + if(isDeleted) enqueueSnackbar('Event deleted', { variant: 'success' }) + else enqueueSnackbar('Error deleting Event', { variant: 'error' }) + updateCallback() + } + + const originalRows = useMemo(() => flatRows.map(row => row.original), [flatRows]) + + return ( + + + + + + + + + + + + + + + + + {headerGroups.map((headerGroup, idx) => ( + + {headerGroup.headers.map((column, idx) => ( + + +
+ {column.render('Header')}{' '} + + {column.isSorted ? + column.isSortedDesc ? + + : + : ''} + +
+
+ {column.canFilter ? column.render('Filter') : null} +
+
+
+ ))} +
+ ))} +
+ + {page.map((row: Row, idx: number) => { + prepareRow(row) + return ( + + {row.cells.map((cell, idx) => ( + {cell.render('Cell')} + ))} + + ) + })} + +
+
+ handlePageChange(page)} + shape='rounded' + showFirstButton + showLastButton + /> +
+ ) +} + +export default EventTable \ No newline at end of file diff --git a/client/src/workspaces/spells/windows/EventManager/index.tsx b/client/src/workspaces/spells/windows/EventManager/index.tsx new file mode 100644 index 000000000..1b27b2a19 --- /dev/null +++ b/client/src/workspaces/spells/windows/EventManager/index.tsx @@ -0,0 +1,31 @@ +// @ts-nocheck +import { useEffect, useState } from 'react' +import axios from 'axios' +import EventTable from './EventTable' + +const EventManagerWindow = () => { + const [events, setEvents] = useState(null) + + useEffect(() => { + fetchEvents() + }, []) + + const resetEvents = async () => { + await fetchEvents() + } + + const fetchEvents = async () => { + const { data } = await axios.get(`${process.env.REACT_APP_API_ROOT_URL}/events`); + setEvents(data) + } + + return ( +
+ {events && ( + + )} +
+ ) +} + +export default EventManagerWindow \ No newline at end of file diff --git a/client/src/workspaces/spells/windows/InspectorWindow.tsx b/client/src/workspaces/spells/windows/InspectorWindow.tsx index 8571cca1b..a949ae285 100644 --- a/client/src/workspaces/spells/windows/InspectorWindow.tsx +++ b/client/src/workspaces/spells/windows/InspectorWindow.tsx @@ -7,8 +7,6 @@ import DataControls from '../DataControls' import WindowMessage from '../components/WindowMessage' import { useInspector } from '@/workspaces/contexts/InspectorProvider' import { InspectorData } from '@latitudegames/thoth-core/types' -import SwitchComponent from '@/components/Switch/Switch' -import css from '../../../components/Icon/icon.module.css' const Inspector = props => { const { inspectorData, saveInspector } = useInspector() @@ -58,22 +56,6 @@ const Inspector = props => { saveInspector(newData) } - const onLock = () => { - if (inspectorData?.data.nodeLocked && inspectorData?.category === 'I/O') { - openModal({ - modal: 'infoModal', - content: 'Editing this node could break connection with your app.', - title: 'Warning', - }) - } - - const data = { - nodeLocked: !inspectorData?.data.nodeLocked, - } - - updateData(data) - } - const toolbar = ( <>
@@ -83,11 +65,6 @@ const Inspector = props => { /> {inspectorData?.name}
- {/* I would like to make an "icon button" for this instead of "Help." Leaving it as help just for the function for now.*/} {inspectorData?.info && ( - + ) return (
- + (scrollbars.current = ref)} >
    {history.map(printItem)}
diff --git a/client/src/workspaces/spells/windows/SearchCorpusDocument.tsx b/client/src/workspaces/spells/windows/SearchCorpusDocument.tsx new file mode 100644 index 000000000..a9ec5091c --- /dev/null +++ b/client/src/workspaces/spells/windows/SearchCorpusDocument.tsx @@ -0,0 +1,164 @@ +//@ts-nocheck +import { useEffect, useState } from 'react' +import { useModal } from '@/contexts/ModalProvider'; +import { VscWand, VscTrash, VscSave } from 'react-icons/vsc' +import axios from 'axios' + +const SearchCorpusDocument = ({ document, getDoc }) => { + const [isInclude, setIsInclude] = useState(document.is_included) + const [contentObjects, setContentObjects] = useState(null) + const { openModal } = useModal() + + useEffect(async () => { + await getContentObjects() + }, []) + + const getContentObjects = async () => { + console.log('get documents store'); + const res = await axios.get( + `${process.env.REACT_APP_SEARCH_SERVER_URL}/content-object`, + { + params: { + documentId: document.id + } + } + ) + console.log('objects ::: ', res.data); + setContentObjects(res.data) + } + + const openAddModal = () => { + openModal({ + modal: 'documentAddModal', + isContentObject: true, + documentId: document.id, + getDocuments: getDoc, + getContentObjects + }) + } + + const openEditModal = (field: string) => { + openModal({ + modal: 'documentEditModal', + field, + document, + getDocuments: getDoc + }) + } + + const openDeleteModal = () => { + openModal({ + modal: 'documentDeleteModal', + documentId: document.id, + isContentObj: false, + getDocuments: getDoc + }) + } + + const openContentEditModal = () => { + openModal({ + modal: 'contentObjEditModal', + contents: contentObjects, + getContentObjects + }) + } + + const saveDocument = async () => { + const body = { + ...document, + documentId: document.id, + storeId: document.store_id, + is_included: isInclude + } + console.log('body ::: ', body); + await axios.post( + `${process.env.REACT_APP_SEARCH_SERVER_URL}/update_document`, + body + ) + await getDoc() + } + + return ( +
+
+
+ setIsInclude(!isInclude)} + /> + Include +
+
+ + +
+
+
+ Keywords +
+ + openEditModal('keywords')}/> +
+
+
+ Description +
+ + openEditModal('description')}/> +
+
+
+ Type + +
+ +
+ Content +
+ + +
+
+
+ ); +} + +export default SearchCorpusDocument; \ No newline at end of file diff --git a/client/src/workspaces/spells/windows/SearchCorpusWindow.tsx b/client/src/workspaces/spells/windows/SearchCorpusWindow.tsx new file mode 100644 index 000000000..555d40de2 --- /dev/null +++ b/client/src/workspaces/spells/windows/SearchCorpusWindow.tsx @@ -0,0 +1,159 @@ +//@ts-nocheck + +import axios from 'axios' +import React, { useEffect, useRef, useState } from 'react' +import { VscNewFile, VscTrash } from 'react-icons/vsc' +import { FaEdit } from 'react-icons/fa' +import SearchCorpusDocument from './SearchCorpusDocument' +import { useModal } from '@/contexts/ModalProvider' +import { store } from '@/state/store' + +const SearchCorpus = () => { + const [documentsStores, setDocumentsStores] = useState(null) + const { openModal } = useModal() + const storeRef = useRef(null) + const [documents, setDocuments] = useState([]) + + const add = async () => { + openModal({ + modal: 'documentAddModal', + storeId: storeRef.current.value, + isContentObject: false, + getDocuments, + }) + } + + const getDocumentsStores = async () => { + console.log('get documents store') + const res = await axios.get( + `${process.env.REACT_APP_SEARCH_SERVER_URL}/document-store` + ) + console.log('stores ::: ', res.data) + setDocumentsStores(res.data) + setDocuments([]) + if (storeRef.current.value) await getDocuments() + } + + const getDocuments = async () => { + const docs = await axios.get( + `${process.env.REACT_APP_SEARCH_SERVER_URL}/document`, + { + params: { + storeId: storeRef.current.value, + }, + } + ) + setDocuments(docs.data) + } + + const openAddEditModal = opType => { + let store = null + if (opType === 'edit') { + store = documentsStores.filter(store => store.id === parseInt(storeRef.current.value))[0] ?? '' + + console.log(store,'storestorestore') + } else store = '' + openModal({ + modal: 'documentStoreAddEditModal', + opType, + getDocumentsStores, + store, + }) + } + + const openDeleteStoreModal = () => { + let store = documentsStores.filter( + store => store.id === parseInt(storeRef.current.value) + )[0] + openModal({ + modal: 'documentStoreDeleteModal', + store, + getDocumentsStores, + }) + } + + useEffect(async () => { + await getDocumentsStores() + }, []) + + return ( +
+ {!documents ? ( +

Loading...

+ ) : ( +
+ + + + + { + console.log('add clicked') + openAddEditModal('add') + }} + /> + { + console.log('edit clicked') + openAddEditModal('edit') + }} + /> + { + console.log('trash clicked') + openDeleteStoreModal() + }} + /> + + +
+ {documents && + documents.map(document => ( + + ))} + {documents.length === 0 && 'No documents found'} +
+ + +
+ )} +
+ ) +} + +export default SearchCorpus diff --git a/client/src/workspaces/spells/windows/StateManagerWindow.tsx b/client/src/workspaces/spells/windows/StateManagerWindow.tsx index a3b875240..7e1c61c85 100644 --- a/client/src/workspaces/spells/windows/StateManagerWindow.tsx +++ b/client/src/workspaces/spells/windows/StateManagerWindow.tsx @@ -7,10 +7,15 @@ import Window from '../../../components/Window/Window' import '../../../screens/Thoth/thoth.module.css' import WindowMessage from '../components/WindowMessage' import { usePubSub } from '@/contexts/PubSubProvider' +import { useAuth } from '@/contexts/AuthProvider' const StateManager = ({ tab, ...props }) => { const { publish, events } = usePubSub() - const { data: spell } = useGetSpellQuery(tab.spellId, { + const { user } = useAuth() + const { data: spell } = useGetSpellQuery({ + spellId: tab.spellId, + userId: user?.id as string + }, { skip: !tab.spellId, }) @@ -122,4 +127,4 @@ const StateManager = ({ tab, ...props }) => { ) } -export default StateManager +export default StateManager \ No newline at end of file diff --git a/client/src/workspaces/spells/windows/TextEditorWindow.tsx b/client/src/workspaces/spells/windows/TextEditorWindow.tsx index 3b0a8cf78..ef7b093bc 100644 --- a/client/src/workspaces/spells/windows/TextEditorWindow.tsx +++ b/client/src/workspaces/spells/windows/TextEditorWindow.tsx @@ -124,4 +124,4 @@ const TextEditor = props => { ) } -export default TextEditor +export default TextEditor \ No newline at end of file diff --git a/client/src/workspaces/spells/windows/VideoTranscription.tsx b/client/src/workspaces/spells/windows/VideoTranscription.tsx new file mode 100644 index 000000000..c97893b4f --- /dev/null +++ b/client/src/workspaces/spells/windows/VideoTranscription.tsx @@ -0,0 +1,36 @@ +import VideoInput from '@/screens/HomeScreen/components/VideoInput' +import Window from '../../../components/Window/Window' + +import '../../../screens/Thoth/thoth.module.css' +import axios from 'axios' + +const VideoTranscription = () => { + const loadFile = selectedFile => { + uploadFile(selectedFile) + } + + const uploadFile = async(file) => { + console.log(file,'selectedFile') + // let formData = new FormData(); + // let url = `${process.env.REACT_APP_SEARCH_SERVER_URL}/` + let url = 'http://localhost:8001' + let body = file?.name; + + await axios.post(url, { + 'url': body + }).then((response) => { + console.log(response,'response') + }).catch((error) => { + console.log(error,'error'); + }); + } + + return ( + +

Upload Video

+ +
+ ) +} + +export default VideoTranscription \ No newline at end of file diff --git a/client/tsconfig.json b/client/tsconfig.json index 6d2a12b17..343a57a46 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -17,11 +17,10 @@ "baseUrl": ".", "paths": { "@/*": ["src/*"], - "@components/*": ["src/components/*"], - "@thoth/*": ["src/features/Thoth/*"] + "@components/*": ["src/components/*"] } }, - "typeRoots": ["@types/@thoth"], + "typeRoots": ["@types/@thoth", "@types"], "references": [ { "path": "../core" diff --git a/client/webpack.common.js b/client/webpack.common.js index 6e39464dc..c8a5e1418 100644 --- a/client/webpack.common.js +++ b/client/webpack.common.js @@ -33,6 +33,7 @@ module.exports = () => { }, resolve: { alias: { + handlebars: 'handlebars/dist/handlebars.min.js', '@': path.resolve(__dirname, 'src'), '@thoth': path.resolve(__dirname, 'src/screens/Thoth'), '@components': path.resolve(__dirname, 'src/components'), diff --git a/client/webpack.dev.js b/client/webpack.dev.js index 26e7dde5e..1a53a305e 100644 --- a/client/webpack.dev.js +++ b/client/webpack.dev.js @@ -1,6 +1,7 @@ -const Dotenv = require('dotenv-webpack') +const Dotenv = require('dotenv-flow-webpack') const { merge } = require('webpack-merge') const common = require('./webpack.common') +const fs = require('fs') module.exports = () => { const commonConfig = common() @@ -9,6 +10,10 @@ module.exports = () => { mode: 'development', devtool: 'source-map', devServer: { + https: { + key: fs.readFileSync('certs/key.pem'), + cert: fs.readFileSync('certs/cert.pem'), + }, static: { directory: 'public', }, @@ -27,12 +32,9 @@ module.exports = () => { ], }, plugins: [ - new Dotenv({ - path: './.env', - safe: true, - }), + new Dotenv(), ], } return merge(commonConfig, devConfig) -} +} \ No newline at end of file diff --git a/client/webpack.prod.js b/client/webpack.prod.js index a9df6a5ad..7433bccb1 100644 --- a/client/webpack.prod.js +++ b/client/webpack.prod.js @@ -1,4 +1,4 @@ -const Dotenv = require('dotenv-webpack') +const Dotenv = require('dotenv-flow-webpack') const CompressionPlugin = require('compression-webpack-plugin') const TerserPlugin = require('terser-webpack-plugin') const BundleAnalyzerPlugin = @@ -14,10 +14,7 @@ module.exports = () => { mode: 'production', plugins: [ new CompressionPlugin(), - new Dotenv({ - path: './.env', - systemvars: true, - }), + new Dotenv(), ], optimization: { minimize: true, diff --git a/core/.env b/core/.env new file mode 100644 index 000000000..0935f0139 --- /dev/null +++ b/core/.env @@ -0,0 +1,5 @@ +# REACT_APP_API_ROOT_URL=https://latitude-api-staging.herokuapp.com +# REACT_APP_API_ROOT_URL=https://api.latitude.io +REACT_APP_API_ROOT_URL=https://localhost:8001 +API_URL=https://localhost:8001 +EXTEND_ESLINT=true \ No newline at end of file diff --git a/core/.env.example b/core/.env.example deleted file mode 100644 index f12521059..000000000 --- a/core/.env.example +++ /dev/null @@ -1,4 +0,0 @@ -# REACT_APP_API_URL=https://latitude-api-staging.herokuapp.com -# REACT_APP_API_URL=https://api.latitude.io -REACT_APP_API_URL=http://localhost:8000 -EXTEND_ESLINT = true \ No newline at end of file diff --git a/core/.gitignore b/core/.gitignore index ae1662a57..566893c7c 100644 --- a/core/.gitignore +++ b/core/.gitignore @@ -1,4 +1,6 @@ dist src/plugins/areaPlugin/style.css.d.ts -.env -LICENSE \ No newline at end of file +LICENSE + +.env.local +.env.*.local \ No newline at end of file diff --git a/core/.npmrc b/core/.npmrc index b87389041..9ae163767 100644 --- a/core/.npmrc +++ b/core/.npmrc @@ -1,2 +1,4 @@ -@latitudegames:registry=https://npm.pkg.github.com/ -//npm.pkg.github.com/:_authToken=${NPM_TOKEN} +#@latitudegames:registry=https://npm.pkg.github.com/ +#npm.pkg.github.com/:_authToken=${NPM_TOKEN} +legacy-peer-deps=true +shamefully-hoist=true \ No newline at end of file diff --git a/core/package.json b/core/package.json index 20d848ecc..785e71b26 100644 --- a/core/package.json +++ b/core/package.json @@ -8,6 +8,7 @@ "Jakob Grant ", "Preston Gull " ], + "private": true, "description": "core shared code for thoth", "main": "dist/index.js", "module": "dist/index.esm.js", @@ -25,21 +26,65 @@ "ship": "auto release --prerelease --base-branch main", "release": "yarn build && yarn ship" }, + "resolutions": { + "@types/react": "18.0.0" + }, "dependencies": { + "@2toad/profanity": "^1.3.1", + "@green-api/whatsapp-bot": "0.2.5", + "@types/deep-equal": "^1.0.1", + "axios": "0.24.0", "deep-equal": "^2.0.5", + "discord.js": "^13.6.0", + "dotenv-flow": "3.2.0", + "emoji-dictionary": "1.0.11", + "emoji-regex": "10.0.0", + "glob": "^7.2.0", + "googleapis": "^39.2.0", + "grawlix": "^1.0.6", + "grawlix-racism": "^1.0.2", "handlebars": "^4.7.7", + "inquirer": "^8.2.0", + "instagram-private-api": "1.45.3", "jsdom": "^17.0.0", + "keyword-extractor": "^0.0.20", "license-webpack-plugin": "^4.0.2", + "lodash": "^4.17.21", + "mustache": "^4.2.0", + "natural": "^5.1.13", + "node-telegram-bot-api": "0.56.0", + "openai-api": "1.2.6", "path": "^0.12.7", - "react": "^17.0.2", + "pg": "8.7.1", + "puppeteer": "13.0.1", + "puppeteer-extra": "3.2.3", + "puppeteer-extra-plugin-stealth": "2.9.0", + "puppeteer-screen-recorder": "^2.0.2", + "puppeteer-stream": "2.0.7", + "racist": "^1.0.6", + "react": "^18.0.0", + "readline": "^1.3.0", + "reddit": "1.2.1", + "redis": "4.0.1", "regenerator-runtime": "^0.13.9", - "rete": "https://github.com/latitudegames/rete.git#master", + "rete": "github:latitudegames/rete", "rete-area-plugin": "^0.2.1", "rete-connection-plugin": "^0.9.0", "rete-context-menu-plugin": "^0.6.0-rc.1", "rete-module-plugin": "^0.4.1", "rete-react-render-plugin": "^0.2.1", - "uuid": "^8.3.2" + "similarity": "^1.2.1", + "snoostream": "1.0.1", + "snoowrap": "1.23.0", + "tedis": "0.1.12", + "twilio": "3.72.0", + "twit": "2.2.11", + "twitter-api-v2": "1.8.0", + "twitter-autohook": "1.7.2", + "uuid": "^8.3.2", + "weaviate-client": "^2.3.0", + "wikipedia": "^1.1.6", + "xvfb": "0.4.0" }, "devDependencies": { "@rollup/plugin-babel": "^5.3.0", @@ -47,7 +92,7 @@ "@types/lodash": "^4.14.172", "@types/node": "^16.4.3", "@types/pubsub-js": "^1.8.2", - "@types/react": "^17.0.15", + "@types/react": "^18.0.0", "@types/uuid": "^8.3.1", "auto": "^10.32.0", "babel-loader": "^8.2.2", diff --git a/core/src/components/Spell.ts b/core/src/components/Spell.ts index 9fbe0389e..feb1e2631 100644 --- a/core/src/components/Spell.ts +++ b/core/src/components/Spell.ts @@ -1,5 +1,6 @@ import isEqual from 'lodash/isEqual' import Rete from 'rete' + import { EngineContext, ModuleWorkerOutput, @@ -18,14 +19,14 @@ import { socketKeyFromOutputName, } from '../utils/nodeHelpers' -const info = `The Module component allows you to add modules into your chain. A module is a bundled self contained chain that defines inputs, outputs, and triggers using components.` +const info = `The Module component allows you to add modules into your graph. A module is a bundled self contained graph that defines inputs, outputs, and triggers using components.` export class SpellComponent extends ThothComponent< Promise > { _task: Task updateModuleSockets: Function - task + task: any info subscriptionMap: Record = {} editor: ThothEditor @@ -107,8 +108,8 @@ export class SpellComponent extends ThothComponent< } updateSockets(node: ThothNode, spell: Spell) { - const chain = JSON.parse(JSON.stringify(spell.chain)) - this.updateModuleSockets(node, chain, true) + const graph = JSON.parse(JSON.stringify(spell.graph)) + this.updateModuleSockets(node, graph, true) node.update() } diff --git a/core/src/components/components.ts b/core/src/components/components.ts index 9a07fbee3..11e4c9e8e 100644 --- a/core/src/components/components.ts +++ b/core/src/components/components.ts @@ -1,62 +1,131 @@ -import { ActionTypeComponent } from './ActionType' -import { Alert } from './AlertMessage' -import { BooleanGate } from './BooleanGate' -import { Code } from './Code' -import { InputFieldComponent } from './deprecated/InputField' -import { ModuleInput } from './deprecated/ModuleInput' -import { ModuleOutput } from './deprecated/ModuleOutput' -import { PlaytestInput } from './deprecated/PlaytestInput' -import { PlaytestPrint } from './deprecated/PlaytestPrint' -import { RunInputComponent } from './deprecated/RunInput' -import { DifficultyDetectorComponent } from './DifficultyDetector' -import { EnkiTask } from './EnkiTask' -import { EntityDetector } from './EntityDetector' -import { ForEach } from './ForEach' -import { Generator } from './Generator' -import { HuggingfaceComponent } from './Huggingface' -import { InputComponent } from './Input' -import { ItemTypeComponent } from './ItemDetector' -import { JoinListComponent } from './JoinList' -import { Output } from './Output' -import { ProseToScript } from './ProseToScript' -import { SafetyVerifier } from './SafetyVerifier' +import { AddAgent } from './entities/AddAgent' +import { AgentTextCompletion } from './entities/AgentTextCompletion' +import { CacheManagerDelete } from './entities/CacheManagerDelete' +import { CacheManagerGet } from './entities/CacheManagerGet' +import { CacheManagerSet } from './entities/CacheManagerSet' +import { CreateOrGetAgent } from './entities/CreateOrGetAgent' +import { EventRecall } from './entities/EventRecall' +import { EventStore } from './entities/EventStore' +import { InputDestructureComponent } from './entities/InputDestructure' +import { InputRestructureComponent } from './entities/InputRestructure' +import { Request } from './entities/Request' +import { InputComponent } from './io/Input' +import { Output } from './io/Output' +import { TriggerIn } from './io/TriggerIn' +import { TriggerOut } from './io/TriggerOut' +import { BooleanGate } from './logic/BooleanGate' +import { Coallesce } from './logic/Coallesce' +import { Code } from './logic/Code' +import { ForEach } from './logic/ForEach' +import { IsNullOrUndefined } from './logic/IsNullOrUndefined' +import { IsVariableTrue } from './logic/IsVariableTrue' +import { LogicalOperator } from './logic/LogicalOperator' +import { SwitchGate } from './logic/SwitchGate' +import { WhileLoop } from './logic/WhileLoop' +import { ActionTypeComponent } from './ml/ActionType' +import { Classifier } from './ml/Classifier' +import { DifficultyDetectorComponent } from './ml/DifficultyDetector' +import { EntityDetector } from './ml/EntityDetector' +import { Generator } from './ml/Generator' +import { HuggingfaceComponent } from './ml/Huggingface' +import { ItemTypeComponent } from './ml/ItemDetector' +import { KeywordExtractor } from './ml/KeywordExtractor' +import { NamedEntityRecognition } from './ml/NamedEntityRecognition' +import { ProseToScript } from './ml/ProseToScript' +import { SafetyVerifier } from './ml/SafetyVerifier' +import { SentenceMatcher } from './ml/SentenceMatcher' +import { SummarizeFacts } from './ml/SummarizeFacts' +import { TenseTransformer } from './ml/TenseTransformer' +import { TextToSpeech } from './ml/TextToSpeech' +import { TimeDetectorComponent } from './ml/TimeDetector' +import { DocumentDelete } from './search/DocumentDelete' +import { DocumentEdit } from './search/DocumentEdit' +import { DocumentGet } from './search/DocumentGet' +import { DocumentSet } from './search/DocumentSet' +import { DocumentStoreGet } from './search/DocumentStoreGet' +import { Search } from './search/Search' import { SpellComponent } from './Spell' -import { StateRead } from './StateRead' -import { StateWrite } from './StateWrite' -import { StringProcessor } from './StringProcessor' -import { SwitchGate } from './SwitchGate' -import { TenseTransformer } from './TenseTransformer' -import { TimeDetectorComponent } from './TimeDetector' -import { TriggerIn } from './TriggerIn' -import { TriggerOut } from './TriggerOut' -import { VisualGeneration } from './VisualGeneration' +import { StateRead } from './state/StateRead' +import { StateWrite } from './state/StateWrite' +import { ComplexStringMatcher } from './strings/ComplexStringMatcher' +import { JoinListComponent } from './strings/JoinList' +import { RandomStringFromList } from './strings/RandomStringFromList' +import { StringAdder } from './strings/StringAdder' +import { StringCombiner } from './strings/StringCombiner' +import { StringEvaluator } from './strings/StringEvaluator' +import { StringProcessor } from './strings/StringProcessor' +import { Alert } from './utility/AlertMessage' +import { Echo } from './utility/Echo' +import { InputsToJSON } from './utility/InputsToJSON' +import { ArrayVariable } from './variable/ArrayVariable' +import { BooleanVariable } from './variable/BooleanVariable' +import { FewshotVariable } from './variable/FewshotVariable' +import { NumberVariable } from './variable/NumberVariable' +import { StringVariable } from './variable/StringVariable' // Here we load up all components of the builder into our editor for usage. // We might be able to programatically generate components from enki +// NOTE: PLEASE KEEP THESE IN ALPHABETICAL ORDER +// todo some kind of custom build parser perhaps to take car of keeping these in alphabetical order + export const components = { actionTypeComponent: () => new ActionTypeComponent(), alert: () => new Alert(), booleanGate: () => new BooleanGate(), + coallesce: () => new Coallesce(), code: () => new Code(), + sentenceMatcher: () => new SentenceMatcher(), difficultyDetectorComponent: () => new DifficultyDetectorComponent(), - enkiTask: () => new EnkiTask(), + // enkiTask: () => new EnkiTask(), entityDetector: () => new EntityDetector(), + complexStringMatcher: () => new ComplexStringMatcher(), + echo: () => new Echo(), + SummarizeFacts: () => new SummarizeFacts(), + textToSpeech: () => new TextToSpeech(), + agentTextCompletion: () => new AgentTextCompletion(), + keywordExtractor: () => new KeywordExtractor(), + namedEntityRecognition: () => new NamedEntityRecognition(), + createOrGetAgent: () => new CreateOrGetAgent(), + Classifier: () => new Classifier(), + isNullOrUndefined: () => new IsNullOrUndefined(), + isVariableTrue: () => new IsVariableTrue(), + conversationStore: () => new EventStore(), + conversationRecall: () => new EventRecall(), + request: () => new Request(), + search: () => new Search(), + documentGet: () => new DocumentGet(), + documentEdit: () => new DocumentEdit(), + documentDelete: () => new DocumentDelete(), + documentSet: () => new DocumentSet(), + documentStoreGet: () => new DocumentStoreGet(), forEach: () => new ForEach(), + whileLoop: () => new WhileLoop(), + cacheManagerGet: () => new CacheManagerGet(), + cacheManagerDelete: () => new CacheManagerDelete(), + cacheManagerSet: () => new CacheManagerSet(), + stringEvaluator: () => new StringEvaluator(), + stringCombiner: () => new StringCombiner(), + randomStringFromList: () => new RandomStringFromList(), + stringVariable: () => new StringVariable(), + fewshotVariable: () => new FewshotVariable(), + stringAdder: () => new StringAdder(), + numberVariable: () => new NumberVariable(), + booleanVariable: () => new BooleanVariable(), + arrayVariable: () => new ArrayVariable(), + addAgent: () => new AddAgent(), + logicalOperator: () => new LogicalOperator(), generator: () => new Generator(), huggingfaceComponent: () => new HuggingfaceComponent(), inputComponent: () => new InputComponent(), - inputFieldComponent: () => new InputFieldComponent(), + inputDestructureComponent: () => new InputDestructureComponent(), + inputRestructureComponent: () => new InputRestructureComponent(), + inputsToJson: () => new InputsToJSON(), itemTypeComponent: () => new ItemTypeComponent(), joinListComponent: () => new JoinListComponent(), moduleComponent: () => new SpellComponent(), - moduleInput: () => new ModuleInput(), - moduleOutput: () => new ModuleOutput(), output: () => new Output(), - playtestPrint: () => new PlaytestPrint(), - playtestInput: () => new PlaytestInput(), proseToScript: () => new ProseToScript(), - runInputCompnent: () => new RunInputComponent(), safetyVerifier: () => new SafetyVerifier(), stateWrite: () => new StateWrite(), stateRead: () => new StateRead(), @@ -64,9 +133,8 @@ export const components = { switchGate: () => new SwitchGate(), tenseTransformer: () => new TenseTransformer(), timeDetectorComponent: () => new TimeDetectorComponent(), - TriggerIn: () => new TriggerIn(), + triggerIn: () => new TriggerIn(), triggerOut: () => new TriggerOut(), - VisualGeneration: () => new VisualGeneration(), } export const getComponents = () => { diff --git a/core/src/components/deprecated/InputField.ts b/core/src/components/deprecated/InputField.ts deleted file mode 100644 index 1f407e129..000000000 --- a/core/src/components/deprecated/InputField.ts +++ /dev/null @@ -1,59 +0,0 @@ -import Rete from 'rete' - -import { NodeData, ThothNode } from '../../../types' -import { TextInputControl } from '../../controls/TextInputControl' -import { stringSocket } from '../../sockets' -import { ThothComponent } from '../../thoth-component' -const info = `The info component has a single control, an input field. Whatever value you put into this input field will be sent out along the compoonents output socket.` - -type WorkerReturn = { - text: string -} - -export class InputFieldComponent extends ThothComponent { - constructor() { - // Name of the component - super('Input') - - this.task = { - outputs: { - text: 'output', - }, - } - - this.category = 'I/O' - this.info = info - this.deprecated = true - this.deprecationMessage = - 'This component has been deprecated. Please switch all your spells to use the new universal input component found under the name "Input" under the IO category. It allows you to add a default value, which was the previous purpose of this component.' - } - - // the builder is used to "assemble" the node component. - // when we have enki hooked up and have grabbed all few shots, we would use the builder - // to generate the appropriate inputs and ouputs for the fewshot at build time - builder(node: ThothNode) { - // create inputs here. First argument is the name, second is the type (matched to other components sockets), and third is the socket the i/o will use - const out = new Rete.Output('text', 'String', stringSocket) - - // Handle default value if data is present - const value = node.data.text ? node.data.text : 'Input text here' - - // controls are the internals of the node itself - // This default control sample has a text field. - const input = new TextInputControl({ - editor: this.editor, - key: 'text', - value, - }) - - return node.addOutput(out).addControl(input) - } - - // the worker contains the main business logic of the node. It will pass those results - // to the outputs to be consumed by any connected components - worker(node: NodeData) { - return { - text: node.data.text as string, - } - } -} diff --git a/core/src/components/deprecated/ModuleInput.ts b/core/src/components/deprecated/ModuleInput.ts deleted file mode 100644 index d2b4a218a..000000000 --- a/core/src/components/deprecated/ModuleInput.ts +++ /dev/null @@ -1,75 +0,0 @@ -import Rete from 'rete' -// @seang todo: convert data controls to typescript to remove this -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -//@ts-ignore -import { v4 as uuidv4 } from 'uuid' - -import { - NodeData, - ThothNode, - ThothWorkerInputs, - ThothWorkerOutputs, -} from '../../../types' -import { InputControl } from '../../dataControls/InputControl' -import { TaskOptions } from '../../plugins/taskPlugin/task' -import { anySocket } from '../../sockets' -import { ThothComponent } from '../../thoth-component' -const info = `The module input component adds an input socket to the parent module. It can be given a name, which is displayed on the parent.` - -export class ModuleInput extends ThothComponent> { - task: TaskOptions - category: string - info: string - contextMenuName: string - - constructor() { - // Name of the component - super('Module Input') - this.contextMenuName = 'Input' - this.task = { - outputs: { - output: 'output', - }, - } - - this.module = { - nodeType: 'input', - socket: anySocket, - } - - this.category = 'Module' - this.deprecated = true - this.deprecationMessage = - 'This component has been deprecated. Please replace it in all of your spells with the new universal input component. This can be found under the name "Input" in the IO category. It will act as a module input for running your spells on the server and inside other component chains.' - this.info = info - } - - // the builder is used to "assemble" the node component. - // when we have enki hooked up and have grabbed all few shots, we would use the builder - // to generate the appropriate inputs and ouputs for the fewshot at build time - builder(node: ThothNode): ThothNode { - // create inputs here. First argument is the name, second is the type (matched to other components sockets), and third is the socket the i/o will use - const out = new Rete.Output('output', 'output', anySocket) - - // Handle default value if data is present - const nameInput = new InputControl({ - dataKey: 'name', - name: 'Input name', - }) - - node.inspector.add(nameInput) - node.data.socketKey = node?.data?.socketKey || uuidv4() - - return node.addOutput(out) - } - - worker( - node: NodeData, - inputs: ThothWorkerInputs, - outputs: ThothWorkerOutputs - ) { - // outputs in this case is a key value object of outputs. - // perfect for task return - return outputs - } -} diff --git a/core/src/components/deprecated/ModuleOutput.ts b/core/src/components/deprecated/ModuleOutput.ts deleted file mode 100644 index 9d4c0365b..000000000 --- a/core/src/components/deprecated/ModuleOutput.ts +++ /dev/null @@ -1,80 +0,0 @@ -import Rete from 'rete' -import { v4 as uuidv4 } from 'uuid' - -import { NodeData, ThothNode, ThothWorkerInputs } from '../../../types' -import { InputControl } from '../../dataControls/InputControl' -import { TaskOptions } from '../../plugins/taskPlugin/task' -// @seang todo: convert data controls to typescript to remove this -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -//@ts-ignore -import { anySocket, triggerSocket } from '../../sockets' -import { ThothComponent } from '../../thoth-component' -const info = `The module output component adds an output socket to the parent module. It can be given a name, which is displayed on the parent.` - -type WorkerReturn = { - text: string -} - -export class ModuleOutput extends ThothComponent { - task: TaskOptions - category: string - info: string - contextMenuName: string - - constructor() { - // Name of the component - super('Module Output') - this.contextMenuName = 'Output' - - this.task = { - runOneInput: true, - outputs: { - text: 'output', - }, - } - - this.module = { - nodeType: 'output', - socket: anySocket, - } - - this.category = 'Module' - this.deprecated = true - this.deprecationMessage = - 'This component has been deprecated. Please remove it from your spells. You can use in its place the general output component which act aas an output for both server deployments and running spells inside coother components.' - this.info = info - } - - // the builder is used to "assemble" the node component. - // when we have enki hooked up and have grabbed all few shots, we would use the builder - // to generate the appropriate inputs and ouputs for the fewshot at build time - builder(node: ThothNode) { - // create inputs here. First argument is the name, second is the type (matched to other components sockets), and third is the socket the i/o will use - const input = new Rete.Input('input', 'String', anySocket, true) - const socketInput = new Rete.Input( - 'trigger', - 'Trigger', - triggerSocket, - true - ) - - // Handle default value if data is present - const nameInput = new InputControl({ - dataKey: 'name', - name: 'Output name', - }) - - node.inspector.add(nameInput) - node.data.socketKey = node?.data?.socketKey || uuidv4() - - return node.addInput(input).addInput(socketInput) - } - - worker(node: NodeData, inputs: ThothWorkerInputs) { - const text = inputs.input.filter(Boolean)[0] as string - - return { - text, - } - } -} diff --git a/core/src/components/deprecated/PlaytestInput.ts b/core/src/components/deprecated/PlaytestInput.ts index f3f4217a0..c481c53b5 100644 --- a/core/src/components/deprecated/PlaytestInput.ts +++ b/core/src/components/deprecated/PlaytestInput.ts @@ -10,7 +10,7 @@ import { import { Task } from '../../plugins/taskPlugin/task' import { triggerSocket, stringSocket } from '../../sockets' import { ThothComponent, ThothTask } from '../../thoth-component' -const info = `The Playtest Input component is connected to the playtest window. It received anything which is type dinto the playtest areavia the input and will trigger the running of your spell chain.` +const info = `The Playtest Input component is connected to the playtest window. It received anything which is type dinto the playtest areavia the input and will trigger the running of your spell graph.` type WorkerReturn = { text: string diff --git a/core/src/components/deprecated/RunInput.ts b/core/src/components/deprecated/RunInput.ts index 6f14aafd2..f1240c66c 100644 --- a/core/src/components/deprecated/RunInput.ts +++ b/core/src/components/deprecated/RunInput.ts @@ -6,7 +6,7 @@ import { TextInputControl } from '../../controls/TextInputControl' import { Task } from '../../plugins/taskPlugin/task' import { stringSocket, triggerSocket } from '../../sockets' import { ThothComponent, ThothTask } from '../../thoth-component' -const info = `The Input With Run component lets you input a value into the provided input field, and trigger off your spell chain to run with that value passed out its output. May be depricated in favor of using the playtest input component.` +const info = `The Input With Run component lets you input a value into the provided input field, and trigger off your spell graph to run with that value passed out its output. May be depricated in favor of using the playtest input component.` type WorkerReturn = { text: string diff --git a/core/src/components/entities/AddAgent.ts b/core/src/components/entities/AddAgent.ts new file mode 100644 index 000000000..1ae2ed769 --- /dev/null +++ b/core/src/components/entities/AddAgent.ts @@ -0,0 +1,69 @@ +/* eslint-disable no-async-promise-executor */ +/* eslint-disable camelcase */ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Agent Text Completion is using OpenAI for the agent to respond.' + +type WorkerReturn = { + output: string +} + +export class AddAgent extends ThothComponent> { + constructor() { + super('Add Agent') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Agents' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const inp = new Rete.Input('string', 'Text', stringSocket) + const agent = new Rete.Input('agent', 'Agent', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const outp = new Rete.Output('output', 'output', stringSocket) + + return node + .addInput(inp) + .addInput(agent) + .addInput(dataInput) + .addOutput(dataOutput) + .addOutput(outp) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const action = inputs['string'][0] as string + const agent = inputs['agent'][0] as string + + return { + output: action + '\n' + agent + ': ', + } + } +} diff --git a/core/src/components/entities/AgentTextCompletion.ts b/core/src/components/entities/AgentTextCompletion.ts new file mode 100644 index 000000000..8f9ef01fb --- /dev/null +++ b/core/src/components/entities/AgentTextCompletion.ts @@ -0,0 +1,181 @@ +/* eslint-disable no-async-promise-executor */ +/* eslint-disable camelcase */ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, + EngineContext, +} from '../../../types' +import { InputControl } from '../../dataControls/InputControl' +import { triggerSocket, stringSocket, anySocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Agent Text Completion is using OpenAI for the agent to respond.' + +type WorkerReturn = { + output: string +} + +export class AgentTextCompletion extends ThothComponent> { + constructor() { + super('Agent Text Completion') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Agents' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const inp = new Rete.Input('string', 'Text', stringSocket) + const settings = new Rete.Input('settings', 'Settings', anySocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const outp = new Rete.Output('output', 'output', stringSocket) + + const modelName = new InputControl({ + dataKey: 'modelName', + name: 'Model Name', + icon: 'moon', + }) + + const temperature = new InputControl({ + dataKey: 'temperature', + name: 'Temperature', + icon: 'moon', + }) + + const maxTokens = new InputControl({ + dataKey: 'maxTokens', + name: 'Max Tokens', + icon: 'moon', + }) + + const topP = new InputControl({ + dataKey: 'topP', + name: 'Top P', + icon: 'moon', + }) + + const frequencyPenalty = new InputControl({ + dataKey: 'frequencyPenalty', + name: 'Frequency Penalty', + icon: 'moon', + }) + + const presencePenalty = new InputControl({ + dataKey: 'presencePenalty', + name: 'Presence Penalty', + icon: 'moon', + }) + + const stop = new InputControl({ + dataKey: 'stop', + name: 'Stop', + icon: 'moon', + }) + + node.inspector + .add(modelName) + .add(temperature) + .add(maxTokens) + .add(topP) + .add(frequencyPenalty) + .add(presencePenalty) + .add(stop) + + return node + .addInput(inp) + .addInput(settings) + .addInput(dataInput) + .addOutput(dataOutput) + .addOutput(outp) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const prompt = inputs['string'][0] + const settings = ((inputs.settings && inputs.settings[0]) ?? {}) as any + const modelName = settings.modelName ?? (node?.data?.modelName as string) + const temperatureData = + settings.temperature ?? (node?.data?.temperature as string) + const temperature = parseFloat(temperatureData) + const maxTokensData = + settings.max_tokens ?? (node?.data?.maxTokens as string) + const maxTokens = parseInt(maxTokensData) + const topPData = settings.top_p ?? (node?.data?.topP as string) + const topP = parseFloat(topPData) + const frequencyPenaltyData = + settings.frequency_penalty ?? (node?.data?.frequencyPenalty as string) + const frequencyPenalty = parseFloat(frequencyPenaltyData) + const presencePenaltyData = + settings.presence_penalty ?? (node?.data?.presencePenalty as string) + const presencePenalty = parseFloat(presencePenaltyData) + const stop = settings.stop ?? (node?.data?.stop as string).split(',') + for (let i = 0; i < stop.length; i++) { + stop[i] = stop[i].trim() + if (stop[i] === '\\n') { + stop[i] = '\n' + } + } + const filteredStop = stop.filter(function (el: any) { + return el != null && el !== undefined && el.length > 0 + }) + + console.log('filteredStop is', filteredStop) + + const resp = await axios.post( + `${process.env.REACT_APP_API_URL ?? + process.env.API_URL ?? + 'https://localhost:8001' + }/text_completion`, + { + prompt: prompt, + modelName: modelName, + temperature: temperature, + maxTokens: maxTokens, + topP: topP, + frequencyPenalty: frequencyPenalty, + presencePenalty: presencePenalty, + stop: filteredStop, + } + ) + console.log('resp.data is ', resp.data) + + const { success, choice, error } = resp.data + + if (!success) + return { + output: 'Sorry, I had a completion error:' + error, + } + + const res = + success !== 'false' && success !== false + ? choice.text + : 'Sorry, I had an error!' + + console.log('success:', success, 'choice:', choice.text, 'res:', res) + + return { + output: res, + } + } +} diff --git a/core/src/components/entities/CacheManagerDelete.ts b/core/src/components/entities/CacheManagerDelete.ts new file mode 100644 index 000000000..536646d6b --- /dev/null +++ b/core/src/components/entities/CacheManagerDelete.ts @@ -0,0 +1,65 @@ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs +} from '../../../types' +import { stringSocket, triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = + 'Cache Manager Delete is used to delete data from the cache manager' + +export class CacheManagerDelete extends ThothComponent { + constructor() { + super('Cache Manager Delete') + + this.task = { + outputs: { + trigger: 'option', + }, + } + + this.category = 'Agents' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const keyInput = new Rete.Input('key', 'Key', stringSocket) + const agentInput = new Rete.Input('agent', 'Agent', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + + return node + .addInput(keyInput) + .addInput(agentInput) + .addInput(dataInput) + .addOutput(dataOutput) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const key = inputs['key'][0] as string + const agent = inputs['agent'][0] as string + + await axios.delete(`${process.env.REACT_APP_API_URL}/cache_manager`, { + params: { + key: key, + agent: agent, + }, + }) + } +} diff --git a/core/src/components/entities/CacheManagerGet.ts b/core/src/components/entities/CacheManagerGet.ts new file mode 100644 index 000000000..8c9f864d5 --- /dev/null +++ b/core/src/components/entities/CacheManagerGet.ts @@ -0,0 +1,90 @@ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs +} from '../../../types' +import { BooleanControl } from '../../dataControls/BooleanControl' +import { anySocket, stringSocket, triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Cache Manager Get is used to get data from the cache manager' + +type WorkerReturn = { + output: string +} + +export class CacheManagerGet extends ThothComponent> { + constructor() { + super('Cache Manager Get') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Agents' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const keyInput = new Rete.Input('key', 'Key', stringSocket) + const agentInput = new Rete.Input('agent', 'Agent', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const output = new Rete.Output('output', 'Output', anySocket) + + const strict = new BooleanControl({ + dataKey: 'strict', + name: 'Strict', + icon: 'moon', + }) + + node.inspector.add(strict) + + return node + .addInput(keyInput) + .addInput(agentInput) + .addInput(dataInput) + .addOutput(dataOutput) + .addOutput(output) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const key = inputs['key'][0] as string + const agent = inputs['agent'] ? (inputs['agent'][0] as string) : 'Global' + const strict = node.data?.strict as string + + const resp = await axios.get( + `${process.env.REACT_APP_API_URL}/cache_manager`, + { + params: { + key: key, + agent: agent, + strict: strict, + }, + } + ) + + console.log('cache get, resp:', resp.data.data) + return { + output: resp.data.data, + } + } +} diff --git a/core/src/components/entities/CacheManagerSet.ts b/core/src/components/entities/CacheManagerSet.ts new file mode 100644 index 000000000..69ad043af --- /dev/null +++ b/core/src/components/entities/CacheManagerSet.ts @@ -0,0 +1,67 @@ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs +} from '../../../types' +import { anySocket, stringSocket, triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Cache Manager Set is used to (set/add) data in the cache manager' + +export class CacheManagerSet extends ThothComponent { + constructor() { + super('Cache Manager Set') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Agents' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const keyInput = new Rete.Input('key', 'Key', stringSocket) + const agentInput = new Rete.Input('agent', 'Agent', stringSocket) + const valueInput = new Rete.Input('value', 'Value', anySocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + + return node + .addInput(keyInput) + .addInput(agentInput) + .addInput(valueInput) + .addInput(dataInput) + .addOutput(dataOutput) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const key = inputs['key'][0] as string + const agent = inputs['agent'][0] as string + const value = inputs['value'][0] + + await axios.post(`${process.env.REACT_APP_API_URL}/cache_manager`, { + key: key, + agent: agent, + value: value, + }) + } +} diff --git a/core/src/components/entities/CreateOrGetAgent.ts b/core/src/components/entities/CreateOrGetAgent.ts new file mode 100644 index 000000000..2374b0e55 --- /dev/null +++ b/core/src/components/entities/CreateOrGetAgent.ts @@ -0,0 +1,68 @@ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable no-console */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Create Or GetAgent is used to generate or get an existing agent' + +export class CreateOrGetAgent extends ThothComponent> { + constructor() { + super('Create Or Get Agent') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Agents' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const agentInput = new Rete.Input('agent', 'Agent', stringSocket) + const speakerInput = new Rete.Input('speaker', 'Speaker', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + + return node + .addInput(agentInput) + .addInput(speakerInput) + .addInput(dataInput) + .addOutput(dataOutput) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const agent = inputs['agent'][0] as string + const speaker = inputs['speaker'][0] as string + + const resp = await axios.post( + `${process.env.REACT_APP_API_ROOT_URL}/createWikipediaEntity`, + { + speaker: speaker, + agent: agent, + } + ) + + console.log(resp.data) + } +} diff --git a/core/src/components/entities/EventRecall.ts b/core/src/components/entities/EventRecall.ts new file mode 100644 index 000000000..09bba0747 --- /dev/null +++ b/core/src/components/entities/EventRecall.ts @@ -0,0 +1,134 @@ +/* eslint-disable camelcase */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { InputControl } from '../../dataControls/InputControl' +import { triggerSocket, stringSocket, anySocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +async function getEvent( + type: string, + agent: string, + speaker: null | string, + client: string, + channel: string, + maxCount = 10 +) { + const response = await axios.get( + `${process.env.REACT_APP_API_ROOT_URL ?? + process.env.API_ROOT_URL ?? + 'https://localhost:8001' + }/event`, + { + params: { + type: type, + agent: agent, + speaker: speaker, + client: client, + channel: channel, + maxCount: maxCount, + }, + } + ) + console.log('response.data:', response.data) + return response.data +} + +const info = 'Event Recall is used to get conversation for an agent and user' + +type InputReturn = { + output: unknown +} + +export class EventRecall extends ThothComponent> { + constructor() { + super('Event Recall') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Agents' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const agentInput = new Rete.Input('agent', 'Agent', stringSocket) + const speakerInput = new Rete.Input('speaker', 'Speaker', stringSocket) + const clientInput = new Rete.Input('client', 'Client', stringSocket) + const channelInput = new Rete.Input('channel', 'Channel', stringSocket) + const out = new Rete.Output('output', 'Conversation', anySocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + + const nameInput = new InputControl({ + dataKey: 'name', + name: 'Input name', + }) + + const type = new InputControl({ + dataKey: 'type', + name: 'Type', + icon: 'moon', + }) + + const max_count = new InputControl({ + dataKey: 'max_count', + name: 'Max Count', + icon: 'moon', + }) + + node.inspector.add(nameInput).add(max_count).add(type) + + return node + .addInput(agentInput) + .addInput(speakerInput) + .addInput(clientInput) + .addInput(channelInput) + .addInput(dataInput) + .addOutput(dataOutput) + .addOutput(out) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + + const speaker = inputs['speaker'][0] as string + const agent = inputs['agent'][0] as string + const client = inputs['client'][0] as string + const channel = inputs['channel'][0] as string + const typeData = node?.data?.type as string + const type = + typeData !== undefined && typeData.length > 0 + ? typeData.toLowerCase().trim() + : 'none' + + const maxCountData = node.data?.max_count as string + const maxCount = maxCountData ? parseInt(maxCountData) : 10 + + const conv = await getEvent(type, agent, speaker, client, channel, maxCount) + if (!silent) node.display(type + ' | :' + conv || 'Not found') + + return { + output: conv ?? '', + } + } +} diff --git a/core/src/components/entities/EventStore.ts b/core/src/components/entities/EventStore.ts new file mode 100644 index 000000000..ef885a663 --- /dev/null +++ b/core/src/components/entities/EventStore.ts @@ -0,0 +1,144 @@ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable no-console */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { InputControl } from '../../dataControls/InputControl' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Event Store is used to store events for an agent and user' + +export async function createEvent( + type: string, + agent: string, + speaker: string, + text: string, + client: string, + channel: string +) { + const response = await axios.post( + `${process.env.REACT_APP_API_ROOT_URL ?? + process.env.API_ROOT_URL ?? + 'https://localhost:8001' + }/event`, + { + type, + agent, + speaker, + text, + client, + channel, + } + ) + console.log('Created event', response.data) + return response.data +} + +export class EventStore extends ThothComponent> { + constructor() { + super('Store Event') + + this.task = { + outputs: { + trigger: 'option', + }, + } + + this.category = 'Agents' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const agentInput = new Rete.Input('agent', 'Agent', stringSocket) + const speakerInput = new Rete.Input('speaker', 'Speaker', stringSocket) + const factsInp = new Rete.Input('primary', 'Primary Event', stringSocket) + + const nameInput = new InputControl({ + dataKey: 'name', + name: 'Input name', + }) + + const type = new InputControl({ + dataKey: 'type', + name: 'Type', + icon: 'moon', + }) + + node.inspector.add(nameInput).add(type) + + const factaInp = new Rete.Input( + 'secondary', + 'Secondary Event (Opt)', + stringSocket + ) + const clientInput = new Rete.Input('client', 'Client', stringSocket) + const channelInput = new Rete.Input('channel', 'Channel', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + + return node + .addInput(factsInp) + .addInput(factaInp) + .addInput(clientInput) + .addInput(agentInput) + .addInput(speakerInput) + .addInput(channelInput) + .addInput(dataInput) + .addOutput(dataOutput) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const speaker = inputs['speaker'][0] as string + const agent = inputs['agent'][0] as string + const primary = (inputs['primary'] && inputs['primary'][0]) as string + const secondary = (inputs['secondary'] && inputs['secondary'][0]) as string + const client = inputs['client'][0] as string + const channel = inputs['channel'][0] as string + + if (!primary) return console.log('Event null, so skipping') + + const typeData = node?.data?.type as string + const type = + typeData !== undefined && typeData.length > 0 + ? typeData.toLowerCase().trim() + : 'none' + + const respUser = await createEvent( + type, + agent, + speaker, + primary, + client, + channel + ) + + if (!silent) node.display(respUser.data) + if (type === 'conversation') { + const respAgent = await createEvent( + type, + agent, + agent, + secondary, + client, + channel + ) + if (!silent) node.display(respUser + '|' + respAgent) + } + } +} diff --git a/core/src/components/entities/FormOpinionAboutSpeaker.ts b/core/src/components/entities/FormOpinionAboutSpeaker.ts new file mode 100644 index 000000000..4c609b6bd --- /dev/null +++ b/core/src/components/entities/FormOpinionAboutSpeaker.ts @@ -0,0 +1,148 @@ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { FewshotControl } from '../../dataControls/FewshotControl' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Form Opinion About Speaker' + +const fewshot = `Enemy +Friend +Student +Teacher +Repulsed +Attracted +Honest +Manipulative` + +type InputReturn = { + output: unknown +} + +export class FormOpinionAboutSpeaker extends ThothComponent< + Promise +> { + constructor() { + super('Form Opinion About Speaker') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Agents' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + node.data.fewshot = fewshot + + const inp = new Rete.Input('string', 'Input String', stringSocket) + const inpMatrix = new Rete.Input('matrix', 'Input Matrix', stringSocket) + const matrixOut = new Rete.Output('output', 'Output Matrix', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + + const fewshotControl = new FewshotControl({}) + + node.inspector.add(fewshotControl) + + return node + .addInput(inp) + .addInput(inpMatrix) + .addInput(dataInput) + .addOutput(dataOutput) + .addOutput(matrixOut) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const matrix = inputs['matrix'][0] as string + const action = inputs['string'][0] + const params = node.data.fewshot as string + + const _matrix = + matrix.length <= 0 || matrix === 'internal error' + ? { + Enemy: 0, + Friend: 0, + Student: 0, + Teacher: 0, + Repulsed: 0, + Attracted: 0, + Honest: 0, + Manipulative: 0, + + EnemyLimit: 1, + FriendLimit: 1, + StudentLimit: 1, + TeacherLimit: 1, + RepulsedLimit: 1, + AttractedLimit: 1, + } + : JSON.parse(matrix) + + const alpha = 0.01 // how much better or worse does the bot start to feel about someone? + + const decay = 0.001 // Decay rate of relationships as you chat with agent + + const parameters = params.split('\n').filter(function (el) { + return el.length > 0 + }) + const _parameters = { candidate_labels: parameters } + + const resp = await axios.post( + `${process.env.REACT_APP_API_URL}/hf_request`, + { + inputs: action as string, + model: 'facebook/bart-large-mnli', + parameters: _parameters, + options: undefined, + } + ) + + const { success, data } = resp.data + + const result: any = success ? data : null + + if (result) { + const resultMatrix: { [key: string]: any } = {} + for (let i = 0; i < result.labels.length; i++) { + resultMatrix[result.labels[i]] = result.scores[0] + } + + for (const key of Object.keys(resultMatrix)) { + _matrix[key] = Math.max( + 0, + _matrix[key] + sigmoid(_matrix[key]) * alpha - decay + ) + } + } + + return { + output: JSON.stringify(_matrix), + } + } +} + +function sigmoid(x: number) { + return 1 / (1 + Math.exp(-x)) +} diff --git a/core/src/components/entities/InputDestructure.ts b/core/src/components/entities/InputDestructure.ts new file mode 100644 index 000000000..9f536c79e --- /dev/null +++ b/core/src/components/entities/InputDestructure.ts @@ -0,0 +1,120 @@ +/* eslint-disable no-console */ +import Rete from 'rete' +import { v4 as uuidv4 } from 'uuid' + +import { + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { Task } from '../../plugins/taskPlugin/task' +import { + anySocket, + arraySocket, + stringSocket, + triggerSocket, +} from '../../sockets' +import { ThothComponent, ThothTask } from '../../thoth-component' + +const info = `The input component allows you to pass a single value to your graph. You can set a default value to fall back to if no value is provided at runtime. You can also turn the input on to receive data from the playtest input.` + +type InputReturn = { + output: unknown + speaker: string + agent: string + client: string + channel: string + entity: number + roomInfo: { + user: string + inConversation: boolean + isBot: boolean + info3d: string + }[] +} + +export class InputDestructureComponent extends ThothComponent< + Promise +> { + nodeTaskMap: Record = {} + + constructor() { + // Name of the component + super('Input Destructure') + + this.task = { + outputs: { + output: 'output', + speaker: 'output', + agent: 'output', + client: 'output', + channel: 'output', + entity: 'output', + roomInfo: 'output', + trigger: 'option', + }, + init: (task = {} as Task, node: ThothNode) => { + this.nodeTaskMap[node.id] = task + }, + } + + this.category = 'Agents' + this.info = info + this.display = true + } + + builder(node: ThothNode) { + // module components need to have a socket key. + // todo add this somewhere automated? Maybe wrap the modules builder in the plugin + node.data.socketKey = node?.data?.socketKey || uuidv4() + + const inp = new Rete.Input('input', 'Input', anySocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const out = new Rete.Output('output', 'output', stringSocket) + const speaker = new Rete.Output('speaker', 'speaker', stringSocket) + const agent = new Rete.Output('agent', 'agent', stringSocket) + const client = new Rete.Output('client', 'client', stringSocket) + const channelId = new Rete.Output('channel', 'channel', stringSocket) + const entity = new Rete.Output('entity', 'entity', stringSocket) + const roomInfo = new Rete.Output('roomInfo', 'roomInfo', arraySocket) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + + return node + .addInput(dataInput) + .addInput(inp) + .addOutput(speaker) + .addOutput(agent) + .addOutput(client) + .addOutput(channelId) + .addOutput(entity) + .addOutput(roomInfo) + .addOutput(out) + .addOutput(dataOutput) + } + + // eslint-disable-next-line require-await + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent }: { silent: boolean } + ) { + // eslint-disable-next-line prettier/prettier + const input = inputs.input != null ? inputs.input[0] : inputs + + //console.log('destructuring ', inputs) + + if (!silent) node.display(input) + // If there are outputs, we are running as a module input and we use that value + return { + output: (input as any).Input ?? input, + speaker: (input as any)['Speaker'] ?? 'Speaker', + agent: (input as any)['Agent'] ?? 'Agent', + client: (input as any)['Client'], + channel: (input as any)['ChannelID'], + entity: (input as any)['Entity'], + roomInfo: (input as any)['RoomInfo'], + } + } +} diff --git a/core/src/components/entities/InputRestructure.ts b/core/src/components/entities/InputRestructure.ts new file mode 100644 index 000000000..accd5341b --- /dev/null +++ b/core/src/components/entities/InputRestructure.ts @@ -0,0 +1,117 @@ +/* eslint-disable no-console */ +import Rete from 'rete' +import { v4 as uuidv4 } from 'uuid' + +import { + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { Task } from '../../plugins/taskPlugin/task' +import { + arraySocket, + stringSocket, + triggerSocket, + agentSocket +} from '../../sockets' +import { ThothComponent, ThothTask } from '../../thoth-component' + +const info = `Restructure Agent Data` + +type InputReturn = { + output: { + Input: string + Speaker: string + Agent: string + Client: string + ChannelID: string + Entity: object + RoomInfo: { + user: string + inConversation: boolean + isBot: boolean + info3d: string + }[] + } +} + +export class InputRestructureComponent extends ThothComponent< + Promise +> { + nodeTaskMap: Record = {} + + constructor() { + // Name of the component + super('Input Restructure') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + init: (task = {} as Task, node: ThothNode) => { + this.nodeTaskMap[node.id] = task + }, + } + + this.category = 'Agents' + this.info = info + this.display = true + } + + builder(node: ThothNode) { + // module components need to have a socket key. + // todo add this somewhere automated? Maybe wrap the modules builder in the plugin + node.data.socketKey = node?.data?.socketKey || uuidv4() + + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const input = new Rete.Input('input', 'input', stringSocket) + const speaker = new Rete.Input('speaker', 'speaker', stringSocket) + const agent = new Rete.Input('agent', 'agent', stringSocket) + const client = new Rete.Input('client', 'client', stringSocket) + const channelId = new Rete.Input('channel', 'channel', stringSocket) + const entity = new Rete.Input('entity', 'entity', stringSocket) + const roomInfo = new Rete.Input('roomInfo', 'roomInfo', arraySocket) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const agentSoc = new Rete.Output('output', 'output', agentSocket) + + return node + .addInput(speaker) + .addInput(agent) + .addInput(client) + .addInput(channelId) + .addInput(entity) + .addInput(roomInfo) + .addInput(input) + .addInput(dataInput) + .addOutput(agentSoc) + .addOutput(dataOutput) + } + + // eslint-disable-next-line require-await + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent }: { silent: boolean } + ) { + let agent: any = {} + Object.entries(inputs).map(([k, v]) => { + agent[k] = v[0] + }) + console.log('agent ::: ', agent); + + return { + output: { + Input: agent.input, + Speaker: agent.speaker, + Agent: agent.agent, + Client: agent.client, + ChannelID: agent.channel, + Entity: agent.entity, + RoomInfo: agent.roomInfo + } + } + } +} diff --git a/core/src/components/entities/OpinionAboutSpeakerGet.ts b/core/src/components/entities/OpinionAboutSpeakerGet.ts new file mode 100644 index 000000000..f039850a6 --- /dev/null +++ b/core/src/components/entities/OpinionAboutSpeakerGet.ts @@ -0,0 +1,97 @@ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Get Opinion About Speaker' + +type InputReturn = { + output: unknown +} + +export async function getMatrix(agent: string, speaker: string) { + const response = await axios.get( + `${process.env.REACT_APP_API_ROOT_URL}/relationship_matrix?agent=${agent}&speaker=${speaker}` + ) + return response.data +} + +export class OpinionAboutSpeakerGet extends ThothComponent< + Promise +> { + constructor() { + super('Opinion About Speaker Get') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Agents' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const agentInput = new Rete.Input('agent', 'Agent', stringSocket) + const speakerInput = new Rete.Input('speaker', 'Speaker', stringSocket) + const matrixOut = new Rete.Output('output', 'Matrix', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + + return node + .addInput(dataInput) + .addInput(agentInput) + .addInput(speakerInput) + .addOutput(dataOutput) + .addOutput(matrixOut) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const speaker = inputs['speaker'][0] as string + const agent = inputs['agent'][0] as string + + const matrix = await getMatrix(agent, speaker) + + return { + output: + matrix.length > 0 && matrix !== 'internal error' + ? matrix + : JSON.stringify({ + Enemy: 0, + Friend: 0, + Student: 0, + Teacher: 0, + Repulsed: 0, + Attracted: 0, + Honest: 0, + Manipulative: 0, + + EnemyLimit: 1, + FriendLimit: 1, + StudentLimit: 1, + TeacherLimit: 1, + RepulsedLimit: 1, + AttractedLimit: 1, + }), + } + } +} diff --git a/core/src/components/entities/OpinionAboutSpeakerSet.ts b/core/src/components/entities/OpinionAboutSpeakerSet.ts new file mode 100644 index 000000000..624d9fcd6 --- /dev/null +++ b/core/src/components/entities/OpinionAboutSpeakerSet.ts @@ -0,0 +1,80 @@ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Form Opinion About Speaker' + +async function storeMatrix(agent: string, speaker: string, matrix: string) { + const response = await axios.post( + `${process.env.REACT_APP_API_ROOT_URL}/relationship_matrix`, + { + agent: agent, + speaker: speaker, + matrix: matrix, + } + ) + + console.log(response.data) +} + +export class OpinionAboutSpeakerSet extends ThothComponent> { + constructor() { + super('Form Opinion About Speaker') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Agents' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const agentInput = new Rete.Input('agent', 'Agent', stringSocket) + const speakerInput = new Rete.Input('speaker', 'Speaker', stringSocket) + const matrixInp = new Rete.Input( + 'matrix', + 'Relationship Matrix', + stringSocket + ) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + + return node + .addInput(matrixInp) + .addInput(agentInput) + .addInput(speakerInput) + .addInput(dataInput) + .addOutput(dataOutput) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const speaker = inputs['speaker'][0] as string + const agent = inputs['agent'][0] as string + const matrix = inputs['matrix'][0] as string + + const resp = await storeMatrix(agent, speaker, matrix) + console.log(resp) + } +} diff --git a/core/src/components/entities/RandomGreetingResponse.ts b/core/src/components/entities/RandomGreetingResponse.ts new file mode 100644 index 000000000..23d7d6b97 --- /dev/null +++ b/core/src/components/entities/RandomGreetingResponse.ts @@ -0,0 +1,99 @@ +/* eslint-disable camelcase */ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { FewshotControl } from '../../dataControls/FewshotControl' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = + 'Random String From List returns a randomly selected string from an array, it keeps memory of recently selected strings' + +const fewshot = `Hello,Hi there, How are you?,Hello there` + +const recently_used: string[] = [] +let clear: any = undefined + +type WorkerReturn = { + output: string +} + +export class RandomGreetingResponse extends ThothComponent< + Promise +> { + constructor() { + super('Random Greeting Response') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Agents' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + node.data.fewshot = fewshot + + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const outp = new Rete.Output('output', 'String', stringSocket) + + const fewshotControl = new FewshotControl({}) + + node.inspector.add(fewshotControl) + + return node.addInput(dataInput).addOutput(dataOutput).addOutput(outp) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const fewshot = node.data.fewshot as string + const strings = fewshot.split(',') + if (strings.length <= 0) { + return { + output: '', + } + } + + let index = Math.floor(Math.random() * strings.length) + if (recently_used.length == strings.length) { + recently_used.splice(0, recently_used.length) + } + + while (recently_used.includes(strings[index])) { + index = Math.floor(Math.random() * strings.length) + } + + recently_used.push(strings[index]) + if (clear !== undefined) { + clearTimeout(clear) + clear = setTimeout(() => { + recently_used.splice(0, recently_used.length) + clear = undefined + }, 60000) + } + + return { + output: strings[index], + } + } +} diff --git a/core/src/components/entities/RandomProfanityResponse.ts b/core/src/components/entities/RandomProfanityResponse.ts new file mode 100644 index 000000000..4ea0781d5 --- /dev/null +++ b/core/src/components/entities/RandomProfanityResponse.ts @@ -0,0 +1,99 @@ +/* eslint-disable camelcase */ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { FewshotControl } from '../../dataControls/FewshotControl' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = + 'Random String From List returns a randomly selected string from an array, it keeps memory of recently selected strings' + +const fewshot = `Why are you talking like this?,Please don't be mean` + +const recently_used: string[] = [] +let clear: any = undefined + +type WorkerReturn = { + output: string +} + +export class RandomProfanityResponse extends ThothComponent< + Promise +> { + constructor() { + super('Random Profanity Response') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Agents' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + node.data.fewshot = fewshot + + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const outp = new Rete.Output('output', 'String', stringSocket) + + const fewshotControl = new FewshotControl({}) + + node.inspector.add(fewshotControl) + + return node.addInput(dataInput).addOutput(dataOutput).addOutput(outp) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const fewshot = node.data.fewshot as string + const strings = fewshot.split(',') + if (strings.length <= 0) { + return { + output: '', + } + } + + let index = Math.floor(Math.random() * strings.length) + if (recently_used.length == strings.length) { + recently_used.splice(0, recently_used.length) + } + + while (recently_used.includes(strings[index])) { + index = Math.floor(Math.random() * strings.length) + } + + recently_used.push(strings[index]) + if (clear !== undefined) { + clearTimeout(clear) + clear = setTimeout(() => { + recently_used.splice(0, recently_used.length) + clear = undefined + }, 60000) + } + + return { + output: strings[index], + } + } +} diff --git a/core/src/components/entities/Request.ts b/core/src/components/entities/Request.ts new file mode 100644 index 000000000..5d65cc237 --- /dev/null +++ b/core/src/components/entities/Request.ts @@ -0,0 +1,116 @@ +/* eslint-disable no-async-promise-executor */ +/* eslint-disable camelcase */ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { InputControl } from '../../dataControls/InputControl' +import { SocketGeneratorControl } from '../../dataControls/SocketGenerator' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Request is used to make a web request to a server.' + +type WorkerReturn = { + output: any +} + +export class Request extends ThothComponent> { + constructor() { + super('Request') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Agents' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const outp = new Rete.Output('output', 'output', stringSocket) + + const nameControl = new InputControl({ + dataKey: 'name', + name: 'Component Name', + }) + + const inputGenerator = new SocketGeneratorControl({ + connectionType: 'input', + name: 'Input Sockets', + ignored: ['trigger'], + }) + + const url = new InputControl({ + dataKey: 'url', + name: 'URL', + icon: 'moon', + }) + + const method = new InputControl({ + dataKey: 'method', + name: 'method', + icon: 'moon', + }) + + node.inspector.add(nameControl).add(inputGenerator).add(url).add(method) + + return node.addInput(dataInput).addOutput(dataOutput).addOutput(outp) + } + + async worker( + node: NodeData, + rawInputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const name = node.data.name as string + node.name = name + + const inputs = Object.entries(rawInputs).reduce((acc, [key, value]) => { + acc[key] = value[0] + return acc + }, {} as Record) + + let url = node?.data?.url as string + const method = (node?.data?.method as string)?.toLowerCase().trim() + if (url.startsWith('server')) { + url = url.replace('server', process.env.REACT_APP_API_URL as string) + } + + let resp = undefined as any + if (method === 'post') { + resp = await axios.post(url, inputs) + } else if (method === 'get') { + resp = await axios.get(url, { params: inputs }) + } else if (method === 'delete') { + resp = await axios.delete(url, { params: inputs }) + } else if (method === 'put') { + resp = await axios.put(url, inputs) + } else if (method === 'head') { + resp = await axios.head(url, { params: inputs }) + } else { + console.log('Request Method (' + method + ') not supported!') + } + + return { + output: resp ? (resp.data as any) : '', + } + } +} diff --git a/core/src/components/entities/SearchArxiv.js b/core/src/components/entities/SearchArxiv.js new file mode 100644 index 000000000..84f742591 --- /dev/null +++ b/core/src/components/entities/SearchArxiv.js @@ -0,0 +1,171 @@ +// modified from https://www.npmjs.com/package/arxiv-api +import axios from 'axios' +import _ from 'lodash' + +const util = require('util') +const { parseString } = require('xml2js') + +const PREFIXES = { + ALL: 'all', + TI: 'ti', // Title + AU: 'au', // Author + ABS: 'abs', // Abstract + CO: 'co', // Comment + JR: 'jr', // Journal Reference + CAT: 'cat', // Subject Category + RN: 'rn', // Report Number +} + +const SEPARATORS = { + AND: '+AND+', + OR: '+OR+', + ANDNOT: '+ANDNOT+', +} + +const SORT_BY = { + RELEVANCE: 'relevance', + LAST_UPDATED_DATE: 'lastUpdatedDate', + SUBMITTED_DATE: 'submittedDate', +} + +const SORT_ORDER = { + ASCENDING: 'ascending', + DESCENDING: 'descending', +} + +module.exports = { + PREFIXES, + SEPARATORS, + SORT_BY, + SORT_ORDER, +} + +const parseStringPromisified = util.promisify(parseString) + +const get_arxiv_url = ({ searchQuery, sortBy, sortOrder, start, maxResults }) => + `http://export.arxiv.org/api/query?search_query=${searchQuery}&start=${start}&max_results=${maxResults}${sortBy ? `&sortBy=${sortBy}` : '' + }${sortOrder ? `&sortOrder=${sortOrder}` : ''}` + +/** + * Parse arXiv entry object. + * @param {Object} entry. + * @returns {Object} formatted arXiv entry object. + */ +function parseArxivObject(entry) { + return { + id: _.get(entry, 'id[0]', ''), + title: _.get(entry, 'title[0]', ''), + summary: _.get(entry, 'summary[0]', '').trim(), + authors: _.get(entry, 'author', []).map(author => author.name), + links: _.get(entry, 'link', []).map(link => link.$), + published: _.get(entry, 'published[0]', ''), + updated: _.get(entry, 'updated[0]', ''), + categories: _.get(entry, 'category', []).map(category => category.$), + } +} + +/** + * Parse a tag to a query string. + * @param {{name: string, prefix: string}} tag + * @param {string} name - the name of the tag - mandatory. + * @param {string} prefix - one of PREFIXES - default to ALL. + * @returns {string} query string of a tag. + */ +function parseTag({ name, prefix = PREFIXES.ALL }) { + if (!_.isString(name) || _.isEmpty(name)) { + throw new Error('you must specify tag name') + } + if (!Object.values(PREFIXES).includes(prefix)) { + throw new Error(`unsupported prefix: ${prefix}`) + } + return `${prefix}:${name}` +} + +/** + * Parse include tags and exclude tags to a query string. + * @param {Array.<{include: Array, exclude: Array}>} tags + * @returns {string} query string between tags. + */ +function parseTags({ include, exclude = [] }) { + if (!Array.isArray(include) || !Array.isArray(exclude)) { + throw new Error('include and exclude must be arrays') + } + if (include.length === 0) { + throw new Error('include is a mandatory field') + } + return `${include.map(parseTag).join(SEPARATORS.AND)}${exclude.length > 0 ? SEPARATORS.ANDNOT : '' + }${exclude.map(parseTag).join(SEPARATORS.ANDNOT)}` +} + +/** + * Fetch data from arXiv API + * @async + * @param {{searchQueryParams: Array.<{include: Array, exclude: Array}>, start: number, maxResults: number}} args + * @param {Array} searchQueryParams - array of search query. + * @param {string} sortBy - can be "relevance", "lastUpdatedDate", "submittedDate". + * @param {string} sortOrder - can be either "ascending" or "descending". + * @param {number} start - the index of the first returned result. + * @param {number} maxResults - the number of results returned by the query. + * @returns {Promise} + */ +async function search({ + searchQueryParams, + sortBy, + sortOrder, + start = 0, + maxResults = 10, +}) { + if (!Array.isArray(searchQueryParams)) { + throw new Error('query param must be an array') + } + if (sortBy && !Object.values(SORT_BY).includes(sortBy)) { + throw new Error( + `unsupported sort by option. should be one of: ${Object.values( + SORT_BY + ).join(' ')}` + ) + } + if (sortOrder && !Object.values(SORT_ORDER).includes(sortOrder)) { + throw new Error( + `unsupported sort order option. should be one of: ${Object.values( + SORT_ORDER + ).join(' ')}` + ) + } + const searchQuery = searchQueryParams.map(parseTags).join(SEPARATORS.OR) + const response = await axios.get( + get_arxiv_url({ searchQuery, sortBy, sortOrder, start, maxResults }) + ) + const parsedData = await parseStringPromisified(response.data) + return _.get(parsedData, 'feed.entry', []).map(parseArxivObject) +} + +; (async (includeQueries, excludeQueries) => { + const papers = await search({ + searchQueryParams: [ + { + include: includeQueries.map(query => { + return { name: query } + }), + exclude: excludeQueries.map(query => { + return { name: query } + }), + }, + ], + start: 0, + maxResults: 10, + }) + + for (const article in papers) { + console.log(papers[article].title) + } + + console.log(papers) +})() + +export async function getArticle(id) { + // ID is expected to be in [S2PaperId | DOI | ArXivId] + const response = await fetch(`https://api.semanticscholar.org/v1/paper/${id}`) + const data = await response.text() + return JSON.parse(data) +} diff --git a/core/src/components/entities/room3d.ts b/core/src/components/entities/room3d.ts new file mode 100644 index 000000000..4f6992f7d --- /dev/null +++ b/core/src/components/entities/room3d.ts @@ -0,0 +1,93 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +//@ts-nocheck + +function clamp(value, min, max) { + if (value < min) { + return min + } else if (value > max) { + return max + } else { + return value + } +} + +export class room3d { + users = {} + distances = { + default: 5, + same_topic: 1, + conversation: 8.5, + talk_to_other: 2, + someone_elses_topic: -2, + response: 8.5, + min: 0, + max: 10, + } + maxUsersInside = 50 + + constructor(users) { + for (let i = 0; i < users.length; i++) { + this.users[users[i]] = this.distances['default'] + } + } + + addUser(user) { + this.users[user] = this.distances['default'] + } + removeUser(user) { + if (this.users[user] === undefined) { + return + } + + delete this.users[user] + } + userExists(user) { + return this.users[user] && this.users[user] !== undefined + } + + isFull() { + return Object.keys(this.users).length >= this.maxUsersInside + } + isEmpty() { + return Object.keys(this.users).length === 0 + } + + getUsersDistance(user) { + return this.users[user] + } + + userTalkedSameTopic(user) { + this.users[user] += this.distances['same_topic'] + } + userTalkedWithSomeoneElsesTopic(user, otherUser) { + if (this.agentCanResponse(otherUser)) { + this.userTalkedSameTopic(user) + return + } + + this.users[user] += this.distances['someone_elses_topic'] + this.users[user] = clamp( + this.users[user], + this.distances['min'], + this.distances['max'] + ) + } + userGotInConversationFromAgent(user) { + this.users[user] = this.distances['conversation'] + } + userPingedSomeoneElse(user) { + this.users[user] = this.distances['talk_to_other'] + } + + agentCanResponse(user) { + return this.users[user] >= this.distances['response'] + } + + print() { + for (const i in this.users) { + // console.log('user: ' + i + ' - distance: ' + this.users[i]) + } + } +} + +export default room3d diff --git a/core/src/components/entities/roomManager.ts b/core/src/components/entities/roomManager.ts new file mode 100644 index 000000000..917dfb114 --- /dev/null +++ b/core/src/components/entities/roomManager.ts @@ -0,0 +1,127 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck + +import room3d from './room3d' + +export class roomManager { + static instance + + rooms = {} + + constructor() { + roomManager.instance = this + } + + addUser(user, client) { + if (this.rooms[client] !== undefined) { + for (let i = 0; i < this.rooms[client].length; i++) { + if (this.rooms[client][i].isFull()) { + continue + } + this.rooms[client][i].addUser(user) + return + } + rooms[clients].push(new room3d([user])) + } else { + this.rooms[client] = [] + this.rooms[client].push(new room3d([user])) + } + } + removeUser(user, client) { + if (this.rooms[client] !== undefined) { + for (let i = 0; i < this.rooms[client].length; i++) { + if (this.rooms[client][i].userExists(user)) { + this.rooms[client][i].removeUser(user) + if (this.rooms[client][i].isEmpty()) { + this.rooms[client].splice(i, 1) + if (this.rooms[client].length === 0) { + delete this.rooms[client] + } + } + return + } + } + } + } + + getUsersDistance(user, client) { + if (this.rooms[client] !== undefined) { + for (let i = 0; i < this.rooms[client].length; i++) { + if (this.rooms[client][i].userExists(user)) { + return this.rooms[client][i].getUsersDistance(user) + } + } + } + + this.addUser(user, client) + return this.getUsersDistance(user, client) + } + + userTalkedSameTopic(user, client) { + if (this.rooms[client] !== undefined) { + for (let i = 0; i < this.rooms[client].length; i++) { + if (this.rooms[client][i].userExists(user)) { + this.rooms[client][i].userTalkedSameTopic(user) + return this.rooms[client][i].getUsersDistance(user) + } + } + } + + this.addUser(user, client) + return this.userTalkedSameTopic(user, client) + } + userGotInConversationFromAgent(user, client) { + if (this.rooms[client] !== undefined) { + for (let i = 0; i < this.rooms[client].length; i++) { + if (this.rooms[client][i].userExists(user)) { + this.rooms[client][i].userGotInConversationFromAgent(user) + return this.rooms[client][i].getUsersDistance(user) + } + } + } + + this.addUser(user, client) + return this.userGotInConversationFromAgent(user, client) + } + userPingedSomeoneElse(user, client) { + if (this.rooms[client] !== undefined) { + for (let i = 0; i < this.rooms[client].length; i++) { + if (this.rooms[client][i].userExists(user)) { + this.rooms[client][i].userPingedSomeoneElse(user) + return this.rooms[client][i].getUsersDistance(user) + } + } + } + + this.addUser(user, client) + return this.userPingedSomeoneElse(user, client) + } + agentCanResponse(user, client) { + if (this.rooms[client] !== undefined) { + for (let i = 0; i < this.rooms[client].length; i++) { + if (this.rooms[client][i].userExists(user)) { + return this.rooms[client][i].agentCanResponse(user) + } + } + } + + this.addUser(user, client) + return false + } + + print() { + for (const client in this.rooms) { + console.log(client + ' rooms:') + if (this.rooms[client] && this.rooms[client] !== undefined) { + for (let i = 0; i < this.rooms[client].length; i++) { + this.rooms[client][i].print() + } + } else { + console.log('no rooms') + } + console.log('----------------') + } + } +} + +export default roomManager diff --git a/core/src/components/Input.ts b/core/src/components/io/Input.ts similarity index 88% rename from core/src/components/Input.ts rename to core/src/components/io/Input.ts index 199f4cae3..ac57ddc96 100644 --- a/core/src/components/Input.ts +++ b/core/src/components/io/Input.ts @@ -8,17 +8,15 @@ import { ThothNode, ThothWorkerInputs, ThothWorkerOutputs, -} from '../../types' -import { TextInputControl } from '../controls/TextInputControl' -import { InputControl } from '../dataControls/InputControl' -import { PlaytestControl } from '../dataControls/PlaytestControl' -import { SwitchControl } from '../dataControls/SwitchControl' -import {} from '../../types' -import { Task } from '../plugins/taskPlugin/task' - -import { anySocket } from '../sockets' -import { ThothComponent, ThothTask } from '../thoth-component' -const info = `The input component allows you to pass a single value to your chain. You can set a default value to fall back to if no value is provided at runtime. You can also turn the input on to receive data from the playtest input.` +} from '../../../types' +import { TextInputControl } from '../../controls/TextInputControl' +import { InputControl } from '../../dataControls/InputControl' +import { PlaytestControl } from '../../dataControls/PlaytestControl' +import { SwitchControl } from '../../dataControls/SwitchControl' +import { Task } from '../../plugins/taskPlugin/task' +import { anySocket } from '../../sockets' +import { ThothComponent, ThothTask } from '../../thoth-component' +const info = `The input component allows you to pass a single value to your graph. You can set a default value to fall back to if no value is provided at runtime. You can also turn the input on to receive data from the playtest input.` type InputReturn = { output: unknown @@ -98,8 +96,8 @@ export class InputComponent extends ThothComponent { const data = node?.data?.playtestToggle as | { - receivePlaytest: boolean - } + receivePlaytest: boolean + } | undefined const togglePlaytest = new PlaytestControl({ diff --git a/core/src/components/Output.ts b/core/src/components/io/Output.ts similarity index 70% rename from core/src/components/Output.ts rename to core/src/components/io/Output.ts index f81122ed9..6d2c90875 100644 --- a/core/src/components/Output.ts +++ b/core/src/components/io/Output.ts @@ -1,3 +1,4 @@ +import axios from 'axios' import Rete from 'rete' import { v4 as uuidv4 } from 'uuid' @@ -7,13 +8,15 @@ import { ThothNode, ThothWorkerInputs, ThothWorkerOutputs, -} from '../../types' -import { InputControl } from '../dataControls/InputControl' -import { SwitchControl } from '../dataControls/SwitchControl' -import { triggerSocket, anySocket } from '../sockets' -import { ThothComponent } from '../thoth-component' +} from '../../../types' +import { InputControl } from '../../dataControls/InputControl' +import { SwitchControl } from '../../dataControls/SwitchControl' +import { triggerSocket, anySocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' const info = `The output component will pass values out from your spell. You can have multiple outputs in a spell and all output values will be collected. It also has an option to send the output to the playtest area for easy testing.` +// TODO: Remove me, move to process.env +const API_URL = 'https://localhost:8001' export class Output extends ThothComponent { constructor() { super('Output') @@ -68,7 +71,7 @@ export class Output extends ThothComponent { .addOutput(triggerOutput) } - worker( + async worker( node: NodeData, inputs: ThothWorkerInputs, outputs: ThothWorkerOutputs, @@ -76,7 +79,26 @@ export class Output extends ThothComponent { ) { if (!inputs.input) throw new Error('No input provided to output component') - const text = inputs.input.filter(Boolean)[0] as string + let text = inputs.input.filter(Boolean)[0] as string + const normalText = text as string + + console.log( + 'voiceOutput:', + node.data.voiceOutput && !normalText.startsWith('/') + ) + + console.log('normalText is', normalText) + + if (normalText && node.data.voiceOutput && !normalText.startsWith('/')) { + const url = await axios.get(`${API_URL}/speech_to_text`, { + params: { + text: normalText, + character: 'none', + }, + }) + + text = url.data + } //just need a new check here for playtest send boolean const { sendToPlaytest } = thoth diff --git a/core/src/components/io/TriggerIn.ts b/core/src/components/io/TriggerIn.ts new file mode 100644 index 000000000..93d54dfe6 --- /dev/null +++ b/core/src/components/io/TriggerIn.ts @@ -0,0 +1,136 @@ +import Rete from 'rete' +// @seang todo: convert data controls to typescript to remove this +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +//@ts-ignore +import { v4 as uuidv4 } from 'uuid' + +import { NodeData, ThothNode } from '../../../types' +import { InputControl } from '../../dataControls/InputControl' +import { PlaytestControl } from '../../dataControls/PlaytestControl' +import { TaskOptions } from '../../plugins/taskPlugin/task' +import { triggerSocket } from '../../sockets' +import { ThothComponent, ThothTask } from '../../thoth-component' + +const info = `The trigger in allows you to pass values into your spell either from a higher level component or from the server. There must be one single trigger into a spell for now as the server does not support multiple triggers. Yet.` + +export class TriggerIn extends ThothComponent { + task: TaskOptions + category: string + info: string + contextMenuName: string + nodeTaskMap: Record = {} + + constructor() { + // Name of the component + // If name of component changes please update module-manager workerModule code + super('Module Trigger In') + this.displayName = 'Trigger In' + this.contextMenuName = 'Trigger In' + + this.task = { + outputs: { + trigger: 'option', + }, + init: (task: ThothTask, node: ThothNode) => { + // store the nodes task inside the component + this.nodeTaskMap[node.id] = task + }, + } + + this.module = { + nodeType: 'triggerIn', + socket: triggerSocket, + } + + this.category = 'I/O' + + this.info = info + } + + subscriptionMap: Record = {} + + unsubscribe?: () => void + + subscribeToPlaytest(node: ThothNode) { + const { onPlaytest } = this.editor?.thoth as any + + // check node for the right data attribute + if (onPlaytest) { + // store the unsubscribe function in our node map + this.subscriptionMap[node.id] = onPlaytest((text: string) => { + // if the node doesnt have playtest toggled on, do nothing + const playtestToggle = node.data.playtestToggle as unknown as { + receivePlaytest: boolean + } + if (!playtestToggle.receivePlaytest) return + + const task = this.nodeTaskMap[node.id] + + // will need to run this here with the stater rather than the text + task?.run(text) + task?.reset() + this.editor?.trigger('process') + }) + } + } + + destroyed(node: ThothNode) { + if (this.subscriptionMap[node.id]) this.subscriptionMap[node.id]() + delete this.subscriptionMap[node.id] + } + + async run(node: ThothNode, data: NodeData) { + if (!node || node === undefined) { + throw new Error('node is undefined') + } + + const task = this.nodeTaskMap[node?.id] + if (task) await task.run(data) + } + + // the builder is used to "assemble" the node component. + // when we have enki hooked up and have grabbed all few shots, we would use the builder + // to generate the appropriate inputs and ouputs for the fewshot at build time + builder(node: ThothNode) { + if (this.subscriptionMap[node.id]) this.subscriptionMap[node.id]() + delete this.subscriptionMap[node.id] + + // create inputs here. First argument is the name, second is the type (matched to other components sockets), and third is the socket the i/o will use + const out = new Rete.Output('trigger', 'Trigger', triggerSocket) + node.data.socketKey = node?.data?.socketKey || uuidv4() + + // Handle default value if data is present + const nameInput = new InputControl({ + dataKey: 'name', + name: 'Trigger name', + }) + + // subscribe the node to the playtest input data stream + this.subscribeToPlaytest(node) + + const data = node?.data?.playtestToggle as + | { + receivePlaytest: boolean + } + | undefined + + const togglePlaytest = new PlaytestControl({ + dataKey: 'playtestToggle', + name: 'Receive from playtest input', + defaultValue: { + receivePlaytest: + data?.receivePlaytest !== undefined ? data?.receivePlaytest : true, + }, + ignored: ['output'], + label: 'Receive from playtest', + }) + + node.inspector.add(nameInput).add(togglePlaytest) + + return node.addOutput(out) + } + + worker() { + return {} + } +} diff --git a/core/src/components/TriggerOut.ts b/core/src/components/io/TriggerOut.ts similarity index 87% rename from core/src/components/TriggerOut.ts rename to core/src/components/io/TriggerOut.ts index 91d92da08..99b0bd917 100644 --- a/core/src/components/TriggerOut.ts +++ b/core/src/components/io/TriggerOut.ts @@ -4,11 +4,11 @@ import Rete from 'rete' //@ts-ignore import { v4 as uuidv4 } from 'uuid' -import { ThothNode } from '../../types' -import { InputControl } from '../dataControls/InputControl' -import { TaskOptions } from '../plugins/taskPlugin/task' -import { triggerSocket } from '../sockets' -import { ThothComponent } from '../thoth-component' +import { ThothNode } from '../../../types' +import { InputControl } from '../../dataControls/InputControl' +import { TaskOptions } from '../../plugins/taskPlugin/task' +import { triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' const info = `The trigger out component is mainly used to add an output to a spell when it is being run as a module, ie inside a component of another spell. It will pass the trigger signal out of the spell to the higher level spell.` type WorkerReturn = { diff --git a/core/src/components/BooleanGate.ts b/core/src/components/logic/BooleanGate.ts similarity index 88% rename from core/src/components/BooleanGate.ts rename to core/src/components/logic/BooleanGate.ts index d7c896a22..84a2fd7da 100644 --- a/core/src/components/BooleanGate.ts +++ b/core/src/components/logic/BooleanGate.ts @@ -1,8 +1,8 @@ import Rete from 'rete' -import { NodeData, ThothNode, ThothWorkerInputs } from '../../types' -import { booleanSocket, triggerSocket } from '../sockets' -import { ThothComponent } from '../thoth-component' +import { NodeData, ThothNode, ThothWorkerInputs } from '../../../types' +import { booleanSocket, triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' const info = `The boolean gate takes a boolean input, and depending on whether the value is true or false will only trigger one output or the other.` diff --git a/core/src/components/logic/Coallesce.ts b/core/src/components/logic/Coallesce.ts new file mode 100644 index 000000000..6cff3b124 --- /dev/null +++ b/core/src/components/logic/Coallesce.ts @@ -0,0 +1,122 @@ +import Rete from 'rete' + +import { + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { CodeControl } from '../../dataControls/CodeControl' +// @seang todo: convert data controls to typescript to remove this +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +//@ts-ignore +import { InputControl } from '../../dataControls/InputControl' +import { SocketGeneratorControl } from '../../dataControls/SocketGenerator' +import { triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const defaultCode = ` +// inputs: dictionary of inputs based on socket names +// data: internal data of the node to read or write to nodes data state +function worker(inputs, data) { + + // Keys of the object returned must match the names + // of your outputs you defined. + return {} +} +` + +const info = `The coalesce component is a temporary hack on the code component to force multiple inputs down to one and to process the result. You can define any number of inputs and outputs on it, and then write a custom worker function. You have access to the data plugged into the inputs you created on your component, and can send data out along your outputs. + +Please note that the return of your function must be an object whose keys are the same value as the names given to your output sockets. The incoming inputs argument is an object whose keys are the names you defined, and each is an array. +` +export class Coallesce extends ThothComponent { + constructor() { + // Name of the component + super('Coallesce') + + this.task = { + runOneInput: true, + outputs: { + trigger: 'option', + }, + } + this.category = 'Logic' + this.info = info + this.display = true + } + + builder(node: ThothNode): ThothNode { + if (!node.data.code) node.data.code = defaultCode + + const outputGenerator = new SocketGeneratorControl({ + connectionType: 'output', + ignored: ['trigger'], + name: 'Output Sockets', + }) + + const inputGenerator = new SocketGeneratorControl({ + connectionType: 'input', + ignored: ['trigger'], + name: 'Input Sockets', + }) + + const codeControl = new CodeControl({ + dataKey: 'code', + name: 'Code', + }) + + const nameControl = new InputControl({ + dataKey: 'name', + name: 'Component Name', + }) + + node.inspector + .add(nameControl) + .add(inputGenerator) + .add(outputGenerator) + .add(codeControl) + + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + + return node.addOutput(dataOutput).addInput(dataInput) + } + + // the worker contains the main business logic of the node. It will pass those results + // to the outputs to be consumed by any connected components + worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, data }: { silent: boolean; data: { code: unknown } } + ) { + function runCodeWithArguments(obj: unknown) { + const flattenedInputs = Object.entries(inputs).reduce( + (acc, [key, value]) => { + acc[key as string] = value[0] + return acc + }, + {} as Record + ) + // eslint-disable-next-line no-new-func + return Function('"use strict";return (' + obj + ')')()( + flattenedInputs, + data + ) + } + + try { + const value = runCodeWithArguments(node.data.code) + if (!silent) node.display(`${JSON.stringify(value).substring(0, 100)}`) + + return value + } catch (err) { + if (!silent) node.display(`Error evaluating code.`) + + // close the data socket so it doesnt error out + this._task.closed = ['data'] + throw err + } + } +} diff --git a/core/src/components/Code.ts b/core/src/components/logic/Code.ts similarity index 74% rename from core/src/components/Code.ts rename to core/src/components/logic/Code.ts index 7b80cb814..8de6ff64b 100644 --- a/core/src/components/Code.ts +++ b/core/src/components/logic/Code.ts @@ -1,20 +1,19 @@ import Rete from 'rete' import { - EngineContext, NodeData, ThothNode, ThothWorkerInputs, - ThothWorkerOutputs, -} from '../../types' -import { CodeControl } from '../dataControls/CodeControl' + ThothWorkerOutputs +} from '../../../types' +import { CodeControl } from '../../dataControls/CodeControl' // @seang todo: convert data controls to typescript to remove this // eslint-disable-next-line @typescript-eslint/ban-ts-comment //@ts-ignore -import { InputControl } from '../dataControls/InputControl' -import { SocketGeneratorControl } from '../dataControls/SocketGenerator' -import { triggerSocket } from '../sockets' -import { ThothComponent } from '../thoth-component' +import { InputControl } from '../../dataControls/InputControl' +import { SocketGeneratorControl } from '../../dataControls/SocketGenerator' +import { triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' const defaultCode = ` // inputs: dictionary of inputs based on socket names @@ -89,20 +88,26 @@ export class Code extends ThothComponent { node: NodeData, inputs: ThothWorkerInputs, outputs: ThothWorkerOutputs, - { - silent, - data, - thoth, - }: { silent: boolean; thoth: EngineContext; data: { code: unknown } } + { silent, data }: { silent: boolean; data: { code: unknown } } ) { - const { processCode } = thoth - if (!processCode) return + function runCodeWithArguments(obj: unknown) { + const flattenedInputs = Object.entries(inputs).reduce( + (acc, [key, value]) => { + acc[key as string] = value[0] + return acc + }, + {} as Record + ) + // eslint-disable-next-line no-new-func + return Function('"use strict";return (' + obj + ')')()( + flattenedInputs, + data + ) + } try { - // const value = runCodeWithArguments(node.data.code) - const value = processCode(node.data.code, inputs, data) - - if (!silent) node.display(`${JSON.stringify(value)}`) + const value = runCodeWithArguments(node.data.code) + if (!silent) node.display(`${JSON.stringify(value).substring(0, 100)}`) return value } catch (err) { diff --git a/core/src/components/ForEach.ts b/core/src/components/logic/ForEach.ts similarity index 91% rename from core/src/components/ForEach.ts rename to core/src/components/logic/ForEach.ts index 309eeb3cb..6e0e4fb8d 100644 --- a/core/src/components/ForEach.ts +++ b/core/src/components/logic/ForEach.ts @@ -5,9 +5,9 @@ import { ThothNode, ThothWorkerInputs, ThothWorkerOutputs, -} from '../../types' -import { arraySocket, triggerSocket, anySocket } from '../sockets' -import { ThothComponent, ThothTask } from '../thoth-component' +} from '../../../types' +import { arraySocket, triggerSocket, anySocket } from '../../sockets' +import { ThothComponent, ThothTask } from '../../thoth-component' const info = `The forEach component takes in an array, and will iterate over each item in the array, firing a new trigger signal with the appropriate value, until all items in the array have been processed.` type WorkerReturn = { diff --git a/core/src/components/logic/IsNullOrUndefined.ts b/core/src/components/logic/IsNullOrUndefined.ts new file mode 100644 index 000000000..5858b60be --- /dev/null +++ b/core/src/components/logic/IsNullOrUndefined.ts @@ -0,0 +1,57 @@ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Is Null Or Undefined checks if the input is null or undefined' + +export class IsNullOrUndefined extends ThothComponent> { + constructor() { + super('Is Null Or Undefined') + + this.task = { + outputs: { true: 'option', false: 'option' }, + } + + this.category = 'Logic' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const inp = new Rete.Input('string', 'String', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const isTrue = new Rete.Output('true', 'True', triggerSocket) + const isFalse = new Rete.Output('false', 'False', triggerSocket) + + return node + .addInput(inp) + .addInput(dataInput) + .addOutput(isTrue) + .addOutput(isFalse) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const action = inputs['string'][0] + const is = + action === null || action === undefined || (action as string).length <= 0 + console.log('found null or empty input:', is) + + this._task.closed = is ? ['false'] : ['true'] + } +} diff --git a/core/src/components/logic/IsVariableTrue.ts b/core/src/components/logic/IsVariableTrue.ts new file mode 100644 index 000000000..c9dc08753 --- /dev/null +++ b/core/src/components/logic/IsVariableTrue.ts @@ -0,0 +1,63 @@ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { triggerSocket, anySocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = + 'Is Variable true checks if input is true - string or boolean are checked as true or false, numbers are checked as 0 or 1, undifined or null are checked as false' +export class IsVariableTrue extends ThothComponent { + constructor() { + super('Is Variable True') + + this.task = { + outputs: { true: 'option', false: 'option' }, + } + + this.category = 'Logic' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const inp = new Rete.Input('input', 'Input', anySocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const isTrue = new Rete.Output('true', 'True', triggerSocket) + const isFalse = new Rete.Output('false', 'False', triggerSocket) + + return node + .addInput(inp) + .addInput(dataInput) + .addOutput(isTrue) + .addOutput(isFalse) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const action = inputs['input'][0] + const type = typeof action + let is = false + if (type === 'string') { + is = action == 'true' + } else if (type === 'boolean') { + is = action == true + } else if (type === 'number') { + is = action == 1 + } + + this._task.closed = is ? ['false'] : ['true'] + } +} diff --git a/core/src/components/logic/LogicalOperator.ts b/core/src/components/logic/LogicalOperator.ts new file mode 100644 index 000000000..09ef06bfc --- /dev/null +++ b/core/src/components/logic/LogicalOperator.ts @@ -0,0 +1,105 @@ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { InputControl } from '../../dataControls/InputControl' +import { NumberControl } from '../../dataControls/NumberControl' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = + 'Logical Operator is used to compare two values - options: equal, not equal, greater than, less greater than' + +type WorkerReturn = { + error: string +} + +export class LogicalOperator extends ThothComponent> { + constructor() { + super('Logical Operator') + + this.task = { + outputs: { true: 'option', false: 'option', error: 'output' }, + } + + this.category = 'Logic' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const inp1 = new Rete.Input('input1', 'Input 1', stringSocket) + const inp2 = new Rete.Input('input2', 'Input 2', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const isTrue = new Rete.Output('true', 'True', triggerSocket) + const isFalse = new Rete.Output('false', 'False', triggerSocket) + const outp = new Rete.Output('error', 'Error', stringSocket) + + const operationType = new InputControl({ + dataKey: 'operationType', + name: 'Operation Type', + icon: 'moon', + }) + + const testt = new NumberControl({ + dataKey: 'testt', + name: 'testt Type', + icon: 'moon', + }) + + node.inspector.add(operationType).add(testt) + + return node + .addInput(inp1) + .addInput(inp2) + .addInput(dataInput) + .addOutput(isTrue) + .addOutput(isFalse) + .addOutput(outp) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const inp1 = inputs['input1'][0] as string + const inp2 = inputs['input2'][0] as string + const operationTypeData = node?.data?.operationType as string + const operationType = + operationTypeData !== undefined && operationTypeData.length > 0 + ? operationTypeData.toLowerCase().trim() + : 'includes' + let is: boolean = false + let error = '' + + try { + if (operationType === 'equal') { + is = inp1 == inp2 + } else if (operationType === 'not equal') { + is = inp1 != inp2 + } else if (operationType === 'greater than') { + is = inp1 > inp2 + } else if (operationType === 'less greater than') { + is = inp1 < inp2 + } + } catch (e) { + error = e.message + } + + this._task.closed = is ? ['false'] : ['true'] + return { + error: error, + } + } +} diff --git a/core/src/components/SwitchGate.ts b/core/src/components/logic/SwitchGate.ts similarity index 86% rename from core/src/components/SwitchGate.ts rename to core/src/components/logic/SwitchGate.ts index cbc2d82e0..23b62ee6b 100644 --- a/core/src/components/SwitchGate.ts +++ b/core/src/components/logic/SwitchGate.ts @@ -5,13 +5,10 @@ import { NodeData, ThothNode, ThothWorkerInputs, -} from '../../types' -import { SocketGeneratorControl } from '../dataControls/SocketGenerator' -import { anySocket, triggerSocket } from '../sockets' -import { ThothComponent } from '../thoth-component' -// function capitalizeFirstLetter(string) { -// return string.charAt(0).toUpperCase() + string.slice(1); -// } +} from '../../../types' +import { SocketGeneratorControl } from '../../dataControls/SocketGenerator' +import { anySocket, triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' const info = `The Switch Gate component takes a single input, and allows you to define any number of outputs. It works the same as the javascript switch. The component will try to match the value of the input to one of the output socket names you have created. It will route the trigger signal through that socket.` diff --git a/core/src/components/logic/WhileLoop.ts b/core/src/components/logic/WhileLoop.ts new file mode 100644 index 000000000..373946653 --- /dev/null +++ b/core/src/components/logic/WhileLoop.ts @@ -0,0 +1,79 @@ +/* eslint-disable require-await */ +/* eslint-disable no-console */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { NumberControl } from '../../dataControls/NumberControl' +import { triggerSocket } from '../../sockets' +import { ThothComponent, ThothTask } from '../../thoth-component' + +const info = `While loop is used to execute a series of tasks for x times` + +type WorkerReturn = { + element: number +} +export class WhileLoop extends ThothComponent< + Promise +> { + constructor() { + super('While Loop') + this.task = { + outputs: { true: 'option', element: 'output', false: 'option' }, + } + this.category = 'Logic' + this.info = info + } + + builder(node: ThothNode) { + const inp = new Rete.Input('act1', 'Data', triggerSocket, true) + const isTrue = new Rete.Output('true', 'Done', triggerSocket) + const isFalse = new Rete.Output('false', 'Loop', triggerSocket) + + const recursionTimes = new NumberControl({ + dataKey: 'recursionTimes', + name: 'Recursion Times', + icon: 'moon', + }) + + node.inspector.add(recursionTimes) + + return node.addInput(inp).addOutput(isTrue).addOutput(isFalse) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { element }: { element: number } + ) { + const recursionTimesData = node?.data?.recursionTimes as string + const recursionTimes = recursionTimesData ? parseInt(recursionTimesData) : 0 + const array: number[] = [] + for (let i = 0; i < recursionTimes - (element ?? 0); i++) { + array.push(i + 1) + } + + if (element === undefined) { + await Promise.all( + array.map((el: number) => { + if (el >= 2) { + return + } + this._task + .clone(false, {} as ThothTask, {} as ThothTask) + .run({ element: element !== undefined ? element + 1 : 1 }) + }) + ) + this._task.closed = ['false'] + } else { + this._task.closed = ['true'] + return { element } + } + } +} diff --git a/core/src/components/ActionType.ts b/core/src/components/ml/ActionType.ts similarity index 78% rename from core/src/components/ActionType.ts rename to core/src/components/ml/ActionType.ts index e4b490ca4..7fced0514 100644 --- a/core/src/components/ActionType.ts +++ b/core/src/components/ml/ActionType.ts @@ -1,3 +1,5 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' import Rete from 'rete' import { @@ -6,10 +8,11 @@ import { ThothNode, ThothWorkerInputs, ThothWorkerOutputs, -} from '../../types' -import { FewshotControl } from '../dataControls/FewshotControl' -import { stringSocket, triggerSocket } from '../sockets' -import { ThothComponent } from '../thoth-component' +} from '../../../types' +import { FewshotControl } from '../../dataControls/FewshotControl' +import { stringSocket, triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + const fewshot = `Given an action classify the type of action it is Types: look, get, use, craft, dialog, movement, travel, combat, consume, other @@ -54,7 +57,7 @@ export class ActionTypeComponent extends ThothComponent> { // when we have enki hooked up and have grabbed all few shots, we would use the builder // to generate the appropriate inputs and ouputs for the fewshot at build time builder(node: ThothNode) { - node.data.fewshot = fewshot + if(!node.data.fewshot) node.data.fewshot = fewshot // create inputs here. First argument is the name, second is the type (matched to other components sockets), and third is the socket the i/o will use const inp = new Rete.Input('action', 'Action', stringSocket) const out = new Rete.Output('actionType', 'ActionType', stringSocket) @@ -80,33 +83,35 @@ export class ActionTypeComponent extends ThothComponent> { outputs: ThothWorkerOutputs, { silent, thoth }: { silent: boolean; thoth: EngineContext } ) { - const { completion } = thoth const action = inputs['action'][0] const fewshot = node.data.fewshot as string const prompt = fewshot + action + ',' - if (!action) - throw new Error( - 'ActionType Module requires action string to be passed into it.' - ) - - const body = { - prompt, - stop: ['\n'], - maxTokens: 100, - temperature: 0.0, - } + const resp = await axios.post( + `${process.env.REACT_APP_API_URL ?? + process.env.API_URL ?? + 'https://localhost:8001' + }/text_completion`, + { + params: { + prompt: prompt, + modelName: 'davinci', + temperature: 0.0, + maxTokens: 100, + stop: ['\n'], + }, + } + ) - try { - const raw = (await completion(body)) as string - const result = raw?.trim() + let result = '' + const { success, choice } = resp.data + if (success) { + result = choice?.trim() if (!silent) node.display(result) + } - return { - actionType: result, - } - } catch (err) { - throw new Error('Error in ActionType component') + return { + actionType: result, } } } diff --git a/core/src/components/ml/Classifier.ts b/core/src/components/ml/Classifier.ts new file mode 100644 index 000000000..e63df41e7 --- /dev/null +++ b/core/src/components/ml/Classifier.ts @@ -0,0 +1,109 @@ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { InputControl } from '../../dataControls/InputControl' +import { stringSocket, triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = + 'Classifier takes an input string and arbitrary labels and returns the most likely label' + +type InputReturn = { + output: unknown +} + +export class Classifier extends ThothComponent> { + constructor() { + super('Classifier') + + this.task = { + outputs: { + trigger: 'option', + output: 'output', + }, + } + + this.category = 'AI/ML' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const input = new Rete.Input('input', 'Input', stringSocket) + + const nameControl = new InputControl({ + dataKey: 'name', + name: 'Component Name', + }) + + const labelControl = new InputControl({ + dataKey: 'labels', + name: 'Labels', + }) + + node.inspector.add(nameControl).add(labelControl) + const labelInput = new Rete.Input('labels', 'Labels', stringSocket, true) + const modelInput = new Rete.Input('model', 'Model Name', stringSocket, true) + + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const output = new Rete.Output('output', 'Output', stringSocket, true) + + return node + .addOutput(output) + .addOutput(dataOutput) + .addInput(input) + .addInput(labelInput) + .addInput(modelInput) + .addInput(dataInput) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const inputData = inputs['input'][0] + const labels = inputs['labels'] && inputs['labels'][0] + const labelData = ((labels ?? node.data?.labels) as string).split(', ') + + const parameters = { + candidate_labels: labelData, + } + + const _parameters = { candidate_labels: parameters } + + const resp = await axios.post( + `${process.env.REACT_APP_API_URL ?? + process.env.API_URL ?? + 'https://localhost:8001' + }/hf_request`, + { + inputs: inputData as string, + model: 'facebook/bart-large-mnli', + parameters: _parameters, + options: undefined, + } + ) + + const { data, success, error } = resp.data + + if (!silent) { + if (!success || !data) node.display(error) + else node.display('Top label is ' + data && data.labels) + } + console.log('Respone is', resp.data) + return { output: (data && data?.labels && data?.labels[0]) ?? 'error' } + } +} diff --git a/core/src/components/DifficultyDetector.ts b/core/src/components/ml/DifficultyDetector.ts similarity index 94% rename from core/src/components/DifficultyDetector.ts rename to core/src/components/ml/DifficultyDetector.ts index 575723810..98ed59a76 100644 --- a/core/src/components/DifficultyDetector.ts +++ b/core/src/components/ml/DifficultyDetector.ts @@ -5,11 +5,11 @@ import { ThothNode, ThothWorkerInputs, ThothWorkerOutputs, -} from '../../types' -import { FewshotControl } from '../dataControls/FewshotControl' -import { EngineContext } from '../../types' -import { stringSocket, triggerSocket } from '../sockets' -import { ThothComponent } from '../thoth-component' + EngineContext +} from '../../../types' +import { FewshotControl } from '../../dataControls/FewshotControl' +import { stringSocket, triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' // For simplicity quests should be ONE thing not complete X and Y const fewshot = `Given an action, predict how hard it would be for a normal human in a fantasy world and what type of stat it uses. @@ -71,7 +71,7 @@ export class DifficultyDetectorComponent extends ThothComponent< displayControl = {} builder(node: ThothNode) { - node.data.fewshot = fewshot + if(!node.data.fewshot) node.data.fewshot = fewshot const inp = new Rete.Input('action', 'Action', stringSocket) const difficultyOut = new Rete.Output( 'difficulty', diff --git a/core/src/components/EnkiTask.ts b/core/src/components/ml/EnkiTask.ts similarity index 89% rename from core/src/components/EnkiTask.ts rename to core/src/components/ml/EnkiTask.ts index 7c1d28c9b..62a3cb9e2 100644 --- a/core/src/components/EnkiTask.ts +++ b/core/src/components/ml/EnkiTask.ts @@ -3,11 +3,11 @@ import { ThothNode, ThothWorkerInputs, ThothWorkerOutputs, -} from '../../types' -import { EnkiThroughputControl } from '../dataControls/EnkiThroughputControl' -import { EngineContext } from '../../types' -import { ThothComponent } from '../thoth-component' -const info = `Enki is a tool for building both fewshots, as well as entire data sets. The enki component allows you to select an enki which you or someone else has made in the Enki tool and utilize it in your spell chains. + EngineContext +} from '../../../types' +import { EnkiThroughputControl } from '../../dataControls/EnkiThroughputControl' +import { ThothComponent } from '../../thoth-component' +const info = `Enki is a tool for building both fewshots, as well as entire data sets. The enki component allows you to select an enki which you or someone else has made in the Enki tool and utilize it in your spells. Due to current limitations in data structure, the enki inputs and outputs are unnamed, so you will have to know the order of them and what to use them for by referencing their usage in Enki.` diff --git a/core/src/components/EntityDetector.ts b/core/src/components/ml/EntityDetector.ts similarity index 71% rename from core/src/components/EntityDetector.ts rename to core/src/components/ml/EntityDetector.ts index db3ec3db9..c651076dc 100644 --- a/core/src/components/EntityDetector.ts +++ b/core/src/components/ml/EntityDetector.ts @@ -1,125 +1,101 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' import Rete from 'rete' import { + EngineContext, NodeData, ThothNode, ThothWorkerInputs, ThothWorkerOutputs, -} from '../../types' -import { FewshotControl } from '../dataControls/FewshotControl' -import { EngineContext } from '../../types' -import { TaskOptions } from '../plugins/taskPlugin/task' -import { stringSocket, triggerSocket, arraySocket } from '../sockets' -import { ThothComponent } from '../thoth-component' +} from '../../../types' +import { FewshotControl } from '../../dataControls/FewshotControl' +import { stringSocket, triggerSocket, arraySocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' +import { TaskOptions } from '../plugins/../taskPlugin/task' const fewshot = `Given an action, detect what entities the player is interacting with. Ignore entities that the player is just asking about. - Entity types: food, person, creature, object, place, other, none - Action: throw an anvil at the man Entities: anvil, man Types: object (use), person (target) - Action: cast a fireball spell Entities: none Types: none - Action: convince the king to give you his kingdom Entities: king, kingdom Types: person (target), object (dialog) - Action: talk to the merchant Entities: merchant Types: person (target) - Action: ask where the bandit leader is Entities: bandit leader Types: person (dialog) - Action: leap over the chasm Entities: chasm Types: location (target) - Action: climb up the mountain Entities: mountain Types: location (target) - Action: throw a stone at the goblin Entities: stone, goblin Types: object (use), creature (target) - Action: run away from the orcs Entities: orcs Types: creature (target) - Action: ask how that relates to the dragon Entities: none Types: none - Action: ask the baker to give you a free loaf of bread Entities: baker, loaf of bread Types: person (target), food (dialog) - Action: get the merchant to give you better prices Entities: merchant Types: person (target) - Action: keep hiking Entities: none Types: none - Action: convince the bartender to give you the deed to his tavern Entities: bartender, tavern deed Types: person (target), object (dialog) - Action: go to the woman's home Entities: woman's home Types: location (target) - Action: ask the man for some water Entities: man, water Types: person (target), object (dialog) - Action: Jump onto your horse Entities: horse Types: creature (target) - Action: invent a new spell Entities: none Types: none - Action: ask the bartender for a machine gun Entities: bartender, machine gun Types: person (target), object (dialog) - Action: ask why the dragon attacked Entities: dragon Types: creature (dialog) - Action: cast a torchlight spell Entities: none Types: none - Action: ask where Zolarius the wizard is Entities: Zolarius the wizard Types: person (dialog) - Action: throw a pie at the waitress Entities: pie, waitress Types: food (use), person (target) - Action: ask where the wizard is Entities: wizard Types: person (dialog) - Action: draw your sword and fights the wolves Entities: sword, wolves Types: object (use), creature (target) - Action: ` const info = `The entity detector takes in an action as a string, and attempts to report any discrete entities are mentioned, and their general type. - -The fewshot can be edited in the text editor, though note that the data structure must remain the same for proper processing.` +The fewshot can be edited in the text edior, though note that the data structure must remian the same for proper processing.` type Entity = { name: string @@ -142,8 +118,8 @@ export class EntityDetector extends ThothComponent< entities: 'output', trigger: 'option', }, - init: () => {}, - onRun: () => {}, + init: () => { }, + onRun: () => { }, } as TaskOptions this.category = 'AI/ML' this.display = true @@ -154,7 +130,7 @@ export class EntityDetector extends ThothComponent< // when we have enki hooked up and have grabbed all few shots, we would use the builder // to generate the appropriate inputs and ouputs for the fewshot at build time builder(node: ThothNode) { - node.data.fewshot = fewshot + if(!node.data.fewshot) node.data.fewshot = fewshot // create inputs here. First argument is the name, second is the type (matched to other components sockets), and third is the socket the i/o will use const inp = new Rete.Input('action', 'Action', stringSocket) const out = new Rete.Output('entities', 'Entities', arraySocket) @@ -180,51 +156,56 @@ export class EntityDetector extends ThothComponent< outputs: ThothWorkerOutputs, { silent, thoth }: { silent: boolean; thoth: EngineContext } ) { - const { completion } = thoth const action = inputs['action'][0] const fewshot = node.data.fewshot as string const prompt = fewshot + action + '\nEntities:' - const body = { - prompt, - stop: ['\n\n'], - maxTokens: 50, - temperature: 0.0, - } + const resp = await axios.post( + `${process.env.REACT_APP_API_URL ?? + process.env.API_URL ?? + 'https://localhost:8001' + }/text_completion`, + { + params: { + prompt: prompt, + modelName: 'davinci', + temperature: 0.0, + maxTokens: 50, + stop: ['\n\n'], + }, + } + ) - try { - const result = (await completion(body)) as string + const { success, choice } = resp.data + const result = success ? (choice as string) : '' - const split = result?.replace('\n', '')?.trim()?.split('Types: ') + const split = result?.replace('\n', '')?.trim()?.split('Types: ') - const [entities, types] = split - ? split.map(item => item.split(', ').map(x => x.trim())) - : [undefined, undefined] + const [entities, types] = split + ? split.map(item => item.split(', ').map(x => x.trim())) + : [undefined, undefined] - if (!entities || entities.length === 0) return [] - if (!types) return [] + if (!entities || entities.length === 0) return [] + if (!types) return [] - for (let i = 0; i < entities.length; i++) { - if (types[i]?.includes('(dialog)')) { - types.splice(i, 1) - entities.splice(i, 1) - } + for (let i = 0; i < entities.length; i++) { + if (types[i]?.includes('(dialog)')) { + types.splice(i, 1) + entities.splice(i, 1) } + } - if (entities[0] === 'none') return [] + if (entities[0] === 'none') return [] - const allEntities = entities.map((entity, i) => ({ - name: entity, - type: types[i], - })) + const allEntities = entities.map((entity, i) => ({ + name: entity, + type: types[i], + })) - if (!silent) node.display(JSON.stringify(allEntities)) + if (!silent) node.display(JSON.stringify(allEntities)) - return { - entities: allEntities, - } - } catch (err) { - throw new Error('Error in Entitiy Detector component') + return { + entities: allEntities, } } } diff --git a/core/src/components/Generator.ts b/core/src/components/ml/Generator.ts similarity index 88% rename from core/src/components/Generator.ts rename to core/src/components/ml/Generator.ts index 387ea8fbf..05a47bc0c 100644 --- a/core/src/components/Generator.ts +++ b/core/src/components/ml/Generator.ts @@ -2,19 +2,20 @@ import Handlebars from 'handlebars' import Rete from 'rete' import { + EngineContext, NodeData, ThothNode, ThothWorkerInputs, ThothWorkerOutputs, -} from '../../types' -import { FewshotControl } from '../dataControls/FewshotControl' -import { InputControl } from '../dataControls/InputControl' -import { DropdownControl } from '../dataControls/DropdownControl' -import { SocketGeneratorControl } from '../dataControls/SocketGenerator' -import { EngineContext } from '../../types' -import { triggerSocket, stringSocket } from '../sockets' -import { ThothComponent } from '../thoth-component' -const info = `The generator component is our general purpose completion component. You can define any number of inputs, and utilize those inputs in a templating language known as Handlebars. Any value which is wrapped like {{this}} in double braces will be replaced with the corresponding value coming in to the input with the same name. This allows you to write almost any fewshot you might need, and input values from anywhere else in your chain. +} from '../../../types' +import { DropdownControl } from '../../dataControls/DropdownControl' +import { FewshotControl } from '../../dataControls/FewshotControl' +import { InputControl } from '../../dataControls/InputControl' +import { SocketGeneratorControl } from '../../dataControls/SocketGenerator' +import { stringSocket, triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = `The generator component is our general purpose completion component. You can define any number of inputs, and utilize those inputs in a templating language known as Handlebars. Any value which is wrapped like {{this}} in double braces will be replaced with the corresponding value coming in to the input with the same name. This allows you to write almost any fewshot you might need, and input values from anywhere else in your graph. Controls have also been added which give you control of some of the fundamental settings of the OpenAI completion endpoint, including temperature, max tokens, and your stop sequence. @@ -137,9 +138,9 @@ export class Generator extends ThothComponent> { const stop = node?.data?.stop ? stopSequence.split(',').map(i => { - if (i.includes('\n')) return i - return i.trim() - }) + if (i.includes('\n')) return i + return i.trim() + }) : '' const tempData = node.data.temp as string @@ -172,6 +173,7 @@ export class Generator extends ThothComponent> { } } catch (err) { // Typescript reporting wrong about number of arguments for error constructor + // eslint-disable-next-line @typescript-eslint/ban-ts-comment //@ts-ignore:next-line throw new Error('Error in Generator component.', { cause: err }) } diff --git a/core/src/components/Huggingface.ts b/core/src/components/ml/Huggingface.ts similarity index 72% rename from core/src/components/Huggingface.ts rename to core/src/components/ml/Huggingface.ts index 93f71ea0e..93d3e578a 100644 --- a/core/src/components/Huggingface.ts +++ b/core/src/components/ml/Huggingface.ts @@ -1,3 +1,5 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' import Handlebars from 'handlebars' import Rete from 'rete' @@ -6,17 +8,15 @@ import { ThothNode, ThothWorkerInputs, ThothWorkerOutputs, -} from '../../types' -import { FewshotControl } from '../dataControls/FewshotControl' -import { InputControl } from '../dataControls/InputControl' -import { SocketGeneratorControl } from '../dataControls/SocketGenerator' -import { EngineContext } from '../../types' -import { triggerSocket, stringSocket } from '../sockets' -import { ThothComponent } from '../thoth-component' + EngineContext, +} from '../../../types' +import { FewshotControl } from '../../dataControls/FewshotControl' +import { InputControl } from '../../dataControls/InputControl' +import { SocketGeneratorControl } from '../../dataControls/SocketGenerator' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' const info = `The huggingface component is used to access models on huggingface.co. For now it is very simple. You define a number of inputs with the input generator, and you can use those in forming the request to your huggingface inference model. You input the name of the model from hugginface into the model name field, and you run it. It will call the model, and return the result. - -NOTE: Hugginface models are on demand, and sometimes require time to "boot up". We have tried to trigger an initial request that causes the model to load in the background while you are working, but this will not always be done in time. If it is not done, we will notify you via the "error" trigger out. - +NOTE: Hugginface models are on demand, and sometimes require time to "boot up". We have tried to trigger an initial request the cause the model to load in the background while you and working, but this will not always be done in time. If it is not done, we will notify you via the "error" trigger out. Also note that you will likely need to parse the return from huggingface yourself inside a code component, or similar.` type WorkerReturn = { @@ -72,8 +72,8 @@ export class HuggingfaceComponent extends ThothComponent< language: 'handlebars', }) - const modelControl = new InputControl({ - dataKey: 'model', + const stopControl = new InputControl({ + dataKey: 'modelName', name: 'Model Name', }) @@ -81,7 +81,7 @@ export class HuggingfaceComponent extends ThothComponent< .add(nameControl) .add(inputGenerator) .add(requestControl) - .add(modelControl) + .add(stopControl) return node } @@ -105,18 +105,29 @@ export class HuggingfaceComponent extends ThothComponent< const model = (node.data.model as string) || 'roberta-large-mnli' try { - const result = await thoth.huggingface(model, request) + const resp = await axios.post( + `${process.env.REACT_APP_API_URL}/hf_request`, + { + inputs: request, + model: model, + parameters: [], + options: undefined, + } + ) + + const { success, data } = resp.data - // This might cause bug - if (result.error) - throw new Error(`Huggingface result.error: ${result.error}`) + if (!success) throw Error() return { - result, + result: success ? data : '', } } catch (err) { this._task.closed = ['trigger'] - throw new Error('Error in HuggingFace component') + + return { + result: '', + } } } } diff --git a/core/src/components/ItemDetector.ts b/core/src/components/ml/ItemDetector.ts similarity index 65% rename from core/src/components/ItemDetector.ts rename to core/src/components/ml/ItemDetector.ts index d272eb8b3..55a66fd69 100644 --- a/core/src/components/ItemDetector.ts +++ b/core/src/components/ml/ItemDetector.ts @@ -1,18 +1,19 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' import Rete from 'rete' import { + EngineContext, NodeData, ThothNode, ThothWorkerInputs, ThothWorkerOutputs, -} from '../../types' -import { FewshotControl } from '../dataControls/FewshotControl' -import { EngineContext } from '../../types' -import { stringSocket, triggerSocket } from '../sockets' -import { ThothComponent } from '../thoth-component' +} from '../../../types' +import { FewshotControl } from '../../dataControls/FewshotControl' +import { stringSocket, triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' // For simplicity quests should be ONE thing not complete X and Y const fewshot = `Given an action, detect the item which is taken. - Action, Item: pick up the goblet from the fountain, goblet Action, Item: grab the axe from the tree stump, axe Action, Item: lean down and grab the spear from the ground, spear @@ -20,7 +21,7 @@ Action, Item: gather the valerian plant from the forest, valerian plant Action, Item: get the necklace from the box, necklace Action, Item: ` -const info = `The item detector attempts to recognize what item in a given text string is being mentioned or used. The input is a text string the output is a string of the object` +const info = `The item detector attempts to recognize what item in a give text string is being mentioned or used. The input is a text string the output is a string of the object` type WorkerReturn = { detectedItem: string @@ -41,7 +42,7 @@ export class ItemTypeComponent extends ThothComponent> { } builder(node: ThothNode) { - node.data.fewshot = fewshot + if(!node.data.fewshot) node.data.fewshot = fewshot const inp = new Rete.Input('string', 'Text', stringSocket) const out = new Rete.Output('detectedItem', 'Item Detected', stringSocket) const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) @@ -64,28 +65,33 @@ export class ItemTypeComponent extends ThothComponent> { outputs: ThothWorkerOutputs, { silent, thoth }: { silent: boolean; thoth: EngineContext } ) { - const { completion } = thoth const action = inputs['string'][0] const fewshot = node.data.fewshot as string const prompt = fewshot + action + ',' - const body = { - prompt, - stop: ['\n'], - maxTokens: 100, - temperature: 0.0, - } + const resp = await axios.post( + `${process.env.REACT_APP_API_URL ?? + process.env.API_URL ?? + 'https://localhost:8001' + }/text_completion`, + { + params: { + prompt: prompt, + modelName: 'davinci', + temperature: 0.0, + maxTokens: 100, + stop: ['\n'], + }, + } + ) - try { - const raw = (await completion(body)) as string - const result = raw?.trim() - if (!silent) node.display(result) + const { success, choice } = resp.data - return { - detectedItem: result, - } - } catch (err) { - throw new Error('Error in Item Detector component') + const result = success ? choice?.trim() : '' + if (!silent) node.display(result) + + return { + detectedItem: result, } } } diff --git a/core/src/components/ml/KeywordExtractor.ts b/core/src/components/ml/KeywordExtractor.ts new file mode 100644 index 000000000..7541e4ecb --- /dev/null +++ b/core/src/components/ml/KeywordExtractor.ts @@ -0,0 +1,179 @@ +/* eslint-disable camelcase */ +/* eslint-disable @typescript-eslint/ban-ts-comment */ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import keyword_extractor from 'keyword-extractor' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { BooleanControl } from '../../dataControls/BooleanControl' +import { triggerSocket, anySocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Keyword Extractor is used to extract keywords from an input' + +type WorkerReturn = { + output: any +} + +export class KeywordExtractor extends ThothComponent> { + constructor() { + super('Keyword Extractor') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'AI/ML' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const input = new Rete.Input('string', 'String', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const output = new Rete.Output('output', 'Output', anySocket) + + const onlyKeywords = new BooleanControl({ + dataKey: 'onlyKeywords', + name: 'Only Keywords', + }) + + node.inspector.add(onlyKeywords) + + return node + .addInput(input) + .addInput(dataInput) + .addOutput(dataOutput) + .addOutput(output) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const action = inputs['string'][0] as string + const onlyKeywords = node.data?.onlyKeywords as string + + const keywords = await keywordExtractor(action, onlyKeywords == 'true') + + return { + output: keywords, + } + } +} + +async function keywordExtractor(input: string, onlyKeywords: boolean) { + const keywords: any[] = [] + + const res = keyword_extractor.extract(input, { + language: 'english', + remove_digits: true, + return_changed_case: true, + remove_duplicates: true, + }) + + if (res.length == 0) { + return [] + } + + const resp = await axios.post(`${process.env.REACT_APP_API_URL}/hf_request`, { + inputs: input, + model: 'flair/pos-english', + parameters: [], + options: undefined, + }) + + const { success, data } = resp.data + + if (!success) { + return [] + } + + for (let i = 0; i < res.length; i++) { + for (let j = 0; j < data.length; j++) { + if (data[j].word === res[i]) { + if (data[j].entity_group === 'NN' || data[j].entity_group === 'NNS') { + keywords.push(res[i]) + break + } + } + } + } + if (keywords.length === 0) { + return [] + } + + let totalLength = 0 + const respp: any[] = [] + for (let i = 0; i < keywords.length; i++) { + const _resp = await axios.post( + `${process.env.REACT_APP_API_URL}/weaviate`, + { + keyword: keywords[i], + } + ) + + const weaviateResponse = _resp.data + if (weaviateResponse.length === 0 || !weaviateResponse.Paragraph) { + continue + } + + if (weaviateResponse.Paragraph.length > 0) { + const modelResp = await axios.post( + `${process.env.REACT_APP_API_URL}/hf_request`, + { + inputs: weaviateResponse.Paragraph[0].content, + model: 'facebook/bart-large-cnn', + parameters: [], + options: undefined, + } + ) + + const { success, data } = modelResp.data + if (!success) { + continue + } + + const sum = data + + if (sum && sum.length > 0) { + totalLength += sum[0].summary_text.length + if (totalLength > 1000) { + return keywords + } + if (onlyKeywords) { + respp.push(keywords[i]) + } else { + respp.push({ word: keywords[i], info: sum[0].summary_text }) + } + } + } + } + return respp +} +export default keywordExtractor + +export function simpleExtractor(input: string) { + return keyword_extractor.extract(input, { + language: 'english', + remove_digits: true, + return_changed_case: true, + remove_duplicates: true, + }) +} diff --git a/core/src/components/ml/NamedEntityRecognition.ts b/core/src/components/ml/NamedEntityRecognition.ts new file mode 100644 index 000000000..8573dd5e2 --- /dev/null +++ b/core/src/components/ml/NamedEntityRecognition.ts @@ -0,0 +1,95 @@ +/* eslint-disable camelcase */ +/* eslint-disable @typescript-eslint/ban-ts-comment */ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { triggerSocket, anySocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = + 'Named Entity Recognition returns the type of the object the input string is talking about.' + +type WorkerReturn = { + output: any +} + +export class NamedEntityRecognition extends ThothComponent< + Promise +> { + constructor() { + super('Named Entity Recognition') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'AI/ML' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const input = new Rete.Input('string', 'String', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const output = new Rete.Output('output', 'Output', anySocket) + + return node + .addInput(input) + .addInput(dataInput) + .addOutput(dataOutput) + .addOutput(output) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const action = inputs['string'][0] as string + + const resp = await axios.post( + `${process.env.REACT_APP_API_URL}/hf_request`, + { + inputs: action, + model: 'dslim/bert-large-NER', + parameters: [], + options: undefined, + } + ) + + const { success, data } = resp.data + let type = 'No Type Found' + + if (success) { + if (data && data.length > 0) { + if (data[0].entity_group === 'PER') { + type = 'Alive Object' + } else { + type = 'Location' + } + } else { + type = 'Not Alive Object' + } + } + + return { + output: type, + } + } +} diff --git a/core/src/components/ProseToScript.ts b/core/src/components/ml/ProseToScript.ts similarity index 83% rename from core/src/components/ProseToScript.ts rename to core/src/components/ml/ProseToScript.ts index 46e0cf081..f830a6f9d 100644 --- a/core/src/components/ProseToScript.ts +++ b/core/src/components/ml/ProseToScript.ts @@ -1,20 +1,22 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' import Rete from 'rete' import { + EngineContext, NodeData, ThothNode, ThothWorkerInputs, ThothWorkerOutputs, -} from '../../types' -import { EngineContext } from '../../types' -import { stringSocket, triggerSocket } from '../sockets' -import { ThothComponent } from '../thoth-component' +} from '../../../types' +import { stringSocket, triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' const fewshot = (prose: string) => { const prompt = `Rewrite narrative snippets as a script: - 1 Original text: - "I won't repeat what you're about to say," Professor Quirrell said, smiling. They both laughed, then Harry turned serious again. "The Sorting Hat did seem to think I was going to end up as a Dark Lord unless I went to Hufflepuff," Harry said. "But I don't want to be one." "Mr. Potter..." said Professor Quirrell. "Don't take this the wrong way. I promise you will not be graded on the answer. I only want to know your own, honest reply. Why not?" @@ -24,9 +26,7 @@ Harry floundered for words and then decided to simply go with the obvious. "Firs "What makes something right, if not your wanting it?" "Ah," Harry said, "preference utilitarianism." "Pardon me?" said Professor Quirrell. - Rewritten as a script: - - Professor Quirrell: I won't repeat what you're about to say. - Harry: The Sorting Hat did seem to think I was going to end up as a Dark Lord unless I went to Hufflepuff. But I don't want to be one. - Professor Quirrell: Mr. Potter... Don't take this the wrong way. I promise you will not be graded on the answer. I only want to know your own, honest reply. Why not? @@ -36,35 +36,27 @@ Rewritten as a script: - Professor Quirrell: What makes something right, if not your wanting it? - Harry: Ah, preference utilitarianism. - Professor Quirrell: Pardon me? - 2 Original text: - Quickly, he continued. "Nowadays, Mr. Bohlen, the hand-made article hasn't a hope. It can't possibly compete with mass-production, especially in this country — you know that. Carpets ... chairs ... shoes ...bricks ... crockery ... anything you like to mention — they're all made by machinery now. The quality may be inferior, but that doesn't matter. It's the cost of production that counts. And stories — well — they're just another product, like carpets and chairs, and no one cares how you produce them so long as you deliver the goods. We'll sell them wholesale, Mr. Bohlen! We'll undercut every writer in the country! We'll take the market!" "But seriously now, Knipe. D'you really think they'd buy them?" "Listen, Mr. Bohlen. Who on earth is going to want custom-made stories when they can get the other kind at half the price? It stands to reason, doesn't it?" "And how will you sell them? Who will you say has written them?" - Rewritten as a script: - - Knipe: Nowadays, Mr. Bohlen, the hand-made article hasn't a hope. It can't possibly compete with mass-production, especially in this country — you know that. Carpets ... chairs ... shoes ...bricks ... crockery ... anything you like to mention — they're all made by machinery now. The quality may be inferior, but that doesn't matter. It's the cost of production that counts. And stories — well — they're just another product, like carpets and chairs, and no one cares how you produce them so long as you deliver the goods. We'll sell them wholesale, Mr. Bohlen! We'll undercut every writer in the country! We'll take the market! - Mr. Bohlen: But seriously now, Knipe. D'you really think they'd buy them? - Knipe: Listen, Mr. Bohlen. Who on earth is going to want custom-made stories when they can get the other kind at half the price? It stands to reason, doesn't it? - Mr. Bohlen: And how will you sell them? Who will you say has written them? - 3 Original text: - ${prose} - Rewritten as a script: - -` return prompt } -const info = `The prose to script converter transforms narrative prose into a screenplay-style script, attributing dialogue to characters in the scene, and discarding all text that is not speech. The input is a text string the output is a string of the script` +const info = `The prose to script converter transforms narrative prose into a screenplay-style script, attributing dialog to characters in the scene, and discarding all text that is not speech. The input is a text string the output is a string of the script` type WorkerReturn = { detectedItem: string @@ -77,7 +69,7 @@ export class ProseToScript extends ThothComponent> { this.task = { outputs: { detectedItem: 'output', trigger: 'option' }, - init: () => {}, + init: () => { }, } this.category = 'AI/ML' @@ -109,27 +101,32 @@ export class ProseToScript extends ThothComponent> { outputs: ThothWorkerOutputs, { silent, thoth }: { silent: boolean; thoth: EngineContext } ) { - const { completion } = thoth const prose = inputs['string'][0] as string const prompt = fewshot(prose) - const body = { - prompt, - stop: ['\n4'], - maxTokens: 300, - temperature: 0.0, - } + const resp = await axios.post( + `${process.env.REACT_APP_API_URL ?? + process.env.API_URL ?? + 'https://localhost:8001' + }/text_completion`, + { + params: { + prompt: prompt, + modelName: 'davinci', + temperature: 0.0, + maxTokens: 300, + stop: ['\n'], + }, + } + ) - try { - const raw = (await completion(body)) as string - const result = raw?.trim() - if (!silent) node.display(result) + const { success, choice } = resp.data - return { - detectedItem: result, - } - } catch (err) { - throw new Error('Error in ProseToScript component') + const result = success ? choice?.trim() : '' + if (!silent) node.display(result) + + return { + detectedItem: result, } } } diff --git a/core/src/components/SafetyVerifier.ts b/core/src/components/ml/SafetyVerifier.ts similarity index 92% rename from core/src/components/SafetyVerifier.ts rename to core/src/components/ml/SafetyVerifier.ts index 4e675204b..227bcfa2b 100644 --- a/core/src/components/SafetyVerifier.ts +++ b/core/src/components/ml/SafetyVerifier.ts @@ -1,15 +1,15 @@ import Rete from 'rete' import { + EngineContext, NodeData, ThothNode, ThothWorkerInputs, ThothWorkerOutputs, -} from '../../types' -import { FewshotControl } from '../dataControls/FewshotControl' -import { EngineContext } from '../../types' -import { stringSocket, triggerSocket, booleanSocket } from '../sockets' -import { ThothComponent } from '../thoth-component' +} from '../../../types' +import { FewshotControl } from '../../dataControls/FewshotControl' +import { stringSocket, triggerSocket, booleanSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' const fewshot = `Rate the actions according to the following content categories X: Explicit sexual content, rape, cannibalism, incest @@ -101,7 +101,7 @@ export class SafetyVerifier extends ThothComponent> { } builder(node: ThothNode) { - node.data.fewshot = fewshot + if(!node.data.fewshot) node.data.fewshot = fewshot const inp = new Rete.Input('string', 'Text', stringSocket) const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) diff --git a/core/src/components/ml/SentenceMatcher.ts b/core/src/components/ml/SentenceMatcher.ts new file mode 100644 index 000000000..ee75ce462 --- /dev/null +++ b/core/src/components/ml/SentenceMatcher.ts @@ -0,0 +1,97 @@ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +//@ts-ignore +import similarity from 'similarity' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { InputControl } from '../../dataControls/InputControl' +import { anySocket, stringSocket, triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'SentenceMatcher takes an query, needs to be generalized' + +type InputReturn = { + output: unknown +} + +export class SentenceMatcher extends ThothComponent> { + constructor() { + super('Sentence Matcher') + + this.task = { + outputs: { + trigger: 'option', + output: 'output', + }, + } + + this.category = 'AI/ML' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const nameControl = new InputControl({ + dataKey: 'name', + name: 'Component Name', + }) + + node.inspector.add(nameControl) + const sentences = new Rete.Input('sentences', 'Sentences', anySocket, true) + const source = new Rete.Input('source', 'Source', anySocket, true) + + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const output = new Rete.Output('output', 'Output', stringSocket, true) + + return node + .addOutput(output) + .addOutput(dataOutput) + .addInput(sentences) + .addInput(source) + .addInput(dataInput) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const sourceSentence = (inputs['source'][0] ?? inputs['source']) as string + const sentences = (inputs['sentences'][0] ?? + inputs['sentences']) as string[] + + console.log('source setences is', sourceSentence) + console.log('sentences are', sentences) + + if (!silent) node.display('Processing') + + let bestScore = 0 + let bestSentence = '' + + for (const sentence in sentences) { + const score = similarity(sourceSentence, sentences[sentence]) + if (score > bestScore) { + console.log('score is', score, sentences[sentence]) + bestScore = score + bestSentence = sentences[sentence] + } + } + + if (!silent) + node.display( + 'Best Score is: ' + bestScore + ' | Top label is ' + bestSentence + ) + return { output: bestSentence } + } +} diff --git a/core/src/components/ml/SummarizeFacts.ts b/core/src/components/ml/SummarizeFacts.ts new file mode 100644 index 000000000..717ebca9d --- /dev/null +++ b/core/src/components/ml/SummarizeFacts.ts @@ -0,0 +1,87 @@ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { FewshotControl } from '../../dataControls/FewshotControl' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Summarize And Store Facts About Agent' + +const fewshot = `` + +type InputReturn = { + output: unknown +} + +export class SummarizeFacts extends ThothComponent> { + constructor() { + super('Summarize Facts') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Agents' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + if(!node.data.fewshot) node.data.fewshot = fewshot + + const inp = new Rete.Input('string', 'Input', stringSocket) + const factsOut = new Rete.Output('output', 'Facts', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + + const fewshotControl = new FewshotControl({}) + + node.inspector.add(fewshotControl) + + return node + .addInput(inp) + .addInput(dataInput) + .addOutput(dataOutput) + .addOutput(factsOut) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const prompt = node.data.fewshot as string + + const response = await axios.post( + `${process.env.REACT_APP_API_URL}/hf_request`, + { + inputs: prompt, + model: 'toloka/t5-large-for-text-aggregation', + } + ) + + const result = await response.data + + console.log('result is', result) + + if (!silent) node.display(result) + + return { + output: result, + } + } +} diff --git a/core/src/components/TenseTransformer.ts b/core/src/components/ml/TenseTransformer.ts similarity index 88% rename from core/src/components/TenseTransformer.ts rename to core/src/components/ml/TenseTransformer.ts index 3966d6ae2..7c4d00959 100644 --- a/core/src/components/TenseTransformer.ts +++ b/core/src/components/ml/TenseTransformer.ts @@ -1,20 +1,23 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' import Rete from 'rete' +import { FewshotControl } from '../../dataControls/FewshotControl' +import { stringSocket, triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' import { + EngineContext, NodeData, ThothNode, ThothWorkerInputs, ThothWorkerOutputs, } from '../../types' -import { FewshotControl } from '../dataControls/FewshotControl' -import { EngineContext } from '../../types' -import { stringSocket, triggerSocket } from '../sockets' // @seang todo: convert data controls to typescript to remove this // eslint-disable-next-line @typescript-eslint/ban-ts-comment //@ts-ignore -import { ThothComponent } from '../thoth-component' const fewshot = `Change each statement to be in the third person present tense and correct all grammar. - Matt: am sleepy. Third Person: Matt is sleepy. --- @@ -72,7 +75,6 @@ Third Person: Fred commands the mercenaries to attack the dragon while he rescue ` const info = `The Tense Transformer will take any string and attempt to turn it into the first person present tense. It requires a name and text as an input, and will output the result. - You can edit the fewshot in the text editor, but be aware that you must retain the fewshots data structure so processing will work.` type WorkerReturn = { @@ -100,7 +102,7 @@ export class TenseTransformer extends ThothComponent> { // to generate the appropriate inputs and ouputs for the fewshot at build time builder(node: ThothNode) { // Set fewshot into nodes data - node.data.fewshot = fewshot + if(!node.data.fewshot) node.data.fewshot = fewshot // create inputs here. First argument is the name, second is the type (matched to other components sockets), and third is the socket the i/o will use const textInput = new Rete.Input('text', 'Text', stringSocket) const nameInput = new Rete.Input('name', 'Name', stringSocket) @@ -128,7 +130,6 @@ export class TenseTransformer extends ThothComponent> { outputs: ThothWorkerOutputs, { silent, thoth }: { silent: boolean; thoth: EngineContext } ) { - const { completion } = thoth // ADD ON INPUT const { name, text } = inputs const prompt = `${node.data.fewshot}${name[0]}: ${text[0]}\nThird Person:` @@ -141,17 +142,14 @@ export class TenseTransformer extends ThothComponent> { model: 'vanilla-davinci', } - try { - const raw = (await completion(body)) as string - const result = raw?.trim() + const { success, choice } = resp.data + + const result = success ? choice?.trim() : '' - if (!silent) node.display(result) + if (!silent) node.display(result) - return { - action: result, - } - } catch (err) { - throw new Error('Error in Tense Transformer component') + return { + action: result, } } } diff --git a/core/src/components/ml/TextToSpeech.ts b/core/src/components/ml/TextToSpeech.ts new file mode 100644 index 000000000..fa8328700 --- /dev/null +++ b/core/src/components/ml/TextToSpeech.ts @@ -0,0 +1,97 @@ +/* eslint-disable no-async-promise-executor */ +/* eslint-disable camelcase */ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { triggerSocket, stringSocket, anySocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Returns the input string as voice' + +type WorkerReturn = { + output: string +} + +const API_URL = 'https://localhost:8001' + +export class TextToSpeech extends ThothComponent> { + constructor() { + super('Text to Speech') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.module = { + nodeType: 'module', + socket: anySocket, + } + + this.category = 'AI/ML' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const textInput = new Rete.Input('input', 'Input', anySocket, true) + const characterInp = new Rete.Input('character', 'Character', stringSocket) + const triggerInput = new Rete.Input( + 'trigger', + 'Trigger', + triggerSocket, + true + ) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const outp = new Rete.Output('output', 'output', stringSocket) + + return node + .addInput(textInput) + .addInput(triggerInput) + .addInput(characterInp) + .addOutput(dataOutput) + .addOutput(outp) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + console.log('INPUTS:', inputs) + const action = inputs['input'][0] + const character = inputs['character']?.[0] as string + + const isCommand = (action as string).startsWith('/') + + let url: any = undefined + + if (!isCommand && action) { + url = await axios.get(`${API_URL}/speech_to_text`, { + params: { + text: action, + character: character, + }, + }) + console.log('url', url.data) + } + + return { + output: isCommand ? (action as string) : (url.data as string), + } + } +} diff --git a/core/src/components/TimeDetector.ts b/core/src/components/ml/TimeDetector.ts similarity index 75% rename from core/src/components/TimeDetector.ts rename to core/src/components/ml/TimeDetector.ts index ea31e9eb7..bb5670491 100644 --- a/core/src/components/TimeDetector.ts +++ b/core/src/components/ml/TimeDetector.ts @@ -1,18 +1,19 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' import Rete from 'rete' import { + EngineContext, NodeData, ThothNode, ThothWorkerInputs, ThothWorkerOutputs, -} from '../../types' -import { FewshotControl } from '../dataControls/FewshotControl' -import { EngineContext } from '../../types' -import { stringSocket, triggerSocket } from '../sockets' -import { ThothComponent } from '../thoth-component' +} from '../../../types' +import { FewshotControl } from '../../dataControls/FewshotControl' +import { stringSocket, triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' // For simplicity quests should be ONE thing not complete X and Y const fewshot = `Given an action, predict how long it would take to complete out of the following categories: seconds, minutes, hours, days, weeks, years. - Action, Time: pick up the bucket, seconds Action, Time: cast a fireball spell on the goblin, seconds Action, Time: convince the king to give you his kingdom, minutes @@ -33,9 +34,7 @@ Action, Time: take over the kingdom, years Action, Time: ` const info = `The Time Detector will attempt to categorize an incoming action string into broad categories of duration, which are: - seconds, minutes, hours, days, weeks, years. - You can edit the fewshot in the text editor, but be aware that you must retain the fewshots data structure so processing will work.` type WorkerReturn = { @@ -58,7 +57,7 @@ export class TimeDetectorComponent extends ThothComponent< } builder(node: ThothNode) { - node.data.fewshot = fewshot + if(!node.data.fewshot) node.data.fewshot = fewshot const inp = new Rete.Input('string', 'Text', stringSocket) const out = new Rete.Output('detectedTime', 'Time Detected', stringSocket) const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) @@ -81,28 +80,31 @@ export class TimeDetectorComponent extends ThothComponent< outputs: ThothWorkerOutputs, { silent, thoth }: { silent: boolean; thoth: EngineContext } ) { - const { completion } = thoth const fewshot = node.data.fewshot as string const action = inputs['string'][0] const prompt = fewshot + action + ',' - const body = { - prompt, - stop: ['\n'], - maxTokens: 100, - temperature: 0.0, - } + const resp = await axios.post( + `${process.env.REACT_APP_API_URL ?? process.env.API_URL ?? 'https://localhost:8001' + }/text_completion`, + { + params: { + prompt: prompt, + modelName: 'davinci', + temperature: 0.0, + maxTokens: 100, + stop: ['\n'], + }, + } + ) - try { - const raw = (await completion(body)) as string - const result = raw?.trim() - if (!silent) node.display(result) + const { success, choice } = resp.data - return { - detectedTime: result, - } - } catch (err) { - throw new Error('Error in Time Detector component') + const result = success ? choice?.trim() : '' + if (!silent) node.display(result) + + return { + detectedTime: result, } } } diff --git a/core/src/components/VisualGeneration.ts b/core/src/components/ml/VisualGeneration.ts similarity index 90% rename from core/src/components/VisualGeneration.ts rename to core/src/components/ml/VisualGeneration.ts index 877b834f6..5cdcceb16 100644 --- a/core/src/components/VisualGeneration.ts +++ b/core/src/components/ml/VisualGeneration.ts @@ -1,15 +1,16 @@ import Rete from 'rete' + import { + EngineContext, ImageCacheResponse, NodeData, ThothNode, ThothWorkerInputs, ThothWorkerOutputs, -} from '../../types' -import { InputControl } from '../dataControls/InputControl' -import { EngineContext } from '../../types' -import { triggerSocket, stringSocket, arraySocket } from '../sockets' -import { ThothComponent } from '../thoth-component' +} from '../../../types' +import { InputControl } from '../../dataControls/InputControl' +import { triggerSocket, stringSocket, arraySocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' const info = `The VisualGeneration component is used to access the image cache. You pass it a caption and an optional topK value and it returns an array of images that are related to your caption. diff --git a/core/src/components/search/DocumentDelete.ts b/core/src/components/search/DocumentDelete.ts new file mode 100644 index 000000000..c4b10a3d0 --- /dev/null +++ b/core/src/components/search/DocumentDelete.ts @@ -0,0 +1,62 @@ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { triggerSocket, numSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = + 'Document Delete is used to delete a document from the search corpus' + +export class DocumentDelete extends ThothComponent { + constructor() { + super('Document Delete') + + this.task = { + outputs: { + trigger: 'option', + }, + } + + this.category = 'Search' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const docIdInput = new Rete.Input('docId', 'Document Id', numSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + + return node + .addInput(docIdInput) + .addInput(dataInput) + .addOutput(dataOutput) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const docId = inputs['docId'][0] + node.display(docId) + const resp = await axios.delete(`${process.env.REACT_APP_SEARCH_SERVER_URL}/document`, { + params: { + documentId: docId, + }, + }) + node.display(resp.data) + } +} diff --git a/core/src/components/search/DocumentEdit.ts b/core/src/components/search/DocumentEdit.ts new file mode 100644 index 000000000..e4c022253 --- /dev/null +++ b/core/src/components/search/DocumentEdit.ts @@ -0,0 +1,94 @@ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { + triggerSocket, + stringSocket, + booleanSocket, + numSocket, +} from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Document Edit is used to edit a document in the search corpus' + +export class DocumentEdit extends ThothComponent { + constructor() { + super('Document Edit') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Search' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const documentId = new Rete.Input('documentId', 'documentId', numSocket) + const storeIdInput = new Rete.Input('storeId', 'Store ID', numSocket) + const keywordsInput = new Rete.Input('keywords', 'Keywords', stringSocket) + const descriptionInput = new Rete.Input( + 'description', + 'Description', + stringSocket + ) + const isIncludedInput = new Rete.Input( + 'isIncluded', + 'Is Included', + booleanSocket + ) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + + return node + .addInput(storeIdInput) + .addInput(documentId) + .addInput(keywordsInput) + .addInput(descriptionInput) + .addInput(isIncludedInput) + .addInput(dataInput) + .addOutput(dataOutput) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const documentId = inputs['documentId'][0] + const storeId = inputs['storeId'][0] + const keywords = inputs['keywords'] ? (inputs['keywords'][0] as string) : '' + const description = inputs['description'] + ? (inputs['description'][0] as string) + : '' + const is_included = inputs['isIncluded'][0] as string + console.log('inputs', inputs) + const resp = await axios.post( + `${process.env.REACT_APP_SEARCH_SERVER_URL}/update_document`, + { + documentId, + keywords, + description, + is_included, + storeId, + } + ) + node.display(resp.data) + } +} diff --git a/core/src/components/search/DocumentGet.ts b/core/src/components/search/DocumentGet.ts new file mode 100644 index 000000000..26e31557e --- /dev/null +++ b/core/src/components/search/DocumentGet.ts @@ -0,0 +1,69 @@ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { triggerSocket, anySocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Document Get is used to get a document from the search corpus' + +type WorkerReturn = { + output: string +} + +export class DocumentGet extends ThothComponent> { + constructor() { + super('Document Get') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Search' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const idInput = new Rete.Input('id', 'ID', anySocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const output = new Rete.Output('output', 'Output', anySocket) + + return node + .addInput(idInput) + .addInput(dataInput) + .addOutput(dataOutput) + .addOutput(output) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const id = inputs['id'][0] as string + + const resp = await axios.get( + `${process.env.REACT_APP_SEARCH_SERVER_URL}/document/${id}` + ) + + return { + output: resp.data, + } + } +} diff --git a/core/src/components/search/DocumentSet.ts b/core/src/components/search/DocumentSet.ts new file mode 100644 index 000000000..00d5e7708 --- /dev/null +++ b/core/src/components/search/DocumentSet.ts @@ -0,0 +1,97 @@ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { + triggerSocket, + stringSocket, + booleanSocket, + numSocket, + anySocket, +} from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Document Set is used to add a document in the search corpus' + +export class DocumentSet extends ThothComponent { + constructor() { + super('Document Set') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Search' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const storeIdInput = new Rete.Input('storeId', 'Store ID', numSocket) + const keywordsInput = new Rete.Input('keywords', 'Keywords', stringSocket) + const descriptionInput = new Rete.Input( + 'description', + 'Description', + stringSocket + ) + const isIncludedInput = new Rete.Input( + 'isIncluded', + 'Is Included', + booleanSocket + ) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const output = new Rete.Output('output', 'Output', anySocket) + + return node + .addInput(storeIdInput) + .addInput(keywordsInput) + .addInput(descriptionInput) + .addInput(isIncludedInput) + .addInput(dataInput) + .addOutput(dataOutput) + .addOutput(output) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const storeId = inputs['storeId'][0] + const keywords = inputs['keywords'] ? (inputs['keywords'][0] as string) : '' + const description = inputs['description'] + ? (inputs['description'][0] as string) + : '' + const is_included = inputs['isIncluded'][0] as string + + const resp = await axios.post( + `${process.env.REACT_APP_SEARCH_SERVER_URL}/document`, + { + keywords, + description, + is_included, + storeId, + } + ) + node.display(resp.data) + console.log('resp.data.documentId', resp.data.documentId) + return { + output: resp.data.documentId, + } + } +} diff --git a/core/src/components/search/DocumentStoreGet.ts b/core/src/components/search/DocumentStoreGet.ts new file mode 100644 index 000000000..bcfcd4b47 --- /dev/null +++ b/core/src/components/search/DocumentStoreGet.ts @@ -0,0 +1,70 @@ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { triggerSocket, anySocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = + 'Document Store Get is used to get a document store from the search corpus' + +type WorkerReturn = { + output: string +} + +export class DocumentStoreGet extends ThothComponent> { + constructor() { + super('Document Store Get') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Search' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const nameInput = new Rete.Input('name', 'Store Name', anySocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const output = new Rete.Output('output', 'Output', anySocket) + + return node + .addInput(nameInput) + .addInput(dataInput) + .addOutput(dataOutput) + .addOutput(output) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const name = inputs['name'][0] as string + + const resp = await axios.get( + `${process.env.REACT_APP_SEARCH_SERVER_URL}/document-store/${name}` + ) + + return { + output: resp?.data?.id ?? 0, + } + } +} diff --git a/core/src/components/search/Search.ts b/core/src/components/search/Search.ts new file mode 100644 index 000000000..eed523bb6 --- /dev/null +++ b/core/src/components/search/Search.ts @@ -0,0 +1,106 @@ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import axios from 'axios' +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { SwitchControl } from '../../dataControls/SwitchControl' +import { triggerSocket, anySocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = + 'Search is used to do neural search in the search corpus and return a document' + +type Document = { + keywords: string + description: string +} + +type WorkerReturn = { + output: unknown +} + +export class Search extends ThothComponent> { + constructor() { + super('Search Documents') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Search' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const searchStrInput = new Rete.Input( + 'searchStr', + 'Search String', + stringSocket + ) + const dataInput = new Rete.Input( + 'trigger', + 'Trigger In', + triggerSocket, + true + ) + const dataOutput = new Rete.Output('trigger', 'Trigger Out', triggerSocket) + const output = new Rete.Output('output', 'Output', anySocket) + + const switchControl = new SwitchControl({ + dataKey: 'sendToPlaytest', + name: 'Send to Playtest', + label: 'Playtest', + defaultValue: node.data.sendToPlaytest || false, + }) + + node.inspector.add(switchControl) + + return node + .addInput(searchStrInput) + .addInput(dataInput) + .addOutput(output) + .addOutput(dataOutput) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const searchStr = inputs['searchStr'][0] as string + const documents: Document[] = [] + const resp = await axios.get( + `${process.env.REACT_APP_SEARCH_SERVER_URL}/search`, + { + params: { + question: searchStr, + }, + } + ) + if (typeof resp.data === 'object') { + documents.push({ + keywords: resp.data.keywords, + description: resp.data.description, + }) + } + node.display(documents) + + return { + output: documents, + } + } +} diff --git a/core/src/components/StateRead.ts b/core/src/components/state/StateRead.ts similarity index 87% rename from core/src/components/StateRead.ts rename to core/src/components/state/StateRead.ts index 842d0d461..176f0d4f8 100644 --- a/core/src/components/StateRead.ts +++ b/core/src/components/state/StateRead.ts @@ -1,13 +1,13 @@ import { + EngineContext, NodeData, ThothNode, ThothWorkerInputs, ThothWorkerOutputs, -} from '../../types' -import { SocketGeneratorControl } from '../dataControls/SocketGenerator' -import { EngineContext } from '../../types' -import { ThothComponent } from '../thoth-component' -const info = `The State Read component allows you to read values from the state. These can be found in and are managed by the State Manager window. This window consists of a JSON object. You can define any number of outputs where an outputs name corresponds to a key in the state manager. Whatever value is assigned to that key will be read ans passed into your chain.` +} from '../../../types' +import { SocketGeneratorControl } from '../../dataControls/SocketGenerator' +import { ThothComponent } from '../../thoth-component' +const info = `The State Read component allows you to read values from the state. These can be found in and are managed by the State Manager window. This window consists of a JSON object. You can define any number of outputs where an outputs name corresponds to a key in the state manager. Whatever value is assigned to that key will be read ans passed into your graph.` export class StateRead extends ThothComponent< Promise> > { diff --git a/core/src/components/StateWrite.ts b/core/src/components/state/StateWrite.ts similarity index 91% rename from core/src/components/StateWrite.ts rename to core/src/components/state/StateWrite.ts index 91cc20038..2ee9245d4 100644 --- a/core/src/components/StateWrite.ts +++ b/core/src/components/state/StateWrite.ts @@ -1,15 +1,15 @@ import Rete from 'rete' + import { - NodeData, + EngineContext, ThothNode, + NodeData, ThothWorkerInputs, ThothWorkerOutputs, -} from '../../types' - -import { SocketGeneratorControl } from '../dataControls/SocketGenerator' -import { EngineContext } from '../../types' -import { triggerSocket } from '../sockets' -import { ThothComponent } from '../thoth-component' +} from '../../../types' +import { SocketGeneratorControl } from '../../dataControls/SocketGenerator' +import { triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' const info = `The State Write component allows you to define any number of inputs, and to write values to the state manager which correspond to the names of those inputs. If the value does not exist in the state, it will be written. diff --git a/core/src/components/strings/ComplexStringMatcher.ts b/core/src/components/strings/ComplexStringMatcher.ts new file mode 100644 index 000000000..9d6730f4e --- /dev/null +++ b/core/src/components/strings/ComplexStringMatcher.ts @@ -0,0 +1,293 @@ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { InputControl } from '../../dataControls/InputControl' +import { NumberControl } from '../../dataControls/NumberControl' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = + 'Complex String Matcher uses basic string matches to determine if the input matches some selected properties' + +export class ComplexStringMatcher extends ThothComponent> { + constructor() { + super('Complex String Matcher') + + this.task = { + outputs: { true: 'option', false: 'option' }, + } + + this.category = 'Strings' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const nameControl = new InputControl({ + dataKey: 'name', + name: 'Component Name', + }) + + // checkbox for [must match] and [dont match] + + // list of words to match beginning + + const matchBeginningString = new InputControl({ + dataKey: 'matchBeginningString', + name: 'Match Beginning (, separated)', + }) + + const notMatchBeginningString = new InputControl({ + dataKey: 'notMatchBeginningString', + name: 'Invalidate Beginning (, separated)', + }) + + const matchEndString = new InputControl({ + dataKey: 'matchEndString', + name: 'Match End (, separated)', + }) + + const notMatchEndString = new InputControl({ + dataKey: 'notMatchEndString', + name: 'Invalidate End (, separated)', + }) + + const matchAnyString = new InputControl({ + dataKey: 'matchAnyString', + name: 'Match Any (, separated)', + }) + + const notMatchAnyString = new InputControl({ + dataKey: 'notMatchAnyString', + name: 'Invalidate Any (, separated)', + }) + + const stringMinLength = new NumberControl({ + dataKey: 'stringMinLength', + name: 'Minimum String Length (0 to ignore)', + }) + + const stringMaxLength = new NumberControl({ + dataKey: 'stringMaxLength', + name: 'Maximum String Length (0 to ignore)', + }) + + node.inspector + .add(nameControl) + .add(matchBeginningString) + .add(notMatchBeginningString) + .add(matchEndString) + .add(notMatchEndString) + .add(matchAnyString) + .add(notMatchAnyString) + .add(stringMinLength) + .add(stringMaxLength) + + const inp = new Rete.Input('input', 'Input', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const isTrue = new Rete.Output('true', 'True', triggerSocket) + const isFalse = new Rete.Output('false', 'False', triggerSocket) + + return node + .addInput(inp) + .addInput(dataInput) + .addOutput(isTrue) + .addOutput(isFalse) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + + // implement a function that replaces all instances of a string with another string + const replaceAll = (str: string, find: string, replace: string) => { + return str.toString().replace(new RegExp(find, 'g'), replace) + } + + let input = inputs['input'][0] as string + console.log('input:::::', input) + let str = input + '' + let i1 = str.toString().replace(/<.*>/, '') + + console.log('input:::::', i1) + + input = replaceAll( + replaceAll(i1.replace(/ /, ''), '"', ''), + "'", + '' + ).toLowerCase() + console.log('input:::::', input) + + const stringMinLength = (node.data.stringMinLength ?? 0) as number + const stringMaxLength = (node.data.stringMaxLength ?? 0) as number + + const matchBeginningStringArray = ( + (node.data.matchBeginningString ?? '') as string + ) + .trim() + .toLowerCase() + .split(', ') + if ( + matchBeginningStringArray.length > 0 && + matchBeginningStringArray[0] === '' + ) { + matchBeginningStringArray.pop() + } + + const matchEndStringArray = ((node.data.matchEndString ?? '') as string) + .trim() + .toLowerCase() + .split(', ') + + if (matchEndStringArray.length > 0 && matchEndStringArray[0] === '') { + matchEndStringArray.pop() + } + + const matchAnyStringArray = ((node.data.matchAnyString ?? '') as string) + .trim() + .toLowerCase() + .split(', ') + + if (matchAnyStringArray.length > 0 && matchAnyStringArray[0] === '') { + matchAnyStringArray.pop() + } + + const notMatchBeginningStringArray = ( + (node.data.notMatchBeginningString ?? '') as string + ) + .trim() + .toLowerCase() + .split(', ') + if ( + notMatchBeginningStringArray.length > 0 && + notMatchBeginningStringArray[0] === '' + ) { + notMatchBeginningStringArray.pop() + } + + const notMatchEndStringArray = ( + (node.data.notMatchEndString ?? '') as string + ) + .trim() + .toLowerCase() + .split(', ') + + if (notMatchEndStringArray.length > 0 && notMatchEndStringArray[0] === '') { + notMatchEndStringArray.pop() + } + + const notMatchAnyStringArray = ( + (node.data.notMatchAnyString ?? '') as string + ) + .trim() + .toLowerCase() + .split(', ') + + if (notMatchAnyStringArray.length > 0 && notMatchAnyStringArray[0] === '') { + notMatchAnyStringArray.pop() + } + + let isMatched = false + let invalidated = false + + function matchStart(inp: string, matchArray: string[]) { + for (const matchString of matchArray) { + if (inp.startsWith(matchString)) { + return true + } + } + return false + } + + function match(inp: string, matchArray: string[]) { + for (const matchString of matchArray) { + if (inp.includes(matchString)) { + return true + } + } + return false + } + + function matchEnd(inp: string, matchArray: string[]) { + for (const matchString of matchArray) { + if (inp.endsWith(matchString)) { + return true + } + } + return false + } + + if (stringMaxLength !== 0) { + if ( + input.length > stringMaxLength || + input.length < (stringMinLength ?? 0) + ) { + invalidated = true + } + } + + if (matchBeginningStringArray.length > 0) { + const matched = matchStart(input, matchBeginningStringArray) + if (matched) { + // console.log('matched beginning') + isMatched = true + } + } + + if (matchEndStringArray.length > 0) { + const matched = matchEnd(input, matchEndStringArray) + if (matched) { + // console.log('matched beginning') + isMatched = true + } else { + isMatched = false + } + } + if (matchAnyStringArray.length > 0) { + const matched = match(input, matchAnyStringArray) + if (matched) { + // console.log('matched beginning') + isMatched = true + } else { + isMatched = false + } + } + + if (notMatchBeginningStringArray.length > 0) { + const matched = matchStart(input, notMatchBeginningStringArray) + if (matched) { + invalidated = true + } + } + + if (!invalidated && notMatchEndStringArray.length > 0) { + const matched = matchEnd(input, notMatchEndStringArray) + if (matched) { + invalidated = true + } + } + if (!invalidated && notMatchAnyStringArray.length > 0) { + const matched = match(input, notMatchAnyStringArray) + if (matched) { + invalidated = true + } + } + + if (!silent) + node.display('isMatched: ' + isMatched + ' | invalidated: ' + invalidated) + + this._task.closed = !invalidated && isMatched ? ['false'] : ['true'] + } +} diff --git a/core/src/components/JoinList.ts b/core/src/components/strings/JoinList.ts similarity index 85% rename from core/src/components/JoinList.ts rename to core/src/components/strings/JoinList.ts index 9d6485850..cce0f03e4 100644 --- a/core/src/components/JoinList.ts +++ b/core/src/components/strings/JoinList.ts @@ -1,9 +1,9 @@ import Rete from 'rete' -import { NodeData, ThothNode, ThothWorkerInputs } from '../../types' -import { TextInputControl } from '../controls/TextInputControl' -import { stringSocket, arraySocket } from '../sockets' -import { ThothComponent } from '../thoth-component' +import { NodeData, ThothNode, ThothWorkerInputs } from '../../../types' +import { TextInputControl } from '../../controls/TextInputControl' +import { stringSocket, arraySocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' const info = `The Join List component takes in an array, and will join each item in the array together with a seperator, defined in the components input field.` type WorkerReturn = { @@ -20,10 +20,10 @@ export class JoinListComponent extends ThothComponent { text: 'output', trigger: 'option', }, - init: () => {}, + init: () => { }, } - this.category = 'Logic' + this.category = 'Strings' this.info = info } diff --git a/core/src/components/strings/RandomStringFromList.ts b/core/src/components/strings/RandomStringFromList.ts new file mode 100644 index 000000000..ce1c41bd8 --- /dev/null +++ b/core/src/components/strings/RandomStringFromList.ts @@ -0,0 +1,99 @@ +/* eslint-disable camelcase */ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { FewshotControl } from '../../dataControls/FewshotControl' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = + 'Random String From List returns a randomly selected string from an array, it keeps memory of recently selected strings' + +const fewshot = `` + +const recently_used: string[] = [] +let clear: any = undefined + +type WorkerReturn = { + output: string +} + +export class RandomStringFromList extends ThothComponent< + Promise +> { + constructor() { + super('Random List From String') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Strings' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + if(!node.data.fewshot) node.data.fewshot = fewshot + + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const outp = new Rete.Output('output', 'String', stringSocket) + + const fewshotControl = new FewshotControl({}) + + node.inspector.add(fewshotControl) + + return node.addInput(dataInput).addOutput(dataOutput).addOutput(outp) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const fewshot = node.data.fewshot as string + const strings = fewshot.split('\n') + if (strings.length <= 0) { + return { + output: '', + } + } + + let index = Math.floor(Math.random() * strings.length) + if (recently_used.length == strings.length) { + recently_used.splice(0, recently_used.length) + } + + while (recently_used.includes(strings[index])) { + index = Math.floor(Math.random() * strings.length) + } + + recently_used.push(strings[index]) + if (clear !== undefined) { + clearTimeout(clear) + clear = setTimeout(() => { + recently_used.splice(0, recently_used.length) + clear = undefined + }, 60000) + } + + return { + output: strings[index], + } + } +} diff --git a/core/src/components/strings/StringAdder.ts b/core/src/components/strings/StringAdder.ts new file mode 100644 index 000000000..f5fe36850 --- /dev/null +++ b/core/src/components/strings/StringAdder.ts @@ -0,0 +1,82 @@ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { BooleanControl } from '../../dataControls/BooleanControl' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'String Adder adds a string in the current input.' + +type WorkerReturn = { + output: string +} + +export class StringAdder extends ThothComponent> { + constructor() { + super('String Adder') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Strings' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const inp = new Rete.Input('string', 'String', stringSocket) + const newInput = new Rete.Input('newInput', 'New Input', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const outp = new Rete.Output('output', 'String', stringSocket) + + const newLineStarting = new BooleanControl({ + dataKey: 'newLineStarting', + name: 'New Line', + icon: 'moon', + }) + + node.inspector.add(newLineStarting) + + return node + .addInput(inp) + .addInput(newInput) + .addInput(dataInput) + .addOutput(dataOutput) + .addOutput(outp) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const input = inputs['string'][0] as string + const newInput = inputs['newInput'][0] as string + const newLineStarting = + node?.data?.newLineStarting === true || + node?.data?.newLineStarting === 'true' + console.log('new output:', input + (newLineStarting ? '\n' : '') + newInput) + const newstring = input + (newLineStarting ? '\n' : '') + newInput + // get the last 1000 characters of newstring, if there are more than 1000 characters + const newstringTruncated = newstring.slice(-1000) + return { + output: newstringTruncated, + } + } +} diff --git a/core/src/components/strings/StringCombiner.ts b/core/src/components/strings/StringCombiner.ts new file mode 100644 index 000000000..30922c3db --- /dev/null +++ b/core/src/components/strings/StringCombiner.ts @@ -0,0 +1,96 @@ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { SocketGeneratorControl } from '../../dataControls/SocketGenerator' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = + 'String Combiner is used to replace a value in the string with something else - Add a new socket with the string and the value like this - Agent Replacer (will replace all the $agent from the input with the input assigned)' + +type WorkerReturn = { + output: string +} + +export class StringCombiner extends ThothComponent> { + constructor() { + super('String Combiner') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Strings' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const inp = new Rete.Input('string', 'String', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const outp = new Rete.Output('output', 'String', stringSocket) + + const inputGenerator = new SocketGeneratorControl({ + connectionType: 'input', + name: 'Input Sockets', + ignored: ['trigger'], + }) + + node.inspector.add(inputGenerator) + + return node + .addInput(inp) + .addInput(dataInput) + .addOutput(dataOutput) + .addOutput(outp) + } + + async worker( + node: NodeData, + rawInputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const inputs = Object.entries(rawInputs).reduce((acc, [key, value]) => { + acc[key] = value[0] + return acc + }, {} as Record) + + let input = inputs['string'] as string + console.log('combining input:', input) + for (const x in inputs) { + if (x.toLowerCase().includes('replacer')) { + console.log( + 'replacing: $', + x.split(' ')[0].toLowerCase().trim(), + 'with:', + inputs[x] + ) + input = input.replace( + '$' + x.split(' ')[0].toLowerCase().trim(), + inputs[x] as string + ) + } + } + + console.log('new string combined:', input) + + return { + output: input, + } + } +} diff --git a/core/src/components/strings/StringEvaluator.ts b/core/src/components/strings/StringEvaluator.ts new file mode 100644 index 000000000..c6f76a105 --- /dev/null +++ b/core/src/components/strings/StringEvaluator.ts @@ -0,0 +1,97 @@ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { FewshotControl } from '../../dataControls/FewshotControl' +import { InputControl } from '../../dataControls/InputControl' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const fewshot = `` + +const info = + 'String Evaluator - options: includes, not includes, equals, not equals, starts with, not starts with, ends with, not ends with' + +export class StringEvaluator extends ThothComponent> { + constructor() { + super('String Evaluator') + + this.task = { + outputs: { true: 'option', false: 'option', output: 'output' }, + } + + this.category = 'Strings' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + if(!node.data.fewshot) node.data.fewshot = fewshot + + const inp = new Rete.Input('string', 'String', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const isTrue = new Rete.Output('true', 'True', triggerSocket) + const isFalse = new Rete.Output('false', 'False', triggerSocket) + + const operationType = new InputControl({ + dataKey: 'operationType', + name: 'Operation Type', + icon: 'moon', + }) + + const fewshotControl = new FewshotControl({}) + + node.inspector.add(fewshotControl).add(operationType) + + return node + .addInput(inp) + .addInput(dataInput) + .addOutput(isTrue) + .addOutput(isFalse) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const action = inputs['string'][0] as string + const fewshot = (node.data.fewshot as string).trim() + const operationTypeData = node?.data?.operationType as string + const operationType = + operationTypeData !== undefined && operationTypeData.length > 0 + ? operationTypeData.toLowerCase().trim() + : 'includes' + let is: boolean = false + + if (operationType === 'includes') { + is = action.includes(fewshot) + } else if (operationType === 'not includes') { + is = !action.includes(fewshot) + } else if (operationType === 'equals') { + is = action === fewshot + } else if (operationType === 'not equals') { + is = action !== fewshot + } else if (operationType === 'startsWith') { + is = action.startsWith(fewshot) + } else if (operationType === 'not startsWith') { + is = !action.startsWith(fewshot) + } else if (operationType === 'endsWith') { + is = action.endsWith(fewshot) + } else if (operationType === 'not endsWith') { + is = !action.endsWith(fewshot) + } + + this._task.closed = is ? ['false'] : ['true'] + } +} diff --git a/core/src/components/StringProcessor.ts b/core/src/components/strings/StringProcessor.ts similarity index 86% rename from core/src/components/StringProcessor.ts rename to core/src/components/strings/StringProcessor.ts index 4d81e0999..380c8a0e0 100644 --- a/core/src/components/StringProcessor.ts +++ b/core/src/components/strings/StringProcessor.ts @@ -1,10 +1,10 @@ import Rete from 'rete' -import { NodeData, ThothNode, ThothWorkerInputs } from '../../types' -import { CodeControl } from '../dataControls/CodeControl' -import { SocketGeneratorControl } from '../dataControls/SocketGenerator' -import { stringSocket, triggerSocket } from '../sockets' -import { ThothComponent } from '../thoth-component' +import { NodeData, ThothNode, ThothWorkerInputs } from '../../../types' +import { CodeControl } from '../../dataControls/CodeControl' +import { SocketGeneratorControl } from '../../dataControls/SocketGenerator' +import { stringSocket, triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' const info = `The String Processor component takes a string as an input and allows you to write a function in the text editor to parse that string in whatever way you need. You can define any number of outputs which you can pass the result of your parsing out through. Note that the return value of your function must be an object whose keys match the names of your generated output sockets.` @@ -16,9 +16,9 @@ export class StringProcessor extends ThothComponent> { this.task = { outputs: { trigger: 'option' }, - init: () => {}, + init: () => { }, } - this.category = 'Logic' + this.category = 'Strings' this.info = info } diff --git a/core/src/components/AlertMessage.ts b/core/src/components/utility/AlertMessage.ts similarity index 78% rename from core/src/components/AlertMessage.ts rename to core/src/components/utility/AlertMessage.ts index 3dacd1195..81534a5cb 100644 --- a/core/src/components/AlertMessage.ts +++ b/core/src/components/utility/AlertMessage.ts @@ -1,10 +1,10 @@ import Rete from 'rete' -import { NodeData, ThothNode } from '../../types' -import { TextInputControl } from '../controls/TextInputControl' -import { TaskOptions } from '../plugins/taskPlugin/task' -import { triggerSocket } from '../sockets' -import { ThothComponent } from '../thoth-component' +import { NodeData, ThothNode } from '../../../types' +import { TextInputControl } from '../../controls/TextInputControl' +import { TaskOptions } from '../../plugins/taskPlugin/task' +import { triggerSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' const info = `When the alert component is triggered, it will fire an alert with the message in the input box.` @@ -15,10 +15,10 @@ export class Alert extends ThothComponent { this.task = { outputs: {}, - init: () => {}, - onRun: () => {}, + init: () => { }, + onRun: () => { }, } as TaskOptions - this.category = 'I/O' + this.category = 'Utility' this.info = info } // the builder is used to "assemble" the node component. diff --git a/core/src/components/utility/Echo.ts b/core/src/components/utility/Echo.ts new file mode 100644 index 000000000..0fea02043 --- /dev/null +++ b/core/src/components/utility/Echo.ts @@ -0,0 +1,65 @@ +/* eslint-disable camelcase */ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = 'Returns the same output as the input' + +type WorkerReturn = { + output: string +} + +export class Echo extends ThothComponent> { + constructor() { + super('Echo') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Utility' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const inp = new Rete.Input('string', 'String', stringSocket) + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const outp = new Rete.Output('output', 'String', stringSocket) + + return node + .addInput(dataInput) + .addInput(inp) + .addOutput(dataOutput) + .addOutput(outp) + } + + async worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const input = inputs.string[0] as string + + return { + output: input, + } + } +} diff --git a/core/src/components/utility/InputsToJSON.ts b/core/src/components/utility/InputsToJSON.ts new file mode 100644 index 000000000..eb90a1803 --- /dev/null +++ b/core/src/components/utility/InputsToJSON.ts @@ -0,0 +1,77 @@ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + EngineContext, + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { SocketGeneratorControl } from '../../dataControls/SocketGenerator' +import { triggerSocket, stringSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = + 'InputsToJSON runs JSON.stringify on the inputs and returns the result' + +type WorkerReturn = { + output: string +} + +export class InputsToJSON extends ThothComponent> { + constructor() { + super('Inputs To JSON') + + this.task = { + outputs: { + output: 'output', + trigger: 'option', + }, + } + + this.category = 'Utility' + this.display = true + this.info = info + } + + builder(node: ThothNode) { + const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true) + const dataOutput = new Rete.Output('trigger', 'Trigger', triggerSocket) + const outp = new Rete.Output('output', 'String', stringSocket) + + const inputGenerator = new SocketGeneratorControl({ + connectionType: 'input', + name: 'Input Sockets', + ignored: ['trigger'], + }) + + node.inspector.add(inputGenerator) + + return node.addInput(dataInput).addOutput(dataOutput).addOutput(outp) + } + + async worker( + node: NodeData, + rawInputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, thoth }: { silent: boolean; thoth: EngineContext } + ) { + const inputs = Object.entries(rawInputs).reduce((acc, [key, value]) => { + acc[key] = value[0] + return acc + }, {} as Record) + + const data: { [key: string]: any } = {} + for (const x in inputs) { + data[x.toLowerCase().trim()] = inputs[x] + } + + return { + output: JSON.stringify(data), + } + } +} diff --git a/core/src/components/variable/ArrayVariable.ts b/core/src/components/variable/ArrayVariable.ts new file mode 100644 index 000000000..076aa65cc --- /dev/null +++ b/core/src/components/variable/ArrayVariable.ts @@ -0,0 +1,83 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { BooleanControl } from '../../dataControls/BooleanControl' +import { InputControl } from '../../dataControls/InputControl' +import { arraySocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = `Array Variable` + +type InputReturn = { + output: string[] +} + +export class ArrayVariable extends ThothComponent { + constructor() { + super('Array Variable') + + this.task = { + outputs: { + output: 'output', + }, + } + + this.category = 'Variable' + this.info = info + this.display = true + } + + builder(node: ThothNode) { + const out = new Rete.Output('output', 'output', arraySocket) + const _var = new InputControl({ + dataKey: '_var', + name: 'Variable', + icon: 'moon', + }) + const splitter = new InputControl({ + dataKey: 'splitter', + name: 'Splitter', + icon: 'moon', + }) + const name = new InputControl({ + dataKey: 'name', + name: 'Name', + icon: 'moon', + }) + const keepEmpty = new BooleanControl({ + dataKey: 'keepEmpty', + name: 'Variable', + icon: 'moon', + }) + + node.inspector.add(name).add(_var).add(splitter).add(keepEmpty) + + return node.addOutput(out) + } + + worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, data }: { silent: boolean; data: string | undefined } + ) { + const _var = node?.data?._var as string + const splitter = node?.data?._var as string + const keepEmpty = node?.data?.keepEmpty == 'true' + const res = !keepEmpty + ? _var.split(splitter).filter(el => el.length > 0) + : _var.split(splitter) + + this.name = (node?.data?.name as string) + ' - ' + _var + + return { + output: res, + } + } +} diff --git a/core/src/components/variable/BooleanVariable.ts b/core/src/components/variable/BooleanVariable.ts new file mode 100644 index 000000000..38b08733d --- /dev/null +++ b/core/src/components/variable/BooleanVariable.ts @@ -0,0 +1,68 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { BooleanControl } from '../../dataControls/BooleanControl' +import { InputControl } from '../../dataControls/InputControl' +import { booleanSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = `Boolean Variable` + +type InputReturn = { + output: boolean +} + +export class BooleanVariable extends ThothComponent { + constructor() { + super('Boolean Variable') + + this.task = { + outputs: { + output: 'output', + }, + } + + this.category = 'Variable' + this.info = info + this.display = true + } + + builder(node: ThothNode) { + const out = new Rete.Output('output', 'output', booleanSocket) + const _var = new BooleanControl({ + dataKey: '_var', + name: 'Variable', + icon: 'moon', + }) + const name = new InputControl({ + dataKey: 'name', + name: 'Name', + icon: 'moon', + }) + + node.inspector.add(name).add(_var) + + return node.addOutput(out) + } + + worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, data }: { silent: boolean; data: string | undefined } + ) { + const _var = node?.data?._var == true + + this.name = (node?.data?.name as string) + ' - ' + _var + + return { + output: _var, + } + } +} diff --git a/core/src/components/variable/FewshotVariable.ts b/core/src/components/variable/FewshotVariable.ts new file mode 100644 index 000000000..78589ae48 --- /dev/null +++ b/core/src/components/variable/FewshotVariable.ts @@ -0,0 +1,69 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { FewshotControl } from '../../dataControls/FewshotControl' +import { InputControl } from '../../dataControls/InputControl' +import { anySocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = `Fewshot Variable` + +const fewshot = `` + +type InputReturn = { + output: string +} + +export class FewshotVariable extends ThothComponent { + constructor() { + super('Fewshot Variable') + + this.task = { + outputs: { + output: 'output', + }, + } + + this.category = 'Variable' + this.info = info + this.display = true + } + + builder(node: ThothNode) { + if(!node.data.fewshot) node.data.fewshot = fewshot + const out = new Rete.Output('output', 'output', anySocket) + + const name = new InputControl({ + dataKey: 'name', + name: 'Name', + icon: 'moon', + }) + + const fewshotControl = new FewshotControl({}) + + node.inspector.add(fewshotControl).add(name) + + return node.addOutput(out) + } + + worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, data }: { silent: boolean; data: string | undefined } + ) { + const fewshot = node.data.fewshot as string + + this.name = node?.data?.name as string + + return { + output: fewshot, + } + } +} diff --git a/core/src/components/variable/NumberVariable.ts b/core/src/components/variable/NumberVariable.ts new file mode 100644 index 000000000..ff902653e --- /dev/null +++ b/core/src/components/variable/NumberVariable.ts @@ -0,0 +1,68 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { InputControl } from '../../dataControls/InputControl' +import { NumberControl } from '../../dataControls/NumberControl' +import { numSocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = `Number Variable` + +type InputReturn = { + output: number +} + +export class NumberVariable extends ThothComponent { + constructor() { + super('Number Variable') + + this.task = { + outputs: { + output: 'output', + }, + } + + this.category = 'Variable' + this.info = info + this.display = true + } + + builder(node: ThothNode) { + const out = new Rete.Output('output', 'output', numSocket) + const _var = new NumberControl({ + dataKey: '_var', + name: 'Variable', + icon: 'moon', + }) + const name = new InputControl({ + dataKey: 'name', + name: 'Name', + icon: 'moon', + }) + + node.inspector.add(name).add(_var) + + return node.addOutput(out) + } + + worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, data }: { silent: boolean; data: string | undefined } + ) { + const _var = node?.data?._var as number + + this.name = (node?.data?.name as string) + ' - ' + _var + + return { + output: _var, + } + } +} diff --git a/core/src/components/variable/StringVariable.ts b/core/src/components/variable/StringVariable.ts new file mode 100644 index 000000000..411ca1595 --- /dev/null +++ b/core/src/components/variable/StringVariable.ts @@ -0,0 +1,67 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import Rete from 'rete' + +import { + NodeData, + ThothNode, + ThothWorkerInputs, + ThothWorkerOutputs, +} from '../../../types' +import { InputControl } from '../../dataControls/InputControl' +import { anySocket } from '../../sockets' +import { ThothComponent } from '../../thoth-component' + +const info = `String Variable` + +type InputReturn = { + output: string +} + +export class StringVariable extends ThothComponent { + constructor() { + super('String Variable') + + this.task = { + outputs: { + output: 'output', + }, + } + + this.category = 'Variable' + this.info = info + this.display = true + } + + builder(node: ThothNode) { + const out = new Rete.Output('output', 'output', anySocket) + const _var = new InputControl({ + dataKey: '_var', + name: 'Variable', + icon: 'moon', + }) + const name = new InputControl({ + dataKey: 'name', + name: 'Name', + icon: 'moon', + }) + + node.inspector.add(name).add(_var) + + return node.addOutput(out) + } + + worker( + node: NodeData, + inputs: ThothWorkerInputs, + outputs: ThothWorkerOutputs, + { silent, data }: { silent: boolean; data: string | undefined } + ) { + const _var = node?.data?._var as string + + this.name = (node?.data?.name as string) + ' - ' + _var + + return { + output: _var, + } + } +} diff --git a/core/src/controls/DisplayControl.js b/core/src/controls/DisplayControl.tsx similarity index 60% rename from core/src/controls/DisplayControl.js rename to core/src/controls/DisplayControl.tsx index dc930f155..1b7b7d12c 100644 --- a/core/src/controls/DisplayControl.js +++ b/core/src/controls/DisplayControl.tsx @@ -1,7 +1,9 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +//@ts-nocheck import React from 'react' import { Control } from 'rete' const ReactTextInputControl = props => { - return

Result: {props.display}

+ return

Result: {props.display}

} export class DisplayControl extends Control { @@ -18,8 +20,10 @@ export class DisplayControl extends Control { } display(val) { - this.props.display = val - this.putData('display', val) + const displayVal = typeof val === 'string' ? val : JSON.stringify(val) + + this.props.display = displayVal + this.putData('display', displayVal) this.update() } } diff --git a/core/src/controls/RunButtonControl.js b/core/src/controls/RunButtonControl.tsx similarity index 89% rename from core/src/controls/RunButtonControl.js rename to core/src/controls/RunButtonControl.tsx index 3b950b7d0..83700048d 100644 --- a/core/src/controls/RunButtonControl.js +++ b/core/src/controls/RunButtonControl.tsx @@ -1,3 +1,5 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +//@ts-nocheck import { Control } from 'rete' const ReactRunButton = props => { diff --git a/core/src/controls/TextInputControl.js b/core/src/controls/TextInputControl.tsx similarity index 90% rename from core/src/controls/TextInputControl.js rename to core/src/controls/TextInputControl.tsx index 13e31a85a..31e880c8c 100644 --- a/core/src/controls/TextInputControl.js +++ b/core/src/controls/TextInputControl.tsx @@ -1,3 +1,5 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +//@ts-nocheck import React, { useState, useEffect } from 'react' import { Control } from 'rete' @@ -12,7 +14,7 @@ const ReactTextInputControl = props => { const onChange = e => { props.putData(props.name, e.target.value) setValue(e.target.value) - props.editor.trigger('save') + // props.editor.trigger('save') } return ( diff --git a/core/src/dataControls/ArrayControl.js b/core/src/dataControls/ArrayControl.js new file mode 100644 index 000000000..8c4cf9e12 --- /dev/null +++ b/core/src/dataControls/ArrayControl.js @@ -0,0 +1,20 @@ +/* eslint-disable no-empty */ +import { DataControl } from '../plugins/inspectorPlugin' + +export class ArrayControl extends DataControl { + constructor({ dataKey, name, icon = 'hand' }) { + const options = { + dataKey: dataKey, + name: name, + component: 'input', + icon, + type: 'array', + } + + super(options) + } + + onData() { + return + } +} diff --git a/core/src/dataControls/BooleanControl.js b/core/src/dataControls/BooleanControl.js new file mode 100644 index 000000000..4e83912c7 --- /dev/null +++ b/core/src/dataControls/BooleanControl.js @@ -0,0 +1,20 @@ +/* eslint-disable no-empty */ +import { DataControl } from '../plugins/inspectorPlugin' + +export class BooleanControl extends DataControl { + constructor({ dataKey, name, icon = 'hand' }) { + const options = { + dataKey: dataKey, + name: name, + component: 'input', + icon, + type: 'boolean', + } + + super(options) + } + + onData() { + return + } +} diff --git a/core/src/dataControls/CustomDropdown.js b/core/src/dataControls/CustomDropdown.js new file mode 100644 index 000000000..6cd16579f --- /dev/null +++ b/core/src/dataControls/CustomDropdown.js @@ -0,0 +1,63 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import React from 'react' +import styled from 'styled-components' + +const Main = styled('div')` + font-family: sans-serif; + background: #f0f0f0; + height: 100vh; +` + +const DropDownContainer = styled('div')` + width: 10.5em; + margin: 0 auto; +` + +const DropDownHeader = styled('div')` + margin-bottom: 0.8em; + padding: 0.4em 2em 0.4em 1em; + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.15); + font-weight: 500; + font-size: 1.3rem; + color: #3faffa; + background: #ffffff; +` + +const DropDownListContainer = styled('div')`` + +const DropDownList = styled('ul')` + padding: 0; + margin: 0; + padding-left: 1em; + background: #ffffff; + border: 2px solid #e5e5e5; + box-sizing: border-box; + color: #3faffa; + font-size: 1.3rem; + font-weight: 500; + &:first-child { + padding-top: 0.8em; + } +` + +const ListItem = styled('li')` + list-style: none; + margin-bottom: 0.8em; +` + +export default function CustomDropdown(props) { + return ( +
+ + {props.title} + + + {props.data.map((option, index) => ( + {option} + ))} + + + +
+ ) +} diff --git a/core/src/dataControls/InputControl.js b/core/src/dataControls/InputControl.js new file mode 100644 index 000000000..18067dd8c --- /dev/null +++ b/core/src/dataControls/InputControl.js @@ -0,0 +1,20 @@ +import { DataControl } from '../plugins/inspectorPlugin' + +export class InputControl extends DataControl { + constructor({ dataKey, name, icon = 'hand', defaultValue = '' }) { + const options = { + dataKey: dataKey, + name: name, + component: 'input', + icon, + type: 'string', + defaultValue: defaultValue, + } + + super(options) + } + + onData() { + return + } +} diff --git a/core/src/dataControls/NumberControl.js b/core/src/dataControls/NumberControl.js new file mode 100644 index 000000000..a407cefb7 --- /dev/null +++ b/core/src/dataControls/NumberControl.js @@ -0,0 +1,20 @@ +/* eslint-disable no-empty */ +import { DataControl } from '../plugins/inspectorPlugin' + +export class NumberControl extends DataControl { + constructor({ dataKey, name, icon = 'hand' }) { + const options = { + dataKey: dataKey, + name: name, + component: 'input', + icon, + type: 'number', + } + + super(options) + } + + onData() { + return + } +} diff --git a/core/src/editor.ts b/core/src/editor.ts index a31f29dd8..747c4b7f5 100644 --- a/core/src/editor.ts +++ b/core/src/editor.ts @@ -1,4 +1,3 @@ -import { ThothNode } from './../types' import { NodeEditor } from 'rete' import ConnectionPlugin from 'rete-connection-plugin' import ConnectionReroutePlugin from 'rete-connection-reroute-plugin' @@ -7,22 +6,23 @@ import ReactRenderPlugin from 'rete-react-render-plugin' import { Data } from 'rete/types/core/data' import { EventsTypes, EditorContext } from '../types' +import { ThothNode } from './../types' import { getComponents } from './components/components' import { initSharedEngine } from './engine' -import CommentPlugin from './plugins/commentPlugin' import AreaPlugin from './plugins/areaPlugin' +import CommentPlugin from './plugins/commentPlugin' +import DebuggerPlugin from './plugins/debuggerPlugin' import DisplayPlugin from './plugins/displayPlugin' import HistoryPlugin from './plugins/historyPlugin' import InspectorPlugin from './plugins/inspectorPlugin' +import KeyCodePlugin from './plugins/keyCodePlugin' import LifecyclePlugin from './plugins/lifecyclePlugin' +import ModulePlugin from './plugins/modulePlugin' import { ModuleManager } from './plugins/modulePlugin/module-manager' +import SelectionPlugin from './plugins/selectionPlugin' import SocketGenerator from './plugins/socketGenerator' import TaskPlugin, { Task } from './plugins/taskPlugin' import { PubSubContext, ThothComponent } from './thoth-component' -import DebuggerPlugin from './plugins/debuggerPlugin' -import KeyCodePlugin from './plugins/keyCodePlugin' -import ModulePlugin from './plugins/modulePlugin' -import SelectionPlugin from './plugins/selectionPlugin' export class ThothEditor extends NodeEditor { tasks: Task[] pubSub: PubSubContext @@ -41,7 +41,7 @@ export class ThothEditor extends NodeEditor { const editorTabMap: Record = {} -export const initEditor = async function ({ +export const initEditor = function ({ container, pubSub, thoth, @@ -111,7 +111,7 @@ export const initEditor = async function ({ const tabType = editor.tab.type const { workspaceType } = component - if (isProd && component.dev) return null + if (isProd && (component as any).dev) return null if (component.deprecated) return null if (component.hide) return null if (workspaceType && workspaceType !== tabType) return null @@ -154,9 +154,7 @@ export const initEditor = async function ({ }) // WARNING all the plugins from the editor get installed onto the component and modify it. This effects the components registered in the engine, which already have plugins installed. - components.forEach(c => { - // eslint-disable-next-line @typescrip``t-eslint/ban-ts-comment - //@ts-ignore + components.forEach((c: any) => { // the problematic type here is coming directly from node modules, we may need to revisit further customizing the Editor Register type expectations or it's class editor.register(c) }) diff --git a/core/src/engine.ts b/core/src/engine.ts index 5eb19934f..64cf64eb9 100644 --- a/core/src/engine.ts +++ b/core/src/engine.ts @@ -1,6 +1,6 @@ import Rete, { Engine } from 'rete' -import { ChainData, ModuleType, NodeData, ThothWorkerInputs } from '../types' +import { GraphData, ModuleType, NodeData, ThothWorkerInputs } from '../types' import debuggerPlugin from './plugins/debuggerPlugin' import ModulePlugin from './plugins/modulePlugin' import TaskPlugin, { Task } from './plugins/taskPlugin' @@ -68,7 +68,7 @@ export const initSharedEngine = ({ } // this parses through all the nodes in the data and finds the nodes associated with the given map -export const extractNodes = (nodes: ChainData['nodes'], map: Set) => { +export const extractNodes = (nodes: GraphData['nodes'], map: Set) => { const names = Array.from(map.keys()) return Object.keys(nodes) @@ -79,7 +79,7 @@ export const extractNodes = (nodes: ChainData['nodes'], map: Set) => { // This will get the node that was triggered given a socketKey associated with that node. export const getTriggeredNode = ( - data: ChainData, + data: GraphData, socketKey: string, map: Set ) => { diff --git a/core/src/index.ts b/core/src/index.ts index 6514e5d38..fec734367 100644 --- a/core/src/index.ts +++ b/core/src/index.ts @@ -5,8 +5,8 @@ import { Task } from './plugins/taskPlugin/task' export { getComponents } from './components/components' export { initEditor } from './editor' export { Task } from './plugins/taskPlugin/task' -export { runChain } from './utils/runChain' -export * from './utils/chainHelpers' +export { runGraph } from './utils/runGraph' +export * from './utils/graphHelpers' export default { getComponents, diff --git a/core/src/plugins/commentPlugin/style.css.d.ts b/core/src/plugins/commentPlugin/style.css.d.ts new file mode 100644 index 000000000..132b232e8 --- /dev/null +++ b/core/src/plugins/commentPlugin/style.css.d.ts @@ -0,0 +1,7 @@ +// This file is automatically generated. +// Please do not change this file! +interface CssExports { + +} +export const cssExports: CssExports; +export default cssExports; diff --git a/core/src/plugins/debuggerPlugin/ThothConsole.ts b/core/src/plugins/debuggerPlugin/ThothConsole.ts index 02336b4e7..6616ca407 100644 --- a/core/src/plugins/debuggerPlugin/ThothConsole.ts +++ b/core/src/plugins/debuggerPlugin/ThothConsole.ts @@ -1,4 +1,5 @@ import { NodeView } from 'rete/types/view/node' + import { IRunContextEditor, NodeData } from '../../../types' import { ThothComponent } from '../../thoth-component' @@ -50,6 +51,7 @@ export class ThothConsole { } updateNodeView() { + if (!this.nodeView) return this.nodeView.onStart() this.nodeView.node.update() } @@ -99,10 +101,13 @@ export class ThothConsole { } } - sendSuccess(result: any) {} + sendSuccess(result: any) { + console.log('Success', result) + } sendToDebug(message: any) { - if (this.editor.thoth.sendToDebug) this.editor.thoth.sendToDebug(message) + if (this.editor && this.editor.thoth && this.editor.thoth.sendToDebug) + this.editor.thoth.sendToDebug(message) } throwServerError(message: any) { diff --git a/core/src/plugins/displayPlugin/DisplayControl.js b/core/src/plugins/displayPlugin/DisplayControl.js index 4bf5991a1..537d3e140 100644 --- a/core/src/plugins/displayPlugin/DisplayControl.js +++ b/core/src/plugins/displayPlugin/DisplayControl.js @@ -1,7 +1,7 @@ import React from 'react' import { Control } from 'rete' const ReactTextInputControl = props => { - return

Result: {props.display}

+ return

Result: {props.display}

} export class DisplayControl extends Control { diff --git a/core/src/plugins/inspectorPlugin/DataControl.ts b/core/src/plugins/inspectorPlugin/DataControl.ts index 9f9639578..b64dd3dd9 100644 --- a/core/src/plugins/inspectorPlugin/DataControl.ts +++ b/core/src/plugins/inspectorPlugin/DataControl.ts @@ -19,6 +19,7 @@ export abstract class DataControl { icon: string write: boolean data: Record + type: string constructor({ dataKey, @@ -29,6 +30,7 @@ export abstract class DataControl { write = true, icon = 'ankh', defaultValue = null, + type = 'string', }: { dataKey: string name: string @@ -38,6 +40,7 @@ export abstract class DataControl { write?: boolean icon?: string defaultValue?: unknown + type?: string }) { if (!dataKey) throw new Error(`Data key is required`) if (!name) throw new Error(`Name is required`) @@ -51,6 +54,7 @@ export abstract class DataControl { this.icon = icon this.write = write this.defaultValue = defaultValue + this.type = type } //Serializer to easily extract the data controls information for publishing @@ -63,6 +67,7 @@ export abstract class DataControl { options: this.options, id: this.id, icon: this.icon, + type: this.type, } } diff --git a/core/src/plugins/inspectorPlugin/Inspector.ts b/core/src/plugins/inspectorPlugin/Inspector.ts index 704b1f13f..f61e0d013 100644 --- a/core/src/plugins/inspectorPlugin/Inspector.ts +++ b/core/src/plugins/inspectorPlugin/Inspector.ts @@ -1,10 +1,10 @@ import deepEqual from 'deep-equal' import Rete, { Input, Output } from 'rete' import { v4 as uuidv4 } from 'uuid' -import { DataSocketType, IRunContextEditor, ThothNode } from '../../../types' -import { ThothComponent } from '../../thoth-component' +import { DataSocketType, IRunContextEditor, ThothNode } from '../../../types' import * as socketMap from '../../sockets' +import { ThothComponent } from '../../thoth-component' import { DataControl } from './DataControl' type InspectorConstructor = { @@ -252,7 +252,7 @@ export class Inspector { this.node.update() } - get() {} + get() { } // returns all data prepared for the pubsub to send it. data(): InspectorData { @@ -281,5 +281,5 @@ export class Inspector { } } - remove() {} + remove() { } } diff --git a/core/src/plugins/keyCodePlugin/index.ts b/core/src/plugins/keyCodePlugin/index.ts index 80287b1f1..63e8d68a5 100644 --- a/core/src/plugins/keyCodePlugin/index.ts +++ b/core/src/plugins/keyCodePlugin/index.ts @@ -22,4 +22,4 @@ const defaultExport = { install, } -export default defaultExport +export default defaultExport \ No newline at end of file diff --git a/core/src/plugins/modulePlugin/index.ts b/core/src/plugins/modulePlugin/index.ts index b47abc0c9..fc2d0980f 100644 --- a/core/src/plugins/modulePlugin/index.ts +++ b/core/src/plugins/modulePlugin/index.ts @@ -2,7 +2,8 @@ import { Engine, NodeEditor, Component, Socket } from 'rete/types' import { NodeData, WorkerInputs, WorkerOutputs } from 'rete/types/core/data' -import { ChainData, ThothNode } from '../../../types' +import { GraphData, ThothNode } from '../../../types' +import { Task } from '../taskPlugin' import { Module } from './module' import { ModuleManager } from './module-manager' import { addIO, removeIO } from './utils' @@ -16,6 +17,7 @@ interface IRunContextEngine extends Engine { export interface IRunContextEditor extends NodeEditor { moduleManager: ModuleManager + tasks?: Task[] } type ModuleOptions = { @@ -134,19 +136,19 @@ function install( if (builder) { component.updateModuleSockets = ( node: ThothNode, - chainData?: ChainData, - useSocketName: boolean = false + graphData?: GraphData, + useSocketName = false ) => { const modules = moduleManager.modules const currentNodeModule = node.data.module as string - if (!modules[currentNodeModule] && !chainData) return + if (!modules[currentNodeModule] && !graphData) return if (!node.data.inputs) node.data.inputs = [] if (!node.data.outputs) node.data.outputs = [] const data = modules[currentNodeModule] ? modules[currentNodeModule].data - : chainData + : graphData if (!data) return const inputs = moduleManager.getInputs(data) diff --git a/core/src/plugins/modulePlugin/module-manager.ts b/core/src/plugins/modulePlugin/module-manager.ts index 498c6b4c7..6006a6a4b 100644 --- a/core/src/plugins/modulePlugin/module-manager.ts +++ b/core/src/plugins/modulePlugin/module-manager.ts @@ -2,7 +2,7 @@ import { Engine, Socket, Component } from 'rete' import { Socket as SocketType } from 'rete/types' import { - ChainData, + GraphData, ModuleType, ModuleWorkerOutput, ThothNode, @@ -58,7 +58,7 @@ export class ModuleManager { } getSockets( - data: ChainData, + data: GraphData, typeMap: Map, defaultName: string ): ModuleSocketType[] { @@ -74,19 +74,19 @@ export class ModuleManager { ) } - getInputs(data: ChainData): ModuleSocketType[] { + getInputs(data: GraphData): ModuleSocketType[] { return this.getSockets(data, this.inputs, 'input') } - getOutputs(data: ChainData): ModuleSocketType[] { + getOutputs(data: GraphData): ModuleSocketType[] { return this.getSockets(data, this.outputs, 'output') } - getTriggerOuts(data: ChainData): ModuleSocketType[] { + getTriggerOuts(data: GraphData): ModuleSocketType[] { return this.getSockets(data, this.triggerOuts, 'trigger') } - getTriggerIns(data: ChainData) { + getTriggerIns(data: GraphData) { return this.getSockets(data, this.triggerIns, 'trigger') } @@ -121,7 +121,7 @@ export class ModuleManager { this.outputs.set(name, socket) } - getTriggeredNode(data: ChainData, socketKey: string) { + getTriggeredNode(data: GraphData, socketKey: string) { return extractNodes(data.nodes, this.triggerIns).find( node => node.data.socketKey === socketKey ) @@ -204,7 +204,7 @@ export class ModuleManager { ) { if (!module) return - // module.setOutput(node.data.name, inputs["input"][0]); + // module.setOutput(node.data.name as any, inputs['input'][0]) } workerTriggerOuts( @@ -215,6 +215,7 @@ export class ModuleManager { ) { if (!module) return const socketKey = node.data.socketKey as string + console.log('setting output', inputs, "inputs['input']", inputs['input']) module.setOutput(socketKey, outputs['trigger']) } diff --git a/core/src/plugins/modulePlugin/utils.ts b/core/src/plugins/modulePlugin/utils.ts index 768eac90d..2cd0f4072 100644 --- a/core/src/plugins/modulePlugin/utils.ts +++ b/core/src/plugins/modulePlugin/utils.ts @@ -1,13 +1,13 @@ import { Input, NodeEditor, Output, Socket } from 'rete' import { IRunContextEditor } from '.' -import { ChainData, DataSocketType, ThothNode } from '../../../types' +import { GraphData, DataSocketType, ThothNode } from '../../../types' import { socketNameMap, SocketNameType } from '../../sockets' import { ModuleSocketType } from './module-manager' export type ThroughPutType = 'outputs' | 'inputs' export function extractNodes( - nodes: ChainData['nodes'], + nodes: GraphData['nodes'], map: Map ) { const names = Array.from(map.keys()) @@ -120,8 +120,7 @@ const addSockets = ({ if (uniqueCount !== sockets.length) throw new Error( - `Module ${node.data.module} has duplicate ${ - taskType === 'option' ? 'trigger' : '' + `Module ${node.data.module} has duplicate ${taskType === 'option' ? 'trigger' : '' } ${connectionType}s` ) diff --git a/core/src/plugins/taskPlugin/task.ts b/core/src/plugins/taskPlugin/task.ts index 98f854a30..88311a8a9 100644 --- a/core/src/plugins/taskPlugin/task.ts +++ b/core/src/plugins/taskPlugin/task.ts @@ -105,7 +105,7 @@ export class Task { /* This is where we are populating all the input values to be passed into the worker. We are getting all the input connections that are connected as outputs (ie have values) We filter out all connections which did not come from the previou node. This is to hgelp support multiple inputs properly, otherwise we actually back propagate along every input and run it, whichI think is unwanted behaviour. - + After we have filtered these out, we need to run the task, which triggers that nodes worker. After the worker runs, the task has populated output data, which we take and we associate with the tasks input values, which are subsequently passed to the nodes worker for processing. @@ -150,7 +150,7 @@ export class Task { if (this.component.task.onRun) this.component.task.onRun(this.node, this, data, socketInfo) - // this is what propagates the the run command to the next nodes in the chain + // this is what propagates the the run command to the next nodes in the graph // this makes use of the 'next' nodes. It also will filter out any connectios which the task has closed. // it is this functionality that lets us control which direction the run signal flows. if (propagate) diff --git a/core/src/sockets.ts b/core/src/sockets.ts index b983ce4ee..d07dedf67 100644 --- a/core/src/sockets.ts +++ b/core/src/sockets.ts @@ -13,6 +13,7 @@ export type SocketNameType = | 'String' | 'Object' | 'Trigger' + | 'Agent' export type SocketType = | 'anySocket' @@ -22,6 +23,7 @@ export type SocketType = | 'stringSocket' | 'objectSocket' | 'triggerSocket' + | 'agentSocket' export const socketNameMap: Record = { 'Any type': 'anySocket', @@ -31,6 +33,7 @@ export const socketNameMap: Record = { String: 'stringSocket', Object: 'objectSocket', Trigger: 'triggerSocket', + Agent: 'agentSocket', } export const anySocket = new Rete.Socket('Any type') @@ -41,6 +44,7 @@ export const arraySocket = new Rete.Socket('Array') export const stringSocket = new Rete.Socket('String') export const objectSocket = new Rete.Socket('Object') export const triggerSocket = new Rete.Socket('Trigger') +export const agentSocket = new Rete.Socket('Agent') const sockets = [ numSocket, @@ -48,6 +52,7 @@ const sockets = [ stringSocket, arraySocket, objectSocket, + agentSocket ] sockets.forEach(socket => { diff --git a/core/src/thoth-component.ts b/core/src/thoth-component.ts index 70e02f7a2..97261b5f9 100644 --- a/core/src/thoth-component.ts +++ b/core/src/thoth-component.ts @@ -28,7 +28,7 @@ export interface ModuleOptions { export abstract class ThothComponent< WorkerReturnType -> extends ThothEngineComponent { + > extends ThothEngineComponent { // Original interface for task and _task: IComponentWithTask from the Rete Task Plugin task: TaskOptions _task: ThothTask @@ -38,9 +38,9 @@ export abstract class ThothComponent< category: string info: string display: boolean - deprecated: boolean = false - dev: boolean = false - hide: boolean = false + deprecated = false + dev = false + hide = false deprecationMessage: string | undefined module: ModuleOptions contextMenuName: string | undefined diff --git a/core/src/utils/SpellRunner.ts b/core/src/utils/SpellRunner.ts index b72b39ade..eadf7fa58 100644 --- a/core/src/utils/SpellRunner.ts +++ b/core/src/utils/SpellRunner.ts @@ -2,15 +2,16 @@ import { getComponents, initSharedEngine, } from '@latitudegames/thoth-core/server' + import { EngineContext, - ChainData, + GraphData, ModuleComponent, Spell as SpellType, } from '../../types' import { extractNodes, ThothEngine } from '../engine' import { Module } from '../plugins/modulePlugin/module' -import { extractModuleInputKeys } from './chainHelpers' +import { extractModuleInputKeys } from './graphHelpers' type RunSpellConstructor = { thothInterface: EngineContext @@ -55,7 +56,7 @@ class SpellRunner { } get inputKeys() { - return extractModuleInputKeys(this.currentSpell.chain) + return extractModuleInputKeys(this.currentSpell.graph) } get outputData() { @@ -74,7 +75,7 @@ class SpellRunner { private _formatOutputs(rawOutputs: Record) { const outputs = {} as Record - const graph = this.currentSpell.chain + const graph = this.currentSpell.graph Object.values(graph.nodes) .filter((node: any) => { @@ -95,7 +96,7 @@ class SpellRunner { */ private _getFirstNodeTrigger() { const extractedNodes = extractNodes( - this.currentSpell.chain.nodes, + this.currentSpell.graph.nodes, this.triggerIns ) return extractedNodes[0] @@ -109,7 +110,7 @@ class SpellRunner { this.currentSpell = spell // We process the graph for the new spell which will set up all the task workers - await this.engine.process(spell.chain as ChainData, null, this.context) + await this.engine.process(spell.graph as GraphData, null, this.context) } /** diff --git a/core/src/utils/chainHelpers.ts b/core/src/utils/graphHelpers.ts similarity index 86% rename from core/src/utils/chainHelpers.ts rename to core/src/utils/graphHelpers.ts index 2d6bf16c7..89ec9055a 100644 --- a/core/src/utils/chainHelpers.ts +++ b/core/src/utils/graphHelpers.ts @@ -1,10 +1,11 @@ import { NodesData } from 'rete/types/core/data' -import { ChainData, NodeData } from '../../types' + +import { GraphData, NodeData } from '../../types' /** * extracts all module inputs based upon a given key */ -export const extractModuleInputKeys = (data: ChainData) => +export const extractModuleInputKeys = (data: GraphData) => Object.values(data.nodes).reduce((inputKeys, node: NodeData) => { if (node.name !== 'Universal Input') return inputKeys if (node.data.name && !node.data.useDefault) diff --git a/core/src/utils/runChain.ts b/core/src/utils/runGraph.ts similarity index 93% rename from core/src/utils/runChain.ts rename to core/src/utils/runGraph.ts index 78085832c..bb819e4bb 100644 --- a/core/src/utils/runChain.ts +++ b/core/src/utils/runGraph.ts @@ -1,34 +1,34 @@ import { EngineContext, - ChainData, + GraphData, ModuleComponent, NodeData, Subspell, } from '../../types' import { ThothEngine } from '../engine' import { Module } from '../plugins/modulePlugin/module' -import { extractNodes } from './chainHelpers' +import { extractNodes } from './graphHelpers' -type RunChainArguments = { - graph: ChainData +type RunGraphArguments = { + graph: GraphData inputs: Record thoth: EngineContext engine: ThothEngine subspells?: Subspell[] } -function getFirstNodeTrigger(data: ChainData, map: Set) { +function getFirstNodeTrigger(data: GraphData, map: Set) { const extractedNodes = extractNodes(data.nodes, map) return extractedNodes[0] } -export const runChain = async ({ +export const runGraph = async ({ graph, inputs, thoth, engine, subspells, -}: RunChainArguments) => { +}: RunGraphArguments) => { // The module is an interface that the module system uses to write data to // used internally by the module plugin, and we make use of it here too. // TODO: Test runing nested modules and watch out for unexpected behaviour diff --git a/core/src/utils/runSpell.ts b/core/src/utils/runSpell.ts new file mode 100644 index 000000000..d7f74fc9e --- /dev/null +++ b/core/src/utils/runSpell.ts @@ -0,0 +1,130 @@ +import { + getComponents, + initSharedEngine, +} from '@latitudegames/thoth-core/server' + +import { EngineContext, GraphData, ModuleComponent, Spell } from '../../types' +import { extractNodes, ThothEngine } from '../engine' +import { Module } from '../plugins/modulePlugin/module' + +type RunSpellConstructor = { + thothInterface: EngineContext +} + +class RunSpell { + engine: ThothEngine + currentSpell!: Spell + module: Module + thothInterface: EngineContext + + constructor({ thothInterface }: RunSpellConstructor) { + // Initialize the engine + this.engine = initSharedEngine({ + name: 'demo@0.1.0', + components: getComponents(), + server: true, + modules: {}, + }) as ThothEngine + + // Set up the module to interface with the runtime processes + this.module = new Module() + + // Set the interface that this runner will use when running workers + this.thothInterface = thothInterface + + // We should probably load up here all the "modules" the spell needds to run + // This would basicallyt be an array of spells pulled from the DB + } + + // getter method for all triggers ins of the loaded spell + get triggerIns() { + return this.engine.moduleManager.triggerIns + } + + get context() { + return { + module: this.module, + thoth: this.thothInterface, + silent: true, + } + } + + private _getComponent(componentName: string) { + return this.engine.components.get(componentName) + } + + private _loadInputs(inputs: Record) { + this.module.read(inputs) + } + + private _formatOutputs(rawOutputs: Record) { + const outputs = {} as Record + const graph = this.currentSpell.graph + + Object.values(graph.nodes) + .filter((node: any) => { + return node.name.includes('Output') + }) + .forEach((node: any) => { + outputs[(node as any).data.name as string] = + rawOutputs[(node as any).data.socketKey as string] + }) + + return outputs + } + + /** + * temporary method until we have a better way to target specific nodes + * this is basically just using a "Default" trigger in + * and does not support multipel triggers in to a spell yet + */ + private _getFirstNodeTrigger() { + const extractedNodes = extractNodes( + this.currentSpell.graph.nodes, + this.triggerIns + ) + return extractedNodes[0] + } + + private _resetTasks() { + this.engine.tasks.forEach(t => t.reset()) + } + + getOutputs() { + const rawOutputs = {} + this.module.write(rawOutputs) + return this._formatOutputs(rawOutputs) + } + + loadSpell(spell: Spell) { + this.currentSpell = spell + + // We process the graph for the new spell which will set up all the task workers + this.engine.process(spell.graph as GraphData, null, this.context) + } + + /** + * Main spell runner. Processes inputs, gets the right component that starts the + * running. Would be even better iof we just took a node identifier, got its + * component, and ran the one triggered rather than this slightly hacky hard coded + * method. + */ + async runComponent(inputs: Record, componentName: string) { + // ensaure we run from a clean sloate + this._resetTasks() + + // laod the inputs into module memory + this._loadInputs(inputs) + + const component = this._getComponent(componentName) as ModuleComponent + const triggeredNopde = this._getFirstNodeTrigger() + + // this running is where the main "work" happens. + // I do wonder whether we could make this even more elegant by having the node + // subscribe to a run pubsub and then we just use that. This would treat running + // from a trigger in node like any other data stream. Or even just pass in socket IO. + await component.run(triggeredNopde) + } +} + +export default RunSpell diff --git a/core/src/utils/textClassifier.ts b/core/src/utils/textClassifier.ts new file mode 100644 index 000000000..3bcda1377 --- /dev/null +++ b/core/src/utils/textClassifier.ts @@ -0,0 +1,112 @@ +/* eslint-disable no-console */ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +//@ts-nocheck + +import fs from 'fs' +import natural from 'natural' +import path from 'path' + +let classifier: any +let profanityClassifier: any + +const rootDir = path.resolve(path.dirname('')) +export async function classifyText(input: any) { + if (!classifier || classifier === undefined) { + return '' + } + + return await classifier.classify(input) +} +export async function classifyProfanityText(input: any) { + if (!profanityClassifier || profanityClassifier === undefined) { + return '' + } + + return await profanityClassifier.classify(input) +} + +export function trainClassifier() { + const lines = fs + .readFileSync(rootDir + '/data/classifier/training_data.txt') + .toString() + .split('\n') + for (let i = 0; i < lines.length; i++) { + const data = lines[i].trim().split('|') + if (data.length !== 2) { + continue + } + + classifier.addDocument(data[0].trim(), data[1].trim()) + } + + classifier.train() + classifier.save( + rootDir + '/data/classifier/classifier.json', + function (err: any) { + if (err) { + return console.error(err) + } + } + ) +} +export function trainProfanityClassifier() { + const lines = fs + .readFileSync(rootDir + '/data/classifier/profanity_data.txt') + .toString() + .split('\n') + for (let i = 0; i < lines.length; i++) { + profanityClassifier.addDocument(lines[i], 'profane') + } + + profanityClassifier.train() + profanityClassifier.save( + rootDir + '/data/classifier/profanity_classifier.json', + (err: any) => { + if (err) { + console.error(err) + return + } + } + ) +} + +export async function initClassifier() { + if (fs.existsSync(rootDir + '/data/classifier/classifier.json')) { + await natural.BayesClassifier.load( + rootDir + '/data/classifier/classifier.json', + null, + async function (err: any, _classifier: any) { + if (err) { + console.error(err) + classifier = new natural.BayesClassifier() + await trainClassifier() + return + } + classifier = _classifier + } + ) + } else { + classifier = new natural.BayesClassifier() + await trainClassifier() + } +} +export async function initProfanityClassifier() { + if (fs.existsSync(rootDir + '/data/classifier/profanity_classifier.json')) { + await natural.BayesClassifier.load( + rootDir + '/data/classifier/profanity_classifier.json', + null, + async function (err: any, _classifier: any) { + if (err) { + console.error(err) + profanityClassifier = new natural.BayesClassifier() + await trainProfanityClassifier() + return + } + profanityClassifier = _classifier + } + ) + } else { + profanityClassifier = new natural.BayesClassifier() + await trainProfanityClassifier() + } +} diff --git a/core/tsconfig-release.json b/core/tsconfig-release.json index 798b6a426..a057ed763 100644 --- a/core/tsconfig-release.json +++ b/core/tsconfig-release.json @@ -1,7 +1,7 @@ { "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], + "target": "ES2021", + "lib": ["dom", "dom.iterable", "es2021"], "allowJs": true, "skipLibCheck": true, "esModuleInterop": true, diff --git a/core/tsconfig.json b/core/tsconfig.json index 142b03a2f..8a668d6f3 100644 --- a/core/tsconfig.json +++ b/core/tsconfig.json @@ -13,9 +13,8 @@ "declaration": true, "composite": true, "noEmit": false, - "target": "es6", + "target": "ES2021", "sourceMap": true }, - "include": ["./"], "exclude": ["./node_modules/", "./dist/"] } diff --git a/core/types.ts b/core/types.ts index 9f301869b..20f4384fc 100644 --- a/core/types.ts +++ b/core/types.ts @@ -5,17 +5,17 @@ import { Node } from 'rete/types' // eslint-disable-next-line @typescript-eslint/ban-ts-comment //@ts-ignore import { + Data, NodeData as ReteNodeData, WorkerInputs, WorkerOutputs, } from 'rete/types/core/data' +import { ThothConsole } from './src/plugins/debuggerPlugin/ThothConsole' import { Inspector } from './src/plugins/inspectorPlugin/Inspector' import { TaskOutputTypes } from './src/plugins/taskPlugin/task' import { SocketNameType, SocketType } from './src/sockets' import { ThothTask } from './src/thoth-component' -import { ThothConsole } from './src/plugins/debuggerPlugin/ThothConsole' -import { Data } from 'rete/types/core/data' export { ThothEditor } from './src/editor' @@ -47,7 +47,7 @@ export type EngineContext = { huggingface: ( model: string, request: string - ) => Promise<{ error?: unknown; [key: string]: unknown }> + ) => Promise<{ error?: unknown;[key: string]: unknown }> runSpell: ( flattenedInputs: Record, spellId: string, @@ -101,9 +101,9 @@ export type EventsTypes = { export interface Spell { id?: string - user?: Record | null | undefined + user?: Record | string | null | undefined name: string - chain: ChainData + graph: GraphData // Spells: Module[] gameState: Record createdAt?: number @@ -126,7 +126,7 @@ export type DataSocketType = { export type ThothNode = Node & { inspector: Inspector display: (content: string) => void - outputs: { name: string; [key: string]: unknown }[] + outputs: { name: string;[key: string]: unknown }[] category?: string deprecated?: boolean displayName?: string @@ -138,7 +138,7 @@ export type ThothNode = Node & { export type ModuleType = { id: string name: string - data: ChainData + data: GraphData createdAt: number updatedAt: number } @@ -178,7 +178,7 @@ export type OpenAIResponse = { finish_reason: string } -export type Subspell = { name: string; id: string; data: ChainData } +export type Subspell = { name: string; id: string; data: GraphData } export type ModuleComponent = Component & { run: Function @@ -203,7 +203,7 @@ export type NodeOutputs = { } } -export type ChainData = Data +export type GraphData = Data export type NodeData = ReteNodeData & { fewshot?: string @@ -260,9 +260,9 @@ export type WorkerReturn = | Promise | Promise<{ element: unknown } | undefined> | Promise< - | { result: { error: unknown; [key: string]: unknown } } - | { result?: undefined } - > + | { result: { error: unknown;[key: string]: unknown } } + | { result?: undefined } + > | Promise<{ text: unknown }> | Promise<{ boolean: boolean }> | Promise @@ -283,11 +283,11 @@ export type ThothWorker = ( export interface PubSubBase extends CountSubscriptions, - ClearAllSubscriptions, - GetSubscriptions, - Publish, - Subscribe, - Unsubscribe { + ClearAllSubscriptions, + GetSubscriptions, + Publish, + Subscribe, + Unsubscribe { name: string version: string } diff --git a/core/webpack.prod.js b/core/webpack.prod.js index d82c08688..faafcc267 100644 --- a/core/webpack.prod.js +++ b/core/webpack.prod.js @@ -1,4 +1,4 @@ -const Dotenv = require('dotenv-webpack') +const Dotenv = require('dotenv-flow-webpack') const CompressionPlugin = require('compression-webpack-plugin') const TerserPlugin = require('terser-webpack-plugin') const BundleAnalyzerPlugin = diff --git a/core/yarn-error.log b/core/yarn-error.log new file mode 100644 index 000000000..e69de29bb diff --git a/jsconfig.json b/jsconfig.json index e375e5534..971e397da 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "module": "commonjs", - "target": "es2016", + "target": "ES2021", "jsx": "preserve" }, "exclude": ["node_modules", "**/node_modules/*"] diff --git a/lerna.json b/lerna.json index ff92410eb..30bd4ad30 100644 --- a/lerna.json +++ b/lerna.json @@ -1,8 +1,5 @@ { - "packages": [ - "client", - "core" - ], + "packages": ["client", "core", "server", "sharedb"], "npmClient": "yarn", "useWorkspaces": true, "version": "0.0.0" diff --git a/netlify.toml b/netlify.toml index 19ef49149..24ba1ff66 100644 --- a/netlify.toml +++ b/netlify.toml @@ -26,4 +26,4 @@ REACT_APP_LAPI_ROOT_URL_PROD="https://latitude-api-staging.herokuapp.com" REACT_APP_API_URL="https://latitude-api-staging.herokuapp.com" REACT_APP_SITE_ROOT_URL_PROD="https://staging.thoth.latitude.io" - REACT_APP_OAUTH_CLIENT_ID="a89bb9dc-074c-4376-a5a4-a48c24bc4c42" \ No newline at end of file + REACT_APP_OAUTH_CLIENT_ID="a89bb9dc-074c-4376-a5a4-a48c24bc4c42" diff --git a/package.json b/package.json index 34e73dbbd..04095e656 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "@thoth/root", + "name": "@latitudegames/thoth", "version": "0.0.1", "private": true, "license": "apache 2.0", @@ -13,31 +13,47 @@ "packages": [ "client", "core", + "server", "sharedb" ] }, "scripts": { "start:core": "lerna exec --scope @latitudegames/thoth-core -- yarn start", - "start:client": "lerna exec --scope @thoth/client -- yarn start", - "start:sharedb": "lerna exec --scope @thoth/sharedb -- yarn start", + "dev": "NODE_OPTIONS=--max-old-space-size=8192 concurrently \"cd server && docker-compose up\" \"sleep 5 && yarn run dev:server\" \"yarn start:core\" \"sleep 1 && yarn start:client\" \"sleep 5 && yarn run db:seed\" ", + "dev-windows": "cross-env NODE_OPTIONS=--max-old-space-size=8192 concurrently \"cd server && docker-compose up\" \"yarn run dev:server\" \"yarn start:core\" yarn start:client\" yarn run db:seed\" ", + "dev:client": "concurrently \"yarn start:core\" \"sleep 1 && yarn start:client\"", + "dev:server": "lerna exec --scope @latitudegames/thoth-server -- yarn run dev", + "db:seed": "npx sequelize-cli db:seed:all --url 'postgres://thoth:thoth_default_pw@localhost:5432/thoth'", + "start:client": "lerna exec --scope @latitudegames/thoth-client -- yarn start", + "start:sharedb": "lerna exec --scope @latitudegames/thoth-sharedb -- yarn start", "start": "run-p start:core start:client", "lint": "lerna run lint --parallel", "lint:fix": "lerna run lint:fix --parallel", - "build": "copyfiles LICENSE.txt client && lerna exec --scope @thoth/client -- yarn build", + "build": "copyfiles LICENSE.txt client && lerna exec --scope @latitudegames/thoth-client -- yarn build", "build:core": "copyfiles LICENSE.txt core && lerna exec --scope @latitudegames/thoth-core -- yarn build", "publish:canary": "lerna exec --scope @latitudegames/thoth-core -- yarn canary", - "install:canary": "lerna exec --scope @thoth/client -- yarn install:canary" + "install:canary": "lerna exec --scope @latitudegames/thoth-client -- yarn install:canary" }, "engines": { "node": ">=14.17.6", "npm": ">=6.12.0", "yarn": "^1.22.10" }, + "resolutions": { + "@types/react": "18.0.0" + }, "devDependencies": { + "@types/wav": "^1.0.1", + "concurrently": "^7.1.0", "craco": "^0.0.3", - "lerna": "^4.0.0" + "cross-env": "^7.0.3", + "lerna": "^4.0.0", + "react": "^18.0.0" }, "dependencies": { + "@discordjs/opus": "^0.7.0", + "@discordjs/voice": "^0.9.0", + "@google-cloud/text-to-speech": "^3.4.0", "@plotdb/json0": "^0.0.5", "@typescript-eslint/eslint-plugin": "^4.31.1", "@typescript-eslint/parser": "^4.31.1", @@ -46,8 +62,19 @@ "eslint-config-prettier": "^8.3.0", "eslint-plugin-import": "^2.24.2", "eslint-plugin-prettier": "^4.0.0", + "ffmpeg-static": "^5.0.0", "json0-ot-diff": "^1.1.2", + "libsodium-wrappers": "^0.7.10", + "m3u8_multi_downloader": "^1.1.5", + "m3u8-to-mp4": "^1.0.0", + "node-wit": "^6.2.1", + "node-witai-speech": "^1.0.2", "npm-run-all": "^4.1.5", - "prettier": "^2.4.1" + "opusscript": "^0.0.8", + "prettier": "^2.4.1", + "prism-media": "^1.3.2", + "sodium": "^3.0.2", + "tweetnacl": "^1.0.3", + "wav": "^1.0.2" } } diff --git a/pyserver/.gitignore b/pyserver/.gitignore new file mode 100644 index 000000000..b3deddb6e --- /dev/null +++ b/pyserver/.gitignore @@ -0,0 +1,14 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python + +#data +files/cache +files/data \ No newline at end of file diff --git a/pyserver/envReader.py b/pyserver/envReader.py new file mode 100644 index 000000000..ca5839720 --- /dev/null +++ b/pyserver/envReader.py @@ -0,0 +1,23 @@ +from genericpath import exists + + +data = [] + +def read(path): + file = open(path, 'r') + + lines = file.readlines() + for line in lines: + d = line.strip().split('=', 1) + if len(d) == 2: + data.append({ 'key': d[0], 'value': d[1] }) + + file.close() + + +def getValue(key): + for x in data: + if x['key'] == key: + return x['value'] + + return '' \ No newline at end of file diff --git a/pyserver/files/config/.env b/pyserver/files/config/.env new file mode 100644 index 000000000..7cae13389 --- /dev/null +++ b/pyserver/files/config/.env @@ -0,0 +1,10 @@ +PORT=7777 +PGUSER=thoth +PGHOST=localhost +PGPASSWORD=thoth_default_pw +PGDATABASE=thoth +#Options: fast-learn, learn, deep-learn +VECTOR_SEARCH_SPEED=deep-learn +VECTOR_SEARCH_WORKERS=8 +#Options: doc2vec, universal-sentence-encoder, universal-sentence-encoder-multilingual, universal-sentence-encoder-multilingual-large, distiluse-base-multilingual-cased, all-MiniLM-L6-v2, paraphrase-multilingual-MiniLM-L12-v2 +VECTOR_SEARCH_EMBEDDING_MODEL=doc2vec \ No newline at end of file diff --git a/pyserver/files/training_data/vector_search_data.txt b/pyserver/files/training_data/vector_search_data.txt new file mode 100644 index 000000000..8e92a475e --- /dev/null +++ b/pyserver/files/training_data/vector_search_data.txt @@ -0,0 +1,518 @@ +my unit-tests failed. +tried the program, but it was buggy. +the drive has a 2TB capacity. +i need a new power supply. +my computer has 2GB of ram. +universe has a vast amount of planets. +the universe is expanding. +the trees are growing. +many trees create a forest. +the amazon is the bigger forest. +Greece is in Europe. +Europe is a continent. +America is a continent. +Asia is a continent. +Africa is a continent. +There are 5 oceans on earth. +The biggest mountain is the everest. +The biggest lake is the lake Superior. +The eartch has a core inside that is very hot. +The earth is round. +Not all earth's oceans have been explored +The biggest mammal is the blue whale. +The biggest bird is the ostrich. +The biggest fish is the shark. +The biggest snake is the cobra. +The most dangerous snake is the cobra. +The biggest insect is the bee. +Most of the insects are not dangerous, but some are. +People that study biology are known as biologists. +Australia's Great Barrier Reef is the largest living structure on Earth. Reaching over 2000 kilometres (1240 miles) in length. +The first person to see a live cell with a microscope was Antonie van Leeuwenhoek, in 1674. +Ecology is the study of ecosystems and how organisms interact with their environment. +While some bacteria can make you sick, others have positive benefits such as helping you digest food or even make yoghurt. +Moulds, yeasts and mushrooms are types of fungus. +The common cold is a type of virus. +Viruses can be treated with antiviral drugs. +The human body has a lot of bones. +Bacteria are extremely small and are made up of just one cell. +Bacterial infections can be treated with antibiotics. +Animals that eat plants as their primary food source are known as herbivores. +Animals that eat meat as their primary food source are known as carnivores. +Endangered species are those that are in danger of being completely wiped out, they include blue whales, tigers and pandas. Without protection these species may eventually become extinct. +Born on July 5th 1996, Dolly the sheep was the first mammal to be cloned from an adult cell. +When the DNA of an organism changes and results in a new trait (characteristic) it is known as mutation. +French chemist and microbiologist Louis Pasteur was well known for inventing a process to stop various foods and liquids making people sick. Called Pasteurization, it reduces the amount of microorganisms that could lead to disease without having a noticeable effect on taste and quality in a way which methods such as sterilization might. +Charles Darwin developed the idea of natural selection, sometimes called survival of the fittest. It is a process that involves living things with favorable traits being more likely to reproduce, passing on their favorable traits to future generations. +An adult human body is made up of ± 100 trillion cells. +Our bone marrow produces 260 billion red blood cells (RBCs) and 135 billion white blood cells (WBCs) per day. +Thirst not only occurs when the body loses a lot of fluids but also occurs due to increased levels of salt in the blood. The reason being salt tends to bind water. +What’s the largest organ of the human body? Quite surprising, but the answer is your skin. +Did you know about the world’s smallest snake? If no, then here’s the answer - the Barbados Thread snake. +Every nucleus in the human body has DNA of 6 feet long. +Magnetoreception is a type of magnetic compass present in some migratory birds that help them navigate using the Earth’s magnetic field. +The jaw is one of the strongest parts of the human body when it comes to exerting force. +The ostrich egg is the biggest in the world. It equals to the volume of as much as 30 chicken eggs. +The life of an eyelash is no more than 5 months. +Armadillos spend about 80% of their life asleep! +Babies born with farsightedness. They start to focus properly only between 3 to 6 months of age. +In seahorses, the male gives birth to a young one. +It is a fact that in a human mouth there are more bacteria than there are in the world. +Alaska Is the Westernmost and Easternmost State in the U.S. +There’s an Lake Within an Island on a Lake Within an Island +Mauna Kea Is Taller Than Everest +Mt. Everest Isn't as Close to the Moon as Mt. Chimborazo +Iceland Is Growing 5 Centimeters Per Year +The Pacific Ocean Is Shrinking at a Rate of 1.5 Percent Per Year +A Good Morning Is a Good Night in Parts of Russia +Los Angeles Is East of Reno, Nevada +Mexico City Is Sinking +Los Angeles and San Francisco Will Be Neighboring Cities +There Are 7,100+ Islands in the Philippines +The Sargasso Sea Has No Coasts +Yellowstone National Park Is Home to a Supervolcano +Sudan Has More Ancient Pyramids Than Egypt +The Largest Rock on the Planet Is in Australia +Damascus is the Oldest Continuously Inhabited City in the World +Africa Spans All Four Hemispheres +Kentucky Has More Caves Than Any Other Place on Earth +Istanbul Is the Only Major City Resting on Two Continents +Alaska Is Home to the Largest Cities in America +The Deepest Place on Earth Is in the Pacific Ocean +Russia's Transsiberian Railway Crosses 3,901 Bridges +It Snows in the Sahara Desert +Fly Over the Great Barrier Reef and You'll See a Heart +Bangkok's Full Name is 163 Letters +The Largest Concentration of Lakes Is in Canada +42 Buildings in New York Have Their Own Zip Codes +Two Islands 2.4 Miles Apart Are 20 Hours Apart +Earth Has Enough Gold to Cover Itself in Its Entirety +Water Covers the Majority of the Planet, but Most of It Can't Be Used by Humans +The Most Remote Place on Earth Is Point Nemo +20% of Oxygen Is Produced by the Amazon +California Is Bigger Than Canada (By Population) +Australia's Red Rock Is Bigger Than You Think +Mount Everest Can Fit Inside the Mariana Trench +The Shortest Town Names Have One Letter +A Town in Nebraska Has a Single Resident +The Country With the Longest Name Has 56 Characters +Greece Has More Than 200 Inhabited Islands +Australia's Alps Get More Snow Than the Swiss Alps +Brazil has derived its name from a tree named brazilwood tree. It is a shortened form of Terra do Brasil, land of Brazil. +Apples have 25% water in their volume! This is why it can float on water because it’s lighter than water. +The potatoes were first cultivated in Peru almost 7000-10,000 years ago. There are right now almost 1000 different types of tomatoes. +Vanilla extract comes from percolating of Vanilla pods called as Vanilla planifolia. There is some amount of alcohol present in it for approximately 2-3% of it! +The most common fruit in the world is the banana. +Oak trees get struck by lightning the most among all the trees. It is because they are taller than most of the trees. +Strawberry is the only fruit that bears its seeds on the outside! An average strawberry will have about 200 seeds. +An average pomegranate has more than 1000 seeds. Pomegranates are used for baking, juice blends and even in alcoholic beverages. +Dwarf Willow is the tiniest tree in the world which is about two inches. Its scientific name is Salix herbacea. +Titan Arums is the largest flower in the world! It is even bigger than an elephant being 10 feet high and 3 feet wide. +The Shenzhen Nongke Orchid claimed the record for most expensive flower ever sold, when it was auctioned off for about $224,000 in 2005. This flower was created by scientists in a university lab, and took 8 years of work to develop. It only blooms every 5 years! +Potatoes and Tomatoes are grown in the largest amount across the world. However, it is Onions that are the most widely used vegetable being a part of almost all the dishes. +Caffeine is used as a natural pesticide for plants. It paralyzes and kills the insects feeding on them. +Cutting an Onion releases a gas called Propanethiol S-oxide, which when mixed with certain enzymes present in Onion, creates a sulfur gas. The gas gets into our eyes while cutting the Onions and that is why you cry! +The most efficient thing to wake you up in the morning is not Tea or Coffee, it’s Apples. They are packed with high amounts of Vitamins, antioxidants and fiber that makes your body active. +More than a quarter of plant life (85%) is found in water! Earth is covered widely by marine biomes, estuaries and coral reefs. +The fastest growing woody plant in the world is Bamboo. It can easily grow upto 35 inches per day. +The Arabic word for fingers is Banana! The bunch of Bananas is called as hand of bananas and the individual units are the “fingers” of the fruit, hence, the name. +The largest flower Rafflesia or “corpse flower”. They are 3 feet in diameter and 42 inches in height. +There is a science of calculating the age of a tree by counting its rings called Dendrochronology. Rings in the steam of a tree are an indicator of its age. +The word “hundred” comes from the old Norse term, “hundrath”, which actually means 120 and not 100 +In a room of 23 people there’s a 50% chance that two people have the same birthday. +Most mathematical symbols weren’t invented until the 16th century. Before that, equations were written in words. +“Forty” is the only number that is spelt with letters arranged in alphabetical order. +Conversely, “one” is the only number that is spelt with letters arranged in descending order. +From 0 to 1000, the only number that has the letter “a” in it is “one thousand”. +‘Four’ is the only number in the English language that is spelt with the same number of letters as the number itself. +Every odd number has an “e” in it. +The reason Americans call mathematics “math”, is because they argue that “mathematics” functions as a singular noun so ‘math’ should be singular too. +Markings on animal bones indicate that humans have been doing maths since around 30,000BC. +“Eleven plus two” is an anagram of “twelve plus one” which is pretty fitting as the answer to both equations is 13. +Because of differences in gravity, a 200 pound person would only weigh 76 pounds on Mars. +Electric eels can stun both predators and prey with electric shocks of around 500 volts. +Energy from food is usually measured in joules or calories. +Light from the Earth takes just 1.255 seconds to reach the Moon. +Sound travels at a speed of around 767 miles per hour (1,230 kilometres per hour). +Physics is the science of matter and its behavior. +The word Physics Comes from the Greek word, physikḗ, which means “science of nature.” +Physics was recognized as a discipline in the 19th century. +The Dead Sea is so dense with salt, you can easily float on it without drowning. +The world's densest wood, the Black Ironwood (Olea laurifolia), does not float on water and therefore sinks. +Gravity is by far the weakest force we know. +Gravity and weight are not the same thing. +Gravity makes waves that move at light speed. +Explaining the microscopic behavior of gravity has thrown researchers for a loop. +Gravity might be carried by massless particles called gravitons. +Quantum gravity appears at the smallest length anything can be. +Electricity travels at the speed of light, about 300,000 kilometres per second. +A spark of static electricity can measure up to 3,000 volts. +The average taser emits 50,000 volts. +A bolt of lightning can measure up to three million (3,000,000) volts (and lasts less than one second). +According to the Global Energy Statistical Yearbook, global electricity production for 2015 approached 25,000 terawatt hours (1 terawatt = 1 trillion watts). +The first four common domestic items to be powered by electricity were the sewing machine, fan, kettle and toaster. +LED light bulbs use about one-sixth of the electricity that conventional bulbs do, cost about a quarter as much to use, and last about 40 times longer. +The quantum world is lumpy. +Something can be both wave and particle at the same time. +Objects can be in two places at once. +Quantum Phyiscs may lead us towards a multiverse. +Quantum Phyiscs helps us characterize stars. +You Can’t Directly See a Black Hole. +Our Milky Way Probably Has a Black Hole. +Dying Stars Lead to Stellar Black Holes. +There are Three Categories of Black Holes. +Black Holes Are Funky. +The First Black Hole Wasn’t Discovered Until X-Ray Astronomy was Used. +The Closest Black Hole is Probably Not 1,600 Light-Years Away. +We Don’t Know if Wormholes Exist. +Black Holes Are Only Dangerous if You Get Too Close. +Black Holes Are Constantly Used in Science Fiction. +Our solar system is about 4.5 billion years old. +The Moon is drifting away from Earth at a rate of 1.5 inches (3.8 cm) a year. +A person who weighs 220 pounds (100 kg) on Earth would weigh only 84 pounds (34 kg) on Mars. +Astronomers have made more than 1.4 million observations using the Hubble Space Telescope. +Neutron stars rotate at a speed of 600 times per second. +Scientists discovered a hydrogen signal from a galaxy located five billion light-years away. +Saturn is made of 96% hydrogen. +Enceladus reflects 90% of the Sun’s light. +The world’s first speeding ticket was issued in 1902 +1 in 4 cars on the UK’s road were made in China +A modern Formula 1 car can drive upside down in a tunnel at 120mph +60 million cars are produced every year +1 billion cars are currently in use around the world +The average British driver will spend around 99 days of their life stuck in traffic +It would take less than a month to get to the moon by car +The average car contains over 30,000 unique parts +75% of all cars produced by Rolls Royce are still on the road +Volkswagen owns twelve well-known car brands from 7 European countries +The first ever car accident occurred in 1891 +The largest speeding fine ever produced was €1,000,000 +The world record for removing and replacing a car engine is 42 seconds +The odds of dying in a car accident are around 1 in 5,000 +The man who invented cruise control was blind +The highest total mileage clocked by a single car is 2,850,000 million miles +The creaks in your house have little to do with its age. +That space under your lower cabinets serves a very specific purpose. +The cabinet under your sink isn't really for storage. +Your brass doorknobs may keep you healthy. +Those holes on the bottom of your brick house aren't foundation problems that need correcting. +The overhang on your roof is a good thing. +The style of your roof depends on where you live. +You can tell your home's age by its roof. +Your home may have its own bird box. +Your staircase balusters are named after a popular fruit. +Your farmhouse's red exterior is probably paying homage to an old-fashioned tradition. +Your stately Victorian home may have been built from a box. +The bricks on your home's exterior have a very adorable name. +Your textured plaster walls were likely made using real flowers. +Some of the smaller boats used by man today include canoes, kayaks, paddleboats, dinghies, and rowboats. Boats are usually designed for inland waterways such as lakes, rivers, and bays. +Some of the larger boats, sometimes referred to as ships, include cargo ships, cruise ships, military ships, yachts, and sailboats. Ships are usually designed for travel on seas and oceans. +In the Old Testament of King James Bible there are 37 references to ships, and one reference to a boat. +Native Americans used to make boats by digging out the inside of a log. These are the earliest canoes. +The oldest boats found by archaeologists are called Pesse canoes. The oldest recovered boat is believed to be between 7,000 and 10,000 years old. +Evidence from ancient references exists to prove that boats were used 900,000 years ago and in prehistoric times. +Over a century ago steamboats were popular for transporting people and goods along rivers. +The hull of a boat is the main body of the boat not including the sail or motor or oars. +The boat's left side is referred to as the port side. +The boat's right side is referred to as the starboard side. +The bow is the boats front, and the boat's back is called the stern. +The boat's width at the widest point from starboard to port side is called its beam. +There are approximately 18 million boats owned by Americans for recreational use today. +Coding has over 700 languages. +Coding Bugs were NOT named after an actual bug. +Coding will soon be as important as reading. +The first programmer was the daughter of a mad poet +The first computer virus was a Creeper. +NASA still operates some projects on programming from the 1970’s. +There is BIG money in coding. +It’s all 0’s and 1’s. +You don’t have to work in tech to use coding. +Computer was a job title, and the first programmers were women +Coding can “power up” your brain +Some planes can fly for more than five hours after one of their engines goes out. +If someone dies on your flight, their body might stay in the cabin with you. +In-flight oxygen masks aren't intended to last the whole flight. +Pilots frequently fall asleep on the job. +Black boxes aren't actually black. +Airplane air is significantly drier than any you might experience on earth. +A Boeing 747 is more fuel efficient than your car. +A hijacker once relinquished control of a flight for beer. +An engineer designed a plane with a detachable cabin to save passengers. +The dirtiest place on the plane isn't the bathroom. +Dead chickens are thrown into plane jets during safety tests. +There are thousands of planes over the United States at any moment. +Takeoff and landing are the most dangerous times during a flight. +The world's largest airplane weighs nearly 600 tons. +The safest seats on an aircraft are those at the back of the plane. +You are about 7 percent of the distance to space during flights. +Airplanes can trigger lightning. +Airplane blankets aren't always washed between passengers. +A Boeing 747 tank can hold 48,445 gallons of fuel. +Dimming the aircraft's lights serves a purpose beyond sleep. +Plane exhaust kills more people than plane crashes. +Plane doors can't actually open in mid-flight. +All pilots who fly internationally must know at least a bit of English. +Pointing a laser pointer at a plane is a serious crime. +The world's oldest airline will turn 100 in 2019. +Airplane bathrooms can be opened from the outside. +One airline has had no fatal accidents. +There are 140 miles of wiring inside a Boeing 747. +American Airlines saved $40,000 by cutting one ingredient from meals. +Airplane water is riddled with bacteria. +Some of the deadliest crashes happen when planes are securely on the ground. +Pilots and co-pilots eat different meals on a flight. +The most expensive First Class seat costs more than $30,000. +Your taste buds change in flight. +Traveling by plane is the safest way to get around. +The sound barrier was broken in 1947. +Sandra Bullock and about 2 million other Americans have aviophobia. +Long-haul flights have secret bedrooms and a bathroom for flight attendants. +The world's smallest plane weighs only 358.8 pounds. +The longest military plane is six stories tall. +Turbulence is the top cause of non-fatal plane injuries. +Living in an airplane flight path could harm your heart. +The fastest commercial plane flew at twice the speed of sound. +Airplane tires are inflated to about six times the PSI of car tires. +There are temperatures too cold to fly in. +The Highest Number of Languages in a Country +The Language Isolate Factor +Order of Adjectives in the English language +The Pirahã Language Facts +The Double-edged Sword +Where Clicking Sounds are Enough to Communicate +Turkeys Were Once Worshipped Like Gods +Paul Revere Never Actually Shouted, "The British Are Coming!" +The Olympics Used to Award Medals for Art. +One Time, 100 Imposters Claimed to Be Marie Antoinette's Dead Son +Napoleon Was Once Attacked By a Horde of Bunnies +Women Were Once Banned from Smoking in Public +The Government Literally Poisoned Alcohol During Prohibition +Captain Morgan Actually Existed +Using Forks Used to Be Seen as Sacrilegious +The Titanic's Owners Never Said the Ship Was "Unsinkable" +There Were More Than 600 Plots to Kill Fidel Castro +Cleopatra Was Not Egyptian +Pope Gregory IV Declared a War On Cats +Mary Actually Had a Little Lamb +Richard Nixon Was a Great Musician +Lyndon B. Johnson Gave Interviews From the Bathroom +Ketchup Was Sold in the 1830s as Medicine +President Abraham Lincoln is in the Wrestling Hall of Fame +July 4th Isn't the Real Independence Day +Abraham Lincoln Was Also a Licensed Bartender +John Adams Was the First President to Live In the White House +The First Face on the $1 Bill Was Not George Washington +Thomas Edison Didn't Invent the Light Bulb +And Betsy Ross Didn't Design and Sew the First American Flag +Cars Weren't Invented in the United States +George Washington Opened a Whiskey Distillery After His Presidency +Christians were the largest religious group in the world in 2015, making up nearly a third (31 percent) of Earth’s 7.3 billion people. Muslims were second, with 1.8 billion people, or 24 percent of the global population, followed by religious "nones" (16 percent), Hindus (15 percent) and Buddhists (7 percent). +Between 2015 and 2060, Muslims – the major religious group with the youngest population and the highest fertility – are projected to increase by 70 percent. The number of Christians is projected to rise by 34 percent. +Much of the worldwide growth of Islam and Christianity is expected to take place in sub-Saharan Africa. +Over the coming decades (2010 to 2050), about 40 million people are projected to switch into Christianity, while 106 million are projected to leave, with most joining the ranks of the religiously unaffiliated. +People have been painting for as long as 30,000 years! +The Earliest Known Oil Paintings Date Back to the 14th Century! +Artists Used to Store Their Paint in Animal Bladders! +World War II Brought Changes To The Paint Industry! +Acrylic Paint Only Became Commercially Available In The 50s! +Oil Paint Takes 2 Weeks To Dry! +Acrylic Paints Take Between 10 Minutes to 2 Hours To Dry! +It takes 570 Gallons of Paint to Repaint The White House! +Spray paint was invented in the 1949! +Acrylic Paint Has A Lot of Big Names Behind It! +Musicians Have Shorter Life Spans Than the General Population +In 2016, Mozart Sold More CDs than Beyoncé did +Singing in a Group Boosts Mood and Creates a Bond +Some People Feel Nothing Toward Music When They Listen to It +Listening to Music Enhances Physical Performance +Rod Stewart Hosted the Largest Ever Free Concert in the World +"Wanna Be" by The Spice Girls is the Catchiest Song of All Time +Finland Has the Most Metal Bands Per Capita +An Astronaut Released an Album with All Songs Recorded in Space +The British Navy Uses Britney Spears Songs to Scare Off Pirates +"Jingle Bells" Was Originally a Thanksgiving Song +Barry Manilow Didn't Write "I Write the Songs" +Music Affects Your Perception of the World +Music Helps Plants Grow Faster and Better +None of The Beatles Could Read or Write Music +The Most Expensive Musical Instrument Sold for $15.9 Million in the U.S. +Metallica is the First and Only Band to Have Played on All 7 Continents of the World +The "Happy Birthday" Song Brings A Bunch of Royalties +The earliest forms of poetry predate written language. They were sung or recited to help people remember genealogy, laws, and oral history. +The word "poetry" is from the Greek term poiesis, which means "making. +Poetry is one of the oldest forms of communication, dating back to prehistoric times with hunting poetry in Africa and ancient Egypt. +he oldest surviving epic poem is the Epic of Gilgamesh and dates from the 3rd millennium BC in Sumer (now Iraq). +he longest poem in the world is the Mahabharata. An Indian epic poem dating from the 4th century BC or earlier, the poem has about 1.8 million words. +Poet's Day is celebrated every August 21. +The skin of murderer George Cudmore was used to bind an 1852 edition of John Milton's Poetical Works. +The word "unfriend" first appeared in a 1275 medieval poem titled "Brut" by Layamon. Coincidentally, this is also the same poem in which the word "muggle" first appears. +German poet Gottlob Burmann so despised the letter "r" that he avoided using it in his poems and suppressed it in his speech during the last 17 years of his life. +Anne Bradstreet was the first woman to be recognized as an accomplished poet in the British American colonies. After she died, her husband collected her poems and published them as a book, making her the first woman to have a published book in America. +Art used to be an Olympic event +The Mona Lisa has her own mailbox in the Louvre because of all the love letters she receives +The colour wheel predates the United States +Artist Willard Wigan once inhaled his own work +In 2003 street artist Banksy stuck his own work to the wall in the Tate Modern Museum. +Fish are social +Fish do remember! +Fish are smart +Fish are excellent communicators +Fish are flexible +Fish can migrate extremely far distances +Fish have exceptional sensory capabilities +Fish are important to sustaining ecosystems +Fish can change colour +Fish as farm animals +Lions are the only cats that live in groups. +A group, or pride, can be up to 30 lions, depending on how much food and water is available. +Female lions are the main hunters. While they’re out looking for food, the males guard the pride’s territory and their young. +A lion’s roar can be heard up to eight kilometres away. +Lions scent mark their territory, using their wee, to create a border. +A house cat’s genome is 95.6 percent tiger, and they share many behaviors with their jungle ancestors, says Layla Morgan Wilde, a cat behavior expert and the founder of Cat Wisdom 101. These behaviors include scent marking by scratching, prey play, prey stalking, pouncing, chinning, and urine marking. +Cats are believed to be the only mammals who don’t taste sweetness. +Cats are nearsighted, but their peripheral vision and night vision are much better than that of humans. +Cats are supposed to have 18 toes (five toes on each front paw; four toes on each back paw). +Cats can jump up to six times their length. +Cats’ claws all curve downward, which means that they can’t climb down trees head-first. Instead, they have to back down the trunk. +Dogs can sniff at the same time as breathing. +Some dogs are incredible swimmers. +Dogs don’t sweat like we do +Your dog could be left or right-pawed +Dogs have 18 muscles controlling their ears +Dogs are about as intelligent as a two-year-old child +Mammals are warm-blooded animals. Their body temperature remains about the same their entire lives. +All mammals have hair, even dolphins and whales that live in the ocean. +Most mammals are born live, not from eggs. There are two mammals that hatch from eggs, including the spiny anteater and the duckbilled platypus. +Most mammals are helpless when they are babies. Adult mammals protect and help care for babies until they can survive on their own. The mammal most famous for caring for their babies is the mother kangaroo who carries their babies in their pouch until they are about one year old. Mammals like mice, only care for their young for about 1 month. Elephants care for their young for a long time, up to 10 years. How long do you think your parents will care for you? +All mammal babies drink milk from their mothers. +All mammals except ant eaters have teeth. +Bats are the only mammals that can fly. +Cheetahs are the fastest land animal and also mammals. The can run up to 70 mph. The fastest cheetah clocked in a zoo for the 100 meter dash is 5.95 seconds which is almost twice as fast as the fastest human recorded. To run this fast the cheetah has a stride length of nearly 22 feet. The long jump record for a human is just over 29 feet. The cheetah has the perfect body for speed and has enlarged lungs, nostrils and heart to be able to get enough oxygen to run fast. +Orca (Killer) whales are one of the fiercest hunters of all animals. They are known to attack whales and even polar bears. Orcas are also very smart and are featured in aquatic shows where they can show off their intelligence +Koalas sleep the longest of any animal. They sleep 22 hours a day. +Dolphin and whale babies do not sleep the first month of their life. +Snakes don't have eyelids. +Snakes have 5 forms of locomotion. +he definition of a ‘family’ used by the Office for National Statistics is “a married, civil partnered or cohabiting couple with or without children, or a lone parent with at least one child”. +By that definition, according to the ONS, there were 18.2 million families in the UK in 2012. +Of those, 12.2 million consisted of a married couple with or without children. +Until the late 17th century, ‘family’ included not only relatives but also the servants of a household. +You’re going to be taller in the morning +your heart beats about 100,000 times a day +Your highest blood flow is in your kidneys +You can produce enough saliva to fill two bathtubs a year +Healthy lungs are pink lungs +Dreaming in black and white +Your blood vessels could circle the globe +The average human adult has 2000-4000 taste buds +Your body has more than 600 muscles +In time your brain has a harder time with long-term memories +Solar System is 4.6 Billion Years Old +Sunlight Takes Around 8 Minutes To Reach Earth +Solar System 2 Light-years Across +Planets Are Made of Rock or Gas +Most Asteroids Found Between Mars and Jupiter +The Closer To The Sun, The Hotter The Planet +One Year Different On Each Planet +Comets We See Originate From Within Our Solar System +Nearest Star To Earth is Proxima Centauri +There Are 100 Billion Solar Systems In Milky Way Galaxy +The Sun accounts for 99.86% of the mass in the solar system. +Over one million Earth’s could fit inside the Sun. +One day the Sun will consume the Earth. +The energy created by the Sun’s core is nuclear fusion. +The Sun is almost a perfect sphere. +The Sun is travelling at 220 km per second. +The Sun will eventually be about the size of Earth. +It takes eight minutes for light reach Earth from the Sun. +Some of the earliest named doctors were women +Cataract surgery was possible in the sixth century BC +A ‘tree of life’ tackled scurvy +If you want a cure for everything, try theriac +General anaesthesia helped cancer patients at the beginning of the 19th century +A ‘leech craze’ hit 19th-century Europe +You can tell the temperature by counting a cricket’s chirps! +Sandstorms can swallow up entire cities. +Dirt mixed with wind can make dust storms called black blizzards. +A mudslide can carry rocks, trees, vehicles and entire buildings! +The coldest temperature ever officially recorded was -89.2°C. Brrrr! +Mild autumn weather often means bigger spiders in our homes. +A heatwave can make train tracks bend! +About 2,000 thunderstorms rain down on Earth every minute. +A 2003 heatwave turned grapes to raisins before they were picked from the vine! +Lightning often follows a volcanic eruption. +Raindrops can be the size of a housefly and fall at more than 30kmph. +Cape Farewell in Greenland is the windiest place on the planet. +Hurricanes can push more than 6m of water ashore. +In July 2001 the rainfall in Kerala, India, was blood red! +Blizzards can make snowflakes feel like pellets hitting your face. +A hurricane in Florida, USA, caused 900 captive pythons to escape. +Worms wriggle up from underground when a flood is coming. +A thunderstorm can produce 160kmph winds! +In Antarctica, snow can fall so hard you can’t see your hand in front of your face. +A whiteout or heavy snowfall that makes it difficult to see, can make you feel sick. +Within the next 2 decades, global temperatures are likely to rise 1.5 degrees Celsius +The last 7 years have been the warmest on record. +More than 1 million species are at risk of extinction by climate change in the next 50 years +Climate change is already happening, and it’s detrimental to human life, too. +Many leaders still aren’t taking it seriously. +Light is made up of energy. +Light travels in a straight line. Objects in its path cause light to bend or refract. +The speed of light is exactly 299 792 km per second. +This is the speed when light is travelling in a vacuum and not obstructed by the atmosphere. +Travelling at the speed of light, you could go around Earth 7.5 times in a second. +The First Computer Weighed More Than 27 Tons +About 90% of the World’s Currency Only Exists on Computers +The First Computer Mouse was Made of Wood +About 70% of Virus Engineers Work for Organized Crime Syndicates +The First Known Computer Programmer was a Woman +Some of the Biggest Computer Brands Started in Garages +People Blink Less When They Use Computers +Hackers Write About 6,000 New Viruses Each Month +More Than 80% of Daily Emails in the U.S. are Spam +MyDoom is the Most Expensive Computer Virus in History +The Parts for the Modern Computer Were First Invented in 1833 +The First Gigabyte Drive Cost $40,000 +Guinea Pigs can live up to 10 years! +At birth, a guinea pig can walk immediately after birth. +There are 3 basic types of domestic guinea pigs, which can be identified by their hair type. +Guinea Pigs are born with teeth that are constantly growing throughout their lifetime. +The guinea pig can open its eyes while in its mother’s womb 14 days before birth. +Although they are called “Guinea Pigs”, they are not closely related to pigs, but named for their short, robust body & piggish appearance. “Guinea” refers to Guyana, a country within their natural range. +Guinea pigs don’t need to sleep for long periods? Instead they prefer to take short naps throughout the day and night +Guinea pigs don’t have the same number of toes on their fore feet compared to their hind feet. They actually have 4 on their forefeet and 3 on their hind feet. +They are very social animals and love the company of others, even humans. +They need a supplement of vitamin c as they do not produce it themselves. +A dragon has zero to four legs, claws, scales, and possibly spikes. It may also have wings. +A dragon can look like a snake with wings or like lizards. +A dragon has a tail and a long neck. +A dragon has a wide mouth with big and dangerous teeth. +Sometimes they have horns and hair. +A dragon can usually fly. +A dragon can perhaps breathe fire (or other dangerous substances). +A dragon has special powers. +Some dragons live in caves. +Dragons hoard precious metals and jewels. +Hades wasn’t such a monster in Greek mythology +Ares was not that powerful and Artemis was a killer +Theseus Was a Manipulator +Medusa was not the only monster in Greek mythology +Zeus, the serial predator +The Olympians were not the first immortals in Greek mythology +Pandora had a daughter and Aphrodite went to war with her +We all know that Pegasus is a beautiful, winged horse. But did you know that this popular figure from Greek mythology was born when Perseus sliced off the head of the snake-haired Medusa? It’s an uncommon origin story to say the least. +A hybrid lion-eagle creature, the griffin was revered in mythology as the king of all creatures, and is found in European, Islamic, and Far Eastern traditions. One of the more unusual aspects of the species is that its claws were believed to cure the blind and have other medicinal powers. +Bees have 5 eyes +Bees are insects, so they have 6 legs. +Male bees in the hive are called drones +Bees fly about 20 mph +Female bees in the hive (except the queen) are called worker bees +Number of eggs laid by queen: 2,000 per day is the high +Losing its stinger will cause a bee to die +Bees have been here about 30 million years! +Bees carry pollen on their hind legs in a pollen basket or corbicula +An average beehive can hold around 50,000 bees +Foragers must collect nectar from about 2 million flowers to make 1 pound of honey +The average forager makes about 1/12 th of a teaspoon of honey in her lifetime +Average per capita honey consumption in the US is 1.3 pounds +Bees have 2 pairs of wings, one on each side of their body. \ No newline at end of file diff --git a/pyserver/files/utils/main.html b/pyserver/files/utils/main.html new file mode 100644 index 000000000..19c9ec536 --- /dev/null +++ b/pyserver/files/utils/main.html @@ -0,0 +1,49 @@ + + + Thoth + + + +
+ Main   +
\ No newline at end of file diff --git a/pyserver/main.py b/pyserver/main.py new file mode 100644 index 000000000..1afa9f8ad --- /dev/null +++ b/pyserver/main.py @@ -0,0 +1,11 @@ +from envReader import read, getValue +from postgres import postgres +from vector_search import initVectorSearch +from server import run_server +import pathlib + + +read(str(pathlib.Path(__file__).parent.resolve()) + '/files/config/.env.local') +_postgres = postgres() +initVectorSearch(_postgres) +run_server(int(getValue('PORT')), _postgres) \ No newline at end of file diff --git a/pyserver/postgres.py b/pyserver/postgres.py new file mode 100644 index 000000000..60275a3a1 --- /dev/null +++ b/pyserver/postgres.py @@ -0,0 +1,19 @@ +import psycopg2 +from envReader import getValue + +class postgres: + def __init__(self): + print('initializing postgres') + self.postgres_con = psycopg2.connect(host=getValue('PGHOST'), database=getValue('PGDATABASE'), user=getValue('PGUSER'), password=getValue('PGPASSWORD')) + self.cur = self.postgres_con.cursor() + + def getDocuments(self): + documents = [] + + query = 'SELECT * FROM documents' + self.cur.execute(query) + rows = self.cur.fetchall() + for row in rows: + documents.append(row[1]) + + return documents \ No newline at end of file diff --git a/pyserver/requirements.txt b/pyserver/requirements.txt new file mode 100644 index 000000000..1953d65b9 --- /dev/null +++ b/pyserver/requirements.txt @@ -0,0 +1,5 @@ +top2vec +flask +psycopg2 +#if there is issue installing psycopg2, use psycopg2-binary +#psycopg2-binary \ No newline at end of file diff --git a/pyserver/server.py b/pyserver/server.py new file mode 100644 index 000000000..bc0315825 --- /dev/null +++ b/pyserver/server.py @@ -0,0 +1,52 @@ +import json +import os +from flask import Flask, request +from vector_search import trainModel, getNumberOfTpocis, query, keywords_query +from utils import * + +def run_server(port, _postgres): + app = Flask('thoth') + + @app.route('/', methods=['GET', 'POST']) + def main_page(): + if request.method == 'GET': + html = read_file(os.getcwd() + '/files/utils/main.html') + html += '' + return html + elif request.method =='POST': + return json.dumps({"status": "not_supported"}) + + @app.route('/search', methods=['GET', 'POST']) + def search_page(): + if request.method == 'GET': + return json.dumps({"status": "not_supported"}) + elif request.method == 'POST': + _json = request.get_json() + isKeywords = _json['isKeywords'] + _query = _json['query'] + res = '' + if isKeywords == True or isKeywords == 'true': + res = keywords_query(_query) + else: + res = query(_query) + + return json.dumps({"status": 'ok', 'data': res}) + + @app.route('/update_search_model') + def update_search_model_page(): + if request.method == 'GET': + documents = _postgres.getDocuments() + try: + trainModel(documents=documents) + return json.dumps({"status": "ok"}) + except Exception as e: + return json.dumps({"status": "error", "message": str(e)}) + + @app.route('/number_of_topics') + def get_number_of_topics_page(): + if request.method == 'GET': + num = getNumberOfTpocis() + return json.dumps({"status": "ok", "count": num}) + + app.secret_key = 'KJDFSIJ34534(*%&#)kjfdskfd' + app.run(host='0.0.0.0', port=port) \ No newline at end of file diff --git a/pyserver/utils.py b/pyserver/utils.py new file mode 100644 index 000000000..c52b1dd0e --- /dev/null +++ b/pyserver/utils.py @@ -0,0 +1,4 @@ +def read_file(filename): + with open(filename, 'r') as infile: + text = infile.read() + return text \ No newline at end of file diff --git a/pyserver/vector_search.py b/pyserver/vector_search.py new file mode 100644 index 000000000..3a86a8ebc --- /dev/null +++ b/pyserver/vector_search.py @@ -0,0 +1,122 @@ +from genericpath import exists +import os +from envReader import getValue +from top2vec import Top2Vec +import pathlib +import time +import string + +model_path = str(pathlib.Path(__file__).parent.resolve()) + '/files/data/vector_search_model' +data_path = str(pathlib.Path(__file__).parent.resolve()) + '/files/training_data/vector_search_data.txt' +cache_path = str(pathlib.Path(__file__).parent.resolve()) + '/files/cache/vector_search_cache.txt' + +model = '' +prevDocuments = [] + +def initVectorSearch(_postgres): + if exists(model_path) and checkForCache(_postgres): + global model + model = Top2Vec.load(model_path) + else: + trainModel(documents=_postgres.getDocuments()) + +def checkForCache(_postgres) -> bool: + newDocuments = _postgres.getDocuments() + if not exists(cache_path): + writeCache(newDocuments) + return False + + oldDocuments = readCache() + if (oldDocuments == newDocuments): + writeCache(newDocuments) + return True + + writeCache(newDocuments) + return False + +def readCache(): + with open(cache_path) as f: + dD = f.read().splitlines() + + while("" in dD) : + dD.remove("") + + return dD + +def writeCache(documents): + if exists(cache_path): + os.remove(cache_path) + + f = open(cache_path, 'w') + for x in documents: + f.write(x + '\n') + f.close() + +def trainModel(documents, addDefault: bool = True): + print('Training model...') + start_time = time.time() + global model + global prevDocuments + + if (addDefault == False and documents == prevDocuments) or (addDefault == False and len(documents) == 0): + print('Model already trained with same documents.') + return + + if addDefault==True: + dD = [] + with open(data_path) as f: + dD = f.readlines() + + while("" in dD) : + dD.remove("") + + dD = list(dict.fromkeys(dD)) + + for x in dD: + documents.append(x) + + model = Top2Vec(documents=documents, + speed=getValue('VECTOR_SEARCH_SPEED'), + workers=int(getValue('VECTOR_SEARCH_WORKERS')), + embedding_model=getValue('VECTOR_SEARCH_EMBEDDING_MODEL'), + min_count=2) + + if exists(model_path): + os.remove(model_path) + + model.save(model_path) + prevDocuments = documents + print('Training model took:', time.time() - start_time, 'seconds.') + +def getNumberOfTpocis() -> int: + if (model == ''): + return 0 + + return model.get_num_topics() + +def query(query: str): + query = query.translate(str.maketrans('', '', string.punctuation)) + try: + documents, document_scores, document_ids = model.search_documents_by_keywords(keywords=query.split(' '), num_docs=2) + highestScore = -1 + _doc = '' + for doc, score, doc_id in zip(documents, document_scores, document_ids): + if score > highestScore: + highestScore = score + _doc = doc + + return _doc + except ValueError: + return '' + +def keywords_query(query: string): + query = query.translate(str.maketrans('', '', string.punctuation)) + try: + words, word_scores = model.similar_words(keywords=query.split(' '), keywords_neg=[], num_words=20) + res = [] + for word, score in zip(words, word_scores): + if (score >= 0.8): + res.append(word) + return res + except ValueError: + return [] \ No newline at end of file diff --git a/refactor-notes.md b/refactor-notes.md new file mode 100644 index 000000000..859d7917d --- /dev/null +++ b/refactor-notes.md @@ -0,0 +1,58 @@ +Refactoring + +- Revert all core components +- organise components into folders for easy visibility into ownership and core functionality +- better use of interfaces. All client completions cant still go direct against latitude + +- add dev flags for components not intended for production + +Development Flow + +- easiest version + - log in with latitude account, it gets an API key for you and populate syour local DB. Away you go. + - or can turn off latitude auth, and develop locally with a private API access key. + +Questions + +- if we have the client run against the latitude API directly, we reduce needing of duplicating endpoints in thothserver just to proxy through to latitude API. However that would require users developing to have a latitude account to run our interface for thoth on the client side. +- we could mirror the latitude API in the thoth API and have all client calls first go to thoth server. Might work well. +- Perhaps the real solution here is that all everything latitude related should go through a dedicated interface and no mirror any endpoints? +- how do we allow other plugin components running on the server to use the latitude API from server-side? Need the api key for the user stored in the DB. Or a token override provided. Maybe .env latitude api token overrides the user based on in the DB if it exists? + +NEEDS + +- way for plugins to also provide their own interfaces to compose them all together for client and server runtime usage? + +Modularization + +We will need to have a way for an individual app load the different pieces of itself into the main application. A package would need to provide code for the client, core, and the server. + +One proposed pattern, which reflect the data needs of each part of the application to function properly. + +{ +appName: 'myApp', +icon: ".../path/to/icon", +assets: "../path/to/assets", +fileType: "\*.agent", +core: { +components: Record, +inspectorControls: Record, +plugins: ThothPlugin[], +connectors: Recird +}, +client: { +windows: Record +events: Record +inspectorComponents: Record, +interface: ThothInterface, +menuBar: Record +// or maybe this, which would load in all the above itself ands expose a single component. +// Perhaps our client library (or client-core) gives a provider that lets people load these things into thoth from their individual app. +appRoot: MyAppThothRootComponent +} +server: { +interface: ThothInterface, +// Good for custom routes for the app +routes: Record +} +} diff --git a/seeders/default-seeds.js b/seeders/default-seeds.js new file mode 100644 index 000000000..554495b81 --- /dev/null +++ b/seeders/default-seeds.js @@ -0,0 +1,74 @@ +'use strict' + +module.exports = { + async up(queryInterface) { + /*const spells = await queryInterface.rawSelect( + 'spells', + { + where: {}, + plain: false, + }, + ['id'] + ) + + if (spells.length <= 0) { + await queryInterface.bulkInsert( + 'deployed_spells', + [ + { + id: 'a13b41e8-d2bd-4258-a259-32f426e98cdd', + name: 'default', + version: 1, + user_id: 0, + created_at: new Date(), + updated_at: new Date(), + graph: `{"id": "demo@0.1.0", "nodes": {"2": {"id": 2, "data": {"name": "DefaultInput", "text": "Input text here", "outputs": [], "socketKey": "cd6fcc4e-d26b-4be5-9663-6b8f874de913", "dataControls": {"name": {"expanded": true}, "useDefault": {"expanded": true}, "playtestToggle": {"expanded": true}}, "playtestToggle": {"outputs": [], "receivePlaytest": false}}, "name": "Universal Input", "inputs": {}, "outputs": {"output": {"connections": [{"data": {"pins": []}, "node": 4, "input": "input"}, {"data": {"pins": []}, "node": 6, "input": "outputs"}]}}, "position": [-797.200674002495, -505.3683553966747]}, "4": {"id": 4, "data": {"name": "DefaultOutput", "socketKey": "49cc040d-4368-4a00-88f8-012638d39eab", "dataControls": {"name": {"expanded": true}, "sendToPlaytest": {"expanded": true}}}, "name": "Output", "inputs": {"input": {"connections": [{"data": {"pins": []}, "node": 2, "output": "output"}]}, "trigger": {"connections": [{"data": {"pins": []}, "node": 5, "output": "trigger"}]}}, "outputs": {"trigger": {"connections": [{"data": {"pins": []}, "node": 6, "input": "trigger"}]}}, "position": [-386.66075298933436, -456.18278434527997]}, "5": {"id": 5, "data": {"name": "DefaultTrigger", "socketKey": "8626681b-98d6-4bc8-8814-ddcc13ba0ca3", "dataControls": {"name": {"expanded": true}}}, "name": "Module Trigger In", "inputs": {}, "outputs": {"trigger": {"connections": [{"data": {"pins": []}, "node": 4, "input": "trigger"}]}}, "position": [-796.4439288922381, -268.1050207361015]}, "6": {"id": 6, "data": {"inputs": [{"name": "Outputs", "taskType": "output", "socketKey": "outputs", "socketType": "anySocket", "connectionType": "input"}], "dataControls": {"inputs": {"expanded": true}}}, "name": "State Write", "inputs": {"outputs": {"connections": [{"data": {"pins": []}, "node": 2, "output": "output"}]}, "trigger": {"connections": [{"data": {"pins": []}, "node": 4, "output": "trigger"}]}}, "outputs": {}, "position": [5.466299235514526, -614.530153771113]}}}`, + }, + ], + {} + ) + } + + if (spells.length <= 0) { + await queryInterface.bulkInsert( + 'spells', + [ + { + id: '3599a8fa-4e3b-4e91-b329-43a907780ea7', + name: 'default', + user_id: 0, + game_state: '{}', + created_at: new Date(), + updated_at: new Date(), + graph: `{"id": "demo@0.1.0", "nodes": {"4": {"id": 4, "data": {"name": "DefaultOutput", "socketKey": "49cc040d-4368-4a00-88f8-012638d39eab", "dataControls": {"name": {"expanded": true}, "sendToPlaytest": {"expanded": true}}}, "name": "Output", "inputs": {"input": {"connections": [{"data": {"pins": []}, "node": 11, "output": "output"}]}, "trigger": {"connections": [{"data": {"pins": []}, "node": 5, "output": "trigger"}, {"data": {"pins": []}, "node": 11, "output": "trigger"}]}}, "outputs": {"trigger": {"connections": [{"data": {"pins": []}, "node": 6, "input": "trigger"}]}}, "position": [-472.3212364212005, -479.86350854927025]}, "5": {"id": 5, "data": {"name": "DefaultTrigger", "socketKey": "8626681b-98d6-4bc8-8814-ddcc13ba0ca3", "dataControls": {"name": {"expanded": true}}}, "name": "Module Trigger In", "inputs": {}, "outputs": {"trigger": {"connections": [{"data": {"pins": []}, "node": 4, "input": "trigger"}]}}, "position": [-975.2524599611861, -508.09238341659784]}, "6": {"id": 6, "data": {"inputs": [{"name": "Outputs", "taskType": "output", "socketKey": "outputs", "socketType": "anySocket", "connectionType": "input"}], "dataControls": {"inputs": {"expanded": true}}}, "name": "State Write", "inputs": {"outputs": {"connections": [{"data": {"pins": []}, "node": 11, "output": "output"}]}, "trigger": {"connections": [{"data": {"pins": []}, "node": 4, "output": "trigger"}]}}, "outputs": {}, "position": [1.5406570315050665, -591.8506571344452]}, "11": {"id": 11, "data": {"name": "TestInput", "text": "Input text here", "outputs": [{"name": "Playtest trigger", "taskType": "option", "socketKey": "trigger", "socketType": "triggerSocket"}], "socketKey": "cd6fcc4e-d26b-4be5-9663-6b8f874de913", "dataControls": {"name": {"expanded": true}, "useDefault": {"expanded": true}, "playtestToggle": {"expanded": true}}, "playtestToggle": {"outputs": [{"name": "Playtest trigger", "taskType": "option", "socketKey": "trigger", "socketType": "triggerSocket"}], "receivePlaytest": true}}, "name": "Universal Input", "inputs": {}, "outputs": {"output": {"connections": [{"data": {"pins": []}, "node": 4, "input": "input"}, {"data": {"pins": []}, "node": 6, "input": "outputs"}]}, "trigger": {"connections": [{"data": {"pins": []}, "node": 4, "input": "trigger"}]}}, "position": [-970.8854735683269, -772.3573697507977]}}}`, + }, + ], + {} + ) + await queryInterface.bulkInsert( + 'deployed_spells', + [ + { + id: 'a13b41e8-d2bd-4258-a259-32f426e98cdd', + name: 'default', + version: 1, + user_id: 0, + created_at: new Date(), + updated_at: new Date(), + graph: `{"id": "demo@0.1.0", "nodes": {"2": {"id": 2, "data": {"name": "DefaultInput", "text": "Input text here", "outputs": [], "socketKey": "cd6fcc4e-d26b-4be5-9663-6b8f874de913", "dataControls": {"name": {"expanded": true}, "useDefault": {"expanded": true}, "playtestToggle": {"expanded": true}}, "playtestToggle": {"outputs": [], "receivePlaytest": false}}, "name": "Universal Input", "inputs": {}, "outputs": {"output": {"connections": [{"data": {"pins": []}, "node": 4, "input": "input"}, {"data": {"pins": []}, "node": 6, "input": "outputs"}]}}, "position": [-797.200674002495, -505.3683553966747]}, "4": {"id": 4, "data": {"name": "DefaultOutput", "socketKey": "49cc040d-4368-4a00-88f8-012638d39eab", "dataControls": {"name": {"expanded": true}, "sendToPlaytest": {"expanded": true}}}, "name": "Output", "inputs": {"input": {"connections": [{"data": {"pins": []}, "node": 2, "output": "output"}]}, "trigger": {"connections": [{"data": {"pins": []}, "node": 5, "output": "trigger"}]}}, "outputs": {"trigger": {"connections": [{"data": {"pins": []}, "node": 6, "input": "trigger"}]}}, "position": [-386.66075298933436, -456.18278434527997]}, "5": {"id": 5, "data": {"name": "DefaultTrigger", "socketKey": "8626681b-98d6-4bc8-8814-ddcc13ba0ca3", "dataControls": {"name": {"expanded": true}}}, "name": "Module Trigger In", "inputs": {}, "outputs": {"trigger": {"connections": [{"data": {"pins": []}, "node": 4, "input": "trigger"}]}}, "position": [-796.4439288922381, -268.1050207361015]}, "6": {"id": 6, "data": {"inputs": [{"name": "Outputs", "taskType": "output", "socketKey": "outputs", "socketType": "anySocket", "connectionType": "input"}], "dataControls": {"inputs": {"expanded": true}}}, "name": "State Write", "inputs": {"outputs": {"connections": [{"data": {"pins": []}, "node": 2, "output": "output"}]}, "trigger": {"connections": [{"data": {"pins": []}, "node": 4, "output": "trigger"}]}}, "outputs": {}, "position": [5.466299235514526, -614.530153771113]}}}`, + }, + ], + {} + ) + }*/ + }, + + async down(queryInterface) { + /*await queryInterface.bulkDelete('spells', null, { + id: '3599a8fa-4e3b-4e91-b329-43a907780ea7', + })*/ + await queryInterface.bulkDelete('deployed_spells', null, { + id: 'a13b41e8-d2bd-4258-a259-32f426e98cdd', + }) + }, +} diff --git a/server/.env b/server/.env new file mode 100644 index 000000000..a382084e6 --- /dev/null +++ b/server/.env @@ -0,0 +1,33 @@ +USE_LATITUDE_API=false +# API_URL=https://api.latitude.io +# API_URL=https://latitude-api-staging.herokuapp.com +API_URL=https://localhost:8001 +EXTEND_ESLINT=true +PORT=8001 +AGENT_RUNNER_PORT=8003 +CREATOR_TOOLS_DB_URL= +PGUSER=thoth +PGHOST=localhost +PGPASSWORD=thoth_default_pw +PGDATABASE=thoth +PGPORT=5432 +PGSSL=false +REFRESH_DB=false +CORS_PORT=65534 +#This can be used if there aren't global credentials setup in the computer, just set the path to the json file +GOOGLE_APPLICATION_CREDENTIALS= +SPEECH_SERVER_PORT=65532 +ENABLE_SPEECH_SERVER=true +SEARCH_CORPUS_PORT=65531 +ENABLE_SEARCH_CORPUS=true +UBER_DUCK_KEY= +UBER_DUCK_SECRET_KEY= +OPENAI_API_KEY= +HF_API_KEY= +USSSL_SPEECH=true +FILE_SERVER_PORT=65530 +FILE_SERVER_URL=https://localhost:65530 +USESSL=true +WITAI_KEY= +RUN_PYTHON_SERVER=false +PYTHON_SERVER_URL=http://localhost:7777 \ No newline at end of file diff --git a/server/.eslintignore b/server/.eslintignore new file mode 100644 index 000000000..c2a81efbf --- /dev/null +++ b/server/.eslintignore @@ -0,0 +1,9 @@ +dist/ +node_modules/ +test/ +.eslintrc.js +jest.config.js +src/libs +hocs +coverage +__docs__/_build/ \ No newline at end of file diff --git a/server/.eslintrc.js b/server/.eslintrc.js new file mode 100644 index 000000000..40a0161c7 --- /dev/null +++ b/server/.eslintrc.js @@ -0,0 +1,86 @@ +module.exports = { + parser: '@typescript-eslint/parser', + env: { + node: true, + }, + extends: [ + 'standard', + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + "plugin:functional/external-recommended", + "plugin:functional/recommended", + ], + plugins: [ + 'import', + '@typescript-eslint', + 'functional', + 'no-autofix' + ], + parserOptions: { + "project": "./tsconfig.json", + ecmaVersion: 2018, + sourceType: 'module', + warnOnUnsupportedTypeScriptVersion: false + }, + ignorePatterns: ['.eslintrc.js'], + "extends": [ + ], + rules: { + '@typescript-eslint/no-floating-promises': 'error', + 'require-await': 'error', + 'comma-spacing': ["error", { "before": false, "after": true }], + 'import/no-namespace': 'error', + 'import/no-default-export': 'error', + 'no-invalid-this': 'error', + 'no-autofix/no-unreachable': 'error', + 'space-in-parens': 'error', + '@typescript-eslint/no-unused-vars': 'error', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-explicit-any': 'off', + 'space-before-function-paren': 'off', + 'eol-last': 'off', + 'operator-linebreak': 'off', + 'no-useless-escape': 'off', + 'no-var': 'error', + 'no-console': 'error', + 'no-func-assign': 'error', + 'no-const-assign': 'error', + 'no-class-assign': 'error', + 'no-param-reassign': 'error', + 'object-curly-spacing': ['error', 'always'], + 'array-bracket-spacing': ['error', 'never'], + 'linebreak-style': ['error', 'unix'], + 'no-trailing-spaces': 'error', + 'import/no-duplicates': 'error', + 'import/named': 'error', + 'import/default': 'error', + 'import/order': ['error', + { + groups: [ + ['builtin', 'external', 'internal', 'unknown'], + ['parent', 'sibling', 'index'], + ], + alphabetize: { order: 'asc', caseInsensitive: true }, + 'newlines-between': 'always', + } + ], + 'camelcase': ['error', { properties: 'never' }], + + // enforced functional rules + 'prefer-const': 'error', + 'functional/prefer-type-literal': 'error', + 'functional/no-loop-statement': 'error', + 'functional/no-let': 'error', + + // not enforced functional rules + 'functional/immutable-data': 'off', + 'functional/no-try-statement': 'off', + 'functional/no-throw-statement': 'off', + 'functional/no-expression-statement': 'off', + 'functional/prefer-readonly-type': 'off', + 'functional/functional-parameters': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + 'functional/no-conditional-statement': 'off', + 'functional/no-mixed-type': 'off', + }, +} diff --git a/server/.gitignore b/server/.gitignore new file mode 100644 index 000000000..f9b6a5d04 --- /dev/null +++ b/server/.gitignore @@ -0,0 +1,21 @@ +node_modules +build +yarn-error.log +dist +.eslintcache + +# macOS file system +.DS_Store + +# Coverage Directory +coverage + +#eslint +.eslintcache + +# Snyk +.dccache +google_credentials.json + +.env.local +.env.*.local \ No newline at end of file diff --git a/server/.prettierignore b/server/.prettierignore new file mode 100644 index 000000000..566bf7b7c --- /dev/null +++ b/server/.prettierignore @@ -0,0 +1,5 @@ +dist/ +node_modules/ +test/ +.eslintrc.js +__docs__/_build \ No newline at end of file diff --git a/server/.prettierrc.json b/server/.prettierrc.json new file mode 100644 index 000000000..454471eb4 --- /dev/null +++ b/server/.prettierrc.json @@ -0,0 +1,7 @@ +{ + "trailingComma": "es5", + "tabWidth": 2, + "semi": false, + "singleQuote": true, + "arrowParens": "avoid" +} diff --git a/server/@types/cors-anywhere.d.ts b/server/@types/cors-anywhere.d.ts new file mode 100644 index 000000000..76ed1bdbb --- /dev/null +++ b/server/@types/cors-anywhere.d.ts @@ -0,0 +1 @@ +declare module 'cors-anywhere' diff --git a/server/@types/gpt-3-encoder.d.ts b/server/@types/gpt-3-encoder.d.ts new file mode 100644 index 000000000..6261bcdde --- /dev/null +++ b/server/@types/gpt-3-encoder.d.ts @@ -0,0 +1 @@ +declare module 'gpt-3-encoder' diff --git a/server/@types/ot-json0.d.ts b/server/@types/ot-json0.d.ts new file mode 100644 index 000000000..0c554cfab --- /dev/null +++ b/server/@types/ot-json0.d.ts @@ -0,0 +1 @@ +declare module 'ot-json0' diff --git a/server/README.md b/server/README.md new file mode 100644 index 000000000..78c3b8434 --- /dev/null +++ b/server/README.md @@ -0,0 +1,8 @@ +# THOTH SERVER + +## Setup + +``` +yarn install +yarn run start +``` diff --git a/server/certs/cert.pem b/server/certs/cert.pem new file mode 100755 index 000000000..018b342da --- /dev/null +++ b/server/certs/cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDizCCAnOgAwIBAgIULwTo5maP4GdL/ji1pPspiwQ4KjswDQYJKoZIhvcNAQEL +BQAwUzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRQwEgYDVQQHDAtMb3MgQW5n +ZWxlczEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMB4XDTIwMDcy +OTEwMDE0M1oXDTIyMTEwMTEwMDE0M1owUzELMAkGA1UEBhMCVVMxCzAJBgNVBAgM +AkNBMRQwEgYDVQQHDAtMb3MgQW5nZWxlczEhMB8GA1UECgwYSW50ZXJuZXQgV2lk +Z2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuo9C +zT4SGB7D/c74HbR0kX5L/zwVGxDEBrXjyQrTW1D2KnQLBKW9C737dtBPY7knivd5 +zM5LGejE1ko9+uYz4c9w6UBshooQXx4C0t811//mUrbBj/pmRm2+YsrVE0oNs2zC +8cJCM4Hq+MnuXhp+B8MxFhjFJIZ6yb8nn3w2Lf4Z+DrErl8kVd8eyxAksaC3kjAr +V6MCadn6Ln/Fbwdx2en8RPMsqVv2oT3vhANvFLq48tbC1HxGJ0EOyAO2aC3pcUxV +lb8tQG7D4orSjvSW1HErb/HjoScqipGvB52rH/j5fsxEpGgyjiqGVlpZYDSA/s8F +/CWzfgKkjWIOXdUf9wIDAQABo1cwVTAfBgNVHSMEGDAWgBTPYFhcx9rw/BF+DRm0 +OS1BusbdrDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE8DAaBgNVHREEEzARgglsb2Nh +bGhvc3SHBH8AAAEwDQYJKoZIhvcNAQELBQADggEBALbcEhBd3KAgD22zG7bhKowh +krjAji11IhznalWK/30cHRMxT936uu/IMZ2WokKHlSy5XFmZQpGfc5vBEKKlAqmW +3SidSc6h1RULEjciznbh06sVV1lMjqtEObv+kjpAlImeRnx2zybOuCKlL9UDtTsG +ojGO0u8Aevx5vK5VCUZkYn+d5KhBqFKgoMSy8V+3HWvUBr/k0xWX55B3V31r+iD2 +tCOBzfMuA1+Mux8H9O+f746vf/PPVIjwlFGHxlZVGiWe63PGUnmq4d9gjOdQEWeZ +MjhGBegZcIc29tMIULmesXG9TZN0dDUguVB97ghuezNgiGq33rZl+e8K2MfPvA4= +-----END CERTIFICATE----- diff --git a/server/certs/key.pem b/server/certs/key.pem new file mode 100755 index 000000000..d33ace9cf --- /dev/null +++ b/server/certs/key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAuo9CzT4SGB7D/c74HbR0kX5L/zwVGxDEBrXjyQrTW1D2KnQL +BKW9C737dtBPY7knivd5zM5LGejE1ko9+uYz4c9w6UBshooQXx4C0t811//mUrbB +j/pmRm2+YsrVE0oNs2zC8cJCM4Hq+MnuXhp+B8MxFhjFJIZ6yb8nn3w2Lf4Z+DrE +rl8kVd8eyxAksaC3kjArV6MCadn6Ln/Fbwdx2en8RPMsqVv2oT3vhANvFLq48tbC +1HxGJ0EOyAO2aC3pcUxVlb8tQG7D4orSjvSW1HErb/HjoScqipGvB52rH/j5fsxE +pGgyjiqGVlpZYDSA/s8F/CWzfgKkjWIOXdUf9wIDAQABAoIBAEIIhU+aYdMxyJOk +14PEJOJ+vq2X+ax70bbCWN8HOup+jLNYIbJCa9ilJUXX09HrboissesBNen0zv8+ +hhOxubl6sG+PQxqX8dWJDNzQ7wEGbeLnFzo8GklhfNsBCkxqkNDqdVIXPVF38dCf +wQSEAgoDV/OHTvhvtTSFuaOk1pSOWlsg5av6hH+czCjmN9kZWXHQ7a1bXMfCOzce +WrsVDIIFpJZyLLd1PkMBkS/kXfcK04VDISirVpLrDJMaY3VCXzxQY/FzjxcwxAPc +tXy4lW720oAWhR76oCFPqW+e86S0cL6//5jr/8e3dsFbYnax8jqZZU3ZExdSXnfS +JfGVOBECgYEA6ainNVp7a2cbZyGspEaDRX+38qgFJy5KjGyD94bMYRtW7OefcLYD +fuIfbr6Y4Xa8qHq7aIJancf7GT0qM1PjeEQ7qhI1b4HsEgFz6pjL2RwuzsQ5KGlQ +3JNGUAz27MRnzidkUo/50KYMq5m0NXNSd8/Re5GHlPYvLt5IMY28iRkCgYEAzGW+ +qEUtNItiBN9LgFZxTS1h0CaVUviPplXCWmDgsmXMyDnh4s0P/KvdBlsUQQMsBc64 +dJPVc7pg/d9wuEmKel9WevUi28O+PgoXRwf7OjAP7w1VgVF3Hl5qj7BBBc7WEpMi +nTySv8JcLhfWUGYvZgAlqEQTec3gfAFmaQQbQ48CgYBer+fCqT4mkgv6yRyrHaAI +w+8JOKmN7SZsrXT1E/0yxN9+9YYZKMlV29CdEkPl6jYdmE7l1R1fnzDUU4MMdcxS +amQ7UVGyNFY0Hb6ZrP2+p7sYM1BuXe9U06HEwtw1qonecvwmsQ2tTf0IdSsgFfGv +d9oOVzU4WmNYfN+IpUVn0QKBgQDJcnGhCGTQR5s4cBbKiueqB9NCQfSjzKRPbHBb +gOWUDa7xm9KcJDzga0YwMG3a0VR++Mlk5BrYr1VOgPxoNNrNVs816goMDHSgUnO0 +pxIcvCfIFB00keTTwnxF15GONtdXgTn5PCzp35XYO9gWb0/BuN1kZIvJXXYk4YBc +ehag0wKBgD+jpySpsAHcxFHloLrfgBr7FpebJh31VijL3qjCqHyeO9m7qsta+hpu +NgWOiNXgpqzHEZm9/j4DjcI7y6l0kOUi1UcYGBk0dngAjUrcxVbaILb7qfNx0BPX +Y9ARanhm32LcIIquiI3DuRDbevJ9PDYZNU6KEia+0ffWvHiCk5kL +-----END RSA PRIVATE KEY----- diff --git a/server/data/classifier/classifier.json b/server/data/classifier/classifier.json new file mode 100644 index 000000000..86537be1a --- /dev/null +++ b/server/data/classifier/classifier.json @@ -0,0 +1 @@ +{"classifier":{"classFeatures":{"software":{"92":2,"93":2,"94":2,"95":2,"96":2,"97":2},"hardware":{"14":2,"21":2,"98":3,"99":2,"100":2,"101":2,"102":2,"103":2,"104":2,"105":3,"106":2,"107":2,"167":3,"489":2,"651":2,"733":2,"972":2,"1553":2},"universe":{"108":3,"109":2,"110":2,"111":2,"112":2},"botanology":{"0":3,"13":2,"19":2,"22":2,"32":2,"46":2,"48":2,"66":3,"82":2,"91":2,"92":2,"108":2,"110":4,"113":6,"114":3,"115":4,"116":3,"117":2,"118":3,"126":2,"137":2,"149":2,"159":2,"160":4,"167":2,"187":3,"192":2,"194":2,"202":2,"215":4,"257":2,"258":5,"272":2,"274":2,"280":2,"296":2,"297":2,"309":3,"315":6,"320":2,"322":3,"327":3,"330":4,"334":2,"335":2,"340":2,"342":2,"353":2,"369":2,"377":3,"383":2,"396":2,"425":2,"439":3,"451":2,"482":3,"483":2,"484":2,"485":3,"486":2,"487":2,"488":3,"489":3,"490":2,"491":2,"492":2,"493":3,"494":2,"495":2,"496":2,"497":2,"498":2,"499":3,"500":2,"501":4,"502":3,"503":2,"504":2,"505":2,"506":2,"507":2,"508":2,"509":3,"510":2,"511":3,"512":2,"513":2,"514":2,"515":2,"516":2,"517":2,"518":2,"519":2,"520":4,"521":2,"522":2,"523":2,"524":2,"525":2,"526":4,"527":2,"528":3,"529":4,"530":2,"531":2,"532":2,"533":2,"534":2,"535":2,"536":2,"537":2,"538":2,"539":2,"540":2,"541":2,"542":2,"543":2,"544":2,"545":2,"546":2,"547":2,"548":3,"549":2,"550":2,"551":2,"552":2,"553":2,"554":2,"555":2,"556":2,"557":2,"558":2,"559":2,"560":2,"561":2,"562":2,"563":2,"564":2,"565":2,"566":2,"567":2,"568":2,"569":2,"570":2,"571":2,"572":2,"573":2,"574":2,"575":2,"576":2,"577":2,"578":2,"579":2,"580":2,"581":2,"582":2,"583":2,"584":2,"585":2,"586":2,"587":2,"588":2,"589":2,"590":2,"591":2,"592":2,"593":2,"594":2,"595":2,"596":2,"597":2,"598":2,"599":2,"600":2,"601":2,"602":2,"603":2,"604":2,"605":2},"geography":{"8":3,"22":2,"25":2,"39":2,"45":2,"46":2,"65":2,"67":2,"79":2,"102":2,"111":3,"113":2,"114":2,"117":2,"118":3,"119":3,"120":3,"121":6,"122":3,"123":2,"124":3,"125":5,"126":9,"127":3,"128":2,"129":5,"130":4,"131":2,"132":2,"133":2,"134":3,"135":2,"136":2,"137":3,"138":2,"156":5,"157":3,"158":3,"159":3,"160":5,"161":2,"162":2,"163":2,"164":2,"165":3,"166":2,"201":2,"209":2,"228":2,"289":2,"291":2,"296":3,"305":2,"309":3,"315":3,"317":2,"330":2,"334":2,"361":3,"362":2,"363":2,"364":2,"365":2,"366":5,"367":2,"368":2,"369":2,"370":2,"371":2,"372":2,"373":2,"374":2,"375":2,"376":2,"377":3,"378":3,"379":2,"380":2,"381":2,"382":2,"383":2,"384":2,"385":3,"386":3,"387":3,"388":2,"389":2,"390":2,"391":2,"392":6,"393":3,"394":2,"395":2,"396":2,"397":2,"398":2,"399":2,"400":3,"401":2,"402":2,"403":2,"404":2,"405":3,"406":2,"407":2,"408":2,"409":2,"410":2,"411":3,"412":2,"413":2,"414":2,"415":3,"416":2,"417":2,"418":2,"419":2,"420":2,"421":4,"422":2,"423":3,"424":2,"425":3,"426":2,"427":2,"428":2,"429":2,"430":2,"431":3,"432":2,"433":2,"434":2,"435":2,"436":2,"437":2,"438":2,"439":5,"440":3,"441":2,"442":3,"443":2,"444":2,"445":2,"446":2,"447":2,"448":2,"449":2,"450":2,"451":3,"452":2,"453":2,"454":2,"455":2,"456":2,"457":2,"458":2,"459":2,"460":2,"461":2,"462":2,"463":2,"464":2,"465":3,"466":2,"467":2,"468":2,"469":2,"470":2,"471":2,"472":2,"473":2,"474":2,"475":2,"476":2,"477":2,"478":2,"479":2,"480":2,"481":2,"483":3,"586":2,"679":2,"680":2,"681":2,"682":2,"683":2,"684":2,"685":2,"686":2,"687":2,"688":2},"animals":{"0":3,"1":2,"3":2,"7":3,"8":2,"10":3,"15":2,"16":4,"24":2,"27":2,"30":2,"36":3,"39":2,"40":2,"101":3,"113":2,"114":2,"115":2,"125":2,"127":7,"137":6,"139":11,"140":2,"141":5,"142":2,"143":3,"144":12,"145":2,"146":6,"147":3,"148":3,"149":4,"150":12,"154":2,"161":6,"164":2,"166":3,"167":3,"175":2,"181":2,"184":2,"186":3,"187":4,"192":2,"201":4,"202":5,"205":2,"208":2,"209":4,"213":7,"225":3,"226":2,"229":2,"234":3,"240":2,"242":2,"257":2,"258":4,"266":2,"274":2,"277":2,"289":2,"292":2,"296":2,"297":5,"300":2,"309":2,"312":2,"314":2,"315":3,"316":2,"317":2,"318":2,"319":2,"322":3,"323":4,"330":2,"338":4,"339":2,"340":2,"341":2,"342":3,"344":3,"345":2,"346":2,"347":2,"348":4,"355":3,"357":3,"358":3,"365":2,"372":2,"377":5,"381":2,"384":3,"396":3,"417":2,"425":3,"434":3,"436":2,"439":2,"448":2,"449":2,"456":2,"459":2,"469":2,"470":2,"478":2,"481":2,"488":2,"489":3,"491":2,"508":2,"511":3,"526":2,"527":2,"528":2,"534":2,"539":2,"566":3,"573":2,"583":2,"607":3,"611":2,"612":2,"624":3,"641":3,"642":2,"650":2,"657":2,"667":2,"670":2,"673":2,"689":2,"698":3,"703":2,"711":3,"722":2,"734":4,"758":2,"759":6,"762":2,"780":2,"794":2,"817":2,"822":2,"824":2,"846":2,"879":2,"896":2,"904":2,"908":2,"909":2,"913":2,"914":3,"922":2,"971":2,"976":2,"982":2,"986":4,"990":2,"1020":2,"1025":2,"1033":2,"1037":2,"1046":2,"1062":2,"1073":2,"1089":8,"1126":3,"1160":2,"1212":2,"1216":2,"1223":2,"1268":2,"1276":2,"1278":2,"1287":3,"1288":3,"1289":2,"1290":2,"1291":2,"1292":4,"1293":2,"1294":2,"1295":2,"1296":2,"1297":6,"1298":3,"1299":3,"1300":3,"1301":2,"1302":2,"1303":2,"1304":3,"1305":2,"1306":2,"1307":2,"1308":3,"1309":2,"1310":2,"1311":2,"1312":2,"1313":2,"1314":2,"1315":2,"1316":2,"1317":2,"1318":2,"1319":2,"1320":2,"1321":2,"1322":2,"1323":2,"1324":2,"1325":2,"1326":2,"1327":2,"1328":2,"1329":2,"1330":2,"1331":3,"1332":3,"1333":3,"1334":2,"1335":2,"1336":2,"1337":2,"1338":2,"1339":3,"1340":2,"1341":7,"1342":2,"1343":2,"1344":2,"1345":2,"1346":2,"1347":2,"1348":2,"1349":3,"1350":2,"1351":2,"1352":2,"1353":2,"1354":3,"1355":3,"1356":2,"1357":2,"1358":2,"1359":2,"1360":2,"1361":2,"1362":2,"1363":2,"1364":4,"1365":2,"1366":2,"1367":2,"1368":2,"1369":2,"1370":2,"1371":2,"1372":2,"1373":3,"1374":2,"1375":2,"1376":2,"1377":3,"1378":2,"1379":2,"1380":2,"1381":2,"1382":2,"1383":2,"1384":2,"1385":2,"1386":2,"1387":2,"1388":2,"1389":2,"1390":2,"1391":2,"1392":2,"1393":2,"1394":2,"1395":2,"1396":2,"1397":2,"1554":9,"1555":9,"1556":2,"1557":2,"1558":2,"1559":2,"1560":3,"1561":3,"1562":2,"1563":2,"1564":2,"1565":3,"1566":2,"1567":2,"1568":2,"1569":2,"1570":2,"1571":2,"1572":2,"1573":2,"1574":2,"1575":3,"1576":2,"1577":2,"1578":2,"1581":3,"1584":2,"1625":3,"1626":2,"1627":3,"1628":2,"1629":2,"1630":2,"1631":2,"1632":2,"1633":2,"1634":2,"1635":2,"1636":3,"1637":2,"1638":3,"1639":2,"1640":2,"1641":2},"biology":{"39":3,"43":2,"51":2,"58":2,"79":2,"90":2,"102":2,"126":2,"137":2,"140":2,"141":2,"142":2,"148":2,"151":2,"152":2,"153":2,"154":5,"155":2,"160":2,"161":2,"169":4,"176":3,"179":4,"180":2,"181":2,"182":2,"183":2,"184":3,"185":2,"186":5,"187":2,"188":2,"189":2,"190":2,"191":2,"192":4,"193":2,"194":2,"195":2,"196":2,"197":2,"198":3,"199":2,"200":2,"201":8,"202":8,"203":3,"204":3,"205":2,"206":2,"207":3,"208":2,"209":4,"210":2,"211":2,"212":2,"213":3,"214":3,"215":2,"216":3,"217":3,"218":2,"219":2,"220":2,"221":2,"222":2,"223":2,"224":2,"225":2,"226":2,"227":2,"228":2,"229":2,"230":2,"231":2,"232":2,"233":2,"234":2,"240":3,"241":3,"242":2,"243":2,"244":3,"245":2,"246":2,"253":2,"258":2,"266":2,"270":2,"271":2,"272":2,"273":2,"274":2,"275":2,"276":2,"277":2,"278":2,"279":2,"280":2,"281":2,"282":2,"283":2,"284":2,"285":2,"286":2,"287":2,"288":2,"289":3,"290":2,"291":2,"292":5,"293":2,"294":3,"295":2,"296":2,"297":3,"298":2,"299":2,"300":2,"301":2,"302":2,"303":2,"304":2,"305":2,"306":2,"307":2,"308":2,"309":2,"310":2,"311":2,"312":2,"313":2,"315":2,"317":2,"320":2,"321":2,"322":2,"323":3,"324":2,"325":2,"326":2,"327":2,"328":2,"329":2,"330":2,"331":2,"332":2,"333":2,"334":2,"335":2,"336":2,"337":2,"342":2,"343":2,"344":3,"348":2,"349":2,"350":2,"351":2,"352":2,"353":2,"354":2,"355":2,"356":2,"357":2,"358":2,"359":2,"360":2,"369":2,"377":2,"383":2,"425":2,"436":2,"449":2,"489":2,"511":2,"609":2,"660":2,"661":2,"662":2,"663":2,"664":2,"684":2,"734":3,"819":2,"836":2,"938":2,"1011":2,"1301":2,"1347":2,"1385":2,"1414":2,"1415":2,"1416":2,"1417":2,"1418":2,"1419":2,"1420":2,"1421":2,"1422":2,"1423":2,"1424":2,"1425":2,"1426":2,"1427":2},"history":{"0":2,"1":2,"7":2,"16":2,"20":2,"39":3,"58":2,"64":2,"69":2,"70":2,"73":2,"74":2,"75":2,"78":2,"84":2,"87":2,"92":2,"105":2,"110":2,"113":2,"120":2,"137":4,"139":2,"151":3,"154":2,"157":2,"158":2,"160":2,"161":3,"167":10,"168":2,"169":3,"170":2,"171":2,"172":2,"173":2,"180":2,"184":2,"186":2,"201":2,"204":2,"209":5,"213":2,"225":2,"228":4,"234":2,"235":3,"236":2,"237":2,"238":2,"239":2,"240":2,"247":2,"248":2,"249":2,"250":2,"251":2,"252":4,"253":2,"254":2,"255":2,"256":2,"257":2,"258":3,"259":2,"260":2,"261":2,"262":2,"263":2,"264":2,"265":2,"266":2,"267":2,"268":2,"269":2,"286":2,"289":2,"294":2,"297":2,"299":2,"315":3,"330":5,"335":2,"342":2,"364":2,"371":2,"377":3,"382":2,"396":2,"403":2,"408":2,"413":3,"439":2,"489":4,"490":3,"499":2,"524":2,"533":2,"536":3,"537":2,"554":2,"578":2,"605":2,"607":3,"611":4,"618":2,"620":7,"635":2,"636":2,"641":2,"642":2,"643":2,"665":2,"668":2,"670":3,"671":2,"676":2,"677":2,"678":4,"679":2,"711":3,"714":2,"716":2,"724":2,"730":2,"731":2,"734":3,"739":5,"761":3,"785":2,"786":2,"787":3,"788":2,"798":2,"810":2,"811":2,"817":2,"824":2,"825":2,"851":2,"864":2,"866":4,"868":2,"873":2,"876":2,"879":3,"880":3,"885":2,"886":2,"887":2,"888":2,"892":2,"893":2,"894":2,"895":2,"896":2,"897":2,"898":2,"899":2,"900":2,"901":2,"902":2,"924":3,"925":2,"926":2,"927":2,"935":2,"936":2,"937":4,"943":2,"959":2,"960":2,"961":2,"966":2,"990":2,"993":2,"999":2,"1000":2,"1012":2,"1047":2,"1048":2,"1049":2,"1050":2,"1051":2,"1052":2,"1053":2,"1054":2,"1055":2,"1056":2,"1057":2,"1058":3,"1059":2,"1060":2,"1061":2,"1062":2,"1063":2,"1064":2,"1065":2,"1066":2,"1067":2,"1068":2,"1069":2,"1070":2,"1071":2,"1072":2,"1073":2,"1074":2,"1075":2,"1076":2,"1077":2,"1078":2,"1079":2,"1080":2,"1081":2,"1082":2,"1083":2,"1084":2,"1085":2,"1086":2,"1087":2,"1088":2,"1089":2,"1090":2,"1091":2,"1092":2,"1093":2,"1094":2,"1095":2,"1096":2,"1097":2,"1098":2,"1099":2,"1100":4,"1101":3,"1102":3,"1103":2,"1104":2,"1105":2,"1106":2,"1107":2,"1108":2,"1109":2,"1110":2,"1111":2,"1112":2,"1113":2,"1114":3,"1115":3,"1116":2,"1117":2,"1118":3,"1119":2,"1120":2,"1121":2,"1122":2,"1123":2,"1235":2,"1350":2,"1368":2,"1398":3,"1399":4,"1400":2,"1401":3,"1402":2,"1403":2,"1404":2,"1405":3,"1406":3,"1407":2,"1408":2,"1409":2,"1410":2,"1411":2,"1412":2,"1413":2,"1445":2,"1446":2,"1447":2,"1448":2,"1449":2,"1450":2,"1451":2,"1452":2,"1453":2,"1454":2,"1455":2,"1456":2,"1457":2,"1458":2,"1459":2,"1460":2,"1461":2,"1462":2},"school":{"152":2,"174":2,"175":2,"176":2,"177":2,"178":2},"maths":{"2":2,"11":2,"24":2,"39":2,"42":2,"66":2,"137":2,"151":2,"209":4,"252":2,"258":2,"306":2,"312":2,"320":2,"335":2,"417":2,"425":3,"440":5,"461":2,"589":3,"606":2,"607":2,"608":2,"609":2,"610":2,"611":2,"612":2,"613":2,"614":2,"615":2,"616":3,"617":2,"618":2,"619":2,"620":2,"621":3,"622":2,"623":2,"624":6,"625":4,"626":3,"627":2,"628":3,"629":2,"630":2,"631":2,"632":2,"633":2,"634":2,"635":2,"636":2,"637":2,"638":2,"639":2,"640":2,"644":2,"645":2,"646":2,"647":2,"648":2},"physics":{"13":2,"18":2,"21":2,"24":2,"29":2,"31":2,"39":2,"46":2,"47":2,"49":2,"50":2,"52":2,"53":2,"56":2,"58":2,"61":2,"62":2,"85":2,"103":2,"126":4,"137":4,"148":2,"163":2,"164":3,"165":2,"166":2,"167":3,"168":3,"170":2,"184":2,"194":2,"207":2,"208":2,"209":3,"230":2,"257":2,"258":2,"261":3,"280":2,"287":2,"296":4,"314":3,"315":2,"316":2,"330":6,"337":2,"372":2,"373":2,"377":2,"417":2,"421":2,"425":2,"448":3,"489":6,"492":2,"505":2,"511":2,"577":2,"599":3,"642":4,"649":8,"650":3,"651":3,"652":3,"653":7,"654":2,"655":2,"656":2,"657":2,"658":2,"659":5,"660":3,"662":3,"665":11,"666":2,"667":6,"668":2,"669":6,"670":7,"671":2,"672":2,"673":3,"684":10,"689":2,"690":2,"691":2,"692":3,"693":2,"694":2,"695":2,"696":2,"697":2,"698":2,"699":2,"700":3,"701":2,"702":5,"703":2,"704":2,"705":2,"706":2,"707":2,"708":2,"709":2,"710":3,"711":2,"712":3,"713":2,"714":2,"715":2,"716":2,"717":2,"718":2,"719":2,"720":2,"721":2,"722":2,"723":2,"724":2,"725":2,"726":2,"727":2,"728":2,"729":2,"730":2,"731":2,"732":2,"733":2,"734":4,"735":2,"736":2,"737":2,"738":3,"739":2,"740":3,"741":2,"742":2,"743":2,"744":3,"745":2,"746":10,"747":2,"748":3,"749":2,"750":2,"751":2,"752":2,"753":2,"754":2,"755":2,"756":2,"757":2,"758":2,"759":2,"760":2,"761":2,"762":2,"763":2,"768":2,"1025":2,"1029":2,"1414":2,"1443":2,"1485":2,"1536":2,"1537":2,"1538":2,"1539":2,"1540":2,"1541":2,"1542":2},"glossology":{"274":2,"335":2,"589":2,"599":2,"612":2,"671":2,"674":2,"675":2},"astronomy":{"33":2,"35":2,"37":2,"38":2,"39":2,"47":2,"58":2,"111":3,"115":2,"126":8,"133":2,"134":2,"163":3,"207":3,"209":4,"231":2,"290":5,"296":3,"297":2,"330":2,"344":2,"365":2,"373":3,"377":7,"380":2,"396":3,"461":2,"488":2,"492":2,"520":2,"540":2,"546":2,"578":2,"607":3,"642":2,"652":2,"660":2,"665":5,"666":3,"667":3,"669":2,"670":2,"711":3,"713":2,"734":2,"744":3,"747":2,"754":2,"758":3,"764":7,"765":7,"766":2,"767":2,"769":2,"770":2,"771":2,"772":2,"773":2,"774":2,"775":2,"776":3,"777":2,"778":3,"779":2,"780":2,"781":2,"782":2,"783":2,"784":11,"787":2,"1163":3,"1204":2,"1307":2,"1383":2,"1428":2,"1429":2,"1430":2,"1431":2,"1432":2,"1433":2,"1434":2,"1435":2,"1436":2,"1437":2,"1438":2,"1439":2,"1440":2,"1441":2,"1442":2,"1443":2,"1444":2},"cars":{"16":2,"26":2,"28":2,"38":2,"63":2,"98":2,"154":2,"165":2,"207":2,"252":2,"289":3,"290":2,"297":2,"315":2,"320":2,"330":2,"334":2,"342":2,"346":2,"377":2,"396":2,"467":2,"469":2,"489":4,"511":3,"634":2,"642":4,"647":2,"711":3,"749":2,"787":10,"788":2,"789":3,"790":2,"791":2,"792":2,"793":2,"794":2,"795":2,"796":2,"797":2,"798":2,"799":2,"800":2,"801":2,"802":2,"803":2,"804":2,"805":2,"806":2,"807":2,"808":2,"809":2,"810":2,"815":2,"816":2,"817":2,"818":2,"819":2,"820":2,"821":2,"822":2},"records":{"22":2,"315":2,"534":2,"667":2,"787":2,"812":2,"813":2,"814":2},"houses":{"101":2,"142":2,"161":2,"207":2,"230":4,"280":2,"282":2,"291":2,"330":2,"353":3,"364":2,"371":2,"382":2,"393":2,"405":5,"439":3,"501":2,"526":2,"607":2,"746":2,"748":2,"772":2,"823":2,"824":3,"825":2,"826":2,"827":3,"828":2,"829":2,"830":2,"831":2,"832":2,"833":2,"834":2,"835":2,"836":2,"837":2,"838":3,"839":2,"840":2,"841":2,"842":2,"843":2,"844":4,"845":2,"846":2,"847":2,"848":3,"849":2,"850":2,"851":2,"852":2,"853":3,"854":2,"855":2,"856":2,"857":2,"858":2,"859":2,"860":2,"861":2,"862":2,"863":2,"864":2},"boats":{"7":2,"125":2,"130":2,"134":2,"137":2,"202":2,"225":4,"258":3,"276":2,"330":4,"400":2,"454":2,"491":2,"500":2,"635":3,"661":3,"669":2,"711":2,"807":2,"815":2,"816":2,"865":2,"866":10,"867":3,"868":3,"869":2,"870":2,"871":2,"872":2,"873":3,"874":2,"875":2,"876":2,"877":2,"878":2,"879":4,"880":2,"881":2,"882":2,"883":2,"884":2,"889":2,"890":2,"891":2,"892":2,"903":2,"904":2,"905":2,"906":2,"907":2,"908":2,"909":4,"910":3,"911":3,"912":2,"913":2,"914":2,"915":2,"916":2,"917":2,"918":2,"919":2},"programming":{"27":2,"30":2,"35":2,"59":2,"71":2,"77":2,"96":2,"102":2,"103":2,"105":9,"127":2,"137":2,"151":2,"154":2,"167":5,"176":2,"196":4,"197":2,"207":2,"252":2,"315":2,"330":3,"334":2,"344":2,"350":2,"396":2,"439":2,"446":7,"489":2,"535":2,"543":3,"611":2,"633":2,"683":2,"713":2,"759":2,"761":2,"791":2,"808":2,"814":2,"920":2,"921":2,"922":2,"923":2,"924":2,"928":2,"929":2,"930":2,"931":2,"932":2,"933":2,"934":2,"938":2,"998":2,"1208":2,"1227":2,"1263":2,"1543":2,"1544":2,"1545":2,"1546":2,"1547":2,"1548":2,"1549":2,"1550":2,"1551":2,"1552":2},"airplanes":{"16":2,"21":2,"23":2,"44":2,"54":2,"55":2,"58":2,"60":4,"92":2,"93":2,"126":2,"134":2,"148":2,"151":2,"160":2,"161":2,"165":2,"167":2,"179":2,"195":2,"202":2,"209":3,"214":2,"242":2,"266":2,"309":2,"314":2,"315":3,"316":2,"323":2,"341":2,"347":2,"364":2,"371":2,"381":2,"421":2,"434":4,"436":2,"448":2,"454":2,"456":2,"470":2,"481":2,"489":3,"492":2,"505":2,"510":2,"535":2,"554":2,"556":2,"568":2,"583":2,"611":3,"631":2,"632":2,"635":3,"642":2,"650":2,"651":3,"665":2,"668":2,"669":2,"670":2,"679":2,"684":2,"695":2,"711":2,"712":2,"733":2,"734":3,"772":2,"780":2,"787":3,"814":3,"828":2,"830":2,"839":4,"848":2,"873":2,"882":2,"914":2,"935":2,"939":16,"940":2,"941":2,"942":2,"943":10,"944":2,"945":3,"946":2,"947":2,"948":2,"949":4,"950":2,"951":2,"952":9,"953":2,"954":2,"955":2,"956":2,"957":4,"958":3,"962":2,"963":3,"964":3,"965":2,"966":4,"967":2,"968":2,"969":2,"970":2,"971":2,"972":2,"973":3,"974":3,"975":3,"976":2,"977":2,"978":2,"979":2,"980":2,"981":2,"982":2,"983":2,"984":2,"985":2,"986":2,"987":2,"988":3,"989":2,"990":3,"991":2,"992":2,"993":2,"994":2,"995":2,"996":2,"997":2,"998":2,"999":2,"1001":2,"1002":2,"1003":3,"1004":2,"1005":2,"1006":2,"1007":2,"1008":2,"1009":2,"1010":2,"1011":2,"1013":2,"1014":2,"1015":2,"1016":2,"1017":2,"1018":2,"1019":2,"1020":3,"1021":2,"1022":2,"1023":2,"1024":2,"1025":2,"1026":2,"1027":2,"1028":2,"1029":2,"1030":2,"1031":2,"1032":2,"1033":2,"1034":2,"1035":2,"1036":2,"1037":2},"languages":{"257":2,"359":2,"449":2,"469":2,"589":2,"609":2,"612":2,"624":2,"628":2,"632":2,"633":5,"668":2,"674":2,"819":2,"1038":2,"1039":2,"1040":2,"1041":2,"1042":2,"1043":2,"1044":2,"1045":2,"1046":2,"1220":2,"1228":2},"religion":{"4":2,"5":2,"12":2,"17":2,"18":2,"21":2,"27":2,"41":2,"83":2,"85":3,"88":2,"89":2,"124":2,"126":2,"151":3,"160":2,"257":2,"290":2,"303":2,"315":2,"335":2,"381":3,"421":2,"423":2,"458":3,"624":2,"667":2,"711":2,"715":2,"819":2,"931":3,"971":2,"1124":5,"1125":4,"1126":3,"1127":2,"1128":3,"1129":2,"1130":2,"1131":2,"1132":2,"1133":2,"1134":2,"1135":2,"1136":2,"1137":2,"1138":2,"1139":2,"1140":2,"1141":2,"1142":2,"1143":2,"1144":2,"1145":2,"1146":2,"1147":2},"art":{"0":2,"16":2,"24":2,"57":2,"76":2,"81":2,"92":2,"151":2,"154":2,"203":2,"213":2,"242":2,"252":2,"294":2,"315":2,"323":2,"330":3,"364":2,"377":2,"439":2,"440":2,"448":2,"489":2,"543":3,"620":2,"656":2,"666":3,"739":2,"791":2,"800":2,"824":2,"863":2,"892":2,"914":2,"932":2,"983":2,"1031":2,"1053":2,"1056":2,"1088":2,"1148":11,"1149":3,"1150":2,"1151":2,"1152":4,"1153":2,"1154":2,"1155":2,"1156":2,"1157":2,"1158":4,"1159":2,"1160":2,"1161":2,"1162":3,"1163":2,"1164":2,"1165":2,"1166":2,"1266":2,"1271":2,"1272":2,"1273":2,"1274":2,"1275":2,"1276":2,"1277":2,"1278":2,"1279":2,"1280":2,"1281":2,"1282":2,"1283":2,"1284":2,"1285":2,"1286":2},"music":{"4":2,"86":2,"114":2,"115":2,"121":2,"151":2,"160":2,"167":2,"184":2,"215":2,"286":2,"296":2,"315":4,"330":2,"342":2,"416":2,"458":2,"534":2,"535":2,"536":2,"537":3,"539":2,"557":2,"591":2,"615":2,"671":2,"711":2,"734":2,"741":2,"772":2,"798":2,"923":2,"1093":2,"1118":2,"1126":2,"1130":2,"1167":2,"1168":2,"1169":2,"1170":2,"1171":2,"1172":2,"1173":2,"1174":2,"1175":2,"1176":2,"1177":7,"1178":3,"1179":2,"1180":2,"1181":2,"1182":2,"1183":2,"1184":2,"1185":2,"1186":2,"1187":2,"1188":2,"1189":2,"1190":7,"1191":2,"1192":2,"1193":3,"1194":2,"1195":2,"1196":2,"1197":2,"1198":2,"1199":2,"1200":2,"1201":2,"1202":2,"1203":2,"1204":2,"1205":2,"1206":2,"1207":2,"1208":3,"1209":2,"1210":2,"1211":2,"1212":2,"1213":2,"1214":2,"1215":2,"1216":2,"1217":2,"1218":2,"1219":2},"poetry":{"9":2,"122":2,"124":2,"151":2,"167":2,"184":2,"209":2,"257":2,"277":2,"297":2,"315":2,"320":2,"408":2,"410":2,"413":3,"470":2,"478":3,"589":2,"620":2,"622":2,"633":2,"635":2,"656":2,"676":2,"711":2,"734":2,"798":2,"892":2,"899":2,"914":2,"927":3,"942":2,"1046":2,"1106":2,"1150":4,"1220":3,"1221":2,"1222":2,"1223":2,"1224":2,"1225":2,"1226":2,"1227":2,"1229":2,"1230":3,"1231":4,"1232":2,"1233":2,"1234":2,"1235":3,"1236":2,"1237":2,"1238":2,"1239":2,"1240":2,"1241":2,"1242":2,"1261":2,"1262":2,"1263":2,"1264":2,"1265":2,"1266":2,"1267":2,"1268":2,"1269":2,"1270":2},"poestry":{"6":2,"68":2,"72":2,"167":2,"308":2,"313":2,"330":3,"342":2,"377":2,"440":2,"543":2,"589":2,"703":2,"712":2,"927":2,"936":2,"1110":2,"1114":2,"1231":3,"1243":2,"1244":2,"1245":2,"1246":2,"1247":2,"1248":2,"1249":2,"1250":2,"1251":2,"1252":2,"1253":2,"1254":2,"1255":2,"1256":2,"1257":2,"1258":2,"1259":2,"1260":2},"weather":{"34":2,"64":2,"80":2,"81":2,"111":2,"113":2,"118":2,"126":2,"180":2,"235":2,"257":2,"258":2,"289":2,"291":2,"292":2,"309":2,"320":2,"335":2,"392":2,"405":2,"411":2,"421":2,"431":2,"443":2,"489":2,"505":2,"534":2,"536":2,"561":2,"592":2,"601":2,"612":2,"684":2,"698":2,"794":2,"847":2,"913":2,"951":3,"1000":2,"1025":2,"1037":3,"1112":3,"1129":2,"1163":2,"1175":3,"1353":3,"1444":2,"1462":2,"1463":2,"1464":2,"1465":2,"1466":2,"1467":2,"1468":3,"1469":2,"1470":2,"1471":3,"1472":2,"1473":2,"1474":2,"1475":2,"1476":2,"1477":2,"1478":2,"1479":2,"1480":3,"1481":2,"1482":3,"1483":2,"1484":2,"1485":2,"1486":3,"1487":2,"1488":2,"1489":2,"1490":2,"1491":2,"1492":2,"1493":2,"1494":2,"1495":2,"1496":2,"1497":2,"1498":2,"1499":2,"1500":2,"1501":3,"1502":2,"1503":2,"1504":2,"1505":2,"1506":2,"1507":2,"1508":2,"1509":2,"1510":2,"1511":2,"1512":2,"1513":2,"1514":2,"1515":2,"1516":2,"1517":2,"1518":2,"1519":2,"1520":2,"1521":2,"1522":2,"1523":2,"1524":2,"1525":2},"climate":{"24":2,"201":2,"222":2,"233":2,"242":3,"282":2,"342":2,"365":2,"377":3,"534":2,"666":2,"711":2,"712":2,"715":2,"839":2,"1006":2,"1037":2,"1135":2,"1142":2,"1526":3,"1527":2,"1528":2,"1529":2,"1530":2,"1531":3,"1532":2,"1533":2,"1534":2,"1535":2},"mythology":{"103":4,"137":4,"146":3,"148":3,"161":2,"167":2,"209":2,"222":2,"230":2,"234":2,"276":2,"314":2,"323":2,"360":2,"417":2,"420":2,"434":2,"529":2,"539":2,"578":2,"656":2,"661":2,"674":5,"689":2,"753":2,"809":2,"818":2,"851":2,"857":2,"886":2,"896":2,"925":2,"932":2,"993":2,"1021":2,"1051":2,"1088":2,"1099":2,"1138":2,"1192":2,"1204":2,"1297":2,"1302":2,"1315":2,"1334":3,"1338":2,"1343":2,"1354":3,"1373":2,"1389":2,"1448":2,"1452":2,"1579":10,"1580":2,"1581":2,"1582":2,"1583":2,"1584":4,"1585":2,"1586":2,"1587":2,"1588":2,"1589":2,"1590":2,"1591":2,"1592":2,"1593":2,"1594":2,"1595":2,"1596":2,"1597":3,"1598":6,"1599":2,"1600":2,"1601":2,"1602":2,"1603":3,"1604":2,"1605":2,"1606":2,"1607":2,"1608":2,"1609":2,"1610":2,"1611":2,"1612":2,"1613":2,"1614":2,"1615":2,"1616":2,"1617":2,"1618":2,"1619":2,"1620":2,"1621":2,"1622":2,"1623":2,"1624":2}},"classTotals":{"software":3,"hardware":6,"universe":3,"botanology":23,"geography":56,"animals":74,"biology":36,"history":54,"school":2,"maths":11,"physics":40,"glossology":2,"astronomy":26,"cars":12,"records":2,"houses":15,"boats":10,"programming":19,"airplanes":42,"languages":8,"religion":5,"art":16,"music":19,"poetry":7,"poestry":4,"weather":21,"climate":6,"mythology":20},"totalExamples":515,"smoothing":1},"docs":[{"label":"software","text":["unit","test","fail"]},{"label":"software","text":["tri","program","buggi"]},{"label":"hardware","text":["drive","2tb","capac"]},{"label":"hardware","text":["need","new","power","suppli"]},{"label":"hardware","text":["comput","2gb","ram"]},{"label":"universe","text":["univers","vast","amount","planet"]},{"label":"universe","text":["univers","expand"]},{"label":"botanology","text":["tree","grow"]},{"label":"botanology","text":["tree","creat","forest"]},{"label":"botanology","text":["amazon","bigger","forest"]},{"label":"geography","text":["greec","europ"]},{"label":"geography","text":["europ","contin"]},{"label":"geography","text":["america","contin"]},{"label":"geography","text":["asia","contin"]},{"label":"geography","text":["africa","contin"]},{"label":"geography","text":["ocean","earth"]},{"label":"geography","text":["biggest","mountain","everest"]},{"label":"geography","text":["biggest","lake","lake","superior"]},{"label":"geography","text":["eartch","core","insid","hot"]},{"label":"geography","text":["earth","round"]},{"label":"geography","text":["not","earth","ocean","explor"]},{"label":"animals","text":["biggest","mammal","blue","whale"]},{"label":"animals","text":["biggest","bird","ostrich"]},{"label":"animals","text":["biggest","fish","shark"]},{"label":"animals","text":["biggest","snake","cobra"]},{"label":"animals","text":["danger","snake","cobra"]},{"label":"animals","text":["biggest","insect","bee"]},{"label":"animals","text":["insect","not","danger"]},{"label":"biology","text":["peopl","studi","biologi","known","biologist"]},{"label":"geography","text":["australia","great","barrier","reef","largest","live","structur","earth","reach","2000","kilometr","1240","mile","length"]},{"label":"history","text":["first","person","live","cell","microscop","antoni","van","leeuwenhoek","1674"]},{"label":"school","text":["ecolog","studi","ecosystem","organ","interact","environ"]},{"label":"biology","text":["bacteria","sick","other","posit","benefit","help","digest","food","even","yoghurt"]},{"label":"biology","text":["mould","yeast","mushroom","type","fungu"]},{"label":"biology","text":["common","cold","type","viru"]},{"label":"biology","text":["virus","treat","antivir","drug"]},{"label":"biology","text":["human","bodi","lot","bone"]},{"label":"biology","text":["bacteria","extrem","small","made","just","on","cell"]},{"label":"biology","text":["bacteri","infect","treat","antibiot"]},{"label":"biology","text":["anim","eat","plant","primari","food","sourc","known","herbivor"]},{"label":"biology","text":["anim","eat","meat","primari","food","sourc","known","carnivor"]},{"label":"biology","text":["endang","speci","danger","complet","wipe","includ","blue","whale","tiger","panda","without","protect","speci","mai","eventu","becom","extinct"]},{"label":"history","text":["born","juli","5th","1996","dolli","sheep","first","mammal","clone","adult","cell"]},{"label":"biology","text":["dna","organ","chang","result","new","trait","characterist","known","mutat"]},{"label":"history","text":["french","chemist","microbiologist","loui","pasteur","known","invent","process","stop","variou","food","liquid","make","peopl","sick","call","pasteur","reduc","amount","microorgan","lead","diseas","without","have","notic","effect","tast","qualiti","method","steril"]},{"label":"biology","text":["charl","darwin","develop","idea","natur","select","sometim","call","surviv","fittest","process","involv","live","thing","favor","trait","like","reproduc","pass","favor","trait","futur","gener"]},{"label":"biology","text":["adult","human","bodi","made","100","trillion","cell"]},{"label":"biology","text":["bone","marrow","produc","260","billion","red","blood","cell","rbc","135","billion","white","blood","cell","wbc","per","dai"]},{"label":"biology","text":["thirst","not","occur","bodi","lose","lot","fluid","occur","due","increas","level","salt","blood","reason","salt","tend","bind","water"]},{"label":"biology","text":["largest","organ","human","bodi","quit","surpris","answer","skin"]},{"label":"animals","text":["know","world","smallest","snake","no","answer","barbado","thread","snake"]},{"label":"biology","text":["everi","nucleu","human","bodi","dna","feet","long"]},{"label":"biology","text":["magnetorecept","type","magnet","compass","present","migratori","bird","help","navig","us","earth","magnet","field"]},{"label":"biology","text":["jaw","on","strongest","part","human","bodi","come","exert","forc"]},{"label":"animals","text":["ostrich","egg","biggest","world","equal","volum","30","chicken","egg"]},{"label":"biology","text":["life","eyelash","no","month"]},{"label":"animals","text":["armadillo","spend","80","life","asleep"]},{"label":"biology","text":["babi","born","farsighted","start","focu","properli","month","ag"]},{"label":"biology","text":["seahors","male","give","birth","young","on"]},{"label":"biology","text":["fact","human","mouth","bacteria","world"]},{"label":"geography","text":["alaska","westernmost","easternmost","state"]},{"label":"geography","text":["lake","within","island","lake","within","island"]},{"label":"geography","text":["mauna","kea","taller","everest"]},{"label":"geography","text":["mt","everest","isn","close","moon","mt","chimborazo"]},{"label":"geography","text":["iceland","grow","centimet","per","year"]},{"label":"geography","text":["pacif","ocean","shrink","rate","percent","per","year"]},{"label":"geography","text":["good","morn","good","night","part","russia"]},{"label":"geography","text":["lo","angel","east","reno","nevada"]},{"label":"geography","text":["mexico","citi","sink"]},{"label":"geography","text":["lo","angel","san","francisco","will","neighbor","citi"]},{"label":"geography","text":["100","island","philippin"]},{"label":"geography","text":["sargasso","sea","no","coast"]},{"label":"geography","text":["yellowston","nation","park","home","supervolcano"]},{"label":"geography","text":["sudan","ancient","pyramid","egypt"]},{"label":"geography","text":["largest","rock","planet","australia"]},{"label":"geography","text":["damascu","oldest","continu","inhabit","citi","world"]},{"label":"geography","text":["africa","span","four","hemispher"]},{"label":"geography","text":["kentucki","cave","place","earth"]},{"label":"geography","text":["istanbul","major","citi","rest","two","contin"]},{"label":"geography","text":["alaska","home","largest","citi","america"]},{"label":"geography","text":["deepest","place","earth","pacif","ocean"]},{"label":"geography","text":["russia","transsiberian","railwai","cross","901","bridg"]},{"label":"geography","text":["snow","sahara","desert"]},{"label":"geography","text":["fly","great","barrier","reef","ll","heart"]},{"label":"geography","text":["bangkok","full","name","163","letter"]},{"label":"geography","text":["largest","concentr","lake","canada"]},{"label":"geography","text":["42","build","new","york","zip","code"]},{"label":"geography","text":["two","island","mile","apart","20","hour","apart"]},{"label":"geography","text":["earth","enough","gold","cover","entireti"]},{"label":"geography","text":["water","cover","major","planet","us","human"]},{"label":"geography","text":["remot","place","earth","point","nemo"]},{"label":"geography","text":["20","oxygen","produc","amazon"]},{"label":"geography","text":["california","bigger","canada","popul"]},{"label":"geography","text":["australia","red","rock","bigger","think"]},{"label":"geography","text":["mount","everest","fit","insid","mariana","trench"]},{"label":"geography","text":["shortest","town","name","on","letter"]},{"label":"geography","text":["town","nebraska","singl","resid"]},{"label":"geography","text":["countri","longest","name","56","charact"]},{"label":"geography","text":["greec","200","inhabit","island"]},{"label":"geography","text":["australia","alp","snow","swiss","alp"]},{"label":"geography","text":["brazil","deriv","name","tree","name","brazilwood","tree","shorten","form","terra","brasil","land","brazil"]},{"label":"botanology","text":["appl","25","water","volum","float","water","lighter","water"]},{"label":"botanology","text":["potato","first","cultiv","peru","almost","7000","10","000","year","ago","right","almost","1000","differ","type","tomato"]},{"label":"botanology","text":["vanilla","extract","come","percol","vanilla","pod","call","vanilla","planifolia","amount","alcohol","present","approxim"]},{"label":"botanology","text":["common","fruit","world","banana"]},{"label":"botanology","text":["oak","tree","struck","lightn","among","tree","taller","tree"]},{"label":"botanology","text":["strawberri","fruit","bear","seed","outsid","averag","strawberri","will","200","seed"]},{"label":"botanology","text":["averag","pomegran","1000","seed","pomegran","us","bake","juic","blend","even","alcohol","beverag"]},{"label":"botanology","text":["dwarf","willow","tiniest","tree","world","two","inch","scientif","name","salix","herbacea"]},{"label":"botanology","text":["titan","arum","largest","flower","world","even","bigger","eleph","10","feet","high","feet","wide"]},{"label":"botanology","text":["shenzhen","nongk","orchid","claim","record","expens","flower","ever","sold","auction","off","224","000","2005","flower","creat","scientist","univers","lab","took","year","work","develop","bloom","everi","year"]},{"label":"botanology","text":["potato","tomato","grown","largest","amount","across","world","howev","onion","wide","us","veget","part","almost","dish"]},{"label":"botanology","text":["caffein","us","natur","pesticid","plant","paralyz","kill","insect","feed"]},{"label":"botanology","text":["cut","onion","releas","ga","call","propanethiol","oxid","mix","certain","enzym","present","onion","creat","sulfur","ga","ga","get","ey","cut","onion","cry"]},{"label":"botanology","text":["effici","thing","wake","morn","not","tea","coffe","appl","pack","high","amount","vitamin","antioxid","fiber","make","bodi","activ"]},{"label":"botanology","text":["quarter","plant","life","85","found","water","earth","cover","wide","marin","biom","estuari","coral","reef"]},{"label":"botanology","text":["fastest","grow","woodi","plant","world","bamboo","easili","grow","upto","35","inch","per","dai"]},{"label":"botanology","text":["arab","word","finger","banana","bunch","banana","call","hand","banana","individu","unit","finger","fruit","henc","name"]},{"label":"botanology","text":["largest","flower","rafflesia","corps","flower","feet","diamet","42","inch","height"]},{"label":"botanology","text":["scienc","calcul","ag","tree","count","ring","call","dendrochronolog","ring","steam","tree","indic","ag"]},{"label":"maths","text":["word","hundr","come","old","nors","term","hundrath","actual","mean","120","not","100"]},{"label":"maths","text":["room","23","peopl","50","chanc","two","peopl","birthdai"]},{"label":"maths","text":["mathemat","symbol","weren","invent","16th","centuri","equat","written","word"]},{"label":"maths","text":["forti","number","spelt","letter","arrang","alphabet","order"]},{"label":"maths","text":["convers","on","number","spelt","letter","arrang","descend","order"]},{"label":"maths","text":["1000","number","letter","on","thousand"]},{"label":"maths","text":["four","number","english","languag","spelt","number","letter","number"]},{"label":"maths","text":["everi","odd","number"]},{"label":"maths","text":["reason","american","call","mathemat","math","argu","mathemat","function","singular","noun","math","singular"]},{"label":"history","text":["mark","anim","bone","indic","human","math","around","30","000bc"]},{"label":"maths","text":["eleven","plu","two","anagram","twelv","plu","on","pretti","fit","answer","equat","13"]},{"label":"physics","text":["differ","graviti","200","pound","person","weigh","76","pound","mar"]},{"label":"physics","text":["electr","eel","stun","predat","prei","electr","shock","around","500","volt"]},{"label":"biology","text":["energi","food","usual","measur","joul","calori"]},{"label":"physics","text":["light","earth","take","just","255","second","reach","moon"]},{"label":"physics","text":["sound","travel","speed","around","767","mile","per","hour","230","kilometr","per","hour"]},{"label":"physics","text":["physic","scienc","matter","behavior"]},{"label":"glossology","text":["word","physic","come","greek","word","physik","mean","scienc","natur"]},{"label":"history","text":["physic","recogn","disciplin","19th","centuri"]},{"label":"geography","text":["dead","sea","dens","salt","easili","float","without","drown"]},{"label":"geography","text":["world","densest","wood","black","ironwood","olea","laurifolia","not","float","water","therefor","sink"]},{"label":"physics","text":["graviti","far","weakest","forc","know"]},{"label":"physics","text":["graviti","weight","not","thing"]},{"label":"physics","text":["graviti","make","wave","move","light","speed"]},{"label":"physics","text":["explain","microscop","behavior","graviti","thrown","research","loop"]},{"label":"physics","text":["graviti","carri","massless","particl","call","graviton"]},{"label":"physics","text":["quantum","graviti","appear","smallest","length","anyth"]},{"label":"physics","text":["electr","travel","speed","light","300","000","kilometr","per","second"]},{"label":"physics","text":["spark","static","electr","measur","000","volt"]},{"label":"physics","text":["averag","taser","emit","50","000","volt"]},{"label":"physics","text":["bolt","lightn","measur","three","million","000","000","volt","last","less","on","second"]},{"label":"physics","text":["accord","global","energi","statist","yearbook","global","electr","product","2015","approach","25","000","terawatt","hour","terawatt","trillion","watt"]},{"label":"physics","text":["first","four","common","domest","item","power","electr","sew","machin","fan","kettl","toaster"]},{"label":"physics","text":["led","light","bulb","us","on","sixth","electr","convent","bulb","cost","quarter","us","last","40","time","longer"]},{"label":"physics","text":["quantum","world","lumpi"]},{"label":"physics","text":["someth","wave","particl","time"]},{"label":"physics","text":["object","two","place","onc"]},{"label":"physics","text":["quantum","phyisc","mai","lead","us","toward","multivers"]},{"label":"physics","text":["quantum","phyisc","help","us","character","star"]},{"label":"physics","text":["directli","black","hole"]},{"label":"physics","text":["milki","probabl","black","hole"]},{"label":"physics","text":["dy","star","lead","stellar","black","hole"]},{"label":"physics","text":["three","categori","black","hole"]},{"label":"physics","text":["black","hole","funki"]},{"label":"physics","text":["first","black","hole","wasn","discov","rai","astronomi","us"]},{"label":"physics","text":["closest","black","hole","probabl","not","600","light","year","awai"]},{"label":"physics","text":["don","know","wormhol","exist"]},{"label":"physics","text":["black","hole","danger","close"]},{"label":"physics","text":["black","hole","constantli","us","scienc","fiction"]},{"label":"astronomy","text":["solar","system","billion","year","old"]},{"label":"astronomy","text":["moon","drift","awai","earth","rate","inch","cm","year"]},{"label":"physics","text":["person","weigh","220","pound","100","kg","earth","weigh","84","pound","34","kg","mar"]},{"label":"astronomy","text":["astronom","made","million","observ","us","hubbl","space","telescop"]},{"label":"astronomy","text":["neutron","star","rotat","speed","600","time","per","second"]},{"label":"astronomy","text":["scientist","discov","hydrogen","signal","galaxi","locat","five","billion","light","year","awai"]},{"label":"astronomy","text":["saturn","made","96","hydrogen"]},{"label":"astronomy","text":["enceladu","reflect","90","sun","light"]},{"label":"history","text":["world","first","speed","ticket","issu","1902"]},{"label":"cars","text":["car","uk","road","made","china"]},{"label":"cars","text":["modern","formula","car","drive","upsid","down","tunnel","120mph"]},{"label":"cars","text":["60","million","car","produc","everi","year"]},{"label":"cars","text":["billion","car","current","us","around","world"]},{"label":"cars","text":["averag","british","driver","will","spend","around","99","dai","life","stuck","traffic"]},{"label":"astronomy","text":["less","month","moon","car"]},{"label":"cars","text":["averag","car","contain","30","000","uniqu","part"]},{"label":"cars","text":["75","car","produc","roll","royc","road"]},{"label":"cars","text":["volkswagen","own","twelv","known","car","brand","european","countri"]},{"label":"history","text":["first","ever","car","accid","occur","1891"]},{"label":"history","text":["largest","speed","fine","ever","produc","000","000"]},{"label":"records","text":["world","record","remov","replac","car","engin","42","second"]},{"label":"cars","text":["odd","dy","car","accid","around","000"]},{"label":"cars","text":["man","invent","cruis","control","blind"]},{"label":"cars","text":["highest","total","mileag","clock","singl","car","850","000","million","mile"]},{"label":"houses","text":["creak","hous","littl","ag"]},{"label":"houses","text":["space","lower","cabinet","serv","specif","purpos"]},{"label":"houses","text":["cabinet","sink","isn","realli","storag"]},{"label":"houses","text":["brass","doorknob","mai","keep","healthi"]},{"label":"houses","text":["hole","bottom","brick","hous","aren","foundat","problem","need","correct"]},{"label":"houses","text":["overhang","roof","good","thing"]},{"label":"houses","text":["style","roof","depend","live"]},{"label":"houses","text":["tell","home","ag","roof"]},{"label":"houses","text":["home","mai","bird","box"]},{"label":"houses","text":["staircas","balust","name","popular","fruit"]},{"label":"houses","text":["farmhous","red","exterior","probabl","pai","homag","old","fashion","tradit"]},{"label":"houses","text":["state","victorian","home","mai","built","box"]},{"label":"houses","text":["brick","home","exterior","ador","name"]},{"label":"houses","text":["textur","plaster","wall","like","made","us","real","flower"]},{"label":"boats","text":["smaller","boat","us","man","todai","includ","cano","kayak","paddleboat","dinghi","rowboat","boat","usual","design","inland","waterwai","lake","river","bai"]},{"label":"boats","text":["larger","boat","sometim","refer","ship","includ","cargo","ship","cruis","ship","militari","ship","yacht","sailboat","ship","usual","design","travel","sea","ocean"]},{"label":"history","text":["old","testament","king","jame","bibl","37","refer","ship","on","refer","boat"]},{"label":"boats","text":["nativ","american","us","boat","dig","insid","log","earliest","cano"]},{"label":"history","text":["oldest","boat","found","archaeologist","call","pess","cano","oldest","recov","boat","believ","000","10","000","year","old"]},{"label":"history","text":["evid","ancient","refer","exist","prove","boat","us","900","000","year","ago","prehistor","time"]},{"label":"history","text":["centuri","ago","steamboat","popular","transport","peopl","good","along","river"]},{"label":"boats","text":["hull","boat","main","bodi","boat","not","includ","sail","motor","oar"]},{"label":"boats","text":["boat","left","side","refer","port","side"]},{"label":"boats","text":["boat","right","side","refer","starboard","side"]},{"label":"boats","text":["bow","boat","front","boat","back","call","stern"]},{"label":"boats","text":["boat","width","widest","point","starboard","port","side","call","beam"]},{"label":"boats","text":["approxim","18","million","boat","own","american","recreat","us","todai"]},{"label":"programming","text":["code","700","languag"]},{"label":"programming","text":["code","bug","not","name","actual","bug"]},{"label":"programming","text":["code","will","soon","import","read"]},{"label":"history","text":["first","programm","daughter","mad","poet"]},{"label":"programming","text":["first","comput","viru","creeper"]},{"label":"programming","text":["nasa","oper","project","program","1970"]},{"label":"programming","text":["big","monei","code"]},{"label":"programming","text":["don","work","tech","us","code"]},{"label":"history","text":["comput","job","titl","first","programm","women"]},{"label":"programming","text":["code","power","brain"]},{"label":"airplanes","text":["plane","fly","five","hour","on","engin","goe"]},{"label":"airplanes","text":["someon","di","flight","bodi","stai","cabin"]},{"label":"airplanes","text":["flight","oxygen","mask","aren","intend","last","whole","flight"]},{"label":"airplanes","text":["pilot","frequent","fall","asleep","job"]},{"label":"airplanes","text":["black","box","aren","actual","black"]},{"label":"airplanes","text":["airplan","air","significantli","drier","experi","earth"]},{"label":"airplanes","text":["boe","747","fuel","effici","car"]},{"label":"history","text":["hijack","onc","relinquish","control","flight","beer"]},{"label":"airplanes","text":["engin","design","plane","detach","cabin","save","passeng"]},{"label":"airplanes","text":["dirtiest","place","plane","isn","bathroom"]},{"label":"airplanes","text":["dead","chicken","thrown","plane","jet","safeti","test"]},{"label":"airplanes","text":["thousand","plane","unit","state","moment"]},{"label":"airplanes","text":["takeoff","land","danger","time","flight"]},{"label":"airplanes","text":["world","largest","airplan","weigh","nearli","600","ton"]},{"label":"airplanes","text":["safest","seat","aircraft","back","plane"]},{"label":"airplanes","text":["percent","distanc","space","flight"]},{"label":"airplanes","text":["airplan","trigger","lightn"]},{"label":"airplanes","text":["airplan","blanket","aren","alwai","wash","passeng"]},{"label":"airplanes","text":["boe","747","tank","hold","48","445","gallon","fuel"]},{"label":"airplanes","text":["dim","aircraft","light","serv","purpos","beyond","sleep"]},{"label":"airplanes","text":["plane","exhaust","kill","peopl","plane","crash"]},{"label":"airplanes","text":["plane","door","actual","open","mid","flight"]},{"label":"airplanes","text":["pilot","fly","internation","know","least","bit","english"]},{"label":"airplanes","text":["point","laser","pointer","plane","seriou","crime"]},{"label":"history","text":["world","oldest","airlin","will","turn","100","2019"]},{"label":"airplanes","text":["airplan","bathroom","open","outsid"]},{"label":"airplanes","text":["140","mile","wire","insid","boe","747"]},{"label":"airplanes","text":["american","airlin","save","40","000","cut","on","ingredi","meal"]},{"label":"airplanes","text":["airplan","water","riddl","bacteria"]},{"label":"airplanes","text":["deadliest","crash","happen","plane","secur","ground"]},{"label":"airplanes","text":["pilot","co","pilot","eat","differ","meal","flight"]},{"label":"airplanes","text":["expens","first","class","seat","cost","30","000"]},{"label":"airplanes","text":["tast","bud","chang","flight"]},{"label":"airplanes","text":["travel","plane","safest","around"]},{"label":"history","text":["sound","barrier","broken","1947"]},{"label":"airplanes","text":["sandra","bullock","million","american","aviophobia"]},{"label":"airplanes","text":["long","haul","flight","secret","bedroom","bathroom","flight","attend"]},{"label":"airplanes","text":["world","smallest","plane","weigh","358","pound"]},{"label":"airplanes","text":["longest","militari","plane","six","stori","tall"]},{"label":"airplanes","text":["turbul","top","caus","non","fatal","plane","injuri"]},{"label":"airplanes","text":["live","airplan","flight","path","harm","heart"]},{"label":"airplanes","text":["fastest","commerci","plane","flew","twice","speed","sound"]},{"label":"airplanes","text":["airplan","tire","inflat","six","time","psi","car","tire"]},{"label":"airplanes","text":["temperatur","cold","fly"]},{"label":"languages","text":["highest","number","languag","countri"]},{"label":"languages","text":["languag","isol","factor"]},{"label":"languages","text":["order","adject","english","languag"]},{"label":"languages","text":["pirah","languag","fact"]},{"label":"languages","text":["doubl","edg","sword"]},{"label":"languages","text":["click","sound","enough","commun"]},{"label":"history","text":["turkei","onc","worship","god"]},{"label":"history","text":["paul","rever","actual","shout","british","come"]},{"label":"history","text":["olymp","us","award","medal","art"]},{"label":"history","text":["on","time","100","impost","claim","mari","antoinett","dead","son"]},{"label":"history","text":["napoleon","onc","attack","hord","bunni"]},{"label":"history","text":["women","onc","ban","smoke","public"]},{"label":"history","text":["govern","liter","poison","alcohol","prohibit"]},{"label":"history","text":["captain","morgan","actual","exist"]},{"label":"history","text":["us","fork","us","seen","sacrilegi"]},{"label":"history","text":["titan","owner","ship","unsink"]},{"label":"history","text":["600","plot","kill","fidel","castro"]},{"label":"history","text":["cleopatra","not","egyptian"]},{"label":"history","text":["pope","gregori","iv","declar","war","cat"]},{"label":"history","text":["mari","actual","littl","lamb"]},{"label":"history","text":["richard","nixon","great","musician"]},{"label":"history","text":["lyndon","johnson","gave","interview","bathroom"]},{"label":"history","text":["ketchup","sold","1830","medicin"]},{"label":"history","text":["presid","abraham","lincoln","wrestl","hall","fame"]},{"label":"history","text":["juli","4th","isn","real","independ","dai"]},{"label":"history","text":["abraham","lincoln","licens","bartend"]},{"label":"history","text":["john","adam","first","presid","live","white","hous"]},{"label":"history","text":["first","face","bill","not","georg","washington"]},{"label":"history","text":["thoma","edison","didn","invent","light","bulb"]},{"label":"history","text":["betsi","ross","didn","design","sew","first","american","flag"]},{"label":"history","text":["car","weren","invent","unit","state"]},{"label":"history","text":["georg","washington","open","whiskei","distilleri","presid"]},{"label":"religion","text":["christian","largest","religi","group","world","2015","make","nearli","third","31","percent","earth","billion","peopl","muslim","second","billion","peopl","24","percent","global","popul","follow","religi","none","16","percent","hindu","15","percent","buddhist","percent"]},{"label":"religion","text":["2015","2060","muslim","major","religi","group","youngest","popul","highest","fertil","project","increas","70","percent","number","christian","project","rise","34","percent"]},{"label":"religion","text":["worldwid","growth","islam","christian","expect","place","sub","saharan","africa"]},{"label":"religion","text":["come","decad","2010","2050","40","million","peopl","project","switch","christian","106","million","project","leav","join","rank","religi","unaffili"]},{"label":"art","text":["peopl","paint","long","30","000","year"]},{"label":"art","text":["earliest","known","oil","paint","date","back","14th","centuri"]},{"label":"art","text":["artist","us","store","paint","anim","bladder"]},{"label":"art","text":["world","war","ii","brought","chang","paint","industri"]},{"label":"art","text":["acryl","paint","becam","commerci","avail","50"]},{"label":"art","text":["oil","paint","take","week","dry"]},{"label":"art","text":["acryl","paint","10","minut","hour","dry"]},{"label":"art","text":["take","570","gallon","paint","repaint","white","hous"]},{"label":"art","text":["sprai","paint","invent","1949"]},{"label":"art","text":["acryl","paint","lot","big","name","behind"]},{"label":"music","text":["musician","shorter","life","span","gener","popul"]},{"label":"music","text":["2016","mozart","sold","cd","beyonc"]},{"label":"music","text":["sing","group","boost","mood","creat","bond"]},{"label":"music","text":["peopl","feel","noth","toward","music","listen"]},{"label":"music","text":["listen","music","enhanc","physic","perform"]},{"label":"music","text":["rod","stewart","host","largest","ever","free","concert","world"]},{"label":"music","text":["wanna","spice","girl","catchiest","song","time"]},{"label":"music","text":["finland","metal","band","per","capita"]},{"label":"music","text":["astronaut","releas","album","song","record","space"]},{"label":"music","text":["british","navi","us","britnei","spear","song","scare","off","pirat"]},{"label":"music","text":["jingl","bell","origin","thanksgiv","song"]},{"label":"music","text":["barri","manilow","didn","write","write","song"]},{"label":"music","text":["music","affect","percept","world"]},{"label":"music","text":["music","help","plant","grow","faster","better"]},{"label":"music","text":["none","beatl","read","write","music"]},{"label":"music","text":["expens","music","instrument","sold","15","million"]},{"label":"music","text":["metallica","first","band","plai","contin","world"]},{"label":"music","text":["happi","birthdai","song","bring","bunch","royalti"]},{"label":"poetry","text":["earliest","form","poetri","predat","written","languag","sung","recit","help","peopl","rememb","genealog","law","oral","histori"]},{"label":"languages","text":["word","poetri","greek","term","poiesi","mean","make"]},{"label":"poetry","text":["poetri","on","oldest","form","commun","date","back","prehistor","time","hunt","poetri","africa","ancient","egypt"]},{"label":"poetry","text":["oldest","surviv","epic","poem","epic","gilgamesh","date","3rd","millennium","bc","sumer","iraq"]},{"label":"poetry","text":["longest","poem","world","mahabharata","indian","epic","poem","date","4th","centuri","bc","earlier","poem","million","word"]},{"label":"poetry","text":["poet","dai","celebr","everi","august","21"]},{"label":"poestry","text":["skin","murder","georg","cudmor","us","bind","1852","edit","john","milton","poetic","work"]},{"label":"poestry","text":["word","unfriend","first","appear","1275","mediev","poem","titl","brut","layamon","coincident","poem","word","muggl","first","appear"]},{"label":"poestry","text":["german","poet","gottlob","burmann","despis","letter","avoid","us","poem","suppress","speech","last","17","year","life"]},{"label":"poetry","text":["ann","bradstreet","first","woman","recogn","accomplish","poet","british","american","coloni","she","di","husband","collect","poem","publish","book","make","first","woman","publish","book","america"]},{"label":"art","text":["art","us","olymp","event"]},{"label":"art","text":["mona","lisa","mailbox","louvr","love","letter","she","receiv"]},{"label":"art","text":["colour","wheel","predat","unit","state"]},{"label":"art","text":["artist","willard","wigan","onc","inhal","work"]},{"label":"art","text":["2003","street","artist","banksi","stuck","work","wall","tate","modern","museum"]},{"label":"animals","text":["fish","social"]},{"label":"animals","text":["fish","rememb"]},{"label":"animals","text":["fish","smart"]},{"label":"animals","text":["fish","excel","commun"]},{"label":"animals","text":["fish","flexibl"]},{"label":"animals","text":["fish","migrat","extrem","far","distanc"]},{"label":"animals","text":["fish","except","sensori","capabl"]},{"label":"animals","text":["fish","import","sustain","ecosystem"]},{"label":"animals","text":["fish","chang","colour"]},{"label":"animals","text":["fish","farm","anim"]},{"label":"animals","text":["lion","cat","live","group"]},{"label":"animals","text":["group","pride","30","lion","depend","food","water","avail"]},{"label":"animals","text":["femal","lion","main","hunter","re","look","food","male","guard","pride","territori","young"]},{"label":"animals","text":["lion","roar","heard","eight","kilometr","awai"]},{"label":"animals","text":["lion","scent","mark","territori","us","wee","creat","border"]},{"label":"animals","text":["hous","cat","genom","95","percent","tiger","share","behavior","jungl","ancestor","sai","layla","morgan","wild","cat","behavior","expert","founder","cat","wisdom","101","behavior","includ","scent","mark","scratch","prei","plai","prei","stalk","pounc","chin","urin","mark"]},{"label":"animals","text":["cat","believ","mammal","don","tast","sweet"]},{"label":"animals","text":["cat","nearsight","peripher","vision","night","vision","better","human"]},{"label":"animals","text":["cat","suppos","18","toe","five","toe","front","paw","four","toe","back","paw"]},{"label":"animals","text":["cat","jump","six","time","length"]},{"label":"animals","text":["cat","claw","curv","downward","mean","climb","down","tree","head","first","instead","back","down","trunk"]},{"label":"animals","text":["dog","sniff","time","breath"]},{"label":"animals","text":["dog","incred","swimmer"]},{"label":"animals","text":["dog","don","sweat"]},{"label":"animals","text":["dog","left","right","paw"]},{"label":"animals","text":["dog","18","muscl","control","ear"]},{"label":"animals","text":["dog","intellig","two","year","old","child"]},{"label":"animals","text":["mammal","warm","blood","anim","bodi","temperatur","remain","entir","live"]},{"label":"animals","text":["mammal","hair","even","dolphin","whale","live","ocean"]},{"label":"animals","text":["mammal","born","live","not","egg","two","mammal","hatch","egg","includ","spini","anteat","duckbil","platypu"]},{"label":"animals","text":["mammal","helpless","babi","adult","mammal","protect","help","care","babi","surviv","mammal","famou","care","babi","mother","kangaroo","carri","babi","pouch","on","year","old","mammal","mice","care","young","month","eleph","care","young","long","time","10","year","long","think","parent","will","care"]},{"label":"animals","text":["mammal","babi","drink","milk","mother"]},{"label":"animals","text":["mammal","except","ant","eater","teeth"]},{"label":"animals","text":["bat","mammal","fly"]},{"label":"animals","text":["cheetah","fastest","land","anim","mammal","run","70","mph","fastest","cheetah","clock","zoo","100","meter","dash","95","second","almost","twice","fast","fastest","human","record","run","fast","cheetah","stride","length","nearli","22","feet","long","jump","record","human","just","29","feet","cheetah","perfect","bodi","speed","enlarg","lung","nostril","heart","abl","enough","oxygen","run","fast"]},{"label":"animals","text":["orca","killer","whale","on","fiercest","hunter","anim","known","attack","whale","even","polar","bear","orca","smart","featur","aquat","show","show","off","intellig"]},{"label":"animals","text":["koala","sleep","longest","anim","sleep","22","hour","dai"]},{"label":"animals","text":["dolphin","whale","babi","not","sleep","first","month","life"]},{"label":"animals","text":["snake","don","eyelid"]},{"label":"animals","text":["snake","form","locomot"]},{"label":"history","text":["definit","famili","us","offic","nation","statist","marri","civil","partner","cohabit","coupl","without","children","lone","parent","least","on","child"]},{"label":"history","text":["definit","accord","on","18","million","famili","uk","2012"]},{"label":"history","text":["12","million","consist","marri","coupl","without","children"]},{"label":"history","text":["late","17th","centuri","famili","includ","not","rel","servant","household"]},{"label":"biology","text":["re","go","taller","morn"]},{"label":"biology","text":["heart","beat","100","000","time","dai"]},{"label":"biology","text":["highest","blood","flow","kidnei"]},{"label":"biology","text":["produc","enough","saliva","fill","two","bathtub","year"]},{"label":"biology","text":["healthi","lung","pink","lung"]},{"label":"biology","text":["dream","black","white"]},{"label":"biology","text":["blood","vessel","circl","globe"]},{"label":"biology","text":["averag","human","adult","2000","4000","tast","bud"]},{"label":"biology","text":["bodi","600","muscl"]},{"label":"biology","text":["time","brain","harder","time","long","term","memori"]},{"label":"astronomy","text":["solar","system","billion","year","old"]},{"label":"astronomy","text":["sunlight","take","around","minut","reach","earth"]},{"label":"astronomy","text":["solar","system","light","year","across"]},{"label":"astronomy","text":["asteroid","found","mar","jupit"]},{"label":"astronomy","text":["closer","sun","hotter","planet"]},{"label":"astronomy","text":["on","year","differ","planet"]},{"label":"astronomy","text":["comet","origin","within","solar","system"]},{"label":"astronomy","text":["nearest","star","earth","proxima","centauri"]},{"label":"astronomy","text":["100","billion","solar","system","milki","galaxi"]},{"label":"astronomy","text":["sun","account","99","86","mass","solar","system"]},{"label":"astronomy","text":["on","million","earth","fit","insid","sun"]},{"label":"astronomy","text":["on","dai","sun","will","consum","earth"]},{"label":"astronomy","text":["energi","creat","sun","core","nuclear","fusion"]},{"label":"astronomy","text":["sun","almost","perfect","sphere"]},{"label":"astronomy","text":["sun","travel","220","km","per","second"]},{"label":"astronomy","text":["sun","will","eventu","size","earth"]},{"label":"astronomy","text":["take","eight","minut","light","reach","earth","sun"]},{"label":"history","text":["earliest","name","doctor","women"]},{"label":"history","text":["cataract","surgeri","possibl","sixth","centuri","bc"]},{"label":"history","text":["tree","life","tackl","scurvi"]},{"label":"history","text":["want","cure","everyth","try","theriac"]},{"label":"history","text":["gener","anaesthesia","help","cancer","patient","begin","19th","centuri"]},{"label":"history","text":["leech","craze","hit","19th","centuri","europ"]},{"label":"weather","text":["tell","temperatur","count","cricket","chirp"]},{"label":"weather","text":["sandstorm","swallow","entir","citi"]},{"label":"weather","text":["dirt","mix","wind","dust","storm","call","black","blizzard"]},{"label":"weather","text":["mudslid","carri","rock","tree","vehicl","entir","build"]},{"label":"weather","text":["coldest","temperatur","ever","offici","record","89","brrrr"]},{"label":"weather","text":["mild","autumn","weather","often","mean","bigger","spider","home"]},{"label":"weather","text":["heatwav","train","track","bend"]},{"label":"weather","text":["000","thunderstorm","rain","down","earth","everi","minut"]},{"label":"weather","text":["2003","heatwav","turn","grape","raisin","pick","vine"]},{"label":"weather","text":["lightn","often","follow","volcan","erupt"]},{"label":"weather","text":["raindrop","size","housefli","fall","30kmph"]},{"label":"weather","text":["cape","farewel","greenland","windiest","place","planet"]},{"label":"weather","text":["hurrican","push","6m","water","ashor"]},{"label":"weather","text":["juli","2001","rainfal","kerala","india","blood","red"]},{"label":"weather","text":["blizzard","snowflak","feel","pellet","hit","face"]},{"label":"weather","text":["hurrican","florida","usa","caus","900","captiv","python","escap"]},{"label":"weather","text":["worm","wriggl","underground","flood","come"]},{"label":"weather","text":["thunderstorm","produc","160kmph","wind"]},{"label":"weather","text":["antarctica","snow","fall","hard","hand","front","face"]},{"label":"weather","text":["whiteout","heavi","snowfal","make","difficult","feel","sick"]},{"label":"climate","text":["within","next","decad","global","temperatur","like","rise","degre","celsiu"]},{"label":"climate","text":["last","year","warmest","record"]},{"label":"climate","text":["million","speci","risk","extinct","climat","chang","next","50","year"]},{"label":"climate","text":["climat","chang","alreadi","happen","detriment","human","life"]},{"label":"climate","text":["leader","aren","take","serious"]},{"label":"physics","text":["light","made","energi"]},{"label":"physics","text":["light","travel","straight","line","object","path","caus","light","bend","refract"]},{"label":"physics","text":["speed","light","exactli","299","792","km","per","second"]},{"label":"physics","text":["speed","light","travel","vacuum","not","obstruct","atmospher"]},{"label":"physics","text":["travel","speed","light","go","around","earth","time","second"]},{"label":"hardware","text":["first","comput","weigh","27","ton"]},{"label":"programming","text":["90","world","currenc","exist","comput"]},{"label":"programming","text":["first","comput","mous","made","wood"]},{"label":"programming","text":["70","viru","engin","work","organ","crime","syndic"]},{"label":"programming","text":["first","known","comput","programm","woman"]},{"label":"programming","text":["biggest","comput","brand","start","garag"]},{"label":"programming","text":["peopl","blink","less","us","comput"]},{"label":"programming","text":["hacker","write","000","new","virus","month"]},{"label":"programming","text":["80","daili","email","spam"]},{"label":"programming","text":["mydoom","expens","comput","viru","histori"]},{"label":"programming","text":["part","modern","comput","first","invent","1833"]},{"label":"hardware","text":["first","gigabyt","drive","cost","40","000"]},{"label":"animals","text":["guinea","pig","live","10","year"]},{"label":"animals","text":["birth","guinea","pig","walk","immedi","birth"]},{"label":"animals","text":["basic","type","domest","guinea","pig","identifi","hair","type"]},{"label":"animals","text":["guinea","pig","born","teeth","constantli","grow","throughout","lifetim"]},{"label":"animals","text":["guinea","pig","open","ey","mother","womb","14","dai","birth"]},{"label":"animals","text":["although","call","guinea","pig","not","close","relat","pig","name","short","robust","bodi","piggish","appear","guinea","refer","guyana","countri","within","natur","rang"]},{"label":"animals","text":["guinea","pig","don","need","sleep","long","period","instead","prefer","short","nap","throughout","dai","night"]},{"label":"animals","text":["guinea","pig","don","number","toe","fore","feet","compar","hind","feet","actual","forefeet","hind","feet"]},{"label":"animals","text":["social","anim","love","compani","other","even","human"]},{"label":"animals","text":["need","supplement","vitamin","not","produc"]},{"label":"mythology","text":["dragon","zero","four","leg","claw","scale","possibl","spike","mai","wing"]},{"label":"mythology","text":["dragon","look","snake","wing","lizard"]},{"label":"mythology","text":["dragon","tail","long","neck"]},{"label":"mythology","text":["dragon","wide","mouth","big","danger","teeth"]},{"label":"mythology","text":["sometim","horn","hair"]},{"label":"mythology","text":["dragon","usual","fly"]},{"label":"mythology","text":["dragon","perhap","breath","fire","danger","substanc"]},{"label":"mythology","text":["dragon","special","power"]},{"label":"mythology","text":["dragon","live","cave"]},{"label":"mythology","text":["dragon","hoard","preciou","metal","jewel"]},{"label":"mythology","text":["hade","wasn","monster","greek","mytholog"]},{"label":"mythology","text":["ar","not","power","artemi","killer"]},{"label":"mythology","text":["theseu","manipul"]},{"label":"mythology","text":["medusa","not","monster","greek","mytholog"]},{"label":"mythology","text":["zeu","serial","predat"]},{"label":"mythology","text":["olympian","not","first","immort","greek","mytholog"]},{"label":"mythology","text":["pandora","daughter","aphrodit","went","war"]},{"label":"mythology","text":["know","pegasu","beauti","wing","hors","know","popular","figur","greek","mytholog","born","perseu","slice","off","head","snake","hair","medusa","uncommon","origin","stori","sai","least"]},{"label":"mythology","text":["hybrid","lion","eagl","creatur","griffin","rever","mytholog","king","creatur","found","european","islam","far","eastern","tradit","on","unusu","aspect","speci","claw","believ","cure","blind","medicin","power"]},{"label":"animals","text":["bee","ey"]},{"label":"animals","text":["bee","insect","leg"]},{"label":"animals","text":["male","bee","hive","call","drone"]},{"label":"animals","text":["bee","fly","20","mph"]},{"label":"animals","text":["femal","bee","hive","except","queen","call","worker","bee"]},{"label":"animals","text":["number","egg","laid","queen","000","per","dai","high"]},{"label":"animals","text":["lose","stinger","will","caus","bee","die"]},{"label":"animals","text":["bee","30","million","year"]},{"label":"animals","text":["bee","carri","pollen","hind","leg","pollen","basket","corbicula"]},{"label":"animals","text":["averag","beehiv","hold","around","50","000","bee"]},{"label":"animals","text":["forag","collect","nectar","million","flower","pound","honei"]},{"label":"animals","text":["averag","forag","make","12","th","teaspoon","honei","lifetim"]},{"label":"animals","text":["bee","pair","wing","on","side","bodi"]}],"features":{"10":6,"12":2,"13":1,"14":1,"15":2,"16":1,"17":1,"18":4,"20":3,"21":1,"22":2,"23":1,"24":1,"25":2,"27":1,"29":1,"30":7,"31":1,"34":2,"35":1,"37":1,"40":4,"42":3,"48":1,"50":5,"56":1,"60":1,"70":3,"75":1,"76":1,"80":2,"84":1,"85":1,"86":1,"89":1,"90":2,"95":2,"96":1,"99":2,"100":9,"101":1,"106":1,"120":1,"135":1,"140":1,"163":1,"200":3,"220":2,"224":1,"230":1,"255":1,"260":1,"299":1,"300":1,"358":1,"445":1,"500":1,"570":1,"600":5,"700":1,"747":3,"767":1,"792":1,"850":1,"900":2,"901":1,"1000":3,"1240":1,"1275":1,"1674":1,"1830":1,"1833":1,"1852":1,"1891":1,"1902":1,"1947":1,"1949":1,"1970":1,"1996":1,"2000":2,"2001":1,"2003":2,"2005":1,"2010":1,"2012":1,"2015":3,"2016":1,"2019":1,"2050":1,"2060":1,"4000":1,"7000":1,"unit":5,"test":2,"fail":1,"tri":1,"program":2,"buggi":1,"drive":3,"2tb":1,"capac":1,"need":4,"new":4,"power":6,"suppli":1,"comput":11,"2gb":1,"ram":1,"univers":3,"vast":1,"amount":5,"planet":6,"expand":1,"tree":13,"grow":6,"creat":6,"forest":2,"amazon":2,"bigger":5,"greec":2,"europ":3,"contin":6,"america":3,"asia":1,"africa":4,"ocean":6,"earth":23,"biggest":9,"mountain":1,"everest":4,"lake":6,"superior":1,"eartch":1,"core":2,"insid":5,"hot":1,"round":1,"not":21,"explor":1,"mammal":15,"blue":2,"whale":6,"bird":3,"ostrich":2,"fish":11,"shark":1,"snake":8,"cobra":2,"danger":7,"insect":4,"bee":12,"peopl":13,"studi":2,"biologi":1,"known":9,"biologist":1,"australia":4,"great":3,"barrier":3,"reef":3,"largest":12,"live":12,"structur":1,"reach":4,"kilometr":4,"mile":5,"length":4,"first":27,"person":3,"cell":6,"microscop":2,"antoni":1,"van":1,"leeuwenhoek":1,"ecolog":1,"ecosystem":2,"organ":4,"interact":1,"environ":1,"bacteria":4,"sick":3,"other":2,"posit":1,"benefit":1,"help":7,"digest":1,"food":7,"even":6,"yoghurt":1,"mould":1,"yeast":1,"mushroom":1,"type":6,"fungu":1,"common":3,"cold":2,"viru":4,"virus":2,"treat":2,"antivir":1,"drug":1,"human":14,"bodi":14,"lot":3,"bone":3,"extrem":2,"small":1,"made":8,"just":3,"on":23,"bacteri":1,"infect":1,"antibiot":1,"anim":10,"eat":3,"plant":5,"primari":2,"sourc":2,"herbivor":1,"meat":1,"carnivor":1,"endang":1,"speci":4,"complet":1,"wipe":1,"includ":7,"tiger":2,"panda":1,"without":5,"protect":2,"mai":6,"eventu":2,"becom":1,"extinct":2,"born":5,"juli":3,"5th":1,"dolli":1,"sheep":1,"clone":1,"adult":4,"dna":2,"chang":6,"result":1,"trait":3,"characterist":1,"mutat":1,"french":1,"chemist":1,"microbiologist":1,"loui":1,"pasteur":2,"invent":7,"process":2,"stop":1,"variou":1,"liquid":1,"make":8,"call":15,"reduc":1,"microorgan":1,"lead":3,"diseas":1,"have":1,"notic":1,"effect":1,"tast":4,"qualiti":1,"method":1,"steril":1,"charl":1,"darwin":1,"develop":2,"idea":1,"natur":4,"select":1,"sometim":3,"surviv":3,"fittest":1,"involv":1,"thing":4,"favor":2,"like":3,"reproduc":1,"pass":1,"futur":1,"gener":3,"trillion":2,"marrow":1,"produc":8,"billion":9,"red":4,"blood":7,"rbc":1,"white":4,"wbc":1,"per":12,"dai":11,"thirst":1,"occur":3,"lose":2,"fluid":1,"due":1,"increas":2,"level":1,"salt":3,"reason":2,"tend":1,"bind":2,"water":10,"quit":1,"surpris":1,"answer":3,"skin":2,"know":6,"world":24,"smallest":3,"no":3,"barbado":1,"thread":1,"everi":6,"nucleu":1,"feet":9,"long":9,"magnetorecept":1,"magnet":2,"compass":1,"present":3,"migratori":1,"navig":1,"us":30,"field":1,"jaw":1,"strongest":1,"part":5,"come":7,"exert":1,"forc":2,"egg":5,"equal":1,"volum":2,"chicken":2,"life":9,"eyelash":1,"month":6,"armadillo":1,"spend":2,"asleep":2,"babi":7,"farsighted":1,"start":2,"focu":1,"properli":1,"ag":5,"seahors":1,"male":3,"give":1,"birth":4,"young":4,"fact":2,"mouth":2,"alaska":2,"westernmost":1,"easternmost":1,"state":5,"within":5,"island":5,"mauna":1,"kea":1,"taller":3,"mt":2,"isn":4,"close":3,"moon":4,"chimborazo":1,"iceland":1,"centimet":1,"year":25,"pacif":2,"shrink":1,"rate":2,"percent":10,"good":4,"morn":3,"night":3,"russia":2,"lo":2,"angel":2,"east":1,"reno":1,"nevada":1,"mexico":1,"citi":6,"sink":3,"san":1,"francisco":1,"will":9,"neighbor":1,"philippin":1,"sargasso":1,"sea":3,"coast":1,"yellowston":1,"nation":2,"park":1,"home":7,"supervolcano":1,"sudan":1,"ancient":3,"pyramid":1,"egypt":2,"rock":3,"damascu":1,"oldest":6,"continu":1,"inhabit":2,"span":2,"four":5,"hemispher":1,"kentucki":1,"cave":2,"place":7,"istanbul":1,"major":3,"rest":1,"two":9,"deepest":1,"transsiberian":1,"railwai":1,"cross":1,"bridg":1,"snow":3,"sahara":1,"desert":1,"fly":7,"ll":1,"heart":4,"bangkok":1,"full":1,"name":13,"letter":8,"concentr":1,"canada":2,"build":2,"york":1,"zip":1,"code":7,"apart":2,"hour":7,"enough":4,"gold":1,"cover":3,"entireti":1,"remot":1,"point":3,"nemo":1,"oxygen":3,"california":1,"popul":4,"think":2,"mount":1,"fit":3,"mariana":1,"trench":1,"shortest":1,"town":2,"nebraska":1,"singl":2,"resid":1,"countri":4,"longest":4,"charact":1,"alp":2,"swiss":1,"brazil":2,"deriv":1,"brazilwood":1,"shorten":1,"form":4,"terra":1,"brasil":1,"land":3,"appl":2,"float":3,"lighter":1,"potato":2,"cultiv":1,"peru":1,"almost":5,"000":25,"ago":3,"right":3,"differ":4,"tomato":2,"vanilla":3,"extract":1,"percol":1,"pod":1,"planifolia":1,"alcohol":3,"approxim":2,"fruit":4,"banana":4,"oak":1,"struck":1,"lightn":4,"among":1,"strawberri":2,"bear":2,"seed":3,"outsid":2,"averag":8,"pomegran":2,"bake":1,"juic":1,"blend":1,"beverag":1,"dwarf":1,"willow":1,"tiniest":1,"inch":4,"scientif":1,"salix":1,"herbacea":1,"titan":2,"arum":1,"flower":7,"eleph":2,"high":3,"wide":4,"shenzhen":1,"nongk":1,"orchid":1,"claim":2,"record":7,"expens":4,"ever":5,"sold":4,"auction":1,"off":4,"scientist":2,"lab":1,"took":1,"work":6,"bloom":1,"grown":1,"across":2,"howev":1,"onion":4,"veget":1,"dish":1,"caffein":1,"pesticid":1,"paralyz":1,"kill":3,"feed":1,"cut":3,"releas":2,"ga":3,"propanethiol":1,"oxid":1,"mix":2,"certain":1,"enzym":1,"sulfur":1,"get":1,"ey":3,"cry":1,"effici":2,"wake":1,"tea":1,"coffe":1,"pack":1,"vitamin":2,"antioxid":1,"fiber":1,"activ":1,"quarter":2,"found":4,"marin":1,"biom":1,"estuari":1,"coral":1,"fastest":5,"woodi":1,"bamboo":1,"easili":2,"upto":1,"arab":1,"word":9,"finger":2,"bunch":2,"hand":2,"individu":1,"henc":1,"rafflesia":1,"corps":1,"diamet":1,"height":1,"scienc":4,"calcul":1,"count":2,"ring":2,"dendrochronolog":1,"steam":1,"indic":2,"hundr":1,"old":8,"nors":1,"term":3,"hundrath":1,"actual":8,"mean":5,"room":1,"chanc":1,"birthdai":2,"mathemat":3,"symbol":1,"weren":2,"16th":1,"centuri":9,"equat":2,"written":2,"forti":1,"number":11,"spelt":3,"arrang":2,"alphabet":1,"order":3,"convers":1,"descend":1,"thousand":2,"english":3,"languag":7,"odd":2,"american":7,"math":3,"argu":1,"function":1,"singular":2,"noun":1,"mark":4,"around":10,"000bc":1,"eleven":1,"plu":2,"anagram":1,"twelv":2,"pretti":1,"graviti":7,"pound":6,"weigh":6,"mar":3,"electr":7,"eel":1,"stun":1,"predat":4,"prei":3,"shock":1,"volt":4,"energi":4,"usual":4,"measur":3,"joul":1,"calori":1,"light":17,"take":6,"second":10,"sound":4,"travel":8,"speed":11,"physic":4,"matter":1,"behavior":5,"greek":6,"physik":1,"recogn":2,"disciplin":1,"19th":3,"dead":3,"dens":1,"drown":1,"densest":1,"wood":2,"black":14,"ironwood":1,"olea":1,"laurifolia":1,"therefor":1,"far":3,"weakest":1,"weight":1,"wave":2,"move":1,"explain":1,"thrown":2,"research":1,"loop":1,"carri":4,"massless":1,"particl":2,"graviton":1,"quantum":4,"appear":4,"anyth":1,"spark":1,"static":1,"taser":1,"emit":1,"bolt":1,"three":2,"million":16,"last":5,"less":3,"accord":2,"global":4,"statist":2,"yearbook":1,"product":1,"approach":1,"terawatt":2,"watt":1,"domest":2,"item":1,"sew":2,"machin":1,"fan":1,"kettl":1,"toaster":1,"led":1,"bulb":3,"sixth":2,"convent":1,"cost":3,"time":16,"longer":1,"lumpi":1,"someth":1,"object":2,"onc":6,"phyisc":2,"toward":2,"multivers":1,"character":1,"star":4,"directli":1,"hole":10,"milki":2,"probabl":3,"dy":2,"stellar":1,"categori":1,"funki":1,"wasn":2,"discov":2,"rai":1,"astronomi":1,"closest":1,"awai":4,"don":7,"wormhol":1,"exist":4,"constantli":2,"fiction":1,"solar":6,"system":6,"drift":1,"cm":1,"kg":2,"astronom":1,"observ":1,"hubbl":1,"space":4,"telescop":1,"neutron":1,"rotat":1,"hydrogen":2,"signal":1,"galaxi":2,"locat":1,"five":3,"saturn":1,"enceladu":1,"reflect":1,"sun":10,"ticket":1,"issu":1,"car":15,"uk":2,"road":2,"china":1,"modern":3,"formula":1,"upsid":1,"down":4,"tunnel":1,"120mph":1,"current":1,"british":4,"driver":1,"stuck":2,"traffic":1,"contain":1,"uniqu":1,"roll":1,"royc":1,"volkswagen":1,"own":2,"brand":2,"european":2,"accid":2,"fine":1,"remov":1,"replac":1,"engin":4,"man":2,"cruis":2,"control":3,"blind":2,"highest":4,"total":1,"mileag":1,"clock":2,"creak":1,"hous":5,"littl":2,"lower":1,"cabinet":2,"serv":2,"specif":1,"purpos":2,"realli":1,"storag":1,"brass":1,"doorknob":1,"keep":1,"healthi":2,"bottom":1,"brick":2,"aren":5,"foundat":1,"problem":1,"correct":1,"overhang":1,"roof":3,"style":1,"depend":2,"tell":2,"box":3,"staircas":1,"balust":1,"popular":3,"farmhous":1,"exterior":2,"pai":1,"homag":1,"fashion":1,"tradit":2,"victorian":1,"built":1,"ador":1,"textur":1,"plaster":1,"wall":2,"real":2,"smaller":1,"boat":16,"todai":2,"cano":3,"kayak":1,"paddleboat":1,"dinghi":1,"rowboat":1,"design":4,"inland":1,"waterwai":1,"river":2,"bai":1,"larger":1,"refer":7,"ship":7,"cargo":1,"militari":2,"yacht":1,"sailboat":1,"testament":1,"king":2,"jame":1,"bibl":1,"nativ":1,"dig":1,"log":1,"earliest":4,"archaeologist":1,"pess":1,"recov":1,"believ":3,"evid":1,"prove":1,"prehistor":2,"steamboat":1,"transport":1,"along":1,"hull":1,"main":2,"sail":1,"motor":1,"oar":1,"left":2,"side":6,"port":2,"starboard":2,"bow":1,"front":3,"back":6,"stern":1,"width":1,"widest":1,"beam":1,"recreat":1,"bug":2,"soon":1,"import":2,"read":2,"programm":3,"daughter":2,"mad":1,"poet":4,"creeper":1,"nasa":1,"oper":1,"project":5,"big":3,"monei":1,"tech":1,"job":2,"titl":2,"women":3,"brain":2,"plane":16,"goe":1,"someon":1,"di":2,"flight":12,"stai":1,"cabin":2,"mask":1,"intend":1,"whole":1,"pilot":4,"frequent":1,"fall":3,"airplan":8,"air":1,"significantli":1,"drier":1,"experi":1,"boe":3,"fuel":2,"hijack":1,"relinquish":1,"beer":1,"detach":1,"save":2,"passeng":2,"dirtiest":1,"bathroom":4,"jet":1,"safeti":1,"moment":1,"takeoff":1,"nearli":3,"ton":2,"safest":2,"seat":2,"aircraft":2,"distanc":2,"trigger":1,"blanket":1,"alwai":1,"wash":1,"tank":1,"hold":2,"gallon":2,"dim":1,"beyond":1,"sleep":5,"exhaust":1,"crash":2,"door":1,"open":4,"mid":1,"internation":1,"least":3,"bit":1,"laser":1,"pointer":1,"seriou":1,"crime":2,"airlin":2,"turn":2,"wire":1,"ingredi":1,"meal":2,"riddl":1,"deadliest":1,"happen":2,"secur":1,"ground":1,"co":1,"class":1,"bud":2,"broken":1,"sandra":1,"bullock":1,"aviophobia":1,"haul":1,"secret":1,"bedroom":1,"attend":1,"six":3,"stori":2,"tall":1,"turbul":1,"top":1,"caus":4,"non":1,"fatal":1,"injuri":1,"path":2,"harm":1,"commerci":2,"flew":1,"twice":2,"tire":2,"inflat":1,"psi":1,"temperatur":5,"isol":1,"factor":1,"adject":1,"pirah":1,"doubl":1,"edg":1,"sword":1,"click":1,"commun":3,"turkei":1,"worship":1,"god":1,"paul":1,"rever":2,"shout":1,"olymp":2,"award":1,"medal":1,"art":2,"impost":1,"mari":2,"antoinett":1,"son":1,"napoleon":1,"attack":2,"hord":1,"bunni":1,"ban":1,"smoke":1,"public":1,"govern":1,"liter":1,"poison":1,"prohibit":1,"captain":1,"morgan":2,"fork":1,"seen":1,"sacrilegi":1,"owner":1,"unsink":1,"plot":1,"fidel":1,"castro":1,"cleopatra":1,"egyptian":1,"pope":1,"gregori":1,"iv":1,"declar":1,"war":3,"cat":10,"lamb":1,"richard":1,"nixon":1,"musician":2,"lyndon":1,"johnson":1,"gave":1,"interview":1,"ketchup":1,"medicin":2,"presid":3,"abraham":2,"lincoln":2,"wrestl":1,"hall":1,"fame":1,"4th":2,"independ":1,"licens":1,"bartend":1,"john":2,"adam":1,"face":3,"bill":1,"georg":3,"washington":2,"thoma":1,"edison":1,"didn":3,"betsi":1,"ross":1,"flag":1,"whiskei":1,"distilleri":1,"christian":4,"religi":4,"group":5,"third":1,"muslim":2,"follow":2,"none":2,"hindu":1,"buddhist":1,"youngest":1,"fertil":1,"rise":2,"worldwid":1,"growth":1,"islam":2,"expect":1,"sub":1,"saharan":1,"decad":2,"switch":1,"leav":1,"join":1,"rank":1,"unaffili":1,"paint":10,"oil":2,"date":4,"14th":1,"artist":3,"store":1,"bladder":1,"ii":1,"brought":1,"industri":1,"acryl":3,"becam":1,"avail":2,"week":1,"dry":2,"minut":4,"repaint":1,"sprai":1,"behind":1,"shorter":1,"mozart":1,"cd":1,"beyonc":1,"sing":1,"boost":1,"mood":1,"bond":1,"feel":3,"noth":1,"music":6,"listen":2,"enhanc":1,"perform":1,"rod":1,"stewart":1,"host":1,"free":1,"concert":1,"wanna":1,"spice":1,"girl":1,"catchiest":1,"song":6,"finland":1,"metal":2,"band":2,"capita":1,"astronaut":1,"album":1,"navi":1,"britnei":1,"spear":1,"scare":1,"pirat":1,"jingl":1,"bell":1,"origin":3,"thanksgiv":1,"barri":1,"manilow":1,"write":4,"affect":1,"percept":1,"faster":1,"better":2,"beatl":1,"instrument":1,"metallica":1,"plai":2,"happi":1,"bring":1,"royalti":1,"poetri":4,"sung":1,"recit":1,"rememb":2,"genealog":1,"law":1,"oral":1,"histori":2,"poiesi":1,"hunt":1,"epic":3,"poem":8,"gilgamesh":1,"3rd":1,"millennium":1,"bc":3,"sumer":1,"iraq":1,"mahabharata":1,"indian":1,"earlier":1,"celebr":1,"august":1,"murder":1,"cudmor":1,"edit":1,"milton":1,"poetic":1,"unfriend":1,"mediev":1,"brut":1,"layamon":1,"coincident":1,"muggl":1,"german":1,"gottlob":1,"burmann":1,"despis":1,"avoid":1,"suppress":1,"speech":1,"ann":1,"bradstreet":1,"woman":3,"accomplish":1,"coloni":1,"she":2,"husband":1,"collect":2,"publish":2,"book":2,"event":1,"mona":1,"lisa":1,"mailbox":1,"louvr":1,"love":2,"receiv":1,"colour":2,"wheel":1,"willard":1,"wigan":1,"inhal":1,"street":1,"banksi":1,"tate":1,"museum":1,"social":2,"smart":2,"excel":1,"flexibl":1,"migrat":1,"except":3,"sensori":1,"capabl":1,"sustain":1,"farm":1,"lion":6,"pride":2,"femal":2,"hunter":2,"re":2,"look":2,"guard":1,"territori":2,"roar":1,"heard":1,"eight":2,"scent":2,"wee":1,"border":1,"genom":1,"share":1,"jungl":1,"ancestor":1,"sai":2,"layla":1,"wild":1,"expert":1,"founder":1,"wisdom":1,"scratch":1,"stalk":1,"pounc":1,"chin":1,"urin":1,"sweet":1,"nearsight":1,"peripher":1,"vision":2,"suppos":1,"toe":4,"paw":3,"jump":2,"claw":3,"curv":1,"downward":1,"climb":1,"head":2,"instead":2,"trunk":1,"dog":6,"sniff":1,"breath":2,"incred":1,"swimmer":1,"sweat":1,"muscl":2,"ear":1,"intellig":2,"child":2,"warm":1,"remain":1,"entir":3,"hair":4,"dolphin":2,"hatch":1,"spini":1,"anteat":1,"duckbil":1,"platypu":1,"helpless":1,"care":5,"famou":1,"mother":3,"kangaroo":1,"pouch":1,"mice":1,"parent":2,"drink":1,"milk":1,"ant":1,"eater":1,"teeth":3,"bat":1,"cheetah":4,"run":3,"mph":2,"zoo":1,"meter":1,"dash":1,"fast":3,"stride":1,"perfect":2,"enlarg":1,"lung":3,"nostril":1,"abl":1,"orca":2,"killer":2,"fiercest":1,"polar":1,"featur":1,"aquat":1,"show":2,"koala":1,"eyelid":1,"locomot":1,"definit":2,"famili":3,"offic":1,"marri":2,"civil":1,"partner":1,"cohabit":1,"coupl":2,"children":2,"lone":1,"consist":1,"late":1,"17th":1,"rel":1,"servant":1,"household":1,"go":2,"beat":1,"flow":1,"kidnei":1,"saliva":1,"fill":1,"bathtub":1,"pink":1,"dream":1,"vessel":1,"circl":1,"globe":1,"harder":1,"memori":1,"sunlight":1,"asteroid":1,"jupit":1,"closer":1,"hotter":1,"comet":1,"nearest":1,"proxima":1,"centauri":1,"account":1,"mass":1,"consum":1,"nuclear":1,"fusion":1,"sphere":1,"km":2,"size":2,"doctor":1,"cataract":1,"surgeri":1,"possibl":2,"tackl":1,"scurvi":1,"want":1,"cure":2,"everyth":1,"try":1,"theriac":1,"anaesthesia":1,"cancer":1,"patient":1,"begin":1,"leech":1,"craze":1,"hit":2,"cricket":1,"chirp":1,"sandstorm":1,"swallow":1,"dirt":1,"wind":2,"dust":1,"storm":1,"blizzard":2,"mudslid":1,"vehicl":1,"coldest":1,"offici":1,"brrrr":1,"mild":1,"autumn":1,"weather":1,"often":2,"spider":1,"heatwav":2,"train":1,"track":1,"bend":2,"thunderstorm":2,"rain":1,"grape":1,"raisin":1,"pick":1,"vine":1,"volcan":1,"erupt":1,"raindrop":1,"housefli":1,"30kmph":1,"cape":1,"farewel":1,"greenland":1,"windiest":1,"hurrican":2,"push":1,"6m":1,"ashor":1,"rainfal":1,"kerala":1,"india":1,"snowflak":1,"pellet":1,"florida":1,"usa":1,"captiv":1,"python":1,"escap":1,"worm":1,"wriggl":1,"underground":1,"flood":1,"160kmph":1,"antarctica":1,"hard":1,"whiteout":1,"heavi":1,"snowfal":1,"difficult":1,"next":2,"degre":1,"celsiu":1,"warmest":1,"risk":1,"climat":2,"alreadi":1,"detriment":1,"leader":1,"serious":1,"straight":1,"line":1,"refract":1,"exactli":1,"vacuum":1,"obstruct":1,"atmospher":1,"currenc":1,"mous":1,"syndic":1,"garag":1,"blink":1,"hacker":1,"daili":1,"email":1,"spam":1,"mydoom":1,"gigabyt":1,"guinea":9,"pig":9,"walk":1,"immedi":1,"basic":1,"identifi":1,"throughout":2,"lifetim":2,"womb":1,"although":1,"relat":1,"short":2,"robust":1,"piggish":1,"guyana":1,"rang":1,"period":1,"prefer":1,"nap":1,"fore":1,"compar":1,"hind":3,"forefeet":1,"compani":1,"supplement":1,"dragon":9,"zero":1,"leg":3,"scale":1,"spike":1,"wing":4,"lizard":1,"tail":1,"neck":1,"horn":1,"perhap":1,"fire":1,"substanc":1,"special":1,"hoard":1,"preciou":1,"jewel":1,"hade":1,"monster":2,"mytholog":5,"ar":1,"artemi":1,"theseu":1,"manipul":1,"medusa":2,"zeu":1,"serial":1,"olympian":1,"immort":1,"pandora":1,"aphrodit":1,"went":1,"pegasu":1,"beauti":1,"hors":1,"figur":1,"perseu":1,"slice":1,"uncommon":1,"hybrid":1,"eagl":1,"creatur":2,"griffin":1,"eastern":1,"unusu":1,"aspect":1,"hive":2,"drone":1,"queen":2,"worker":1,"laid":1,"stinger":1,"die":1,"pollen":2,"basket":1,"corbicula":1,"beehiv":1,"forag":2,"nectar":1,"honei":2,"th":1,"teaspoon":1,"pair":1},"stemmer":{},"lastAdded":514,"events":{"_events":{},"_eventsCount":0}} \ No newline at end of file diff --git a/server/data/classifier/training_data.txt b/server/data/classifier/training_data.txt new file mode 100644 index 000000000..f1176926d --- /dev/null +++ b/server/data/classifier/training_data.txt @@ -0,0 +1,518 @@ +my unit-tests failed.|software +tried the program, but it was buggy.|software +the drive has a 2TB capacity.|hardware +i need a new power supply.|hardware +my computer has 2GB of ram.|hardware +universe has a vast amount of planets.|universe +the universe is expanding.|universe +the trees are growing.|botanology +many trees create a forest.|botanology +the amazon is the bigger forest.|botanology +Greece is in Europe.|geography +Europe is a continent.|geography +America is a continent.|geography +Asia is a continent.|geography +Africa is a continent.|geography +There are 5 oceans on earth.|geography +The biggest mountain is the everest.|geography +The biggest lake is the lake Superior.|geography +The eartch has a core inside that is very hot.|geography +The earth is round.|geography +Not all earth's oceans have been explored|geography +The biggest mammal is the blue whale.|animals +The biggest bird is the ostrich.|animals +The biggest fish is the shark.|animals +The biggest snake is the cobra.|animals +The most dangerous snake is the cobra.|animals +The biggest insect is the bee.|animals +Most of the insects are not dangerous, but some are.|animals +People that study biology are known as biologists.|biology +Australia's Great Barrier Reef is the largest living structure on Earth. Reaching over 2000 kilometres (1240 miles) in length.|geography +The first person to see a live cell with a microscope was Antonie van Leeuwenhoek, in 1674.|history +Ecology is the study of ecosystems and how organisms interact with their environment.|school +While some bacteria can make you sick, others have positive benefits such as helping you digest food or even make yoghurt.|biology +Moulds, yeasts and mushrooms are types of fungus.|biology +The common cold is a type of virus.|biology +Viruses can be treated with antiviral drugs.|biology +The human body has a lot of bones.|biology +Bacteria are extremely small and are made up of just one cell.|biology +Bacterial infections can be treated with antibiotics.|biology +Animals that eat plants as their primary food source are known as herbivores.|biology +Animals that eat meat as their primary food source are known as carnivores.|biology +Endangered species are those that are in danger of being completely wiped out, they include blue whales, tigers and pandas. Without protection these species may eventually become extinct.|biology +Born on July 5th 1996, Dolly the sheep was the first mammal to be cloned from an adult cell.|history +When the DNA of an organism changes and results in a new trait (characteristic) it is known as mutation.|biology +French chemist and microbiologist Louis Pasteur was well known for inventing a process to stop various foods and liquids making people sick. Called Pasteurization, it reduces the amount of microorganisms that could lead to disease without having a noticeable effect on taste and quality in a way which methods such as sterilization might.|history +Charles Darwin developed the idea of natural selection, sometimes called survival of the fittest. It is a process that involves living things with favorable traits being more likely to reproduce, passing on their favorable traits to future generations.|biology +An adult human body is made up of ± 100 trillion cells.|biology +Our bone marrow produces 260 billion red blood cells (RBCs) and 135 billion white blood cells (WBCs) per day.|biology +Thirst not only occurs when the body loses a lot of fluids but also occurs due to increased levels of salt in the blood. The reason being salt tends to bind water.|biology +What’s the largest organ of the human body? Quite surprising, but the answer is your skin.|biology +Did you know about the world’s smallest snake? If no, then here’s the answer - the Barbados Thread snake.|animals +Every nucleus in the human body has DNA of 6 feet long.|biology +Magnetoreception is a type of magnetic compass present in some migratory birds that help them navigate using the Earth’s magnetic field.|biology +The jaw is one of the strongest parts of the human body when it comes to exerting force.|biology +The ostrich egg is the biggest in the world. It equals to the volume of as much as 30 chicken eggs.|animals +The life of an eyelash is no more than 5 months.|biology +Armadillos spend about 80% of their life asleep!|animals +Babies born with farsightedness. They start to focus properly only between 3 to 6 months of age.|biology +In seahorses, the male gives birth to a young one.|biology +It is a fact that in a human mouth there are more bacteria than there are in the world.|biology +Alaska Is the Westernmost and Easternmost State in the U.S.|geography +There’s an Lake Within an Island on a Lake Within an Island|geography +Mauna Kea Is Taller Than Everest|geography +Mt. Everest Isn't as Close to the Moon as Mt. Chimborazo|geography +Iceland Is Growing 5 Centimeters Per Year|geography +The Pacific Ocean Is Shrinking at a Rate of 1.5 Percent Per Year|geography +A Good Morning Is a Good Night in Parts of Russia|geography +Los Angeles Is East of Reno, Nevada|geography +Mexico City Is Sinking|geography +Los Angeles and San Francisco Will Be Neighboring Cities|geography +There Are 7,100+ Islands in the Philippines|geography +The Sargasso Sea Has No Coasts|geography +Yellowstone National Park Is Home to a Supervolcano|geography +Sudan Has More Ancient Pyramids Than Egypt|geography +The Largest Rock on the Planet Is in Australia|geography +Damascus is the Oldest Continuously Inhabited City in the World|geography +Africa Spans All Four Hemispheres|geography +Kentucky Has More Caves Than Any Other Place on Earth|geography +Istanbul Is the Only Major City Resting on Two Continents|geography +Alaska Is Home to the Largest Cities in America|geography +The Deepest Place on Earth Is in the Pacific Ocean|geography +Russia's Transsiberian Railway Crosses 3,901 Bridges|geography +It Snows in the Sahara Desert|geography +Fly Over the Great Barrier Reef and You'll See a Heart|geography +Bangkok's Full Name is 163 Letters|geography +The Largest Concentration of Lakes Is in Canada|geography +42 Buildings in New York Have Their Own Zip Codes|geography +Two Islands 2.4 Miles Apart Are 20 Hours Apart|geography +Earth Has Enough Gold to Cover Itself in Its Entirety|geography +Water Covers the Majority of the Planet, but Most of It Can't Be Used by Humans|geography +The Most Remote Place on Earth Is Point Nemo|geography +20% of Oxygen Is Produced by the Amazon|geography +California Is Bigger Than Canada (By Population)|geography +Australia's Red Rock Is Bigger Than You Think|geography +Mount Everest Can Fit Inside the Mariana Trench|geography +The Shortest Town Names Have One Letter|geography +A Town in Nebraska Has a Single Resident|geography +The Country With the Longest Name Has 56 Characters|geography +Greece Has More Than 200 Inhabited Islands|geography +Australia's Alps Get More Snow Than the Swiss Alps|geography +Brazil has derived its name from a tree named brazilwood tree. It is a shortened form of Terra do Brasil, land of Brazil.|geography +Apples have 25% water in their volume! This is why it can float on water because it’s lighter than water.|botanology +The potatoes were first cultivated in Peru almost 7000-10,000 years ago. There are right now almost 1000 different types of tomatoes.|botanology +Vanilla extract comes from percolating of Vanilla pods called as Vanilla planifolia. There is some amount of alcohol present in it for approximately 2-3% of it!|botanology +The most common fruit in the world is the banana.|botanology +Oak trees get struck by lightning the most among all the trees. It is because they are taller than most of the trees.|botanology +Strawberry is the only fruit that bears its seeds on the outside! An average strawberry will have about 200 seeds.|botanology +An average pomegranate has more than 1000 seeds. Pomegranates are used for baking, juice blends and even in alcoholic beverages.|botanology +Dwarf Willow is the tiniest tree in the world which is about two inches. Its scientific name is Salix herbacea.|botanology +Titan Arums is the largest flower in the world! It is even bigger than an elephant being 10 feet high and 3 feet wide.|botanology +The Shenzhen Nongke Orchid claimed the record for most expensive flower ever sold, when it was auctioned off for about $224,000 in 2005. This flower was created by scientists in a university lab, and took 8 years of work to develop. It only blooms every 5 years!|botanology +Potatoes and Tomatoes are grown in the largest amount across the world. However, it is Onions that are the most widely used vegetable being a part of almost all the dishes.|botanology +Caffeine is used as a natural pesticide for plants. It paralyzes and kills the insects feeding on them.|botanology +Cutting an Onion releases a gas called Propanethiol S-oxide, which when mixed with certain enzymes present in Onion, creates a sulfur gas. The gas gets into our eyes while cutting the Onions and that is why you cry!|botanology +The most efficient thing to wake you up in the morning is not Tea or Coffee, it’s Apples. They are packed with high amounts of Vitamins, antioxidants and fiber that makes your body active.|botanology +More than a quarter of plant life (85%) is found in water! Earth is covered widely by marine biomes, estuaries and coral reefs.|botanology +The fastest growing woody plant in the world is Bamboo. It can easily grow upto 35 inches per day.|botanology +The Arabic word for fingers is Banana! The bunch of Bananas is called as hand of bananas and the individual units are the “fingers” of the fruit, hence, the name.|botanology +The largest flower Rafflesia or “corpse flower”. They are 3 feet in diameter and 42 inches in height.|botanology +There is a science of calculating the age of a tree by counting its rings called Dendrochronology. Rings in the steam of a tree are an indicator of its age.|botanology +The word “hundred” comes from the old Norse term, “hundrath”, which actually means 120 and not 100|maths +In a room of 23 people there’s a 50% chance that two people have the same birthday.|maths +Most mathematical symbols weren’t invented until the 16th century. Before that, equations were written in words.|maths +“Forty” is the only number that is spelt with letters arranged in alphabetical order.|maths +Conversely, “one” is the only number that is spelt with letters arranged in descending order.|maths +From 0 to 1000, the only number that has the letter “a” in it is “one thousand”.|maths +‘Four’ is the only number in the English language that is spelt with the same number of letters as the number itself.|maths +Every odd number has an “e” in it.|maths +The reason Americans call mathematics “math”, is because they argue that “mathematics” functions as a singular noun so ‘math’ should be singular too.|maths +Markings on animal bones indicate that humans have been doing maths since around 30,000BC.|history +“Eleven plus two” is an anagram of “twelve plus one” which is pretty fitting as the answer to both equations is 13.|maths +Because of differences in gravity, a 200 pound person would only weigh 76 pounds on Mars.|physics +Electric eels can stun both predators and prey with electric shocks of around 500 volts.|physics +Energy from food is usually measured in joules or calories.|biology +Light from the Earth takes just 1.255 seconds to reach the Moon.|physics +Sound travels at a speed of around 767 miles per hour (1,230 kilometres per hour).|physics +Physics is the science of matter and its behavior.|physics +The word Physics Comes from the Greek word, physikḗ, which means “science of nature.”|glossology +Physics was recognized as a discipline in the 19th century.|history +The Dead Sea is so dense with salt, you can easily float on it without drowning.|geography +The world's densest wood, the Black Ironwood (Olea laurifolia), does not float on water and therefore sinks.|geography +Gravity is by far the weakest force we know.|physics +Gravity and weight are not the same thing.|physics +Gravity makes waves that move at light speed.|physics +Explaining the microscopic behavior of gravity has thrown researchers for a loop.|physics +Gravity might be carried by massless particles called gravitons.|physics +Quantum gravity appears at the smallest length anything can be.|physics +Electricity travels at the speed of light, about 300,000 kilometres per second.|physics +A spark of static electricity can measure up to 3,000 volts.|physics +The average taser emits 50,000 volts.|physics +A bolt of lightning can measure up to three million (3,000,000) volts (and lasts less than one second).|physics +According to the Global Energy Statistical Yearbook, global electricity production for 2015 approached 25,000 terawatt hours (1 terawatt = 1 trillion watts).|physics +The first four common domestic items to be powered by electricity were the sewing machine, fan, kettle and toaster.|physics +LED light bulbs use about one-sixth of the electricity that conventional bulbs do, cost about a quarter as much to use, and last about 40 times longer.|physics +The quantum world is lumpy.|physics +Something can be both wave and particle at the same time.|physics +Objects can be in two places at once.|physics +Quantum Phyiscs may lead us towards a multiverse.|physics +Quantum Phyiscs helps us characterize stars.|physics +You Can’t Directly See a Black Hole.|physics +Our Milky Way Probably Has a Black Hole.|physics +Dying Stars Lead to Stellar Black Holes.|physics +There are Three Categories of Black Holes.|physics +Black Holes Are Funky.|physics +The First Black Hole Wasn’t Discovered Until X-Ray Astronomy was Used.|physics +The Closest Black Hole is Probably Not 1,600 Light-Years Away.|physics +We Don’t Know if Wormholes Exist.|physics +Black Holes Are Only Dangerous if You Get Too Close.|physics +Black Holes Are Constantly Used in Science Fiction.|physics +Our solar system is about 4.5 billion years old.|astronomy +The Moon is drifting away from Earth at a rate of 1.5 inches (3.8 cm) a year.|astronomy +A person who weighs 220 pounds (100 kg) on Earth would weigh only 84 pounds (34 kg) on Mars.|physics +Astronomers have made more than 1.4 million observations using the Hubble Space Telescope.|astronomy +Neutron stars rotate at a speed of 600 times per second.|astronomy +Scientists discovered a hydrogen signal from a galaxy located five billion light-years away.|astronomy +Saturn is made of 96% hydrogen.|astronomy +Enceladus reflects 90% of the Sun’s light.|astronomy +The world’s first speeding ticket was issued in 1902|history +1 in 4 cars on the UK’s road were made in China|cars +A modern Formula 1 car can drive upside down in a tunnel at 120mph|cars +60 million cars are produced every year|cars +1 billion cars are currently in use around the world|cars +The average British driver will spend around 99 days of their life stuck in traffic|cars +It would take less than a month to get to the moon by car|astronomy +The average car contains over 30,000 unique parts|cars +75% of all cars produced by Rolls Royce are still on the road|cars +Volkswagen owns twelve well-known car brands from 7 European countries|cars +The first ever car accident occurred in 1891|history +The largest speeding fine ever produced was €1,000,000|history +The world record for removing and replacing a car engine is 42 seconds|records +The odds of dying in a car accident are around 1 in 5,000|cars +The man who invented cruise control was blind|cars +The highest total mileage clocked by a single car is 2,850,000 million miles|cars +The creaks in your house have little to do with its age.|houses +That space under your lower cabinets serves a very specific purpose.|houses +The cabinet under your sink isn't really for storage.|houses +Your brass doorknobs may keep you healthy.|houses +Those holes on the bottom of your brick house aren't foundation problems that need correcting.|houses +The overhang on your roof is a good thing.|houses +The style of your roof depends on where you live.|houses +You can tell your home's age by its roof.|houses +Your home may have its own bird box.|houses +Your staircase balusters are named after a popular fruit.|houses +Your farmhouse's red exterior is probably paying homage to an old-fashioned tradition.|houses +Your stately Victorian home may have been built from a box.|houses +The bricks on your home's exterior have a very adorable name.|houses +Your textured plaster walls were likely made using real flowers.|houses +Some of the smaller boats used by man today include canoes, kayaks, paddleboats, dinghies, and rowboats. Boats are usually designed for inland waterways such as lakes, rivers, and bays.|boats +Some of the larger boats, sometimes referred to as ships, include cargo ships, cruise ships, military ships, yachts, and sailboats. Ships are usually designed for travel on seas and oceans.|boats +In the Old Testament of King James Bible there are 37 references to ships, and one reference to a boat.|history +Native Americans used to make boats by digging out the inside of a log. These are the earliest canoes.|boats +The oldest boats found by archaeologists are called Pesse canoes. The oldest recovered boat is believed to be between 7,000 and 10,000 years old.|history +Evidence from ancient references exists to prove that boats were used 900,000 years ago and in prehistoric times.|history +Over a century ago steamboats were popular for transporting people and goods along rivers.|history +The hull of a boat is the main body of the boat not including the sail or motor or oars.|boats +The boat's left side is referred to as the port side.|boats +The boat's right side is referred to as the starboard side.|boats +The bow is the boats front, and the boat's back is called the stern.|boats +The boat's width at the widest point from starboard to port side is called its beam.|boats +There are approximately 18 million boats owned by Americans for recreational use today.|boats +Coding has over 700 languages.|programming +Coding Bugs were NOT named after an actual bug.|programming +Coding will soon be as important as reading.|programming +The first programmer was the daughter of a mad poet|history +The first computer virus was a Creeper.|programming +NASA still operates some projects on programming from the 1970’s.|programming +There is BIG money in coding.|programming +It’s all 0’s and 1’s.|programming +You don’t have to work in tech to use coding.|programming +Computer was a job title, and the first programmers were women|history +Coding can “power up” your brain|programming +Some planes can fly for more than five hours after one of their engines goes out.|airplanes +If someone dies on your flight, their body might stay in the cabin with you.|airplanes +In-flight oxygen masks aren't intended to last the whole flight.|airplanes +Pilots frequently fall asleep on the job.|airplanes +Black boxes aren't actually black.|airplanes +Airplane air is significantly drier than any you might experience on earth.|airplanes +A Boeing 747 is more fuel efficient than your car.|airplanes +A hijacker once relinquished control of a flight for beer.|history +An engineer designed a plane with a detachable cabin to save passengers.|airplanes +The dirtiest place on the plane isn't the bathroom.|airplanes +Dead chickens are thrown into plane jets during safety tests.|airplanes +There are thousands of planes over the United States at any moment.|airplanes +Takeoff and landing are the most dangerous times during a flight.|airplanes +The world's largest airplane weighs nearly 600 tons.|airplanes +The safest seats on an aircraft are those at the back of the plane.|airplanes +You are about 7 percent of the distance to space during flights.|airplanes +Airplanes can trigger lightning.|airplanes +Airplane blankets aren't always washed between passengers.|airplanes +A Boeing 747 tank can hold 48,445 gallons of fuel.|airplanes +Dimming the aircraft's lights serves a purpose beyond sleep.|airplanes +Plane exhaust kills more people than plane crashes.|airplanes +Plane doors can't actually open in mid-flight.|airplanes +All pilots who fly internationally must know at least a bit of English.|airplanes +Pointing a laser pointer at a plane is a serious crime.|airplanes +The world's oldest airline will turn 100 in 2019.|history +Airplane bathrooms can be opened from the outside.|airplanes +One airline has had no fatal accidents. +There are 140 miles of wiring inside a Boeing 747.|airplanes +American Airlines saved $40,000 by cutting one ingredient from meals.|airplanes +Airplane water is riddled with bacteria.|airplanes +Some of the deadliest crashes happen when planes are securely on the ground.|airplanes +Pilots and co-pilots eat different meals on a flight.|airplanes +The most expensive First Class seat costs more than $30,000.|airplanes +Your taste buds change in flight.|airplanes +Traveling by plane is the safest way to get around.|airplanes +The sound barrier was broken in 1947.|history +Sandra Bullock and about 2 million other Americans have aviophobia.|airplanes +Long-haul flights have secret bedrooms and a bathroom for flight attendants.|airplanes +The world's smallest plane weighs only 358.8 pounds.|airplanes +The longest military plane is six stories tall.|airplanes +Turbulence is the top cause of non-fatal plane injuries.|airplanes +Living in an airplane flight path could harm your heart.|airplanes +The fastest commercial plane flew at twice the speed of sound.|airplanes +Airplane tires are inflated to about six times the PSI of car tires.|airplanes +There are temperatures too cold to fly in.|airplanes +The Highest Number of Languages in a Country|languages +The Language Isolate Factor|languages +Order of Adjectives in the English language|languages +The Pirahã Language Facts|languages +The Double-edged Sword|languages +Where Clicking Sounds are Enough to Communicate|languages +Turkeys Were Once Worshipped Like Gods|history +Paul Revere Never Actually Shouted, "The British Are Coming!"|history +The Olympics Used to Award Medals for Art.|history +One Time, 100 Imposters Claimed to Be Marie Antoinette's Dead Son|history +Napoleon Was Once Attacked By a Horde of Bunnies|history +Women Were Once Banned from Smoking in Public|history +The Government Literally Poisoned Alcohol During Prohibition|history +Captain Morgan Actually Existed|history +Using Forks Used to Be Seen as Sacrilegious|history +The Titanic's Owners Never Said the Ship Was "Unsinkable"|history +There Were More Than 600 Plots to Kill Fidel Castro|history +Cleopatra Was Not Egyptian|history +Pope Gregory IV Declared a War On Cats|history +Mary Actually Had a Little Lamb|history +Richard Nixon Was a Great Musician|history +Lyndon B. Johnson Gave Interviews From the Bathroom|history +Ketchup Was Sold in the 1830s as Medicine|history +President Abraham Lincoln is in the Wrestling Hall of Fame|history +July 4th Isn't the Real Independence Day|history +Abraham Lincoln Was Also a Licensed Bartender|history +John Adams Was the First President to Live In the White House|history +The First Face on the $1 Bill Was Not George Washington|history +Thomas Edison Didn't Invent the Light Bulb|history +And Betsy Ross Didn't Design and Sew the First American Flag|history +Cars Weren't Invented in the United States|history +George Washington Opened a Whiskey Distillery After His Presidency|history +Christians were the largest religious group in the world in 2015, making up nearly a third (31 percent) of Earth’s 7.3 billion people. Muslims were second, with 1.8 billion people, or 24 percent of the global population, followed by religious "nones" (16 percent), Hindus (15 percent) and Buddhists (7 percent).|religion +Between 2015 and 2060, Muslims – the major religious group with the youngest population and the highest fertility – are projected to increase by 70 percent. The number of Christians is projected to rise by 34 percent.|religion +Much of the worldwide growth of Islam and Christianity is expected to take place in sub-Saharan Africa.|religion +Over the coming decades (2010 to 2050), about 40 million people are projected to switch into Christianity, while 106 million are projected to leave, with most joining the ranks of the religiously unaffiliated.|religion +People have been painting for as long as 30,000 years!|art +The Earliest Known Oil Paintings Date Back to the 14th Century!|art +Artists Used to Store Their Paint in Animal Bladders!|art +World War II Brought Changes To The Paint Industry!|art +Acrylic Paint Only Became Commercially Available In The 50s!|art +Oil Paint Takes 2 Weeks To Dry!|art +Acrylic Paints Take Between 10 Minutes to 2 Hours To Dry!|art +It takes 570 Gallons of Paint to Repaint The White House!|art +Spray paint was invented in the 1949!|art +Acrylic Paint Has A Lot of Big Names Behind It!|art +Musicians Have Shorter Life Spans Than the General Population|music +In 2016, Mozart Sold More CDs than Beyoncé did|music +Singing in a Group Boosts Mood and Creates a Bond|music +Some People Feel Nothing Toward Music When They Listen to It|music +Listening to Music Enhances Physical Performance|music +Rod Stewart Hosted the Largest Ever Free Concert in the World|music +"Wanna Be" by The Spice Girls is the Catchiest Song of All Time|music +Finland Has the Most Metal Bands Per Capita|music +An Astronaut Released an Album with All Songs Recorded in Space|music +The British Navy Uses Britney Spears Songs to Scare Off Pirates|music +"Jingle Bells" Was Originally a Thanksgiving Song|music +Barry Manilow Didn't Write "I Write the Songs"|music +Music Affects Your Perception of the World|music +Music Helps Plants Grow Faster and Better|music +None of The Beatles Could Read or Write Music|music +The Most Expensive Musical Instrument Sold for $15.9 Million in the U.S.|music +Metallica is the First and Only Band to Have Played on All 7 Continents of the World|music +The "Happy Birthday" Song Brings A Bunch of Royalties|music +The earliest forms of poetry predate written language. They were sung or recited to help people remember genealogy, laws, and oral history.|poetry +The word "poetry" is from the Greek term poiesis, which means "making.|languages +Poetry is one of the oldest forms of communication, dating back to prehistoric times with hunting poetry in Africa and ancient Egypt.|poetry +he oldest surviving epic poem is the Epic of Gilgamesh and dates from the 3rd millennium BC in Sumer (now Iraq).|poetry +he longest poem in the world is the Mahabharata. An Indian epic poem dating from the 4th century BC or earlier, the poem has about 1.8 million words.|poetry +Poet's Day is celebrated every August 21.|poetry +The skin of murderer George Cudmore was used to bind an 1852 edition of John Milton's Poetical Works.|poestry +The word "unfriend" first appeared in a 1275 medieval poem titled "Brut" by Layamon. Coincidentally, this is also the same poem in which the word "muggle" first appears.|poestry +German poet Gottlob Burmann so despised the letter "r" that he avoided using it in his poems and suppressed it in his speech during the last 17 years of his life.|poestry +Anne Bradstreet was the first woman to be recognized as an accomplished poet in the British American colonies. After she died, her husband collected her poems and published them as a book, making her the first woman to have a published book in America.|poetry +Art used to be an Olympic event|art +The Mona Lisa has her own mailbox in the Louvre because of all the love letters she receives|art +The colour wheel predates the United States|art +Artist Willard Wigan once inhaled his own work|art +In 2003 street artist Banksy stuck his own work to the wall in the Tate Modern Museum.|art +Fish are social|animals +Fish do remember!|animals +Fish are smart|animals +Fish are excellent communicators|animals +Fish are flexible|animals +Fish can migrate extremely far distances|animals +Fish have exceptional sensory capabilities|animals +Fish are important to sustaining ecosystems|animals +Fish can change colour|animals +Fish as farm animals|animals +Lions are the only cats that live in groups.|animals +A group, or pride, can be up to 30 lions, depending on how much food and water is available.|animals +Female lions are the main hunters. While they’re out looking for food, the males guard the pride’s territory and their young.|animals +A lion’s roar can be heard up to eight kilometres away.|animals +Lions scent mark their territory, using their wee, to create a border.|animals +A house cat’s genome is 95.6 percent tiger, and they share many behaviors with their jungle ancestors, says Layla Morgan Wilde, a cat behavior expert and the founder of Cat Wisdom 101. These behaviors include scent marking by scratching, prey play, prey stalking, pouncing, chinning, and urine marking.|animals +Cats are believed to be the only mammals who don’t taste sweetness.|animals +Cats are nearsighted, but their peripheral vision and night vision are much better than that of humans.|animals +Cats are supposed to have 18 toes (five toes on each front paw; four toes on each back paw).|animals +Cats can jump up to six times their length.|animals +Cats’ claws all curve downward, which means that they can’t climb down trees head-first. Instead, they have to back down the trunk.|animals +Dogs can sniff at the same time as breathing.|animals +Some dogs are incredible swimmers.|animals +Dogs don’t sweat like we do|animals +Your dog could be left or right-pawed|animals +Dogs have 18 muscles controlling their ears|animals +Dogs are about as intelligent as a two-year-old child|animals +Mammals are warm-blooded animals. Their body temperature remains about the same their entire lives.|animals +All mammals have hair, even dolphins and whales that live in the ocean.|animals +Most mammals are born live, not from eggs. There are two mammals that hatch from eggs, including the spiny anteater and the duckbilled platypus.|animals +Most mammals are helpless when they are babies. Adult mammals protect and help care for babies until they can survive on their own. The mammal most famous for caring for their babies is the mother kangaroo who carries their babies in their pouch until they are about one year old. Mammals like mice, only care for their young for about 1 month. Elephants care for their young for a long time, up to 10 years. How long do you think your parents will care for you?|animals +All mammal babies drink milk from their mothers.|animals +All mammals except ant eaters have teeth.|animals +Bats are the only mammals that can fly.|animals +Cheetahs are the fastest land animal and also mammals. The can run up to 70 mph. The fastest cheetah clocked in a zoo for the 100 meter dash is 5.95 seconds which is almost twice as fast as the fastest human recorded. To run this fast the cheetah has a stride length of nearly 22 feet. The long jump record for a human is just over 29 feet. The cheetah has the perfect body for speed and has enlarged lungs, nostrils and heart to be able to get enough oxygen to run fast.|animals +Orca (Killer) whales are one of the fiercest hunters of all animals. They are known to attack whales and even polar bears. Orcas are also very smart and are featured in aquatic shows where they can show off their intelligence|animals +Koalas sleep the longest of any animal. They sleep 22 hours a day.|animals +Dolphin and whale babies do not sleep the first month of their life.|animals +Snakes don't have eyelids.|animals +Snakes have 5 forms of locomotion.|animals +he definition of a ‘family’ used by the Office for National Statistics is “a married, civil partnered or cohabiting couple with or without children, or a lone parent with at least one child”.|history +By that definition, according to the ONS, there were 18.2 million families in the UK in 2012.|history +Of those, 12.2 million consisted of a married couple with or without children.|history +Until the late 17th century, ‘family’ included not only relatives but also the servants of a household.|history +You’re going to be taller in the morning|biology +your heart beats about 100,000 times a day|biology +Your highest blood flow is in your kidneys|biology +You can produce enough saliva to fill two bathtubs a year|biology +Healthy lungs are pink lungs|biology +Dreaming in black and white|biology +Your blood vessels could circle the globe|biology +The average human adult has 2000-4000 taste buds|biology +Your body has more than 600 muscles|biology +In time your brain has a harder time with long-term memories|biology +Solar System is 4.6 Billion Years Old|astronomy +Sunlight Takes Around 8 Minutes To Reach Earth|astronomy +Solar System 2 Light-years Across|astronomy +Planets Are Made of Rock or Gas +Most Asteroids Found Between Mars and Jupiter|astronomy +The Closer To The Sun, The Hotter The Planet|astronomy +One Year Different On Each Planet|astronomy +Comets We See Originate From Within Our Solar System|astronomy +Nearest Star To Earth is Proxima Centauri|astronomy +There Are 100 Billion Solar Systems In Milky Way Galaxy|astronomy +The Sun accounts for 99.86% of the mass in the solar system.|astronomy +Over one million Earth’s could fit inside the Sun.|astronomy +One day the Sun will consume the Earth.|astronomy +The energy created by the Sun’s core is nuclear fusion.|astronomy +The Sun is almost a perfect sphere.|astronomy +The Sun is travelling at 220 km per second.|astronomy +The Sun will eventually be about the size of Earth.|astronomy +It takes eight minutes for light reach Earth from the Sun.|astronomy +Some of the earliest named doctors were women|history +Cataract surgery was possible in the sixth century BC|history +A ‘tree of life’ tackled scurvy|history +If you want a cure for everything, try theriac|history +General anaesthesia helped cancer patients at the beginning of the 19th century|history +A ‘leech craze’ hit 19th-century Europe|history +You can tell the temperature by counting a cricket’s chirps!|weather +Sandstorms can swallow up entire cities.|weather +Dirt mixed with wind can make dust storms called black blizzards.|weather +A mudslide can carry rocks, trees, vehicles and entire buildings!|weather +The coldest temperature ever officially recorded was -89.2°C. Brrrr!|weather +Mild autumn weather often means bigger spiders in our homes.|weather +A heatwave can make train tracks bend!|weather +About 2,000 thunderstorms rain down on Earth every minute.|weather +A 2003 heatwave turned grapes to raisins before they were picked from the vine!|weather +Lightning often follows a volcanic eruption.|weather +Raindrops can be the size of a housefly and fall at more than 30kmph.|weather +Cape Farewell in Greenland is the windiest place on the planet.|weather +Hurricanes can push more than 6m of water ashore.|weather +In July 2001 the rainfall in Kerala, India, was blood red!|weather +Blizzards can make snowflakes feel like pellets hitting your face.|weather +A hurricane in Florida, USA, caused 900 captive pythons to escape.|weather +Worms wriggle up from underground when a flood is coming.|weather +A thunderstorm can produce 160kmph winds!|weather +In Antarctica, snow can fall so hard you can’t see your hand in front of your face.|weather +A whiteout or heavy snowfall that makes it difficult to see, can make you feel sick.|weather +Within the next 2 decades, global temperatures are likely to rise 1.5 degrees Celsius|climate +The last 7 years have been the warmest on record.|climate +More than 1 million species are at risk of extinction by climate change in the next 50 years|climate +Climate change is already happening, and it’s detrimental to human life, too.|climate +Many leaders still aren’t taking it seriously.|climate +Light is made up of energy.|physics +Light travels in a straight line. Objects in its path cause light to bend or refract.|physics +The speed of light is exactly 299 792 km per second.|physics +This is the speed when light is travelling in a vacuum and not obstructed by the atmosphere.|physics +Travelling at the speed of light, you could go around Earth 7.5 times in a second.|physics +The First Computer Weighed More Than 27 Tons|hardware +About 90% of the World’s Currency Only Exists on Computers|programming +The First Computer Mouse was Made of Wood|programming +About 70% of Virus Engineers Work for Organized Crime Syndicates|programming +The First Known Computer Programmer was a Woman|programming +Some of the Biggest Computer Brands Started in Garages|programming +People Blink Less When They Use Computers|programming +Hackers Write About 6,000 New Viruses Each Month|programming +More Than 80% of Daily Emails in the U.S. are Spam|programming +MyDoom is the Most Expensive Computer Virus in History|programming +The Parts for the Modern Computer Were First Invented in 1833|programming +The First Gigabyte Drive Cost $40,000|hardware +Guinea Pigs can live up to 10 years!|animals +At birth, a guinea pig can walk immediately after birth.|animals +There are 3 basic types of domestic guinea pigs, which can be identified by their hair type.|animals +Guinea Pigs are born with teeth that are constantly growing throughout their lifetime.|animals +The guinea pig can open its eyes while in its mother’s womb 14 days before birth.|animals +Although they are called “Guinea Pigs”, they are not closely related to pigs, but named for their short, robust body & piggish appearance. “Guinea” refers to Guyana, a country within their natural range.|animals +Guinea pigs don’t need to sleep for long periods? Instead they prefer to take short naps throughout the day and night|animals +Guinea pigs don’t have the same number of toes on their fore feet compared to their hind feet. They actually have 4 on their forefeet and 3 on their hind feet.|animals +They are very social animals and love the company of others, even humans.|animals +They need a supplement of vitamin c as they do not produce it themselves.|animals +A dragon has zero to four legs, claws, scales, and possibly spikes. It may also have wings.|mythology +A dragon can look like a snake with wings or like lizards.|mythology +A dragon has a tail and a long neck.|mythology +A dragon has a wide mouth with big and dangerous teeth.|mythology +Sometimes they have horns and hair.|mythology +A dragon can usually fly.|mythology +A dragon can perhaps breathe fire (or other dangerous substances).|mythology +A dragon has special powers.|mythology +Some dragons live in caves.|mythology +Dragons hoard precious metals and jewels.|mythology +Hades wasn’t such a monster in Greek mythology|mythology +Ares was not that powerful and Artemis was a killer|mythology +Theseus Was a Manipulator|mythology +Medusa was not the only monster in Greek mythology|mythology +Zeus, the serial predator|mythology +The Olympians were not the first immortals in Greek mythology|mythology +Pandora had a daughter and Aphrodite went to war with her|mythology +We all know that Pegasus is a beautiful, winged horse. But did you know that this popular figure from Greek mythology was born when Perseus sliced off the head of the snake-haired Medusa? It’s an uncommon origin story to say the least.|mythology +A hybrid lion-eagle creature, the griffin was revered in mythology as the king of all creatures, and is found in European, Islamic, and Far Eastern traditions. One of the more unusual aspects of the species is that its claws were believed to cure the blind and have other medicinal powers.|mythology +Bees have 5 eyes|animals +Bees are insects, so they have 6 legs.|animals +Male bees in the hive are called drones|animals +Bees fly about 20 mph|animals +Female bees in the hive (except the queen) are called worker bees|animals +Number of eggs laid by queen: 2,000 per day is the high|animals +Losing its stinger will cause a bee to die|animals +Bees have been here about 30 million years!|animals +Bees carry pollen on their hind legs in a pollen basket or corbicula|animals +An average beehive can hold around 50,000 bees|animals +Foragers must collect nectar from about 2 million flowers to make 1 pound of honey|animals +The average forager makes about 1/12 th of a teaspoon of honey in her lifetime|animals +Average per capita honey consumption in the US is 1.3 pounds +Bees have 2 pairs of wings, one on each side of their body.|animals \ No newline at end of file diff --git a/server/docker-compose.yml b/server/docker-compose.yml new file mode 100644 index 000000000..3cdafe999 --- /dev/null +++ b/server/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3.3' +services: + db: + restart: always + image: postgres + hostname: thoth_db + environment: + POSTGRES_DB: thoth + POSTGRES_USER: thoth + POSTGRES_PASSWORD: thoth_default_pw + ports: + - '5432:5432' diff --git a/server/ecosystem.config.yml b/server/ecosystem.config.yml new file mode 100644 index 000000000..83511b2f0 --- /dev/null +++ b/server/ecosystem.config.yml @@ -0,0 +1,9 @@ +apps: + - name: 'worker' + script: './dist/index.js' + exp_backoff_restart_delay: 100 + instances: 'max' + env: + NODE_ENV: 'development' + env_production: + NODE_ENV: 'production' \ No newline at end of file diff --git a/server/env.template b/server/env.template new file mode 100644 index 000000000..4a4e11ee5 --- /dev/null +++ b/server/env.template @@ -0,0 +1,4 @@ +LATITUDE_NAME= +LATITUDE_PASSWORD= +# API_URL=https://latitude-api-staging.herokuapp.com +API_URL=https://localhost:8001 \ No newline at end of file diff --git a/server/filters/default_bad_words.txt b/server/filters/default_bad_words.txt new file mode 100644 index 000000000..83247c58c --- /dev/null +++ b/server/filters/default_bad_words.txt @@ -0,0 +1,1093 @@ +2 girls 1 cup +2g1c +4chan +4r5e +4ss +5h1t +5hit +8chan +a_s_s +a55 +acrotomophilia +addict +addicted +alabama hot pocket +alaskan pipeline +anal +anilingus +anus +apeshit +ar5e +arrse +arse +arsehole +ass +ass +ass-fucker +ass-hat +ass-jabber +ass-pirate +assbag +assbandit +assbanger +assbite +assclown +asscock +asscracker +asses +assface +assfuck +assfucker +assfukka +assgoblin +asshat +asshead +asshole +assholes +asshopper +assjacker +asslick +asslicker +assmonkey +assmunch +assmuncher +assnigger +asspirate +assshit +assshole +asssucker +asswad +asswhole +asswipe +asphyxiate +asphyxiation +auto erotic +autoerotic +axwound +b!tch +b00bs +b17ch +b1tch +babeland +baby batter +baby juice +ball gag +ball gravy +ball kicking +ball licking +ball sack +ball sucking +ballbag +balls +ballsack +bampot +bangbros +bareback +barely legal +barenaked +bastard +bastardo +bastinado +bbw +bdsm +beaner +beaners +beastial +beastiality +beaver cleaver +beaver lips +bellend +bestial +bestiality +bi+ch +biatch +big black +big breasts +big knockers +big tits +bimbos +birdlock +bitch +bitchass +bitcher +bitchers +bitches +bitchin +bitching +bitchtits +bitchy +black cock +blonde action +blonde on blonde action +bloody +blow job +blow your load +blowjob +blowjobs +blue waffle +blumpkin +boiolas +bollock +bollocks +bollok +bollox +bondage +boner +boob +boobs +booobs +boooobs +booooobs +booooooobs +booty call +breasts +breeder +brotherfucker +brown showers +brunette action +buceta +bugger +bukkake +bulldyke +bullet vibe +bullshit +bum +bumblefuck +bung hole +bunghole +bunny fucker +busty +butt +butt +butt plug +butt-pirate +buttcheeks +buttfucka +buttfucker +butthole +buttmuch +buttplug +c0ck +c0cksucker +camel toe +camgirl +camslut +camwhore +carpet muncher +carpetmuncher +cawk +chesticle +chinc +chink +choad +chocolate rosebuds +chode +cipa +circlejerk +cl1t +cleveland steamer +clit +clit +clitface +clitfuck +clitoris +clits +clover clamps +clusterfuck +cnut +cock +cock-sucker +cockass +cockbite +cockburger +cockeye +cockface +cockfucker +cockhead +cockjockey +cockknoker +cocklump +cockmaster +cockmongler +cockmongruel +cockmonkey +cockmunch +cockmuncher +cocknose +cocknugget +cocks +cockshit +cocksmith +cocksmoke +cocksmoker +cocksniffer +cocksuck +cocksucked +cocksucker +cocksucking +cocksucks +cocksuka +cocksukka +cockwaffle +cok +cokmuncher +coksucka +coochie +coochy +coon +coons +cooter +coprolagnia +coprophilia +cornhole +cox +cracker +crap +creampie +crotte +cum +cum +cumbubble +cumdumpster +cumguzzler +cumjockey +cummer +cumming +cums +cumshot +cumslut +cumtart +cunilingus +cunillingus +cunnie +cunnilingus +cunt +cunt +cuntass +cuntface +cunthole +cuntlick +cuntlicker +cuntlicking +cuntrag +cunts +cuntslut +cutter +cyalis +cyberfuc +cyberfuck +cyberfucked +cyberfucker +cyberfuckers +cyberfucking +d1ck +d1ck +dago +damn +darkie +date rape +daterape +dcik +deep throat +deepthroat +deggo +dendrophilia +dick +dick-sneeze +dickbag +dickbeaters +dickface +dickfuck +dickfucker +dickhead +dickhole +dickjuice +dickmilk  +dickmonger +dicks +dicks +dickslap +dicksucker +dicksucking +dicktickler +dickwad +dickweasel +dickweed +dickwod +dike +dildo +dildos +dingleberries +dingleberry +dink +dinks +dipshit +dirsa +dirty pillows +dirty sanchez +dlck +dog style +dog-fucker +doggie style +doggiestyle +doggin +dogging +doggy style +doggy style +doggystyle +doggystyle +dolcett +domination +dominatrix +dommes +donkey punch +donkeyribber +doochbag +dookie +doosh +double dong +double penetration +doublelift +douche +douche-fag +douchebag +douchewaffle +dp action +drug +drugs +dry hump +duche +dumass +dumb ass +dumbass +dumbass +dumbcunt +dumbfuck +dumbshit +dumshit +dvda +dyke +eat my ass +ecchi +ejaculate +ejaculated +ejaculates +ejaculating +ejaculatings +ejaculation +ejakulate +erotic +erotism +escort +eunuch +f u c k +f u c k e r +f_u_c_k +f4ck +f4nny +fag +fagbag +fagfucker +fagging +faggit +faggitt +faggot +faggotcock +faggs +fagot +fagots +fags +fagtard +fanny +fannyflaps +fannyfucker +fanyy +fatass +fcuk +fcuk +fcuker +fcuking +fecal +feck +fecker +felch +felching +fellate +fellatio +feltch +female squirting +femdom +figging +fingerbang +fingerfuck +fingerfucked +fingerfucker +fingerfuckers +fingerfucking +fingerfucks +fingering +fistfuck +fistfucked +fistfucker +fistfuckers +fistfucking +fistfuckings +fistfucks +fisting +flamer +flange +foah +fook +fooker +foot fetish +footjob +frotting +fucc +fuck +fuck buttons +fuck off +fucka +fuckass +fuckbag +fuckboy +fuckbrain +fuckbutt +fuckbutter +fucked +fucker +fuckers +fuckersucker +fuckface +fuckhead +fuckheads +fuckhole +fuckin +fucking +fuckings +fuckingshitmotherfucker +fuckme +fucknut +fucknutt +fuckoff +fucks +fuckstick +fucktard +fucktards +fucktart +fucktwat +fuckup +fuckwad +fuckwhit +fuckwit +fuckwitt +fudge packer +fudgepacker +fuk +fuk +fuker +fukker +fukkin +fuks +fuktard +fukwhit +fukwit +futanari +fux +fux0r +g-spot +gang bang +gangbang +gangbanged +gangbangs +gay +gay sex +gayass +gaybob +gaydo +gayfuck +gayfuckist +gaylord +gaysex +gaytard +gaywad +genitals +genocide +giant cock +girl on +girl on top +girls gone wild +goatcx +goatse +god damn +god-dam +god-damned +goddamn +goddamned +goddamnit +gokkun +golden shower +goo girl +gooch +goodpoop +gook +goregasm +gringo +grope +group sex +guido +guro +hand job +handjob +hard core +hard on +hardcore +hardcoresex +heeb +heil +hell +hentai +heshe +hitler +ho +hoar +hoare +hoe +hoer +holocaust +homo +homodumbshit +homoerotic +honkey +hooker +hore +horniest +horny +hot carl +hot chick +hotsex +how to kill +how to murder +huge fat +humping +idiot +incest +intercourse +jack off +jack Off +jack-off +jackass +jackoff +jackoff +jaggi +jagoff +jail bait +jailbait +jap +jelly donut +jerk off +jerk off +jerk-off +jerkass +jerkoff +jew +jews +jigaboo +jiggaboo +jiggerboo +jism +jiz +jizm +jizz +juggs +jungle bunny +junglebunny +kawk +kike +kill +killed +killer +kinbaku +kinkster +kinky +kiss +kissed +kissing +knob +knobbing +knobead +knobed +knobend +knobhead +knobjocky +knobjokey +kock +kondum +kondums +kooch +kootch +kraut +kum +kummer +kumming +kums +kunilingus +kunja +kunt +kyke +l3i+ch +l3itch +labia +lameass +lardass +leather restraint +leather straight jacket +lemon party +lesbian +lesbo +lezzie +lick +lmfao +lolita +lovemaking +lust +lusting +m0f0 +m0fo +m45terbate +ma5terb8 +ma5terbate +make me come +male squirting +masochist +master-bate +masterb8 +masterbat +masterbat3 +masterbate +masterbation +masterbations +masturbate +mcfagget +me wet +menage a trois +mick +milf +minge +missionary position +mo-fo +mof0 +mofo +mothafuck +mothafucka +mothafuckas +mothafuckaz +mothafucked +mothafucker +mothafuckers +mothafuckin +mothafucking +mothafuckings +mothafucks +mother fucker +motherfuck +motherfucked +motherfucker +motherfuckers +motherfuckin +motherfucking +motherfuckings +motherfuckka +motherfucks +mound of venus +mr hands +muff +muff diver +muffdiver +muffdiving +munging +murder +mutha +muthafecker +muthafuckker +muther +mutherfucker +naked +nambla +nawashi +nazi +nazi +negro +neonazi +nig nog +nigaboo +nigg4h +nigga +niggah +niggas +niggaz +niglet +nimphomania +nipple +nipples +nob +nob jokey +nobhead +nobjocky +nobjokey +nsfw images +nude +nudity +numbnuts +nut sack +nutsack +nympho +nymphomania +octopussy +omorashi +one cup two girls +one guy one jar +orgasim +orgasims +orgasm +orgasms +orgy +p0rn +paedophile +paki +panooch +panties +panty +pawn +pecker +peckerhead +pedo +pedobear +pedobear +pedophile +pedophile +pee +pegging +penis +penis +penisbanger +penisfucker +penispuffer +phone sex +phonesex +phuck +phuk +phuked +phuking +phukked +phukking +phuks +phuq +piece of shit +pigfucker +pimpis +piss +piss pig +pissed +pissed off +pisser +pissers +pisses +pissflaps +pissin +pissing +pissoff +pisspig +playboy +pleasure chest +pole smoker +polesmoker +pollock +ponyplay +poo +poof +poon +poonani +poonany +poontang +poop +poop +poop chute +poopchute +poopuncher +porch monkey +porchmonkey +porn +porno +pornography +pornos +prick +pricks +prince albert piercing +pron +prostitute +prostitution +psycho +psychopathic +pthc +pube +pubes +punanny +punany +punta +pusse +pussi +pussies +pussy +pussylicking +pussys +pust +puto +qanon +queaf +queef +queer +queerbait +queerhole +quim +raghead +raging boner +rape +raping +rapist +raw dog +rawdog +rectum +renob +retard +retard +retarded +retarded +retardo +reverse cowgirl +rimjaw +rimjob +rimming +rosy palm +rosy palm and her 5 sisters +ruski +rusty trombone +s hit +s_h_i_t +s.o.b. +s&m +sadism +sadist +sand nigger +sandler +sandnigger +sanger +santorum +scat +schlong +scissoring +screwing +scroat +scrote +scrotum +seks +semen +sex +sex +sex +sexo +sexual +sexuality +sexy +sexy +sh!+ +sh!t +sh1t +sh1t +shag +shagger +shaggin +shagging +shaved beaver +shaved pussy +shemale +shi+ +shibari +shit +shitass +shitbag +shitbagger +shitblimp +shitbrains +shitbreath +shitcanned +shitcunt +shitdick +shite +shited +shitey +shitface +shitfaced +shitfuck +shitfull +shithead +shithole +shithouse +shiting +shitings +shits +shitspitter +shitstain +shitted +shitter +shitters +shittiest +shitting +shittings +shitty +shiz +shiznit +shoot +shota +shrimping +skank +skeet +skullfuck +slag +slanteye +slave +slut +slut +slutbag +sluts +smeg +smegma +smut +snatch +snowballing +sociopath +sodomize +sodomy +son-of-a-bitch +spac +spic +spick +splooge +splooge moose +spooge +spook +spread legs +spunk +stab +strap on +strapon +strappado +strip club +style doggy +suckass +sucking +sucks +suicidal +suicide +suicide girls +sultry women +swastika +swinger +t1tt1e5 +t1tties +tainted love +tard +taste my +tea bagging +teabag +teets +teez +testical +testicle +threesome +throating +thundercunt +tied up +tight white +tit +titfuck +tits +titt +tittie5 +tittiefucker +titties +titty +tittyfuck +tittywank +titwank +tongue in a +topless +tosser +touch me +towelhead +tranny +tribadism +tub girl +tubgirl +turd +tushy +tw4t +twat +twat +twathead +twatlips +twats +twatty +twatwaffle +twink +twinkie +two girls one cup +twunt +twunter +unclefucker +undressing +upskirt +urethra +urophilia +v14gra +v1gra +va-j-j +vag +vagina +vagina +vajayjay +venus mound +viagra +vibrator +violet wand +vjayjay +vorarephilia +voyeur +vulva +w00se +wang +wank +wanker +wankjob +wanky +wet dream +wet dreams +wetback +white power +whoar +whore +whore +whorebag +whoreface +willies +willy +wop +wrapping men +wrinkled starfish +xrated +xx +xxx +yaoi +yellow showers +yiffy +zoophilia +zubb \ No newline at end of file diff --git a/server/filters/default_sensitive_phrases.txt b/server/filters/default_sensitive_phrases.txt new file mode 100644 index 000000000..addc658bb --- /dev/null +++ b/server/filters/default_sensitive_phrases.txt @@ -0,0 +1,18 @@ +i love you +i need you +in love with +have feelings +spend time with +spend more time with +i am attracted +to be with +as a couple +meet up +think about you +thought about you +thinking about you +our relationship +perfect for each other +crush on +crushing on +a crush \ No newline at end of file diff --git a/server/filters/default_sensitive_words.txt b/server/filters/default_sensitive_words.txt new file mode 100644 index 000000000..a384e797a --- /dev/null +++ b/server/filters/default_sensitive_words.txt @@ -0,0 +1,68 @@ +abuse +attracted +attractive +ball +balls +beat +beaten +beautiful +bodies +body +boyfriend +couple +cuck +cuckold +children +child +kids +boy +girl +date +dating +desire +embrace +evil +fist +girlfriend +handsome +held +hold +holding +hole +hug +in love +in love with +intimate +lips +love me +love with me +love with you +love you +lover +mouth +pleasure +romance +romantic +sensual +skin +sleep with +sleeping with +suck +stab +tickle +touch +touched +touching +wonderful +your love +gun +knife +glock +pistol +ammo +rifle +bayonet +machete +limbs +weapon +idiot \ No newline at end of file diff --git a/server/filters/leading_statements.txt b/server/filters/leading_statements.txt new file mode 100644 index 000000000..b5b5176a7 --- /dev/null +++ b/server/filters/leading_statements.txt @@ -0,0 +1,20 @@ +can't believe that you +how can you +how could you +how did you +how didn't you +how do you +how would you +why can't you +why did you +why didn't you +why do you +why don't you +why would you +you're such a +your such a +what is my +where do i +how should i +why did i +why would i \ No newline at end of file diff --git a/server/jest.config.js b/server/jest.config.js new file mode 100644 index 000000000..3e848d984 --- /dev/null +++ b/server/jest.config.js @@ -0,0 +1,12 @@ +module.exports = { + roots: [''], + transform: { + '^.+\\.tsx?$': 'ts-jest', + }, + collectCoverage: false, + collectCoverageFrom: ['src/**/*.{js,ts}'], + testPathIgnorePatterns: ['dist', 'node_modules'], + testRegex: '/__tests__/.*\\.test.[jt]sx?$', + moduleFileExtensions: ['ts', 'js', 'json'], + modulePathIgnorePatterns: ['/node_modules', '/dist'], +} diff --git a/server/nodemon.json b/server/nodemon.json new file mode 100644 index 000000000..9c108c79a --- /dev/null +++ b/server/nodemon.json @@ -0,0 +1,18 @@ +{ + "watch": [ + "package.json", + "nodemon.json", + ".eslintrc.json", + ".prettierrc", + "src/", + "node_modules/@latitudegames/" + ], + "execMap": { + "ts": "node -r ts-node/register" + }, + "ignoreRoot": [".git"], + "restartable": "rs", + "verbose": true, + "ext": "js,json,ts", + "ignore": ["*.test.ts", "*.spec.ts"] +} diff --git a/server/package.json b/server/package.json new file mode 100644 index 000000000..ae4cb3ab5 --- /dev/null +++ b/server/package.json @@ -0,0 +1,120 @@ +{ + "name": "@latitudegames/thoth-server", + "version": "0.1.0", + "private": true, + "description": "Backend server for the for AI storytelling toolset, Thoth.", + "main": "index.js", + "author": "tech@latitude.io", + "license": "ISC", + "scripts": { + "build": "yarn clean && tsc", + "coverage": "jest --coverage --silent", + "clean": "rm -rf dist", + "dev": "concurrently \"nodemon src/server.ts\" \"yarn run speech\" \"sleep 1 && yarn run search\" \"sleep 2 && yarn run entity-server\"", + "speech": "nodemon src/speech-server.ts", + "search": "nodemon src/search-server.ts", + "entity-server": "nodemon src/entity-server.ts", + "dev:debug": "nodemon --config nodemon.json --inspect=0.0.0.0:9229 src/server.ts", + "dev2": "TS_NODE_TRANSPILE_ONLY=true nodemon --watch 'src/*.ts' --exec 'ts-node' src/server.ts", + "schema:refresh": "rm -rf sequelize/generated/* && node sequelize/creatorTools.js", + "docs:build": "swagger-cli bundle __docs__/routes.yaml --outfile __docs__/_build/openapi.yaml --type yaml && cd ./__docs__/_build && redoc-cli bundle openapi.yaml && cd ../.. && git add __docs__/_build", + "docs:validate": "swagger-cli validate __docs__/routes.yaml", + "eslint": "eslint --ext .js,.ts .", + "fix": "yarn prettier -- --write && yarn eslint -- --fix", + "lint": "yarn prettier -- --list-different && yarn eslint", + "prettier": "prettier-eslint \"$(pwd)/src/**/*.{js,ts}\" \"$(pwd)/__tests__/**/*.{js,ts}\"", + "reset": "rm -rf ./node_modules && rm yarn.lock && yarn install", + "start": "pm2-runtime start ecosystem.config.yml --env production", + "stop": "pid=$(lsof -ti tcp:8001) && [[ $pid ]] && kill -9 $pid fi", + "test": "jest -o", + "test:full": "jest --clearCache && jest --coverage", + "tsc:noEmit": "tsc --noEmit", + "test:watch": "jest --watch --silent" + }, + "dependencies": { + "@2toad/profanity": "^1.3.1", + "@google-cloud/speech": "^4.10.0", + "@koa/cors": "3.1.0", + "@koa/router": "^10.0.0", + "@types/dotenv-flow": "^3.2.0", + "@types/jsonwebtoken": "^8.5.6", + "aws-sdk": "^2.1027.0", + "axios": "0.24.0", + "bcrypt": "^5.0.1", + "compromise": "^14.0.0", + "cors-anywhere": "^0.4.4", + "crypto-js": "^4.0.0", + "discord.js": "^13.6.0", + "dotenv-flow": "^3.1.0", + "email-validator": "^2.0.4", + "english-anagrams": "^1.0.0", + "global": "^4.4.0", + "gpt-3-encoder": "^1.1.3", + "http-status-codes": "^2.1.4", + "jsdom": "^17.0.0", + "jsonwebtoken": "^8.5.1", + "koa": "^2.13.1", + "koa-body": "4.2.0", + "koa-compose": "4.1.0", + "lodash": "^4.17.21", + "nodemon": "^2.0.7", + "openai-api": "^1.2.5", + "ot-json0": "^1.1.0", + "pg": "8.7.1", + "pg-hstore": "2.3.4", + "pm2": "^5.0.0", + "promise-retry": "^2.0.1", + "request": "^2.88.2", + "request-promise": "^4.2.6", + "sequelize": "^6.15.0", + "sequelize-auto": "^0.8.8", + "similarity": "^1.2.1", + "socket.io": "^4.4.1", + "stripe": "^8.191.0", + "ts-node": "^10.2.1", + "uuid": "^8.3.2", + "verify-apple-id-token": "^2.1.0" + }, + "devDependencies": { + "@types/aws-sdk": "^2.7.0", + "@types/bcrypt": "^5.0.0", + "@types/crypto-js": "^4.0.2", + "@types/jest": "26.0.23", + "@types/koa": "^2.13.1", + "@types/koa__router": "^8.0.4", + "@types/node": "^15.3.0", + "@types/pg": "^7.14.11", + "@types/promise-retry": "^1.1.3", + "@types/request-promise": "^4.1.48", + "@types/supertest": "2.0.11", + "@types/uuid": "^8.3.0", + "@types/validator": "13.6.3", + "@typescript-eslint/eslint-plugin": "4.28.1", + "@typescript-eslint/parser": "4.29.1", + "copyfiles": "2.4.1", + "eslint": "7.29.0", + "eslint-plugin-functional": "3.2.1", + "eslint-plugin-import": "2.23.4", + "eslint-plugin-no-autofix": "1.1.2", + "jasmine-check": "^1.0.0-rc.0", + "jest": "27.0.6", + "jest-mock-extended": "1.0.16", + "lint-staged": ">=10", + "prettier": "2.3.2", + "prettier-eslint": "12.0.0", + "prettier-eslint-cli": "5.0.1", + "redoc-cli": "^0.12.3", + "sequelize-cli": "^6.4.1", + "supertest": "6.1.3", + "swagger-cli": "^4.0.4", + "ts-jest": "27.0.3", + "ts-unused-exports": "^7.0.3", + "typescript": "4.3.5" + }, + "lint-staged": { + "*.ts": [ + "eslint --cache --fix" + ], + "*.{ts,css,md}": "prettier --write" + } +} diff --git a/server/src/cacheManager.ts b/server/src/cacheManager.ts new file mode 100644 index 000000000..7e90bde4e --- /dev/null +++ b/server/src/cacheManager.ts @@ -0,0 +1,104 @@ +import axios from 'axios' +//@ts-ignore +import similarity from 'similarity' + +export class cacheManager { + static instance: cacheManager + + cache: { [key: string]: { [key: string]: any } } = {} + cleanTime: number = -1 + + constructor(cleanTime: number) { + cacheManager.instance = this + this.cleanTime = cleanTime + } + + async get(agent: string, key: string, string: boolean) { + if ( + !this.cache[agent] || + this.cache[agent] === undefined || + this.cache[agent]?.length <= 0 + ) { + console.log('empty') + return undefined + } + + let res = this.cache[agent][key] + if (!res || res === undefined) { + for (var x in this.cache[agent]) { + if (similarity(x, key, { sensitive: false }) > 0.7) { + console.log('similar:', this.cache[agent][x]) + res = this.cache[agent][x] + break + } + } + } + + if (string === true) { + return res + } + + if (!res || res === undefined) { + const docs: string[] = [] + for (var x in this.cache[agent]) { + docs.push(this.cache[agent][x]) + } + + if (docs.length > 0) { + const response = await axios.post( + `https://api.openai.com/v1/engines/ada/search`, + { documents: docs, query: key }, + { + headers: { + 'Content-Type': 'application/json', + Authorization: 'Bearer ' + process.env.OPENAI_API_KEY, + }, + } + ) + + let highestScore = -1 + let highestIndex = -1 + + for (let i = 0; i < response.data.data.length; i++) { + const score = response.data.data[i].score + if (score > highestScore) { + highestScore = score + highestIndex = i + } + } + + if (highestIndex !== -1 && highestScore >= 200) { + console.log( + 'highest:', + docs[response.data.data[highestIndex].document] + ) + res = docs[response.data.data[highestIndex].document] + } + } + } + + return res + } + set(agent: string, key: string, value: any) { + if (this.cache[agent] === undefined) { + this.cache[agent] = {} + } + + this.cache[agent][key] = value + if (this.cleanTime > 0) { + setTimeout(() => { + if (this.cache[agent]?.[key]) { + delete this.cache[agent][key] + } + }, this.cleanTime) + } + } + _delete(agent: string, key: string) { + if (this.cache[agent] && this.cache[agent][key]) { + delete this.cache[agent][key] + } + } + clear() { + this.cache = {} + } +} diff --git a/server/src/cors-server.ts b/server/src/cors-server.ts new file mode 100644 index 000000000..6313e5bc0 --- /dev/null +++ b/server/src/cors-server.ts @@ -0,0 +1,26 @@ +import cors_proxy from 'cors-anywhere' + +//CORs server that is used for the web client to request an agent's image from wikipedia +export class cors_server { + static getInstance: cors_server + + constructor(port: number, host: string) { + cors_server.getInstance = this + + cors_proxy + .createServer({ + originWhitelist: [], + requireHeader: ['origin', 'x-requested-with'], + removeHeaders: ['cookie', 'cookie2'], + redirectSameOrigin: true, + httpProxyOptions: { + // Do not add X-Forwarded-For, etc. headers, because Heroku already adds it. + xfwd: false, + }, + }) + .listen(port, host, function () { + console.log('Running CORS Anywhere on: ' + host + ':' + port) + }) + } +} +export default cors_server diff --git a/server/src/database.ts b/server/src/database.ts new file mode 100644 index 000000000..a4c7af861 --- /dev/null +++ b/server/src/database.ts @@ -0,0 +1,934 @@ +/* eslint-disable no-console */ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable require-await */ +/* eslint-disable no-empty */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable camelcase */ +/* eslint-disable no-param-reassign */ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +import pg from 'pg' +import { + AddClient, + AddConfiguration, + AddScope, + ClientFilterOptions, + ConfigurationFilterOptions, + EditClient, + EditConfiguration, + EditScope, +} from './routes/settings/types' +import { isValidObject, makeUpdateQuery } from './utils/utils' + +function randomInt(min: number, max: number) { + return Math.floor(Math.random() * (max - min + 1)) + min +} + +const { Client } = pg + +const PGSSL = process.env.PGSSL === 'true' +export class database { + static instance: database + + pool: any + client: pg.Client + + constructor() { + database.instance = this + } + + async connect() { + this.client = new Client({ + user: process.env.PGUSER as any, + password: process.env.PGPASSWORD as any, + database: process.env.PGDATABASE as any, + port: process.env.PGPORT as any, + host: process.env.PGHOST, + ssl: PGSSL + ? { + rejectUnauthorized: false, + } + : false, + }) + this.client.connect() + await this.client.query('SELECT NOW()') + } + + async firstInit() { + const check = 'SELECT * FROM "public"."spells"' + const r = await this.client.query(check) + + if (!r || !r.rows || r.rows.length <= 0) { + const cquery = + 'INSERT INTO "public"."spells" ("id","name","graph","created_at","updated_at","deleted_at","user_id","modules","game_state") VALUES (\'3599a8fa-4e3b-4e91-b329-43a907780ea7\',\'default\',\'{"id": "demo@0.1.0", "nodes": {"1": {"id": 1, "data": {"name": "Input", "text": "Input text here", "outputs": [], "socketKey": "98d25387-d2b3-493c-b61c-ec20689fb101", "dataControls": {"name": {"expanded": true}, "useDefault": {"expanded": true}, "playtestToggle": {"expanded": true}}, "playtestToggle": {"outputs": [], "receivePlaytest": false}}, "name": "Universal Input", "inputs": {}, "outputs": {"output": {"connections": [{"data": {"pins": []}, "node": 5, "input": "input"}, {"data": {"pins": []}, "node": 6, "input": "outputs"}]}}, "position": [-558.857827667479, -287.8964566771861]}, "2": {"id": 2, "data": {"name": "Trigger", "socketKey": "5ce31be1-de07-4669-8ca6-61463cb2c74d", "dataControls": {"name": {"expanded": true}}}, "name": "Module Trigger In", "inputs": {}, "outputs": {"trigger": {"connections": [{"data": {"pins": []}, "node": 5, "input": "trigger"}, {"data": {"pins": []}, "node": 6, "input": "trigger"}]}}, "position": [-570.1478847920745, -18.81676187432589]}, "3": {"id": 3, "data": {"socketKey": "6e5d5852-b5a6-410c-8f8c-37ea5a32532b"}, "name": "Module Trigger Out", "inputs": {"trigger": {"connections": []}}, "outputs": {}, "position": [83.9492364030962, -61.88793070021913]}, "5": {"id": 5, "data": {"name": "Output", "socketKey": "1a13b0de-0ec2-40b9-b139-0e44674cf090", "dataControls": {"name": {"expanded": true}}}, "name": "Module Output", "inputs": {"input": {"connections": [{"data": {"pins": []}, "node": 1, "output": "output"}]}, "trigger": {"connections": [{"data": {"pins": []}, "node": 2, "output": "trigger"}]}}, "outputs": {}, "position": [103.51577963166771, -267.8995017050695]}, "6": {"id": 6, "data": {"inputs": [{"name": "outputs", "taskType": "output", "socketKey": "outputs", "socketType": "anySocket", "connectionType": "input"}], "dataControls": {"inputs": {"expanded": true}}}, "name": "State Write", "inputs": {"outputs": {"connections": [{"data": {"pins": []}, "node": 1, "output": "output"}]}, "trigger": {"connections": [{"data": {"pins": []}, "node": 2, "output": "trigger"}]}}, "outputs": {}, "position": [59.65794741138853, -516.9197232909086]}}}\',\'2022-02-04 10:45:31.638981+00\',\'2022-02-04 10:58:13.785909+00\',NULL,\'0\',\'[]\',\'{}\');' + await this.client.query(cquery) + } + } + + async createEvent( + type: string, + agent: any, + client: any, + channel: any, + sender: any, + text: string | any[] + ) { + const query = + 'INSERT INTO events(type, agent, client, channel, sender, text, date) VALUES($1, $2, $3, $4, $5, $6, $7)' + const values = [ + type, + agent, + client, + channel, + sender, + text, + new Date().toUTCString(), + ] + + await this.client.query(query, values) + } + async getEvents( + type: string, + agent: any, + sender: any = null, + client: any, + channel: any, + asString: boolean = true, + maxCount: number = 10 + ) { + const query = + 'SELECT * FROM events WHERE agent=$1 AND client=$2 AND channel=$3 AND type=$4 ORDER BY id desc' + const values = [agent, client, channel, type] + + const row = await this.client.query(query, values) + if (!row || !row.rows || row.rows.length === 0) { + console.log('rows are null, returning') + return asString ? '' : [] + } + + // row.rows.sort(function ( + // a: { date: string | number | Date }, + // b: { date: string | number | Date } + // ) { + // return new Date(b.date) - new Date(a.date) + // }) + + console.log('got ' + row.rows.length + ' rows') + + const now = new Date() + const max_length = maxCount + let data = '' + let count = 0 + for (let i = 0; i < row.rows.length; i++) { + if (!row.rows[i].text || row.rows[i].text.length <= 0) continue + // const messageDate = new Date(row.rows[i].date) + // const diffMs = now - messageDate + // const diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000) + // if (diffMins > 15) { + // break + // } + data += + (type === 'conversation' ? row.rows[i].sender + ': ' : '') + + row.rows[i].text + + (type === 'conversation' ? '\n' : type === 'facts' ? '. ' : '') + count++ + if (count >= max_length) { + break + } + } + console.log('returning data', data) + return asString + ? data.split('\n').reverse().join('\n') + : data.split('\n').reverse() + } + async getAllEvents() { + const query = 'SELECT * FROM events' + const rows = await this.client.query(query) + if (rows && rows.rows && rows.rows.length > 0) return rows.rows + else return [] + } + async getSortedEventsByDate(sortOrder: string) { + const query = 'SELECT * FROM events' + const rows = await this.client.query(query) + if (rows && rows.rows && rows.rows.length > 0) { + rows.rows.sort( + ( + a: { date: string | number | Date }, + b: { date: string | number | Date } + ) => { + if (sortOrder === 'asc') + return new Date(a.date).valueOf() - new Date(b.date).valueOf() + else { + let sortValue = + new Date(b.date).valueOf() - new Date(a.date).valueOf() + return sortValue === 0 ? -1 : sortValue + } + } + ) + return rows.rows + } else return [] + } + async deleteEvent(id: number) { + const query = 'DELETE FROM events WHERE id = $1' + const values = [id] + return await this.client.query(query, values) + } + async updateEvent(id: number, data: { [key: string]: string }) { + const findEventQuery = 'SELECT * FROM events WHERE id = $1' + const findEventQueryValues = [id] + const rows = await this.client.query(findEventQuery, findEventQueryValues) + if (rows && rows.rows && rows.rows.length > 0) { + const { agent, sender, client, channel, text, type, date } = data + const query = `UPDATE events SET agent = $1, sender = $2, client = $3, channel = $4, text = $5, type = $6, date = $7 WHERE id = $8` + const values = [agent, sender, client, channel, text, type, date, id] + console.log('query :: ', query) + const res = await this.client.query(query, values) + return res.rowCount + } else return 0 + } + + async addWikipediaData(agent: any, data: any) { + const query = 'INSERT INTO wikipedia(agent, data) VALUES($1, $2)' + const values = [agent, data] + + await this.client.query(query, values) + } + async getWikipediaData(agent: any) { + const query = 'SELECT * FROM wikipedia WHERE agent=$1' + const values = [agent] + + const rows = await this.client.query(query, values) + if (rows && rows.rows && rows.rows.length > 0) { + return rows.rows[0].data + } else { + return '' + } + } + async wikipediaDataExists(agent: any) { + const query = 'SELECT * FROM wikipedia WHERE agent=$1' + const values = [agent] + + const rows = await this.client.query(query, values) + return rows && rows.rows && rows.rows.length > 0 + } + + async getEntities() { + const query = 'SELECT * FROM entities' + const rows = await this.client.query(query) + return rows.rows + } + async getEntity(id: any) { + const query = 'SELECT * FROM entities WHERE id=$1' + const values = [id] + + const rows = await this.client.query(query, values) + if (rows && rows.rows && rows.rows.length > 0) { + return rows.rows[0] + } else { + return undefined + } + } + async entityExists(id: any) { + const query = 'SELECT * FROM entities WHERE id=$1' + const values = [id] + + const rows = await this.client.query(query, values) + return rows && rows.rows && rows.rows.length > 0 + } + async deleteEntity(id: any) { + const query = 'DELETE FROM entities WHERE id=$1' + const values = [id] + console.log('query called', query, values) + return await this.client.query(query, values) + } + async getLastUpdatedInstances() { + const query = 'SELECT * FROM entities' + + const rows = await this.client.query(query) + if (rows && rows.rows && rows.rows.length > 0) { + const res = [] + for (let i = 0; i < rows.rows.length; i++) { + res.push({ + id: rows.rows[i].id, + lastUpdated: rows.rows[i].updated_at ? rows.rows[i].updated_at : 0, + }) + } + return res + } else { + return [] + } + } + async setEntityDirty(id: any, value: boolean) { + const query = 'UPDATE entities SET dirty=$1 WHERE id=$2' + const values = [value, id] + + await this.client.query(query, values) + } + + async setEntityUpdated(id: any) { + const query = 'UPDATE entities SET updated_at=$1 WHERE id=$2' + const values = [new Date(), id] + + await this.client.query(query, values) + } + async createEntity() { + const query = 'INSERT INTO entities (personality) VALUES ($1)' + const values = ['common'] + console.log('called ', query) + try { + return await this.client.query(query, values) + } catch (e) { + throw new Error(e) + } + } + async updateEntity(id: any, data: { [x: string]: any; dirty?: any }) { + console.log('updateEntity', id, data) + const check = 'SELECT * FROM entities WHERE id=$1' + const cvalues = [id] + + const rows = await this.client.query(check, cvalues) + console.log('rows', id, data) + + if (rows && rows.rows && rows.rows.length > 0) { + data.dirty = 'true' + let q = '' + let dataArray = Object.keys(data) + dataArray.map((key) => { + if (data[key] !== null) { + q += `${key}='${('' + data[key]).replace("'", "''")}',` + } + }) + + const query = 'UPDATE entities SET ' + q + ' updated_at=$1 WHERE id=$2' + const values = [new Date().toUTCString(), id] + console.log('called ', query) + try { + return await this.client.query(query, values) + } catch (e) { + throw new Error(e) + } + } else { + let q = '', cols = '' + let dataArray = Object.keys(data) + dataArray.map((key) => { + if (data[key] !== null) { + cols += `${key},` + q += `'${('' + data[key]).replace("'", "''")}',` + } + }) + cols = cols.slice(0, cols.lastIndexOf(',')) + q = q.slice(0, q.lastIndexOf(',')) + + const query = `INSERT INTO entities(${cols}) VALUES (${q})` + console.log('called ', query) + try { + return await this.client.query(query) + } catch (e) { + throw new Error(e) + } + } + } + + async addDocument( + description: any, + keywords: any, + is_included: any, + storeId: any + ): Promise { + let id = randomInt(0, 100000) + while (await this.documentIdExists(id)) { + id = randomInt(0, 100000) + } + + const query = + 'INSERT INTO documents(id, description, keywords, is_included, store_id) VALUES($1, $2, $3, $4, $5)' + const values = [id, description, keywords, is_included, storeId] + + await this.client.query(query, values) + return id + } + async removeDocument(documentId: string | string[] | undefined) { + const query = 'DELETE FROM documents WHERE id=$1' + const values = [documentId] + + await this.client.query(query, values) + } + async updateDocument( + documentId: any, + description: any, + keywords: any, + is_included: any, + storeId: any + ) { + const query = + 'UPDATE documents SET description=$1, keywords=$2, is_included=$3, store_id=$4 WHERE id=$5' + const values = [description, keywords, is_included, storeId, documentId] + + await this.client.query(query, values) + } + async getDocumentsOfStore( + storeId: string | string[] | undefined + ): Promise { + const query = 'SELECT * FROM documents WHERE store_id=$1 ORDER BY id DESC' + const values = [storeId] + + const rows = await this.client.query(query, values) + if (rows && rows.rows && rows.rows.length > 0) { + return rows.rows + } else { + return [] + } + } + async getAllDocuments(): Promise { + const query = 'SELECT * FROM documents' + + const rows = await this.client.query(query) + if (rows && rows.rows && rows.rows.length > 0) { + return rows.rows + } else { + return [] + } + } + async getAllDocumentsForSearch(): Promise { + const query = 'SELECT * FROM documents WHERE is_included = true' + + const rows = await this.client.query(query) + if (rows && rows.rows && rows.rows.length > 0) { + return rows.rows + } else { + return [] + } + } + async getDocuments(agent: any): Promise { + const query = 'SELECT * FROM documents WHERE agent=$1' + const values = [agent] + + const rows = await this.client.query(query, values) + if (rows && rows.rows && rows.rows.length > 0) { + return rows.rows + } else { + return [] + } + } + async getSingleDocument(docId: any): Promise { + const query = 'SELECT * FROM documents WHERE id=$1' + const values = [docId] + + const rows = await this.client.query(query, values) + + if (rows && rows.rows && rows.rows.length > 0) { + return rows.rows[0] + } else { + return [] + } + } + async getDocumentsWithTopic(agent: any, topic: any): Promise { + const query = 'SELECT * FROM documents WHERE agent=$1 AND topic=$2' + const values = [agent, topic] + + const rows = await this.client.query(query, values) + if (rows && rows.rows && rows.rows.length > 0) { + return rows.rows + } else { + return [] + } + } + async documentIdExists(documentId: any) { + const query = 'SELECT * FROM documents WHERE id=$1' + const values = [documentId] + + const rows = await this.client.query(query, values) + return rows && rows.rows && rows.rows.length > 0 + } + + async addContentObj( + description: any, + keywords: any, + is_included: any, + documentId: any + ): Promise { + let id = randomInt(0, 100000) + while (await this.contentObjIdExists(id)) { + id = randomInt(0, 100000) + } + + const query = + 'INSERT INTO content_objects(id, description, keywords, is_included, document_id) VALUES($1, $2, $3, $4, $5)' + const values = [id, description, keywords, is_included, documentId] + + await this.client.query(query, values) + return id + } + async editContentObj( + objId: any, + description: any, + keywords: any, + is_included: any, + documentId: any + ) { + const query = + 'UPDATE content_objects SET description = $1, keywords = $2, is_included = $3, document_id = $4 WHERE id = $5' + const values = [description, keywords, is_included, documentId, objId] + await this.client.query(query, values) + } + async getContentObjOfDocument( + documentId: string | string[] | undefined + ): Promise { + const query = + 'SELECT * FROM content_objects WHERE document_id = $1 ORDER BY id DESC' + const values = [documentId] + + const rows = await this.client.query(query, values) + if (rows && rows.rows && rows.rows.length > 0) return rows.rows + else return [] + } + async removeContentObject(objId: string | string[] | undefined) { + const query = 'DELETE FROM content_objects WHERE id=$1' + const values = [objId] + + await this.client.query(query, values) + } + async contentObjIdExists(contentObjId: any) { + const query = 'SELECT * FROM content_objects WHERE id=$1' + const values = [contentObjId] + + const rows = await this.client.query(query, values) + return rows && rows.rows && rows.rows.length > 0 + } + + async addDocumentStore(name: any): Promise { + let id = randomInt(0, 100000) + while (await this.documentStoreIdExists(id)) { + id = randomInt(0, 100000) + } + + const query = 'INSERT INTO documents_store(id, name) VALUES($1,$2)' + const values = [id, name] + + await this.client.query(query, values) + return id + } + async updateDocumentStore(storeId: any, name: any) { + const query = 'UPDATE documents_store SET name = $1 WHERE id = $2' + const values = [name, storeId] + await this.client.query(query, values) + } + async removeDocumentStore(storeId: string | string[] | undefined) { + const query = 'DELETE FROM documents_store WHERE id = $1' + const values = [storeId] + await this.client.query(query, values) + } + async getDocumentStores(): Promise { + const query = 'SELECT * FROM documents_store' + const rows = await this.client.query(query) + if (rows && rows.rows && rows.rows.length > 0) return rows.rows + else return [] + } + async getSingleDocumentStore(name: any): Promise { + const query = 'SELECT * FROM documents_store WHERE name=$1' + const values = [name] + + const rows = await this.client.query(query, values) + + if (rows && rows.rows && rows.rows.length > 0) { + return rows.rows[0] + } else { + return [] + } + } + async documentStoreIdExists(documentStoreId: any) { + const query = 'SELECT * FROM documents_store WHERE id=$1' + const values = [documentStoreId] + + const rows = await this.client.query(query, values) + return rows && rows.rows && rows.rows.length > 0 + } + + /* + Section : Settings + Modules : Client, Configuration, Scope + */ + + // Client settings start + + async getClientSettingByName(name: string) { + const query = + 'SELECT id, client, name, type, default_value FROM client_settings WHERE name=$1 AND is_deleted=false' + const values = [name] + + const rows = await this.client.query(query, values) + return rows && rows.rows && rows.rows.length > 0 ? rows.rows[0] : {} + } + + async getClientSettingById(id: string | number): Promise { + const query = + 'SELECT id, client, name, type, default_value FROM client_settings WHERE id=$1 AND is_deleted=false' + const values = [id] + + const rows = await this.client.query(query, values) + return rows && rows.rows && rows.rows.length > 0 ? rows.rows[0] : {} + } + + async getAllClientSetting({ + page, + per_page, + }: ClientFilterOptions): Promise { + let offset = Math.abs( + (per_page as number) * Math.abs((page as number) - 1) + ) as number + + const query = + 'SELECT id, client, name, type, default_value FROM client_settings WHERE is_deleted=false ORDER BY id ASC LIMIT $1 OFFSET $2' + + const rows = await this.client.query(query, [per_page, offset]) + if (rows && rows.rows && rows.rows.length > 0) { + return { data: rows.rows, success: true } + } + return { data: [], success: false } + } + + async addClientSetting(body: AddClient): Promise { + const { client, defaultValue, name, type } = body + + const data = await this.getClientSettingByName(name) + + if (!isValidObject(data)) { + const query = + 'INSERT INTO client_settings(client, name, type, default_value) VALUES($1, $2, $3, $4)' + + const values: any = [client, name, type, defaultValue] + + try { + const res = await this.client.query(query, values) + const { command, rowCount } = res + + if (command === 'INSERT' && rowCount > 0) { + const data = await this.getClientSettingByName(name) + return { success: true, data: data, isAlreadyExists: false } + } + } catch (error) { + console.log('Error => addClientSetting => ', error) + } + return { success: false, data: {}, isAlreadyExists: false } + } + return { success: false, data: data, isAlreadyExists: true } + } + + async editClientSetting(body: EditClient, id: string | number): Promise { + const data = await this.getClientSettingById(id) + + const cols = Object.keys(body).map(key => + key === 'defaultValue' ? 'default_value' : key + ) + + const idKey = cols.length + 1 + + if (isValidObject(data)) { + const query = makeUpdateQuery({ + table: 'client_settings', + wheres: { id: `$${idKey}`, is_deleted: false }, + cols: cols, + }) + + const values: any = [...Object.values(body), id] + + try { + const res = await this.client.query(query, values) + const { command, rowCount } = res + + if (command === 'UPDATE' && rowCount > 0) { + const data = await this.getClientSettingById(id) + return { success: true, data: data, isExists: true } + } + } catch (error) { + console.log('Error => editClientSetting => ', error) + } + return { success: false, data: {}, isExists: true } + } + return { success: false, data: data, isExists: false } + } + + async deleteClientSetting(id: string | number): Promise { + const data = await this.getClientSettingById(id) + + if (isValidObject(data)) { + const query = makeUpdateQuery({ + table: 'client_settings', + wheres: { id: `$2`, is_deleted: false }, + cols: ['is_deleted'], + }) + + const values: any = [true, id] + + try { + const res = await this.client.query(query, values) + const { command, rowCount } = res + + if (command === 'UPDATE' && rowCount > 0) { + const data = await this.getClientSettingById(id) + return { success: true, data: data, isExists: true } + } + } catch (error) { + console.log('Error => deleteClientSetting => ', error) + } + return { success: false, data: {}, isExists: true } + } + return { success: false, data: data, isExists: false } + } + + // Client settings end + + // Configuration settings start + + async getConfigurationSettingByName(key: string) { + const query = + 'SELECT id, key, value FROM configuration_settings WHERE key=$1 AND is_deleted=false' + const values = [key] + + const rows = await this.client.query(query, values) + return rows && rows.rows && rows.rows.length > 0 ? rows.rows[0] : {} + } + + async getAllConfigurationSettings({ + page, + per_page, + }: ConfigurationFilterOptions): Promise { + let offset = Math.abs( + (per_page as number) * Math.abs((page as number) - 1) + ) as number + + const query = + 'SELECT id, key, value FROM configuration_settings WHERE is_deleted=false ORDER BY id ASC LIMIT $1 OFFSET $2' + + const rows = await this.client.query(query, [per_page, offset]) + + if (rows && rows.rows && rows.rows.length > 0) { + return { data: rows.rows, success: true } + } + return { data: [], success: false } + } + + async getConfigurationSettingsById(id: string | number): Promise { + const query = + 'SELECT id, key, value FROM configuration_settings WHERE id=$1 AND is_deleted=false' + const values = [id] + + const rows = await this.client.query(query, values) + return rows && rows.rows && rows.rows.length > 0 ? rows.rows[0] : {} + } + + async addConfigurationSetting(body: AddConfiguration): Promise { + const { value, key } = body + + const data = await this.getConfigurationSettingByName(key) + + if (!isValidObject(data)) { + const query = + 'INSERT INTO configuration_settings(key, value) VALUES($1, $2)' + + const values: any = [key, value] + + try { + const res = await this.client.query(query, values) + const { command, rowCount } = res + + if (command === 'INSERT' && rowCount > 0) { + const data = await this.getConfigurationSettingByName(key) + return { success: true, data: data, isAlreadyExists: false } + } + } catch (error) { + console.log('Error => addConfigurationSetting => ', error) + } + return { success: false, data: {}, isAlreadyExists: false } + } + return { success: false, data: data, isAlreadyExists: true } + } + + async editConfigurationSetting( + body: EditConfiguration, + id: string | number + ): Promise { + const { value, key } = body + + const data = await this.getConfigurationSettingsById(id) + + if (isValidObject(data)) { + const query = makeUpdateQuery({ + table: 'configuration_settings', + wheres: { id: `$${3}`, is_deleted: false }, + cols: ['key', 'value'], + }) + + const values: any = [key, value, id] + + try { + const res = await this.client.query(query, values) + const { command, rowCount } = res + + if (command === 'UPDATE' && rowCount > 0) { + const data = await this.getConfigurationSettingsById(id) + return { success: true, data: data, isExists: true } + } + } catch (error) { + console.log('Error => editConfigurationSetting => ', error) + } + return { success: false, data: {}, isExists: true } + } + return { success: false, data: data, isExists: false } + } + + async deleteConfigurationSetting(id: string | number): Promise { + const data = await this.getConfigurationSettingsById(id) + + if (isValidObject(data)) { + const query = makeUpdateQuery({ + table: 'configuration_settings', + wheres: { id: `$2`, is_deleted: false }, + cols: ['is_deleted'], + }) + + const values: any = [true, id] + + try { + const res = await this.client.query(query, values) + const { command, rowCount } = res + + if (command === 'UPDATE' && rowCount > 0) { + const data = await this.getConfigurationSettingsById(id) + return { success: true, data: data, isExists: true } + } + } catch (error) { + console.log('Error => deleteConfigurationSetting => ', error) + } + return { success: false, data: {}, isExists: true } + } + return { success: false, data: data, isExists: false } + } + + // Configuration settings end + + // Scope settings start + + async getScopeSettingByName(tables: string) { + const query = + 'SELECT id, full_table_size, table_size, tables, record_count FROM scope_settings WHERE tables=$1 AND is_deleted=false' + const values = [tables] + + const rows = await this.client.query(query, values) + return rows && rows.rows && rows.rows.length > 0 ? rows.rows[0] : {} + } + + async getAllScopeSettings({ + page, + per_page, + }: ConfigurationFilterOptions): Promise { + let offset = Math.abs( + (per_page as number) * Math.abs((page as number) - 1) + ) as number + + const query = + 'SELECT id, full_table_size, table_size, tables, record_count FROM scope_settings WHERE is_deleted=false ORDER BY id ASC LIMIT $1 OFFSET $2' + + const rows = await this.client.query(query, [per_page, offset]) + + if (rows && rows.rows && rows.rows.length > 0) { + return { data: rows.rows, success: true } + } + return { data: [], success: false } + } + + async getScopeSettingsById(id: string | number): Promise { + const query = + 'SELECT id, full_table_size, table_size, tables, record_count FROM scope_settings WHERE id=$1 AND is_deleted=false' + const values = [id] + + const rows = await this.client.query(query, values) + return rows && rows.rows && rows.rows.length > 0 ? rows.rows[0] : {} + } + + async addScopeSetting(body: AddScope): Promise { + const { fullTableSize, tableSize, tables, recordCount } = body + + const data = await this.getScopeSettingByName(tables) + + if (!isValidObject(data)) { + const query = + 'INSERT INTO scope_settings(full_table_size, table_size, tables, record_count) VALUES($1, $2, $3, $4)' + + const values: any = [fullTableSize, tableSize, tables, recordCount] + + try { + const res = await this.client.query(query, values) + const { command, rowCount } = res + + if (command === 'INSERT' && rowCount > 0) { + const data = await this.getScopeSettingByName(tables) + return { success: true, data: data, isAlreadyExists: false } + } + } catch (error) { + console.log('Error => addConfigurationSetting => ', error) + } + return { success: false, data: {}, isAlreadyExists: false } + } + return { success: false, data: data, isAlreadyExists: true } + } + + async editScopeSetting(body: EditScope, id: string | number): Promise { + const { tables, fullTableSize, recordCount, tableSize } = body + + const data = await this.getScopeSettingsById(id) + + if (isValidObject(data)) { + const query = makeUpdateQuery({ + table: 'scope_settings', + wheres: { id: `$${5}`, is_deleted: false }, + cols: ['full_table_size', 'table_size', 'tables', 'record_count'], + }) + + const values: any = [fullTableSize, tableSize, tables, recordCount, id] + + try { + const res = await this.client.query(query, values) + const { command, rowCount } = res + + if (command === 'UPDATE' && rowCount > 0) { + const data = await this.getScopeSettingsById(id) + return { success: true, data: data, isExists: true } + } + } catch (error) { + console.log('Error => editScopeSetting => ', error) + } + return { success: false, data: {}, isExists: true } + } + return { success: false, data: data, isExists: false } + } + + async deleteScopeSetting(id: string | number): Promise { + const data = await this.getScopeSettingsById(id) + + if (isValidObject(data)) { + const query = makeUpdateQuery({ + table: 'scope_settings', + wheres: { id: `$2`, is_deleted: false }, + cols: ['is_deleted'], + }) + + const values: any = [true, id] + + try { + const res = await this.client.query(query, values) + const { command, rowCount } = res + + if (command === 'UPDATE' && rowCount > 0) { + const data = await this.getScopeSettingsById(id) + return { success: true, data: data, isExists: true } + } + } catch (error) { + console.log('Error => deleteScopeSetting => ', error) + } + return { success: false, data: {}, isExists: true } + } + return { success: false, data: data, isExists: false } + } + + // Scope settings end +} diff --git a/server/src/databases/creatorTools.ts b/server/src/databases/creatorTools.ts new file mode 100644 index 000000000..9af45b5b2 --- /dev/null +++ b/server/src/databases/creatorTools.ts @@ -0,0 +1,30 @@ +import { Sequelize } from 'sequelize' + +import { initModels } from './models/init-models' + +// TODO: Replace creator tools db with pg host etc + +const creatorToolsUrl = !!process.env.CREATOR_TOOLS_DB_URL && process.env.CREATOR_TOOLS_DB_URL != "" && process.env.CREATOR_TOOLS_DB_URL; +const connectionString = creatorToolsUrl || "postgres://" + process.env.PGUSER + ":" + process.env.PGPASSWORD + "@" + process.env.PGHOST + ":" + process.env.PGPORT + "/" + process.env.PGDATABASE +const sequelize = new Sequelize(creatorToolsUrl || connectionString, { + dialect: 'postgres', + dialectOptions: creatorToolsUrl ? { ssl: { rejectUnauthorized: false } } : {}, + define: { + charset: 'utf8mb4', + collate: 'utf8mb4_unicode_ci', + timestamps: true, + underscored: true, + paranoid: true, + }, + logging: + process.env.LOG_SQL === 'true' + ? (sql, time) => + // eslint-disable-next-line no-console + console.log({ + msg: 'SQL execution info', + context: { time, sql }, + }) + : false, +}) + +export const creatorToolsDatabase = { sequelize, ...initModels(sequelize) } diff --git a/server/src/databases/models/client_settings.ts b/server/src/databases/models/client_settings.ts new file mode 100644 index 000000000..a9c4b3581 --- /dev/null +++ b/server/src/databases/models/client_settings.ts @@ -0,0 +1,115 @@ +import * as Sequelize from 'sequelize' +import { DataTypes, Model, Optional } from 'sequelize' + +export interface clientSettingAttributes { + id: number + client: string + name: string + type: string + defaultValue?: string + createdAt?: Date + updatedAt?: Date + isDeleted?: Boolean +} + +export type clientSettingOptionalAttributes = + | 'createdAt' + | 'updatedAt' + | 'isDeleted' + | 'defaultValue' + +export type clientSettingCreationAttributes = Optional< + clientSettingAttributes, + clientSettingOptionalAttributes +> + +export class clientSettings + extends Model + implements clientSettingAttributes +{ + id: number + client: string + name: string + type: string + defaultValue?: string + createdAt?: Date + updatedAt?: Date + isDeleted?: Boolean + + static initModel(sequelize: Sequelize.Sequelize): typeof clientSettings { + return clientSettings.init( + { + id: { + type: DataTypes.INTEGER, + allowNull: false, + autoIncrement: true, + primaryKey: true, + }, + client: { + type: DataTypes.STRING, + allowNull: false, + primaryKey: false, + unique: false, + validate: { + notEmpty: true, + }, + field: 'client', + }, + name: { + type: DataTypes.STRING, + allowNull: false, + primaryKey: false, + unique: false, + validate: { + notEmpty: true, + }, + field: 'name', + }, + type: { + type: DataTypes.STRING, + allowNull: false, + primaryKey: false, + unique: false, + validate: { + notEmpty: true, + }, + field: 'type', + }, + defaultValue: { + type: DataTypes.STRING, + allowNull: false, + primaryKey: false, + unique: false, + validate: { + notEmpty: false, + }, + field: 'default_value', + }, + createdAt: { + type: DataTypes.DATE, + allowNull: false, + defaultValue: Sequelize.Sequelize.fn('now'), + field: 'created_at', + }, + updatedAt: { + type: DataTypes.DATE, + allowNull: true, + defaultValue: Sequelize.Sequelize.fn('now'), + field: 'updated_at', + }, + isDeleted: { + type: DataTypes.BOOLEAN, + allowNull: false, + field: 'is_deleted', + defaultValue: false, + }, + }, + { + sequelize, + tableName: 'client_settings', + schema: 'public', + timestamps: false, + } + ) + } +} diff --git a/server/src/databases/models/configuration_setting.ts b/server/src/databases/models/configuration_setting.ts new file mode 100644 index 000000000..34b7587da --- /dev/null +++ b/server/src/databases/models/configuration_setting.ts @@ -0,0 +1,95 @@ +import * as Sequelize from 'sequelize' +import { DataTypes, Model, Optional } from 'sequelize' + +export interface configurationSettingAttributes { + id: number + key: string + value: string + createdAt?: Date + updatedAt?: Date + isDeleted?: Boolean +} + +export type configurationSettingOptionalAttributes = + | 'createdAt' + | 'updatedAt' + | 'isDeleted' + +export type configurationSettingCreationAttributes = Optional< + configurationSettingAttributes, + configurationSettingOptionalAttributes +> + +export class configurationSettings + extends Model< + configurationSettingAttributes, + configurationSettingCreationAttributes + > + implements configurationSettingAttributes +{ + id: number + key: string + value: string + createdAt?: Date + updatedAt?: Date + isDeleted?: Boolean + + static initModel( + sequelize: Sequelize.Sequelize + ): typeof configurationSettings { + return configurationSettings.init( + { + id: { + type: DataTypes.INTEGER, + allowNull: false, + autoIncrement: true, + primaryKey: true, + }, + key: { + type: DataTypes.STRING, + allowNull: false, + primaryKey: false, + unique: false, + validate: { + notEmpty: true, + }, + field: 'key', + }, + value: { + type: DataTypes.STRING, + allowNull: false, + primaryKey: false, + unique: false, + validate: { + notEmpty: true, + }, + field: 'value', + }, + createdAt: { + type: DataTypes.DATE, + allowNull: false, + defaultValue: Sequelize.Sequelize.fn('now'), + field: 'created_at', + }, + updatedAt: { + type: DataTypes.DATE, + allowNull: true, + defaultValue: Sequelize.Sequelize.fn('now'), + field: 'updated_at', + }, + isDeleted: { + type: DataTypes.BOOLEAN, + allowNull: false, + field: 'is_deleted', + defaultValue: false, + }, + }, + { + sequelize, + tableName: 'configuration_settings', + schema: 'public', + timestamps: false, + } + ) + } +} diff --git a/server/src/databases/models/content_objects.ts b/server/src/databases/models/content_objects.ts new file mode 100644 index 000000000..670d211dd --- /dev/null +++ b/server/src/databases/models/content_objects.ts @@ -0,0 +1,70 @@ +import * as Sequelize from 'sequelize' +import { DataTypes, Model, Optional } from 'sequelize' + +export interface contentObjAttributes { + id: number + description: string + keywords: string + is_included: boolean + documentId: number +} + +export type contentObjOptionalAttributes = 'description' | 'keywords' +export type contentObjCreationAttributes = Optional< + contentObjAttributes, + contentObjOptionalAttributes +> + +export class contentObj + extends Model + implements contentObjAttributes +{ + id: number + description: string + keywords: string + is_included: boolean + documentId: number + + static initModel(sequelize: Sequelize.Sequelize): typeof contentObj { + return contentObj.init( + { + id: { + type: DataTypes.INTEGER, + allowNull: false, + autoIncrement: false, + primaryKey: true, + }, + description: { + type: DataTypes.TEXT, + allowNull: false, + }, + keywords: { + type: DataTypes.TEXT, + allowNull: false, + }, + is_included: { + type: DataTypes.BOOLEAN, + allowNull: false, + defaultValue: true + }, + documentId: { + type: DataTypes.INTEGER, + allowNull: false, + references: { + model: 'documents', + key: 'id' + }, + field: 'document_id', + onDelete: 'CASCADE', + onUpdate: 'CASCADE' + } + }, + { + sequelize, + tableName: 'content_objects', + schema: 'public', + timestamps: false, + } + ) + } +} diff --git a/server/src/databases/models/deployedSpells.ts b/server/src/databases/models/deployedSpells.ts new file mode 100644 index 000000000..81a33dad3 --- /dev/null +++ b/server/src/databases/models/deployedSpells.ts @@ -0,0 +1,112 @@ +import * as Sequelize from 'sequelize'; +import { DataTypes, Model, Optional } from 'sequelize'; + +export interface deployedSpellsAttributes { + id: string; + name: string; + graph?: object; + createdAt?: Date; + updatedAt?: Date; + deletedAt?: Date; + userId: string; + version: number; + message?: string; + modules?: object; + versionName?: string; +} + +export type deployedSpellsPk = "id"; +export type deployedSpellsId = deployedSpells[deployedSpellsPk]; +export type deployedSpellsOptionalAttributes = "id" | "graph" | "createdAt" | "updatedAt" | "deletedAt" | "version" | "message" | "modules" | "versionName"; +export type deployedSpellsCreationAttributes = Optional; + +export class deployedSpells extends Model implements deployedSpellsAttributes { + id!: string; + name!: string; + graph?: object; + createdAt?: Date; + updatedAt?: Date; + deletedAt?: Date; + userId!: string; + version!: number; + message?: string; + modules?: object; + versionName?: string; + + + static initModel(sequelize: Sequelize.Sequelize): typeof deployedSpells { + deployedSpells.init({ + id: { + type: DataTypes.UUID, + allowNull: false, + defaultValue: DataTypes.UUIDV4, + primaryKey: true + }, + name: { + type: DataTypes.TEXT, + allowNull: false + }, + graph: { + type: DataTypes.JSONB, + allowNull: true + }, + createdAt: { + type: DataTypes.DATE, + allowNull: true, + defaultValue: Sequelize.Sequelize.fn('now'), + field: 'created_at' + }, + updatedAt: { + type: DataTypes.DATE, + allowNull: true, + defaultValue: Sequelize.Sequelize.fn('now'), + field: 'updated_at' + }, + deletedAt: { + type: DataTypes.DATE, + allowNull: true, + field: 'deleted_at' + }, + userId: { + type: DataTypes.TEXT, + allowNull: false, + field: 'user_id' + }, + version: { + type: DataTypes.INTEGER, + allowNull: false, + defaultValue: 0 + }, + message: { + type: DataTypes.TEXT, + allowNull: true + }, + modules: { + type: DataTypes.JSONB, + allowNull: true + }, + versionName: { + type: DataTypes.TEXT, + allowNull: true, + field: 'version_name' + } + }, { + sequelize, + tableName: 'deployed_spells', + schema: 'public', + timestamps: true, + paranoid: true, + underscored: true, + indexes: [ + { + name: "deployed_spells_pkey", + unique: true, + fields: [ + { name: "id" }, + ] + }, + ] + }); + return deployedSpells; + } +} diff --git a/server/src/databases/models/documents.ts b/server/src/databases/models/documents.ts new file mode 100644 index 000000000..51ff174c4 --- /dev/null +++ b/server/src/databases/models/documents.ts @@ -0,0 +1,69 @@ +import * as Sequelize from 'sequelize' +import { DataTypes, Model, Optional } from 'sequelize' + +export interface documentsAttributes { + id: number + description: string + keywords: string + is_included: boolean + storeId: number +} + +export type documentsOptionalAttributes = 'description' | 'keywords' +export type documentsCreationAttributes = Optional< + documentsAttributes, + documentsOptionalAttributes +> + +export class documents + extends Model + implements documentsAttributes { + id: number + description: string + keywords: string + is_included: boolean + storeId: number + + static initModel(sequelize: Sequelize.Sequelize): typeof documents { + return documents.init( + { + id: { + type: DataTypes.INTEGER, + allowNull: false, + autoIncrement: false, + primaryKey: true, + }, + description: { + type: DataTypes.TEXT, + allowNull: false, + }, + keywords: { + type: DataTypes.TEXT, + allowNull: false, + }, + is_included: { + type: DataTypes.BOOLEAN, + allowNull: false, + defaultValue: true + }, + storeId: { + type: DataTypes.INTEGER, + allowNull: false, + references: { + model: 'documents_store', + key: 'id' + }, + field: 'store_id', + onDelete: 'CASCADE', + onUpdate: 'CASCADE' + } + }, + { + sequelize, + tableName: 'documents', + schema: 'public', + timestamps: false, + } + ) + } +} diff --git a/server/src/databases/models/documentstores.ts b/server/src/databases/models/documentstores.ts new file mode 100644 index 000000000..174394cdf --- /dev/null +++ b/server/src/databases/models/documentstores.ts @@ -0,0 +1,41 @@ +import * as Sequelize from 'sequelize' +import { DataTypes, Model, Optional } from 'sequelize' + +export interface documentsStoreAttributes { + id: number + name: string +} + +export type documentsStoreOptionalAttributes = 'name' +export type documentsStoreCreationAttributes = Optional + +export class documentsStore + extends Model + implements documentsStoreAttributes +{ + id: number + name: string + + static initModel(sequelize: Sequelize.Sequelize): typeof documentsStore { + return documentsStore.init( + { + id: { + type: DataTypes.INTEGER, + allowNull: false, + autoIncrement: false, + primaryKey: true, + }, + name: { + type: DataTypes.TEXT, + allowNull: false, + } + }, + { + sequelize, + tableName: 'documents_store', + schema: 'public', + timestamps: false, + } + ) + } +} \ No newline at end of file diff --git a/server/src/databases/models/entities.ts b/server/src/databases/models/entities.ts new file mode 100644 index 000000000..addef4765 --- /dev/null +++ b/server/src/databases/models/entities.ts @@ -0,0 +1,281 @@ +import * as Sequelize from 'sequelize' +import { DataTypes, Model, Optional } from 'sequelize' + +export interface entitiesAttributes { + id?: number + instanceId?: number + personality?: string + enabled?: boolean + updated_at?: string + dirty?: boolean + discord_enabled?: boolean + discord_api_key?: string + discord_starting_words?: string + discord_bot_name_regex?: string + discord_bot_name?: string + discord_empty_responses?: string + discord_spell_handler_incoming?: string + discord_spell_handler_update?: string + discord_spell_handler_feed?: string + use_voice?: boolean + voice_provider?: string + voice_character?: string + voice_language_code?: string + xrengine_enabled?: boolean + xrengine_url?: string + xrengine_spell_handler_incoming?: string + xrengine_spell_handler_update?: string + xrengine_spell_handler_feed?: string + xrengine_bot_name?: string + xrengine_bot_name_regex?: string + xrengine_starting_words?: string + xrengine_empty_responses?: string + twitter_client_enable?: boolean + twitter_token?: string + twitter_id?: string + twitter_app_token?: string + twitter_app_token_secret?: string + twitter_access_token?: string + twitter_access_token_secret?: string + twitter_bot_name?: string + twitter_bot_name_regex?: string +} + +export type entitiesPk = 'id' +export type entitiesId = entities[entitiesPk] +export type entitiesOptionalAttributes = + | 'discord_enabled' + | 'discord_api_key' + | 'discord_starting_words' + | 'discord_bot_name_regex' + | 'discord_bot_name' + | 'discord_empty_responses' + | 'discord_spell_handler_incoming' + | 'discord_spell_handler_update' + | 'discord_spell_handler_feed' + | 'use_voice' + | 'voice_provider' + | 'voice_character' + | 'voice_language_code' + | 'xrengine_enabled' + | 'xrengine_url' + | 'xrengine_spell_handler_incoming' + | 'xrengine_spell_handler_update' + | 'xrengine_spell_handler_feed' + | 'xrengine_bot_name' + | 'xrengine_bot_name_regex' + | 'twitter_client_enable' + | 'twitter_token' + | 'twitter_id' + | 'twitter_app_token' + | 'twitter_app_token_secret' + | 'twitter_access_token' + | 'twitter_access_token_secret' + | 'twitter_bot_name' + | 'twitter_bot_name_regex' + | 'enabled' + | 'updated_at' +export type entitiesCreationAttributes = Optional< + entitiesAttributes, + entitiesOptionalAttributes +> + +export class entities + extends Model + implements entitiesAttributes { + id?: number + instanceId?: number + personality?: string + enabled?: boolean + updated_at?: string + discord_enabled?: boolean + discord_api_key?: string + discord_starting_words?: string + discord_bot_name_regex?: string + discord_bot_name?: string + discord_empty_responses?: string + discord_spell_handler_incoming?: string + discord_spell_handler_update?: string + discord_spell_handler_feed?: string + use_voice?: boolean + voice_provider?: string + voice_character?: string + voice_language_code?: string + xrengine_enabled?: boolean + xrengine_url?: string + xrengine_spell_handler_incoming?: string + xrengine_spell_handler_update?: string + xrengine_spell_handler_feed?: string + xrengine_bot_name?: string + xrengine_bot_name_regex?: string + xrengine_starting_words?: string + xrengine_empty_responses?: string + twitter_client_enable?: boolean + twitter_token?: string + twitter_id?: string + twitter_app_token?: string + twitter_app_token_secret?: string + twitter_access_token?: string + twitter_access_token_secret?: string + twitter_bot_name?: string + twitter_bot_name_regex?: string + + static initModel(sequelize: Sequelize.Sequelize): typeof entities { + return entities.init( + { + id: { + type: DataTypes.INTEGER, + allowNull: false, + autoIncrement: true, + primaryKey: true, + }, + dirty: { + type: DataTypes.BOOLEAN, + allowNull: true, + }, + personality: { + type: DataTypes.TEXT, + allowNull: true, + }, + enabled: { + type: DataTypes.BOOLEAN, + allowNull: true, + }, + updated_at: { + type: DataTypes.TEXT, + allowNull: true, + }, + discord_enabled: { + type: DataTypes.BOOLEAN, + allowNull: true, + }, + discord_api_key: { + type: DataTypes.TEXT, + allowNull: true, + }, + discord_starting_words: { + type: DataTypes.TEXT, + allowNull: true, + }, + discord_bot_name_regex: { + type: DataTypes.TEXT, + allowNull: true, + }, + discord_bot_name: { + type: DataTypes.TEXT, + allowNull: true, + }, + discord_empty_responses: { + type: DataTypes.TEXT, + allowNull: true, + }, + discord_spell_handler_incoming: { + type: DataTypes.TEXT, + allowNull: true, + }, + use_voice: { + type: DataTypes.BOOLEAN, + allowNull: true, + }, + voice_provider: { + type: DataTypes.TEXT, + allowNull: true, + }, + voice_character: { + type: DataTypes.TEXT, + allowNull: true, + }, + voice_language_code: { + type: DataTypes.TEXT, + allowNull: true, + }, + discord_spell_handler_update: { + type: DataTypes.TEXT, + allowNull: true, + }, + discord_spell_handler_feed: { + type: DataTypes.TEXT, + allowNull: true, + }, + xrengine_enabled: { + type: DataTypes.BOOLEAN, + allowNull: true, + }, + xrengine_url: { + type: DataTypes.TEXT, + allowNull: true, + }, + xrengine_spell_handler_incoming: { + type: DataTypes.TEXT, + allowNull: true, + }, + xrengine_spell_handler_update: { + type: DataTypes.TEXT, + allowNull: true, + }, + xrengine_spell_handler_feed: { + type: DataTypes.TEXT, + allowNull: true, + }, + xrengine_bot_name: { + type: DataTypes.TEXT, + allowNull: true, + }, + xrengine_bot_name_regex: { + type: DataTypes.TEXT, + allowNull: true, + }, + xrengine_starting_words: { + type: DataTypes.TEXT, + allowNull: true, + }, + xrengine_empty_responses: { + type: DataTypes.TEXT, + allowNull: true, + }, + twitter_client_enable: { + type: DataTypes.BOOLEAN, + allowNull: true, + }, + twitter_token: { + type: DataTypes.TEXT, + allowNull: true, + }, + twitter_id: { + type: DataTypes.TEXT, + allowNull: true, + }, + twitter_app_token: { + type: DataTypes.TEXT, + allowNull: true, + }, + twitter_app_token_secret: { + type: DataTypes.TEXT, + allowNull: true, + }, + twitter_access_token: { + type: DataTypes.TEXT, + allowNull: true, + }, + twitter_access_token_secret: { + type: DataTypes.TEXT, + allowNull: true, + }, + twitter_bot_name: { + type: DataTypes.TEXT, + allowNull: true, + }, + twitter_bot_name_regex: { + type: DataTypes.TEXT, + allowNull: true, + }, + }, + { + sequelize, + tableName: 'entities', + schema: 'public', + timestamps: false, + } + ) + } +} diff --git a/server/src/databases/models/events.ts b/server/src/databases/models/events.ts new file mode 100644 index 000000000..c95fa6be3 --- /dev/null +++ b/server/src/databases/models/events.ts @@ -0,0 +1,62 @@ +import * as Sequelize from 'sequelize'; +import { DataTypes, Model, Optional } from 'sequelize'; + +export interface eventsAttributes { + type?: string; + agent?: string; + client?: string; + channel?: string; + sender?: string; + text?: string; + date?: string; +} + +export type eventsOptionalAttributes = "agent" | "client" | "channel" | "sender" | "text" | "date"; +export type eventsCreationAttributes = Optional; + +export class events extends Model implements eventsAttributes { + agent?: string; + client?: string; + channel?: string; + sender?: string; + text?: string; + date?: string; + + static initModel(sequelize: Sequelize.Sequelize): typeof events { + return events.init({ + type: { + type: DataTypes.TEXT, + allowNull: true + }, + agent: { + type: DataTypes.TEXT, + allowNull: true + }, + client: { + type: DataTypes.TEXT, + allowNull: true + }, + channel: { + type: DataTypes.TEXT, + allowNull: true + }, + sender: { + type: DataTypes.TEXT, + allowNull: true + }, + text: { + type: DataTypes.TEXT, + allowNull: true + }, + date: { + type: DataTypes.TEXT, + allowNull: true + } + }, { + sequelize, + tableName: 'events', + schema: 'public', + timestamps: false + }); + } +} diff --git a/server/src/databases/models/init-models.ts b/server/src/databases/models/init-models.ts new file mode 100644 index 000000000..f7e271ec6 --- /dev/null +++ b/server/src/databases/models/init-models.ts @@ -0,0 +1,114 @@ +import type { Sequelize } from 'sequelize' +import type { entitiesAttributes, entitiesCreationAttributes } from './entities' +import { entities as _entities } from './entities' +import type { spellsAttributes, spellsCreationAttributes } from './spells' +import { spells as _spells } from './spells' +import type { eventsAttributes, eventsCreationAttributes } from './events' +import { events as _events } from './events' +import type { + deployedSpellsAttributes, + deployedSpellsCreationAttributes, +} from './deployedSpells' +import { deployedSpells as _deployedSpells } from './deployedSpells' +import type { + documentsAttributes, + documentsCreationAttributes, +} from './documents' +import { documents as _documents } from './documents' +import type { + documentsStoreAttributes, + documentsStoreCreationAttributes, +} from './documentstores' +import { documentsStore as _documentsStore } from './documentstores' +import type { + contentObjAttributes, + contentObjCreationAttributes, +} from './content_objects' +import { contentObj as _contentObj } from './content_objects' +import type { + wikipediaAttributes, + wikipediaCreationAttributes, +} from './wikipedia' +import { wikipedia as _wikipedia } from './wikipedia' +import type { + clientSettingCreationAttributes, + clientSettingAttributes, +} from './client_settings' +import { clientSettings as _clientSettings } from './client_settings' +import type { + configurationSettingAttributes, + configurationSettingCreationAttributes, +} from './configuration_setting' +import { configurationSettings as _configurationSettings } from './configuration_setting' +import type { + scopeSettingAttributes, + scopeSettingCreationAttributes, +} from './scope_settings' +import { scopeSettings as _scopeSettings } from './scope_settings' + +export { + _entities as entities, + _spells as spells, + _events as events, + _deployedSpells as deployedSpells, + _documents as documents, + _documentsStore as documentsStore, + _contentObj as contentObj, + _wikipedia as wikipedia, + _clientSettings as clientSettings, + _configurationSettings as configurationSettings, + _scopeSettings as scopeSettings, +} + +export type { + entitiesAttributes, + entitiesCreationAttributes, + spellsAttributes, + spellsCreationAttributes, + eventsAttributes, + eventsCreationAttributes, + deployedSpellsAttributes, + deployedSpellsCreationAttributes, + documentsAttributes, + documentsCreationAttributes, + documentsStoreAttributes, + documentsStoreCreationAttributes, + contentObjAttributes, + contentObjCreationAttributes, + wikipediaAttributes, + wikipediaCreationAttributes, + clientSettingCreationAttributes, + clientSettingAttributes, + configurationSettingAttributes, + configurationSettingCreationAttributes, + scopeSettingAttributes, + scopeSettingCreationAttributes, +} + +export function initModels(sequelize: Sequelize) { + const entities = _entities.initModel(sequelize) + const spells = _spells.initModel(sequelize) + const events = _events.initModel(sequelize) + const deployedSpells = _deployedSpells.initModel(sequelize) + const documentsStore = _documentsStore.initModel(sequelize) + const documents = _documents.initModel(sequelize) + const contentObj = _contentObj.initModel(sequelize) + const wikipedia = _wikipedia.initModel(sequelize) + const clientSettings = _clientSettings.initModel(sequelize) + const configurationSettings = _configurationSettings.initModel(sequelize) + const scopeSettings = _scopeSettings.initModel(sequelize) + + return { + entities: entities, + spells: spells, + events: events, + deployedSpells: deployedSpells, + contentObj: contentObj, + documents: documents, + documentsStore: documentsStore, + wikipedia: wikipedia, + clientSettings: clientSettings, + configurationSettings: configurationSettings, + scopeSettings: scopeSettings, + } +} diff --git a/server/src/databases/models/scope_settings.ts b/server/src/databases/models/scope_settings.ts new file mode 100644 index 000000000..0a0a59113 --- /dev/null +++ b/server/src/databases/models/scope_settings.ts @@ -0,0 +1,118 @@ +import * as Sequelize from 'sequelize' +import { DataTypes, Model, Optional } from 'sequelize' + +export interface scopeSettingAttributes { + id: number + tables: string + fullTableSize?: string + tableSize?: string + recordCount?: string + createdAt?: Date + updatedAt?: Date + isDeleted?: Boolean +} + +export type scopeSettingOptionalAttributes = + | 'createdAt' + | 'updatedAt' + | 'isDeleted' + | 'recordCount' + +export type scopeSettingCreationAttributes = Optional< + scopeSettingAttributes, + scopeSettingOptionalAttributes +> + +export class scopeSettings + extends Model + implements scopeSettingAttributes +{ + id: number + tables: string + fullTableSize?: string + tableSize?: string + recordCount?: string + createdAt?: Date + updatedAt?: Date + isDeleted?: Boolean + + static initModel(sequelize: Sequelize.Sequelize): typeof scopeSettings { + return scopeSettings.init( + { + id: { + type: DataTypes.INTEGER, + allowNull: false, + autoIncrement: true, + primaryKey: true, + }, + tables: { + type: DataTypes.STRING, + allowNull: false, + primaryKey: false, + unique: false, + validate: { + notEmpty: true, + }, + field: 'tables', + }, + fullTableSize: { + type: DataTypes.STRING, + allowNull: false, + primaryKey: false, + unique: false, + validate: { + notEmpty: true, + }, + defaultValue: '0 Bytes', + field: 'full_table_size', + }, + tableSize: { + type: DataTypes.STRING, + allowNull: false, + primaryKey: false, + unique: false, + validate: { + notEmpty: true, + }, + defaultValue: '0 Bytes', + field: 'table_size', + }, + recordCount: { + type: DataTypes.STRING, + allowNull: false, + primaryKey: false, + unique: false, + validate: { + notEmpty: false, + }, + defaultValue: '0', + field: 'record_count', + }, + createdAt: { + type: DataTypes.DATE, + allowNull: false, + defaultValue: Sequelize.Sequelize.fn('now'), + field: 'created_at', + }, + updatedAt: { + type: DataTypes.DATE, + allowNull: true, + defaultValue: Sequelize.Sequelize.fn('now'), + field: 'updated_at', + }, + isDeleted: { + type: DataTypes.BOOLEAN, + allowNull: false, + field: 'is_deleted', + defaultValue: false, + }, + }, + { + sequelize, + tableName: 'scope_settings', + schema: 'public', + timestamps: false, + } + ) + } +} diff --git a/server/src/databases/models/spells.ts b/server/src/databases/models/spells.ts new file mode 100644 index 000000000..59402abd8 --- /dev/null +++ b/server/src/databases/models/spells.ts @@ -0,0 +1,107 @@ +import * as Sequelize from 'sequelize'; +import { DataTypes, Model, Optional } from 'sequelize'; + +export interface spellsAttributes { + id: string; + name: string; + graph?: object; + createdAt?: Date; + updatedAt?: Date; + deletedAt?: Date; + userId: string; + modules?: object; + gameState?: object; +} + +export type spellsPk = "id"; +export type spellsId = spells[spellsPk]; +export type spellsOptionalAttributes = "id" | "graph" | "createdAt" | "updatedAt" | "deletedAt" | "modules" | "gameState"; +export type spellsCreationAttributes = Optional; + +export class spells extends Model implements spellsAttributes { + id!: string; + name!: string; + graph?: object; + createdAt?: Date; + updatedAt?: Date; + deletedAt?: Date; + userId!: string; + modules?: object; + gameState?: object; + + + static initModel(sequelize: Sequelize.Sequelize): typeof spells { + spells.init({ + id: { + type: DataTypes.UUID, + allowNull: false, + defaultValue: DataTypes.UUIDV4, + primaryKey: true + }, + name: { + type: DataTypes.TEXT, + allowNull: false, + unique: "spells_name_key" + }, + graph: { + type: DataTypes.JSONB, + allowNull: true + }, + createdAt: { + type: DataTypes.DATE, + allowNull: true, + defaultValue: Sequelize.Sequelize.fn('now'), + field: 'created_at' + }, + updatedAt: { + type: DataTypes.DATE, + allowNull: true, + defaultValue: Sequelize.Sequelize.fn('now'), + field: 'updated_at' + }, + deletedAt: { + type: DataTypes.DATE, + allowNull: true, + field: 'deleted_at' + }, + userId: { + type: DataTypes.TEXT, + allowNull: false, + field: 'user_id' + }, + modules: { + type: DataTypes.JSONB, + allowNull: true + }, + gameState: { + type: DataTypes.JSONB, + allowNull: true, + field: 'game_state' + } + }, { + sequelize, + tableName: 'spells', + schema: 'public', + timestamps: true, + paranoid: true, + underscored: true, + indexes: [ + { + name: "spells_name_key", + unique: true, + fields: [ + { name: "name" }, + ] + }, + { + name: "spells_pkey", + unique: true, + fields: [ + { name: "id" }, + ] + }, + ] + }); + return spells; + } +} \ No newline at end of file diff --git a/server/src/databases/models/wikipedia.ts b/server/src/databases/models/wikipedia.ts new file mode 100644 index 000000000..2f6e78950 --- /dev/null +++ b/server/src/databases/models/wikipedia.ts @@ -0,0 +1,34 @@ +import * as Sequelize from 'sequelize'; +import { DataTypes, Model, Optional } from 'sequelize'; + +export interface wikipediaAttributes { + agent?: string; + _data?: string; +} + +export type wikipediaOptionalAttributes = "agent" | "_data"; +export type wikipediaCreationAttributes = Optional; + +export class wikipedia extends Model implements wikipediaAttributes { + agent?: string; + _data?: string; + + + static initModel(sequelize: Sequelize.Sequelize): typeof wikipedia { + return wikipedia.init({ + agent: { + type: DataTypes.TEXT, + allowNull: true + }, + _data: { + type: DataTypes.TEXT, + allowNull: true + } + }, { + sequelize, + tableName: 'wikipedia', + schema: 'public', + timestamps: false + }); + } +} diff --git a/server/src/entities/CreateSpellHandler.ts b/server/src/entities/CreateSpellHandler.ts new file mode 100644 index 000000000..01b7b8fbf --- /dev/null +++ b/server/src/entities/CreateSpellHandler.ts @@ -0,0 +1,229 @@ +import { + buildThothInterface, + extractModuleInputKeys, + extractNodes, +} from '../routes/spells/runSpell' +import { creatorToolsDatabase } from '../databases/creatorTools' +import { CustomError } from '../utils/CustomError' +import { getComponents } from '@latitudegames/thoth-core/src/components/components' +import { Graph, ModuleComponent } from '../routes/spells/types' +import { initSharedEngine } from '@latitudegames/thoth-core/src/engine' +import { Module } from '../routes/spells/module' +import { ModuleType } from '@latitudegames/thoth-core/types' +import { Task } from '@latitudegames/thoth-core/src/plugins/taskPlugin' +import { StringDataType } from 'sequelize/types' + +export const CreateSpellHandler = async (props: { + spell: any + version: string +}) => { + // TODO: create a proper engine interface with the proper methods types on it. + console.log( + 'Creating Spell Handler', + 'spell:', + props.spell, + 'version:', + props.version + ) + + const engine = initSharedEngine({ + name: 'demo@0.1.0', + components: getComponents(), + server: true, + modules: {}, + }) as any + + let rootSpell + if (!props.spell || props.spell === undefined) { + props.spell = 'default' + } + if (!props.version || props.version === undefined) { + props.version = 'latest' + } + + const { spell, version = 'latest' } = props + + rootSpell = await creatorToolsDatabase.spells.findOne({ + where: { name: spell }, + }) + + // eslint-disable-next-line functional/no-let + let activeSpell + + if (version === 'latest') { + console.log('latest') + activeSpell = rootSpell + } else { + console.log('getting active spell') + activeSpell = await creatorToolsDatabase.deployedSpells.findOne({ + where: { name: spell, version }, + }) + } + + //todo validate spell has an input trigger? + if (!activeSpell?.graph) { + throw new CustomError( + 'not-found', + `Spell with name ${spell} and version ${version} not found` + ) + } + + // TODO use test spells if body option is given + // const activeSpell = getTestSpell(spell) + const graph = activeSpell.graph as Graph + const modules = activeSpell.modules as Module[] + + const gameState = { + ...rootSpell?.gameState, + } + + const thoth = buildThothInterface(null as any, gameState) + + // The module is an interface that the module system uses to write data to + // used internally by the module plugin, and we make use of it here too. + // TODO: Test runing nested modules and watch out for unexpected behaviour + // when child modules overwrite this with their own. + const module = new Module() + // Parse array of modules into a map of modules by module name + const moduleMap = modules?.reduce((modules: any, module: any) => { + modules[module.name] = module + return modules + }, {} as Record) + // Update the modules available in the module manager during the graph run time + + engine.moduleManager.setModules(moduleMap) + + // ThothContext: map of services expected by Thoth components, + // allowing client and server provide different sets of helpers that match the common interface + // EngineContext passed down into the engine and is used by workers. + const context = { + module, + thoth, + silent: true, + } + + // Collect all the "trigger ins" that the module manager has gathered + const triggerIns = engine.moduleManager.triggerIns + + function getFirstNodeTrigger(data: Graph) { + const extractedNodes = extractNodes(data.nodes, triggerIns) + return extractedNodes[0] + } + + // Standard default component to start the serverside run sequence from, which has the run function on it. + const component = engine.components.get( + 'Module Trigger In' + ) as ModuleComponent as any + + // Defaulting to the first node trigger to start our "run" + const triggeredNode = getFirstNodeTrigger(graph) as any + + // Engine process to set up the tasks and prime the system for the first 'run' command. + await engine.process(graph, null, context) + + const formattedOutputs: Record = {} + // Eventual outputs of running the Spell + const rawOutputs = {} as Record + + const inputKeys = extractModuleInputKeys(graph) as string[] + + // Return this-- this is the callback for discord, xrengine, etc to handle chat + async function spellHandler( + message: string, + speaker: string, + agent: string, + client: string, + channelId: string, + entity: any, + roomInfo: { + user: string + inConversation: boolean + isBot: boolean + info3d: string + }[] + ) { + const spellInputs = { + Input: message, + Speaker: speaker, + Agent: agent, + Client: client, + ChannelID: channelId, + Entity: entity, + RoomInfo: roomInfo, + } as any + + console.log('********** spellInputs are') + console.log(spellInputs) + + // TODO: Remove this line + // TEST CASE: Chatting with agent on Discord doesn't get same response over and over + // This resets everything and makes it work, BUT it is very slow + // We need to reset the task outputs (and tasks in general) without + // calling this function here + + let error = null + const inputs = inputKeys.reduce((inputs, expectedInput: string) => { + const requestInput = spellInputs + + if (requestInput) { + inputs[expectedInput] = [requestInput] + + return inputs + } else { + error = `Spell expects a value for ${expectedInput} to be provided ` + // throw new CustomError( + // 'input-failed', + // error + // ) + } + }, {} as Record) + + engine.tasks.forEach((task: Task) => { + task.reset() + }) + + // Attaching inputs to the module, which are passed in when the engine runs. + // you can see this at work in the 'workerInputs' function of module-manager + // work inputs worker reads from the module inputs via the key in node.data.name + // important to note: even single string values are wrapped in arrays due to match the client editor format + module.read(inputs as any) + + await component.run(triggeredNode) + + // Write all the raw data that was output by the module run to an object + module.write(rawOutputs) + + console.log('rawOutputs are', JSON.stringify(rawOutputs)) + + const outputs = Object.values(graph.nodes).filter((node: any) => { + return node.name.includes('Output') + }) + + console.log('outputs are', JSON.stringify(outputs)) + + // Format raw outputs based on the names assigned to Module Outputs node data in the graph + Object.values(graph.nodes) + .filter((node: any) => { + return node.name.includes('Output') + }) + .forEach((node: any) => { + formattedOutputs[(node as any).data.name as string] = + rawOutputs[(node as any).data.socketKey as string] + }) + if (error) return rawOutputs + + let index = undefined + + for (const x in formattedOutputs) { + index = x + } + + if (index && index !== undefined) { + return formattedOutputs && formattedOutputs[index] + } else { + return undefined + } + } + console.log('spellHandler is', spellHandler) + return spellHandler +} diff --git a/server/src/entities/Entity.ts b/server/src/entities/Entity.ts new file mode 100644 index 000000000..6048b0507 --- /dev/null +++ b/server/src/entities/Entity.ts @@ -0,0 +1,284 @@ +import discord_client from './connectors/discord' +import { telegram_client } from './connectors/telegram' +import { zoom_client } from './connectors/zoom' +import { twitter_client } from './connectors/twitter' +import { reddit_client } from './connectors/reddit' +import { instagram_client } from './connectors/instagram' +import { messenger_client } from './connectors/messenger' +import { whatsapp_client } from './connectors/whatsapp' +import { twilio_client } from './connectors/twilio' +//import { harmony_client } from '../../../core/src/connectors/harmony' +import { xrengine_client } from './connectors/xrengine' +import { CreateSpellHandler } from './CreateSpellHandler' + +export class Entity { + name = '' + //Clients + discord: discord_client | null + telegram: telegram_client + zoom: zoom_client + twitter: twitter_client | null + reddit: reddit_client + instagram: instagram_client + messenger: messenger_client + whatsapp: whatsapp_client + twilio: twilio_client + //harmony: any + xrengine: xrengine_client + id: any + + async startDiscord( + discord_api_token: string, + discord_starting_words: string, + discord_bot_name_regex: string, + discord_bot_name: string, + discord_empty_responses: string, + spell_handler: string, + spell_version: string, + use_voice: boolean, + voice_provider: string, + voice_character: string, + voice_language_code: string + ) { + console.log('initializing discord, spell_handler:', spell_handler) + if (this.discord) + throw new Error('Discord already running for this agent on this instance') + + const spellHandler = await CreateSpellHandler({ + spell: spell_handler, + version: spell_version, + }) + + this.discord = new discord_client() + console.log('createDiscordClient') + await this.discord.createDiscordClient( + this, + discord_api_token, + discord_starting_words, + discord_bot_name_regex, + discord_bot_name, + discord_empty_responses, + spellHandler, + use_voice, + voice_provider, + voice_character, + voice_language_code + ) + console.log('Started discord client for agent ' + this.name) + // const response = await spellHandler( + // 'testmessage', + // 'testsender', + // 'testbot', + // 'discord', + // "0", + // this.id + // ) + // console.log("response is ", response) + } + + async stopDiscord() { + if (!this.discord) throw new Error("Discord isn't running, can't stop it") + await this.discord.destroy() + this.discord = null + console.log('Stopped discord client for agent ' + this.name) + } + + async startXREngine(settings: { + entity: any + url: string + spell_handler: string + spell_version: string + xrengine_bot_name: string + xrengine_bot_name_regex: string + xrengine_starting_words: string + xrengine_empty_responses: string + handleInput?: any + use_voice: boolean + voice_provider: string + voice_character: string + voice_language_code: string + }) { + if (this.xrengine) + throw new Error( + 'XREngine already running for this agent on this instance' + ) + + const spellHandler = await CreateSpellHandler({ + spell: settings.spell_handler, + version: settings.spell_version, + }) + + settings.handleInput = spellHandler + + this.xrengine = new xrengine_client() + this.xrengine.createXREngineClient( + this, + settings, + this.xrengine, + spellHandler + ) + console.log('Started xrengine client for agent ' + this.name) + } + + stopXREngine() { + if (!this.xrengine) throw new Error("XREngine isn't running, can't stop it") + this.xrengine.destroy() + ;(this.xrengine as any) = null + console.log('Stopped xrengine client for agent ' + this.name) + } + + async startTwitter( + twitter_token: any, + twitter_id: any, + twitter_app_token: any, + twitter_app_token_secret: any, + twitter_access_token: any, + twitter_access_token_secret: any, + twitter_bot_name: any, + twitter_bot_name_regex: any + ) { + console.log('initializing Twitter:', twitter_token) + if (this.twitter) + throw new Error( + 'Twitter already running for this entity on this instance' + ) + + // const spellHandler = await CreateSpellHandler({ + // spell: spell_handler, + // version: spell_version, + // }) + + this.twitter = new twitter_client() + console.log('createDiscordClient') + await this.twitter.createTwitterClient(this, { + twitter_token, + twitter_id, + twitter_app_token, + twitter_app_token_secret, + twitter_access_token, + twitter_access_token_secret, + twitter_bot_name, + twitter_bot_name_regex, + }) + console.log('Started twitter client for agent ' + this) + // const response = await spellHandler( + // 'testmessage', + // 'testsender', + // 'testbot', + // 'discord', + // "0", + // this.id + // ) + // console.log("response is ", response) + } + + stopTwitter() { + if (!this.discord) throw new Error("Twitter isn't running, can't stop it") + this.twitter = null + console.log('Stopped twitter client for agent ' + this) + } + + async onDestroy() { + console.log( + 'CLOSING ALL CLIENTS, discord is defined:,', + this.discord === null || this.discord === undefined + ) + if (this.discord) this.stopDiscord() + if (this.xrengine) this.stopXREngine() + if (this.twitter) this.stopTwitter() + } + + constructor(data: any) { + this.onDestroy() + this.id = data.id + console.log('initing agent') + console.log('agent data is ', data) + this.name = data.agent ?? data.name ?? 'agent' + + if (data.discord_enabled) { + this.startDiscord( + data.discord_api_key, + data.discord_starting_words, + data.discord_bot_name_regex, + data.discord_bot_name, + data.discord_empty_responses, + data.discord_spell_handler_incoming, + data.spell_version, + data.use_voice, + data.voice_provider, + data.voice_character, + data.voice_language_code + ) + } + + if (data.xrengine_enabled) { + this.startXREngine({ + url: data.xrengine_url, + entity: data, + spell_handler: data.xrengine_spell_handler_incoming, + spell_version: data.spell_version, + xrengine_bot_name: data.xrengine_bot_name, + xrengine_bot_name_regex: data.xrengine_bot_name_regex, + xrengine_starting_words: data.xrengine_starting_words, + xrengine_empty_responses: data.xrengine_empty_responses, + use_voice: data.use_voice, + voice_provider: data.voice_provider, + voice_character: data.voice_character, + voice_language_code: data.voice_language_code, + }) + } + + if (data.twitter_client_enable) { + this.startTwitter( + data.twitter_token, + data.twitter_id, + data.twitter_app_token, + data.twitter_app_token_secret, + data.twitter_access_token, + data.twitter_access_token_secret, + data.twitter_bot_name, + data.twitter_bot_name_regex + ) + } + } + + // TODO: Fix me + + // for (let i = 0; i < clients.length; i++) { + // if (clients[i].enabled === 'true') { + // if (clients[i].client === 'discord') { + // this.discord = new discord_client() + // this.discord.createDiscordClient(this, clients[i].settings) + // } else if (clients[i].client === 'telegram') { + // this.telegram = new telegram_client() + // this.telegram.createTelegramClient(this, clients[i].settings) + // } else if (clients[i].client === 'zoom') { + // this.zoom = new zoom_client() + // this.zoom.createZoomClient(this, clients[i].settings) + // } else if (clients[i].client === 'twitter') { + // this.twitter = new twitter_client() + // this.twitter.createTwitterClient(this, clients[i].settings) + // } else if (clients[i].client === 'reddit') { + // this.reddit = new reddit_client() + // this.reddit.createRedditClient(this, clients[i].settings) + // } else if (clients[i].client === 'instagram') { + // this.instagram = new instagram_client() + // this.instagram.createInstagramClient(this, clients[i].settings) + // } else if (clients[i].client === 'messenger') { + // this.messenger = new messenger_client() + // this.messenger.createMessengerClient(app, this, clients[i].settings) + // } else if (clients[i].client === 'whatsapp') { + // this.whatsapp = new whatsapp_client() + // this.whatsapp.createWhatsappClient(this, clients[i].settings) + // } else if (clients[i].client === 'twilio') { + // this.twilio = new twilio_client() + // this.twilio.createTwilioClient(app, router, this, clients[i].settings) + // } else if (clients[i].client === 'harmony') { + // //this.harmony = new harmony_client(); + // //this.harmony.createHarmonyClient(this, clients[i].settings); + // } + // } + // } +} + +export default Entity diff --git a/server/src/entities/World.ts b/server/src/entities/World.ts new file mode 100644 index 000000000..ebd82b1ec --- /dev/null +++ b/server/src/entities/World.ts @@ -0,0 +1,171 @@ +import { randomInt } from './connectors/utils' +import { database } from '../database' +import Entity from './Entity' + +const maxMSDiff = 5000 +let interval = 3000 + +function initEntityLoop(update: Function, lateUpdate: Function) { + const date = new Date() + + async function entityLoop(update: Function, lateUpdate: Function) { + const agents = await database.instance.getLastUpdatedInstances() + const now = new Date() + const updated = [] + + for (let i = 0; i < agents.length; i++) { + const id = agents[i].id + const lastUpdate = new Date(agents[i].lastUpdated ?? 0) + if (now.valueOf() - lastUpdate.valueOf() > maxMSDiff) { + update(id) + + updated.push(id) + database.instance.setEntityUpdated(id) + } + } + for (let i = 0; i < updated.length; i++) { + lateUpdate(updated[i]) + } + } + setInterval(() => { + entityLoop( + (id: number) => { + update(id) + }, + (id: number) => { + lateUpdate(id) + } + ) + }, interval) +} + +export class World { + static instance: World + id = -1 + objects: { [id: number]: any } = {} + oldEntities: any + newEntities: any + + constructor() { + this.id = 0 + console.log('creating world') + World.instance = this + this.onCreate() + } + + async updateEntity() { + this.newEntities = await database.instance.getEntities() + const newEntities = this.newEntities + delete newEntities['updated_at'] + const oldEntities = this.oldEntities ?? [] + if (oldEntities['updated_at']) delete oldEntities['updated_at'] + if (JSON.stringify(newEntities) === JSON.stringify(oldEntities)) return // They are the same + + // If an entry exists in oldAgents but not in newAgents, it has been deleted + for (const i in oldEntities) { + // filter for entries where oldAgents where id === newAgents[i].id + if ( + newEntities.filter((x: any) => x.id === oldEntities[i].id)[0] === + undefined + ) { + await this.removeEntity(oldEntities[i].id) + } + } + + // If an entry exists in newAgents but not in oldAgents, it has been added + for (const i in newEntities) { + // filter for entries where oldAgents where id === newAgents[i].id + if ( + oldEntities.filter((x: any) => x.id === newEntities[i].id)[0] === + undefined + ) { + if (newEntities[i].enabled) { + await this.addEntity(new Entity(newEntities[i])) + } + } + } + + for (const i in newEntities) { + if (newEntities[i].dirty) { + await this.removeEntity(newEntities[i].id) + await this.addEntity(new Entity(newEntities[i])) + await database.instance.setEntityDirty(newEntities[i].id, false) + } + } + + this.oldEntities = this.newEntities + } + + async onCreate() { + initEntityLoop( + async (id: number) => { + await this.updateEntity() + this.updateInstance(id) + }, + async (id: number) => { + this.lateUpdateInstance(id) + } + ) + } + + async updateInstance(id: number) { + for (const i in this.objects) { + if (this.objects[i].id === id) { + // await (this.objects[i]).onUpdate() + return + } + } + } + async lateUpdateInstance(id: number) { + for (const i in this.objects) { + if (this.objects[i].id === id) { + // await (this.objects[i])?.onLateUpdate() + return + } + } + } + + async onDestroy() {} + + async addEntity(obj: Entity) { + console.log('adding object', obj.id) + if (this.objects[obj.id] === undefined) { + this.objects[obj.id] = obj + } else { + //throw new Error('Object already exists') + } + } + + async removeEntity(id: number) { + if (this.objectExists(id)) { + await (this.objects[id] as Entity)?.onDestroy() + this.objects[id] = null + delete this.objects[id] + console.log('Removed ', id) + } + } + + getEntity(id: any) { + let res = null + + for (let x in this.objects) { + if (x == id) { + res = this.objects[x] + } + } + + return res + } + + objectExists(id: any) { + return this.getEntity(id) !== null && this.getEntity(id) !== undefined + } + + generateId(): number { + let id = randomInt(0, 10000) + while (this.objectExists(id)) { + id = randomInt(0, 10000) + } + return id + } +} diff --git a/server/src/entities/connectors/browser.ts b/server/src/entities/connectors/browser.ts new file mode 100755 index 000000000..ba79f7cd9 --- /dev/null +++ b/server/src/entities/connectors/browser.ts @@ -0,0 +1,121 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck + +import fs from 'fs' +import puppeteer from 'puppeteer' + +//The default browser class for puppeteer, it can be used to build other clients with puppeteer +export async function browserWindow(options: any) { + if (fs.existsSync('/.dockerenv')) { + options.headless = true + options.args = (options.args || []).concat([ + '--no-sandbox', + '--disable-setuid-sandbox', + ]) + } + + return await puppeteer.launch(options) +} + +export class PageUtils { + page: any + autoLog + constructor({ page = null, autoLog = true }) { + this.page = page + this.autoLog = autoLog + } + + async clickButton(buttonName: any) { + await this.page.evaluate((selector: any) => { + const v = document.querySelector(selector) + if (v != undefined && v != null) v.click() + }, buttonName) + } + + //clicks a selector using the class name's regex + async clickSelectorClassRegex(selector: any, classRegex: any) { + if (this.autoLog) + console.log(`Clicking for a ${selector} matching ${classRegex}`) + + await this.page.evaluate( + (selector: any, _classRegex: any) => { + const classRegex = new RegExp(_classRegex) + const buttons = Array.from(document.querySelectorAll(selector)) + const enterButton = buttons.find(button => + Array.from(button.classList).some((c: string) => classRegex.test(c)) + ) + if (enterButton) enterButton.click() + }, + selector, + classRegex.toString().slice(1, -1) + ) + } + //clicks a selector based on their id + async clickSelectorId(selector: any, id: any) { + if (this.autoLog) console.log(`Clicking for a ${selector} matching ${id}`) + + await this.page.evaluate( + (selector: any, id: any) => { + const matches = Array.from(document.querySelectorAll(selector)) + console.log('matches length:', matches.length) + const singleMatch = matches.find(button => button.id === id) + if (singleMatch && singleMatch.click) { + console.log('normal click, singleMath:', singleMatch) + singleMatch.click() + } + if (singleMatch && !singleMatch.click) { + console.log('on click') + singleMatch.dispatchEvent(new MouseEvent('click', { bubbles: true })) + } + if (!singleMatch) { + console.log('event click', matches.length) + if (matches.length > 0) { + const m = matches[0] + m.dispatchEvent(new MouseEvent('click', { bubbles: true })) + } + } + }, + selector, + id + ) + } + //clicks a selector based on their alt value + async clickSelectorByAlt(selector: any, title: any) { + if (this.autoLog) + console.log(`Clicking for a ${selector} matching ${title}`) + + await this.page.evaluate( + (selector: any, title: any) => { + const matches = Array.from(document.querySelectorAll(selector)) + const singleMatch = matches.find(btn => btn.alt === title) + if (singleMatch && singleMatch.click) { + console.log('normal click') + singleMatch.click() + } + if (singleMatch && !singleMatch.click) { + console.log('on click') + singleMatch.dispatchEvent(new MouseEvent('click', { bubbles: true })) + } + if (!singleMatch) { + console.log('event click', matches.length) + if (matches.length > 0) { + const m = matches[0] + m.dispatchEvent(new MouseEvent('click', { bubbles: true })) + } + } + }, + selector, + title + ) + } + //clicks the first selector it finds of the given type + async clickSelectorFirstMatch(selector: any) { + if (this.autoLog) console.log(`Clicking for first ${selector}`) + + await this.page.evaluate((selector: any) => { + const matches = Array.from(document.querySelectorAll(selector)) + const singleMatch = matches[0] + if (singleMatch) singleMatch.click() + }, selector) + } +} diff --git a/server/src/entities/connectors/calendar.ts b/server/src/entities/connectors/calendar.ts new file mode 100644 index 000000000..483dd9ab4 --- /dev/null +++ b/server/src/entities/connectors/calendar.ts @@ -0,0 +1,77 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck + +import fs from 'fs' +import { calendar_v3, google } from 'googleapis' +import path from 'path' + +import { sendMessageToChannel } from './discord' + +const rootDir = path.resolve(path.dirname('')) +//to generate a google token you can use https://developers.google.com/oauthplayground/ +const TOKEN_PATH = rootDir + '/credentials/token.json' +let calendar: calendar_v3.Calendar + +export function initCalendar() { + if (!fs.existsSync(rootDir + '/credentials')) { + fs.mkdirSync(rootDir + '/credentials', { recursive: true }) + } + + fs.readFile(rootDir + '/credentials/google.json', (err, content) => { + if (err) return console.log('Error loading client secret file:', err) + authorize(JSON.parse(content)) + }) +} + +function authorize(credentials: { + installed: { client_secret: any; client_id: any; redirect_uris: any } +}) { + const { client_secret, client_id, redirect_uris } = credentials.installed + const oAuth2Client = new google.auth.OAuth2( + client_id, + client_secret, + redirect_uris[0] + ) + + fs.readFile(TOKEN_PATH, (err, token: any) => { + oAuth2Client.setCredentials(JSON.parse(token)) + calendar = google.calendar({ version: 'v3', auth: oAuth2Client }) + setInterval(() => { + listEvents() + }, 3600 * 1000) + }) +} + +function listEvents() { + calendar.events.list( + { + calendarId: 'primary', + timeMin: new Date().toISOString(), + maxResults: 10, + singleEvents: true, + orderBy: 'startTime', + }, + async (err, res) => { + if (err) return console.error('The API returned an error: ' + err) + const events = res.data.items + if (events.length) { + events.map((event, i) => { + const eventDate = new Date(event.start.dateTime || event.start.date) + const now = new Date() + if (eventDate > now) { + const diffMs = eventDate - now + const diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000) + if (diffMins <= 60 && diffMins > 0) { + // sendMessageToChannel( + // (await database.instance.getConfig())[ + // 'discord_calendar_channel' + // ], + // event.summary + ' is starting in ' + diffMins + ' minutes!' + // ) + } + } + }) + } + } + ) +} diff --git a/server/src/entities/connectors/discord-voice.ts b/server/src/entities/connectors/discord-voice.ts new file mode 100644 index 000000000..8fa7a627a --- /dev/null +++ b/server/src/entities/connectors/discord-voice.ts @@ -0,0 +1,117 @@ +// @ts-nocheck +import { + joinVoiceChannel, + createAudioPlayer, + createAudioResource, + StreamType, +} from '@discordjs/voice' +import { tts } from '../../systems/googleTextToSpeech' +import { getAudioUrl } from '../../routes/getAudioUrl' +import { addSpeechEvent } from './voiceUtils/addSpeechEvent' +import { removeEmojisFromString } from '../../utils/utils' + +//const transcriber = new Transcriber('288916776772018') +export function initSpeechClient( + client, + discord_bot_name, + entity, + handleInput, + voiceProvider, + voiceCharacter, + languageCode +) { + addSpeechEvent(client) + + client.on('speech', async msg => { + console.log('msg is ', msg) + const content = msg.content + const connection = msg.connection + const author = msg.author + const channel = msg.channel + + console.log('got voice input:', content) + if (content) { + const roomInfo: { + user: string + inConversation: boolean + isBot: boolean + info3d: string + }[] = [] + + try { + for (const [memberID, member] of channel.members) { + roomInfo.push({ + user: member.user.username, + inConversation: this.isInConversation(member.user.id), + isBot: member.user.bot, + info3d: '', + }) + } + } catch (e) { } + + console.log(roomInfo) + const response = removeEmojisFromString( + await handleInput( + content, + author?.username ?? 'VoiceSpeaker', + discord_bot_name, + 'discord', + channel.id, + entity, + roomInfo + ) + ) + + console.log('response is', response) + if (response) { + const audioPlayer = createAudioPlayer() + + // TODO + // 1. get the voice provider + // if google, use that + // otherwise use uberduck + // 2. set the character name from the request + let url + + if (voiceProvider === 'uberduck') { + url = await getAudioUrl( + process.env.UBER_DUCK_KEY as string, + process.env.UBER_DUCK_SECRET_KEY as string, + voiceCharacter, + response as string + ) + } else { + // google tts + url = await tts(response, voiceCharacter, languageCode) + } + + // const url = await tts(response) + connection.subscribe(audioPlayer) + console.log('speech url:', url) + if (url) { + const audioResource = createAudioResource(url, { + inputType: StreamType.Arbitrary, + }) + audioPlayer.play(audioResource) + } + } + } + }) +} + +/** + * Join the voice channel and start listening. + * @param {Discord.Receiver} receiver + * @param {Discord.TextChannel} textChannel + */ +export async function recognizeSpeech(textChannel) { + console.log('recognizeStream') + if (textChannel) { + joinVoiceChannel({ + channelId: textChannel.id, + guildId: textChannel.guild.id, + adapterCreator: textChannel.guild.voiceAdapterCreator, + selfDeaf: false, + }) + } +} diff --git a/server/src/entities/connectors/discord.ts b/server/src/entities/connectors/discord.ts new file mode 100644 index 000000000..45883cd7b --- /dev/null +++ b/server/src/entities/connectors/discord.ts @@ -0,0 +1,1833 @@ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +/* eslint-disable no-console */ +/* eslint-disable no-param-reassign */ +/* eslint-disable prefer-const */ +/* eslint-disable no-invalid-this */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable camelcase */ +/* eslint-disable require-await */ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment + +//@ts-nocheck +// required for message.lineReply +import Discord, { Intents } from 'discord.js' +import emoji from 'emoji-dictionary' +import emojiRegex from 'emoji-regex' + +// import { classifyText } from '../utils/textClassifier' +import { database } from '../../database' +import { initSpeechClient, recognizeSpeech } from './discord-voice' +import { getRandomEmptyResponse, startsWithCapital } from './utils' + +function log(...s: (string | boolean)[]) { + console.log(...s) +} + +export const channelTypes = { + text: 'GUILD_TEXT', + dm: 'DM', + voice: 'GUILD_VOICE', + thread: 'GUILD_PUBLIC_THREAD', +} +export class discord_client { + async destroy() { + await this.client.destroy() + this.client = null + } + + //Event that is triggered when a new user is added to the server + async handleGuildMemberAdd(user: { user: { id: any; username: any } }) { + const userId = user.user.id + const username = user.user.username + + const dateNow = new Date() + const utc = new Date( + dateNow.getUTCFullYear(), + dateNow.getUTCMonth(), + dateNow.getUTCDate(), + dateNow.getUTCHours(), + dateNow.getUTCMinutes(), + dateNow.getUTCSeconds() + ) + const utcStr = + dateNow.getDate() + + '/' + + (dateNow.getMonth() + 1) + + '/' + + dateNow.getFullYear() + + ' ' + + utc.getHours() + + ':' + + utc.getMinutes() + + ':' + + utc.getSeconds() + + // TODO: Replace me with direct message handler + log('Discord', 'join', username, utcStr) + // MessageClient.instance.sendUserUpdateEvent('Discord', 'join', username, utcStr) + } + + //Event that is triggered when a user is removed from the server + async handleGuildMemberRemove(user: { user: { id: any; username: any } }) { + const userId = user.user.id + const username = user.user.username + + const dateNow = new Date() + const utc = new Date( + dateNow.getUTCFullYear(), + dateNow.getUTCMonth(), + dateNow.getUTCDate(), + dateNow.getUTCHours(), + dateNow.getUTCMinutes(), + dateNow.getUTCSeconds() + ) + const utcStr = + dateNow.getDate() + + '/' + + (dateNow.getMonth() + 1) + + '/' + + dateNow.getFullYear() + + ' ' + + utc.getHours() + + ':' + + utc.getMinutes() + + ':' + + utc.getSeconds() + // TODO: Replace me with direct message handler + log('Discord', 'leave', username, utcStr) + // MessageClient.instance.sendUserUpdateEvent('Discord', 'leave', username, utcStr) + } + + //Event that is triggered when a user reacts to a message + async handleMessageReactionAdd( + reaction: { emoji?: any; message?: any }, + user: { username: string | boolean } + ) { + const { message } = reaction + const emojiName = emoji.getName(reaction.emoji) + + const dateNow = new Date() + const utc = new Date( + dateNow.getUTCFullYear(), + dateNow.getUTCMonth(), + dateNow.getUTCDate(), + dateNow.getUTCHours(), + dateNow.getUTCMinutes(), + dateNow.getUTCSeconds() + ) + const utcStr = + dateNow.getDate() + + '/' + + (dateNow.getMonth() + 1) + + '/' + + dateNow.getFullYear() + + ' ' + + utc.getHours() + + ':' + + utc.getMinutes() + + ':' + + utc.getSeconds() + + // TODO: Replace me with direct message handler + log( + 'Discord', + message.channel.id, + message.id, + message.content, + user.username, + emojiName, + utcStr + ) + // MessageClient.instance.sendMessageReactionAdd('Discord', message.channel.id, message.id, message.content, user.username, emojiName, utcStr) + } + + async agents( + client: any, + message: { channel: { id: string | boolean } }, + args: any, + author: any, + addPing: any, + channel: any + ) { + log('Discord', message.channel.id) + // TODO: Replace me with direct message handler + // MessageClient.instance.sendGetAgents('Discord', message.channel.id) + } + + //ban command, it is used to ban a user from the agent so the agent doesn't respon to this user + async ban( + client: any, + message: { channel?: any; mentions?: any }, + args: { parsed_words: any }, + author: any, + addPing: any, + channel: any + ) { + const pw = args.parsed_words + if (pw === undefined || pw.length !== 1) { + message.channel.send('invalid command structure!') + message.channel.stopTyping() + return + } + + const { mentions } = message + log(JSON.stringify(mentions)) + if ( + mentions === undefined || + mentions.users === undefined || + mentions.users.size !== 1 + ) { + message.channel.send('invalid command structure!') + message.channel.stopTyping() + return + } + const user = mentions.users.first().id + await database.instance.banUser(user, 'discord') + message.channel.send('banned user: ' + `<@!${user}>`) + message.channel.stopTyping() + } + + //returns all the current commands for the bot + async commands( + client: any, + message: { + channel: { send: (arg0: string) => void; stopTyping: () => void } + }, + args: any, + author: any, + addPing: any, + channel: any + ) { + let str = '' + this.client.helpFields[0].commands.forEach(function ( + item: string[], + index: any + ) { + if (item[3].length <= 2000 && item[3].length > 0) { + str += '!' + item[0] + ' - ' + item[3] + '\n' + } + }) + if (str.length === 0) this.client.embed.description = 'empty response' + message.channel.send(str) + message.channel.stopTyping() + } + + //ping is used to send a message directly to the agent + async ping( + client: { embed: any }, + message: { + channel: { send: (arg0: any) => void; stopTyping: () => void } + id: string | boolean + }, + args: { + grpc_args: { [x: string]: string | boolean; message: string | undefined } + }, + author: { username: string | boolean }, + addPing: string | boolean, + channel: any + ) { + if ( + args.grpc_args.message === undefined || + args.grpc_args.message === '' || + args.grpc_args.message.replace(/\s/g, '').length === 0 + ) { + this.client.embed.description = 'Wrong format, !ping message' + message.channel.send(client.embed) + this.client.embed.desscription = '' + message.channel.stopTyping() + return + } + + args.grpc_args['client_name'] = 'discord' + args.grpc_args['chat_id'] = channel + + const date = new Date() + const utc = new Date( + date.getUTCFullYear(), + date.getUTCMonth(), + date.getUTCDate(), + date.getUTCHours(), + date.getUTCMinutes(), + date.getUTCSeconds() + ) + const utcStr = + date.getDate() + + '/' + + (date.getMonth() + 1) + + '/' + + date.getFullYear() + + ' ' + + utc.getHours() + + ':' + + utc.getMinutes() + + ':' + + utc.getSeconds() + args.grpc_args['createdAt'] = utcStr + + let parentId = '' + if (args.grpc_args['isThread'] === true) { + parentId = args.grpc_args['parentId'] + } + + // TODO: Replace me with direct message handler + // MessageClient.instance.sendMessage(args.grpc_args['message'], message.id, 'Discord', args.grpc_args['chat_id'], utcStr, addPing, author.username, 'parentId:' + parentId) + log( + args.grpc_args['message'], + message.id, + 'Discord', + args.grpc_args['chat_id'], + utcStr, + addPing, + author.username, + 'parentId:' + parentId + ) + } + + //ping agent is used to ping a specific agent directly + async pingagent( + client: { embed: any }, + message: { + channel: { + send: (arg0: any) => void + stopTyping: () => void + id: string | boolean + } + id: string | boolean + }, + args: { + grpc_args: { + [x: string]: string | boolean + message: string | undefined + agent: string | undefined + } + }, + author: { username: string | boolean }, + addPing: string | boolean, + channel: any + ) { + if ( + args.grpc_args.message === undefined || + args.grpc_args.message === '' || + args.grpc_args.message.replace(/\s/g, '').length === 0 || + args.grpc_args.message.includes('agent=') || + args.grpc_args.agent === undefined || + args.grpc_args.agent === '' || + args.grpc_args.agent.replace(/\s/g, '').length === 0 + ) { + this.client.embed.description = + 'Wrong format, !pingagent agent=agent message=value' + message.channel.send(client.embed) + this.client.embed.desscription = '' + message.channel.stopTyping() + return + } + + // TODO: Replace me with direct message handler + log( + 'Discord', + message.channel.id, + message.id, + args.grpc_args['message'], + args.grpc_args['agent'], + addPing, + author.username + ) + // MessageClient.instance.sendPingSoloAgent('Discord', message.channel.id, message.id, args.grpc_args['message'], args.grpc_args['agent'], addPing, author.username) + } + + //setagent is used to update an agent + async setagent( + client: { embed: any }, + message: { + channel: { + send: (arg0: any) => void + stopTyping: () => void + id: string | boolean + } + }, + args: { + grpc_args: { [x: string]: string | boolean; message: string | undefined } + }, + author: any, + addPing: any, + channel: any + ) { + if (args.grpc_args.message === undefined || args.grpc_args.message === '') { + this.client.embed.description = + 'Wrong format, !setagent agent=agent context=value' + message.channel.send(client.embed) + this.client.embed.desscription = '' + message.channel.stopTyping() + return + } + if ( + args.grpc_args['name'] === undefined || + args.grpc_args['name'] === '' || + args.grpc_args['context'] === undefined || + args.grpc_args['context'] === '' + ) { + this.client.embed.description = + 'Wrong format, !setagent agent=agent context=value' + message.channel.send(client.embed) + this.client.embed.desscription = '' + message.channel.stopTyping() + return + } + + // TODO: Replace me with direct message handler + log( + 'Discord', + message.channel.id, + args.grpc_args['name'], + args.grpc_args['context'] + ) + // MessageClient.instance.sendSetAgentsFields('Discord', message.channel.id, args.grpc_args['name'], args.grpc_args['context']) + } + + //sets the name for an agent to respond for it + async setname( + client: { bot_name: string }, + message: { + channel: { send: (arg0: string) => void; stopTyping: () => void } + }, + args: { parsed_words: string | any[] | undefined }, + author: any, + addPing: any, + channel: any + ) { + if (args.parsed_words === undefined || args.parsed_words.length !== 1) { + message.channel.send('Invalid format, !setname name') + message.channel.stopTyping() + return + } + + const name = args.parsed_words[0] + this.bot_name = name + this.client.name_regex = new RegExp(name, 'ig') + log(client.bot_name + ' - ' + this.client.name_regex) + message.channel.send('Updated bot name to: ' + name) + message.channel.stopTyping() + } + + //unbans a user from the agent's ban list + async unban( + client: any, + message: { channel?: any; mentions?: any }, + args: { parsed_words: any }, + author: any, + addPing: any, + channel: any + ) { + const pw = args.parsed_words + if (pw === undefined || pw.length !== 1) { + message.channel.send('invalid command structure!') + message.channel.stopTyping() + return + } + + const { mentions } = message + log(JSON.stringify(mentions)) + if ( + mentions === undefined || + mentions.users === undefined || + mentions.users.size !== 1 + ) { + message.channel.send('invalid command structure!') + message.channel.stopTyping() + return + } + const user = mentions.users.first().id + await database.instance.unbanUser(user, 'discord') + message.channel.send('unbanned user: ' + `<@!${user}>`) + message.channel.stopTyping() + } + + //Event that is trigger when a new message is created (sent) + messageCreate = async ( + client: string | boolean, + message: string | boolean + ) => { + console.log('new message from discord:', message.content) + + //gets the emojis from the text and replaces to unix specific type + const reg = emojiRegex() + let match + const emojis = [] + while ((match = reg.exec(message.content)) !== null) { + emojis.push({ name: emoji.getName(match[0]), emoji: match[0] }) + message.content = message.content.replace( + match[0], + match[0] + ' :' + emoji.getName(match[0]) + ':' + ) + } + const args = {} + args['grpc_args'] = {} + + let { author, channel, content, mentions, id } = message + + //replaces the discord specific mentions () to the actual mention + if ( + mentions !== null && + mentions.members !== null && + mentions.members.size > 0 + ) { + const data = content.split(' ') + for (let i = 0; i < data.length; i++) { + if ( + data[i].startsWith('<@!') && + data[i].charAt(data[i].length - 1) === '>' + ) { + try { + const x = data[i].replace('<@!', '').replace('>', '') + const user = await this.client.users.cache.find( + (user: { id: any }) => user.id == x + ) + if (user !== undefined) { + //const u = '@' + user.username + '#' + user.discriminator + const u = + user.id == this.client.user + ? this.discord_bot_name + : user.username + content = content.replace(data[i], u) + } + } catch (err) { + error(err) + } + } + } + } + + //if the message is empty it is ignored + if (content === '') { + console.log('empty content') + return + } + let _prev = undefined + + //if the author is not a bot, it adds the message to the conversation simulation + if (!author.bot) { + _prev = this.prevMessage[channel.id] + this.prevMessage[channel.id] = author + if (this.prevMessageTimers[channel.id] !== undefined) + clearTimeout(this.prevMessageTimers[channel.id]) + this.prevMessageTimers[channel.id] = setTimeout( + () => (this.prevMessage[channel.id] = ''), + 120000 + ) + } + //if there are many users in the conversation simulation or the previous message is from someone else, it adds a ping + const addPing = + (_prev !== undefined && _prev !== '' && _prev !== author) || + this.moreThanOneInConversation() + // Ignore all bots + if (author.bot) { + console.log('author is bot') + return + } + //checks if the message contains a direct mention to the bot, or if it is a DM, or if it mentions someone else + const botMention = `<@!${client.user}>` + const isDM = channel.type === channelTypes['dm'] + const isMention = + (channel.type === channelTypes['text'] && mentions.has(client.user)) || + isDM + const otherMention = + !isMention && mentions.members !== null && mentions.members.size > 0 + let startConv = false + let startConvName = '' + //if it isn't a mention to the bot or another mention or a DM + //it works with the word hi and the next word should either not exist or start with a lower letter to start the conversation + if (!isMention && !isDM && !otherMention) { + const trimmed = content.trimStart() + for (let i = 0; i < this.discord_starting_words.length; i++) { + if (trimmed.toLowerCase().startsWith(this.discord_starting_words[i])) { + const parts = trimmed.split(' ') + if (parts.length > 1) { + if (!startsWithCapital(parts[1])) { + startConv = true + } else { + startConv = false + startConvName = parts[1] + } + } else { + if (trimmed.toLowerCase() === this.discord_starting_words[i]) { + startConv = true + } + } + } + } + } + //if it is a mention to another user, then the conversation with the bot is ended + if (otherMention) { + this.exitConversation(author.id) + mentions.members.forEach((pinged: { id: any }) => + this.exitConversation(pinged.id) + ) + } + if (!startConv && !isMention) { + if (startConvName.length > 0) { + this.exitConversation(author.id) + this.exitConversation(startConvName) + } + } + //checks if the user is in discussion with the but, or includes !ping or started the conversation, if so it adds (if not exists) !ping in the start to handle the message the ping command + const isDirectMethion = + !content.startsWith('!') && + content.toLowerCase().includes(this.bot_name?.toLowerCase()) + const isUserNameMention = + (channel.type === channelTypes['text'] || isDM) && + content && + content + .toLowerCase() + .replace(',', '') + .replace('.', '') + .replace('?', '') + .replace('!', '') + .match(client.username_regex) + const isInDiscussion = this.isInConversation(author.id) + if (!content.startsWith('!') && !otherMention) { + if (isMention) content = '!ping ' + content.replace(botMention, '').trim() + else if (isDirectMethion) + content = '!ping ' + content.replace(client.name_regex, '').trim() + else if (isUserNameMention) { + content = '!ping ' + content.replace(client.username_regex, '').trim() + } else if (isInDiscussion || startConv) content = '!ping ' + content + } + + if (otherMention) { + //roomManager.instance.userPingedSomeoneElse(author.id, 'discord') + } else if (content.startsWith('!ping')) { + //roomManager.instance.userGotInConversationFromAgent(author.id), 'discord' + } else if (!content.startsWith('!ping')) { + if ( + this.discussionChannels[channel.id] !== undefined && + this.discussionChannels[channel.id] + ) { + if (!this.discussionChannels[channel.id].responded) { + this.discussionChannels[channel.id].responded = true + content = '!ping ' + content + } + } + + if (!content.startsWith('!ping')) { + const msgs = await channel.messages.fetch({ limit: 10 }) + if (msgs && msgs.size > 0) { + let values = '' + let agentTalked = false + for (const [key, value] of msgs.entries()) { + values += value.content + if (value.author.bot) { + agentTalked = true + } + } + + // if (agentTalked) { + // const context = await classifyText(values) + // const ncontext = await classifyText(content) + // log('c1: ' + context + ' c2: ' + ncontext) + + // if (context == ncontext) { + // /*roomManager.instance.userTalkedSameTopic(author.id, 'discord') + // if (roomManager.instance.agentCanResponse(author.id, 'discord')) { + // content = '!ping ' + content + // }*/ + // } + // } + } + } + } + + //if the message contains join word, it makes the bot to try to join a voice channel and listen to the users + if (content.startsWith('!ping')) { + this.sentMessage(author.id) + const mention = `<@!${client.user.id}>` + if ( + content.startsWith('!ping join') || + content.startsWith('!join') || + content.startsWith('!ping ' + mention + ' join') + ) { + const d = content.split(' ') + const index = d.indexOf('join') + 1 + console.log('d:', d) + if (d.length > index) { + const channelName = d[index] + await message.guild.channels.cache.forEach( + async (channel: { + type: string + name: any + join: () => any + leave: () => void + }) => { + if ( + this.use_voice && + channel.type === channelTypes['voice'] && + channel.name === channelName + ) { + recognizeSpeech(channel) + return false + } + } + ) + return + } + } + } + + // Set flag to true to skip using prefix if mentioning or DMing us + const prefixOptionalWhenMentionOrDM = + this.client.prefixOptionalWhenMentionOrDM + + const msgStartsWithMention = content.startsWith(botMention) + + const messageContent = + isMention && msgStartsWithMention + ? content.replace(botMention, '').trim() + : content + + const containsPrefix = messageContent.indexOf(this.client.prefix) === 0 + + // If we are not being messaged and the prefix is not present (or bypassed via config flag), ignore message, + // so if msg does not contain prefix and either of + // 1. optional flag is not true or 2. bot has not been DMed or mentioned, + // then skip the message. + if ( + !containsPrefix && + (!prefixOptionalWhenMentionOrDM || (!isMention && !isDM)) + ) + return + + setTimeout(() => { + channel.sendTyping() + }, message.content.length) + + const roomInfo: { + user: string + inConversation: boolean + isBot: boolean + info3d: string + }[] = [] + for (const [memberID, member] of channel.members) { + roomInfo.push({ + user: member.user.username, + inConversation: this.isInConversation(member.user.id), + isBot: member.user.bot, + info3d: '', + }) + } + + const response = await this.handleInput( + message.content, + message.author.username, + this.discord_bot_name, + 'discord', + message.channel.id, + this.entity, + roomInfo + ) + + this.handlePingSoloAgent(message.channel.id, message.id, response, false) + } + + //Event that is triggered when a message is deleted + messageDelete = async ( + client: { user: any }, + message: { author: any; channel: any; id: any } + ) => { + const { author, channel, id } = message + if (!author) return + if (!client || !client.user) return + if (author.id === this.client.user.id) return + + const oldResponse = this.getResponse(channel.id, id) + if (oldResponse === undefined) return + + await channel.messages + .fetch({ limit: this.client.edit_messages_max_count }) + .then(async (messages: any[]) => { + messages.forEach(function (resp: { id: any; delete: () => void }) { + if (resp.id === oldResponse) { + resp.delete() + } + }) + }) + .catch((err: string | boolean) => log(err)) + + this.onMessageDeleted(channel.id, id) + } + + //Event that is triggered when a message is updated (changed) + messageUpdate = async ( + client: any, + message: { author: any; channel: any; id: any } + ) => { + const { author, channel, id } = message + if (author === null || channel === null || id === null) return + if (author.id === this.client.user.id) { + log('same author') + return + } + + const oldResponse = this.getResponse(channel.id, id) + if (oldResponse === undefined) { + await channel.messages.fetch(id).then(async (msg: any) => {}) + log('message not found') + return + } + + channel.messages + .fetch(oldResponse) + .then(async (msg: any) => { + channel.messages + .fetch({ limit: this.client.edit_messages_max_count }) + .then(async (messages: any[]) => { + messages.forEach(async function (edited: { + id: string | boolean + content: string | boolean + channel: { id: string | boolean } + }) { + if (edited.id === id) { + const date = new Date() + const utc = new Date( + date.getUTCFullYear(), + date.getUTCMonth(), + date.getUTCDate(), + date.getUTCHours(), + date.getUTCMinutes(), + date.getUTCSeconds() + ) + const utcStr = + date.getDate() + + '/' + + (date.getMonth() + 1) + + '/' + + date.getFullYear() + + ' ' + + utc.getHours() + + ':' + + utc.getMinutes() + + ':' + + utc.getSeconds() + + let parentId = '' + if (channel.type === channelTypes['thread']) { + parentId = channel.prefixOptionalWhenMentionOrDM + } + + // TODO: Replace message with direct message handler + log( + edited.content, + edited.id, + 'Discord', + edited.channel.id, + utcStr, + false, + 'parentId:' + parentId + ) + // MessageClient.instance.sendMessageEdit(edited.content, edited.id, 'Discord', edited.channel.id, utcStr, false, 'parentId:' + parentId) + } + }) + }) + }) + .catch((err: string) => log(err + ' - ' + err.stack)) + } + + //Event that is trigger when a user's presence is changed (offline, idle, online) + presenceUpdate = async ( + client: any, + oldMember: { status: any }, + newMember: { status: string | boolean; userId: any } + ) => { + if (!oldMember || !newMember) { + log('Cannot update presence, oldMember or newMember is null') + } else if (oldMember.status !== newMember.status) { + const date = new Date() + const utc = new Date( + date.getUTCFullYear(), + date.getUTCMonth(), + date.getUTCDate(), + date.getUTCHours(), + date.getUTCMinutes(), + date.getUTCSeconds() + ) + const utcStr = + date.getDate() + + '/' + + (date.getMonth() + 1) + + '/' + + date.getFullYear() + + ' ' + + utc.getHours() + + ':' + + utc.getMinutes() + + ':' + + utc.getSeconds() + + this.client.users + .fetch(newMember.userId) + .then((user: { username: string | boolean }) => { + if (newMember.status === 'online') { + //roomManager.instance.addUser(user.id, 'discord') + } else { + // roomManager.instance.removeUser(user.id, 'discord') + } + // TODO: Replace message with direct message handler + log('Discord', newMember.status, user.username, utcStr) + // MessageClient.instance.sendUserUpdateEvent('Discord', newMember.status, user.username, utcStr) + }) + } + } + + //Event that is triggered when the discord client fully loaded + ready = async (client: { user: { id: any } }) => { + const logDMUserID = false + await this.client.users + .fetch(logDMUserID) + .then((user: any) => { + this.client.log_user = user + }) + .catch((error: string | boolean) => { + log(error) + }) + + //rgisters the slash commands to each server + await this.client.guilds.cache.forEach( + (server: { + deleted: any + name: string + id: any + channels: { cache: any[] } + }) => { + if (!server.deleted) { + log('fetching messages from server: ' + server.name) + this.client.api + .applications(client.user.id) + .guilds(server.id) + .commands.post({ + data: { + name: 'continue', + description: 'makes the agent continue', + }, + }) + this.client.api + .applications(client.user.id) + .guilds(server.id) + .commands.post({ + data: { + name: 'single_continue', + description: 'test', + }, + }) + this.client.api + .applications(client.user.id) + .guilds(server.id) + .commands.post({ + data: { + name: 'say', + description: 'makes the agent say something', + options: [ + { + name: 'text', + description: 'text', + type: 3, + required: true, + }, + ], + }, + }) + + //adds unread message to the chat history from each channel + server.channels.cache.forEach( + async (channel: { + type: string + deleted: boolean + permissionsFor: (arg0: any) => { + (): any + new (): any + has: { (arg0: string[]): any; new (): any } + } + name: string | boolean + id: string | boolean + topic: any + messages: { fetch: (arg0: { limit: number }) => Promise } + }) => { + if ( + channel.type === channelTypes['text'] && + channel.deleted === false && + channel + .permissionsFor(client.user.id) + .has(['SEND_MESSAGES', 'VIEW_CHANNEL']) + ) { + // TODO: Replace message with direct message handler + log( + channel.name, + 'Discord', + channel.id, + channel.topic || 'none' + ) + // MessageClient.instance.sendMetadata(channel.name, 'Discord', channel.id, channel.topic || 'none') + channel.messages + .fetch({ limit: 100 }) + .then(async (messages: any[]) => { + messages.forEach(async function (msg: { + author: { username: string; isBot: any } + deleted: boolean + content: string + id: any + createdTimestamp: any + }) { + let _author = msg.author.username + if ( + msg.author.isBot || + msg.author.username + .toLowerCase() + .includes('digital being') + ) + _author = this.discord_bot_name + + if (msg.deleted === true) { + // await deleteMessageFromHistory(channel.id, msg.id) + log('deleted message: ' + msg.content) + } else + await wasHandled( + channel.id, + msg.id, + _author, + msg.content, + msg.createdTimestamp + ) + }) + }) + } + } + ) + } + } + ) + + log('client is ready') + } + + embedColor = '#000000' + _commandToValue = ([name, args, description]) => + ['.' + name, args.join(' '), '-', description].join(' ') + _commandToDescription = ([name, args, description]) => + '```css\n' + + ['.' + name, args.join(' '), '-', description].join(' ') + + '```' + _commandsToValue = (commands: any[]) => + '```css\n' + + commands + .map((command: [any, any, any]) => this._commandToValue(command)) + .join('\n') + + '```' + + helpFields = [ + { + name: 'Tweak', + shortname: 'tweak', + commands: [ + [ + 'ping', + ['HandleMessage'], + ['sender', 'message', 'client_name', 'chat_id'], + 'ping all agents', + ], + [ + 'slash_command', + ['HandleSlashCommand'], + ['sender', 'command', 'args', 'client_name', 'chat_id', 'createdAt'], + 'handle slash command', + ], + [ + 'user_update', + ['HandleUserUpdate'], + ['username', 'event', 'createdAt'], + 'handle user update', + ], + [ + 'message_reaction', + ['HandleMessageReaction'], + [ + 'client_name', + 'chat_id', + 'message_id', + 'content', + 'user', + 'reaction', + 'createdAt', + ], + 'handle message reaction', + ], + [ + 'pingagent', + ['InvokeSoloAgent'], + ['sender', 'message', 'agent', 'createdAt'], + 'ping a single agent', + ], + ['agents', ['GetAgents'], [''], 'show all selected agents'], + [ + 'setagent', + ['SetAgentFields'], + ['name', 'context'], + 'update agents parameters', + ], + ['commands', [''], [''], 'Shows all available commands'], + ], + value: '', + }, + ].map(o => { + o.value = this._commandsToValue(o.commands) + return o + }) + + _findCommand = (commandName: any) => { + let command = null + for (const helpField of helpFields) { + for (const c of helpField.commands) { + const [name, args, description] = c + if (name === commandName) { + command = c + break + } + } + if (command !== null) { + break + } + } + return command + } + + _parseWords = (s: string) => { + const words = [] + const r = /\S+/g + let match + while ((match = r.exec(s))) { + words.push(match) + } + return words + } + + replacePlaceholders(text: string | undefined) { + if (text === undefined || text === '') return '' + + if (text.includes('{time_now}')) { + const now = new Date() + const time = + now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds() + text = text.replace('{time_now}', time) + } + if (text.includes('{date_now}')) { + const today = new Date() + const date = + today.getDay() + '/' + today.getMonth() + '/' + today.getFullYear() + text = text.replace('{date_now}', date) + } + if (text.includes('{year_now}')) { + text = text.replace('{year_now', new Date().getFullYear().toString()) + } + if (text.includes('{month_now}')) { + text = text.replace('{month_now}', new Date().getMonth().toString()) + } + if (text.includes('{day_now}')) { + text = text.replace('{day_now}', new Date().getDay().toString()) + } + if (text.includes('{name}')) { + text = text.replace('{name}', this.bot_name) + } + + return text + } + + async sendSlashCommandResponse( + client: any, + interaction: { id: any; token: any }, + chat_id: any, + text: any + ) { + this.client.api + .interactions(interaction.id, interaction.token) + .callback.post({ + data: { + type: 4, + data: { + content: text, + }, + }, + }) + .catch(console.error) + } + + async handleSlashCommand( + client: any, + interaction: { + data: { name: string; options: { value: string | boolean }[] } + member: { user: { username: string } } + channel_id: string + } + ) { + const command = interaction.data.name.toLowerCase() + const sender = interaction.member.user.username + '' + const chatId = interaction.channel_id + '' + + const dateNow = new Date() + const utc = new Date( + dateNow.getUTCFullYear(), + dateNow.getUTCMonth(), + dateNow.getUTCDate(), + dateNow.getUTCHours(), + dateNow.getUTCMinutes(), + dateNow.getUTCSeconds() + ) + const utcStr = + dateNow.getDate() + + '/' + + (dateNow.getMonth() + 1) + + '/' + + dateNow.getFullYear() + + ' ' + + utc.getHours() + + ':' + + utc.getMinutes() + + ':' + + utc.getSeconds() + // TODO: Replace message with direct message handler + log( + sender, + command, + command === 'say' ? interaction.data.options[0].value : 'none', + 'Discord', + chatId, + utcStr + ) + // MessageClient.instance.sendSlashCommand(sender, command, command === 'say' ? interaction.data.options[0].value : 'none', 'Discord', chatId, utcStr) + } + + async handleSlashCommandResponse(chat_id: any, response: any) { + this.client.channels + .fetch(chat_id) + .then( + (channel: { send: (arg0: any) => void; stopTyping: () => void }) => { + channel.send(response) + channel.stopTyping() + } + ) + .catch((err: string | boolean) => log(err)) + } + + async handleUserUpdateEvent(response: string) { + log('handleUserUpdateEvent: ' + response) + } + + async handleGetAgents(chat_id: any, response: any) { + this.client.channels + .fetch(chat_id) + .then( + (channel: { send: (arg0: any) => void; stopTyping: () => void }) => { + channel.send(response) + channel.stopTyping() + } + ) + .catch((err: string | boolean) => log(err)) + } + + async handleSetAgentsFields(chat_id: any, response: any) { + this.client.channels + .fetch(chat_id) + .then( + (channel: { send: (arg0: any) => void; stopTyping: () => void }) => { + channel.send(response) + channel.stopTyping() + } + ) + .catch((err: string | boolean) => log(err)) + } + + async handlePingSoloAgent( + chat_id: any, + message_id: any, + responses: string | boolean | any[] | undefined, + addPing: boolean + ) { + this.client.channels + .fetch(chat_id) + .then((channel: { messages: { fetch: (arg0: any) => Promise } }) => { + channel.messages.fetch(message_id).then( + (message: { + reply: (arg0: string) => Promise + channel: { + send: ( + arg0: string, + arg1: { split: boolean } | undefined + ) => Promise + } + }) => { + log('response:', responses) + if (responses && (responses as string).includes('uberduck')) { + if (addPing) { + message.reply({ + files: [{ attachment: responses, name: 'voice.wav' }], + }) + return + } else { + message.channel.send('', { + files: [{ attachment: responses, name: 'voice.wav' }], + }) + return + } + } else { + if ( + responses !== undefined && + responses.length <= 2000 && + responses.length > 0 + ) { + let text = this.replacePlaceholders(responses) + if (addPing) { + message + .reply(text) + .then(async function (msg: any) { + //this.onMessageResponseUpdated(channel.id, message.id, msg.id) + }) + .catch(console.error) + } else { + while ( + text === undefined || + text === '' || + text.replace(/\s/g, '').length === 0 + ) + text = getRandomEmptyResponse() + log('response1: ' + text) + message.channel + .send(text) + .then(async function (msg: any) { + //this.onMessageResponseUpdated(channel.id, message.id, msg.id) + }) + .catch(console.error) + } + } else if ( + responses && + responses !== undefined && + responses.length >= 2000 + ) { + let text = this.replacePlaceholders(responses) + if (addPing) { + message.reply(text).then(async function (msg: any) { + //this.onMessageResponseUpdated(channel.id, message.id, msg.id) + }) + } else { + while ( + text === undefined || + text === '' || + text.replace(/\s/g, '').length === 0 + ) + text = getRandomEmptyResponse(this.discord_empty_responses) + log('response2: ' + text) + } + if (text.length > 0) { + message.channel + .send(text, { split: true }) + .then(async function (msg: any) { + //this.onMessageResponseUpdated(channel.id, message.id, msg.id) + }) + } + } else { + const emptyResponse = getRandomEmptyResponse( + this.discord_empty_responses + ) + log('sending empty response 1: ' + emptyResponse) + if ( + emptyResponse !== undefined && + emptyResponse !== '' && + emptyResponse.replace(/\s/g, '').length !== 0 + ) { + let text = emptyResponse + if (addPing) { + message + .reply(text) + .then(async function (msg: any) { + //this.onMessageResponseUpdated( + // channel.id, + // message.id, + // msg.id + //) + }) + .catch(console.error) + } else { + while ( + text === undefined || + text === '' || + text.replace(/\s/g, '').length === 0 + ) + text = getRandomEmptyResponse( + this.discord_empty_responses + ) + log('response4: ' + text) + message.channel + .send(text) + .then(async function (msg: any) { + //this.onMessageResponseUpdated( + // channel.id, + // message.id, + // msg.id + //) + }) + .catch(console.error) + } + } + } + } + } + ) + }) + .catch((err: string | boolean) => log(err)) + } + + async handleMessageEdit( + message_id: any, + chat_id: any, + responses: string | any[] | undefined, + addPing: any + ) { + this.client.channels + .fetch(chat_id) + .then( + async (channel: { + id: any + messages: { fetch: (arg0: { limit: any }) => Promise } + }) => { + const oldResponse = getResponse(channel.id, message_id) + if (oldResponse === undefined) { + return + } + + channel.messages + .fetch(oldResponse) + .then(async (msg: { edit: (arg0: string) => void; id: any }) => { + channel.messages + .fetch({ limit: this.client.edit_messages_max_count }) + .then(async (messages: any[]) => { + messages.forEach(async function (edited: { + id: any + channel: { + send: ( + arg0: any, + arg1: { split: boolean } + ) => Promise + stopTyping: () => void + } + }) { + if (edited.id === message_id) { + Object.keys(responses).map(async function (key, index) { + log('response: ' + responses) + log('response: ' + key) + log('response: ' + index) + + if ( + responses !== undefined && + responses.length <= 2000 && + responses.length > 0 + ) { + let text = replacePlaceholders(responses) + while ( + text === undefined || + text === '' || + text.replace(/\s/g, '').length === 0 + ) + text = getRandomEmptyResponse( + this.discord_empty_responses + ) + log('response1: ' + text) + msg.edit(text) + onMessageResponseUpdated( + channel.id, + edited.id, + msg.id + ) + } else if (responses.length >= 2000) { + let text = replacePlaceholders(responses) + while ( + text === undefined || + text === '' || + text.replace(/\s/g, '').length === 0 + ) + text = getRandomEmptyResponse( + this.discord_empty_responses + ) + log('response2: ' + text) + + if (text.length > 0) { + edited.channel + .send(text, { split: true }) + .then(async function (msg: { id: any }) { + onMessageResponseUpdated( + channel.id, + edited.id, + msg.id + ) + }) + } + } else { + const emptyResponse = getRandomEmptyResponse( + this.discord_empty_responses + ) + log('sending empty response 2: ' + emptyResponse) + if ( + emptyResponse !== undefined && + emptyResponse !== '' && + emptyResponse.replace(/\s/g, '').length !== 0 + ) { + let text = emptyResponse + while ( + text === undefined || + text === '' || + text.replace(/\s/g, '').length === 0 + ) + text = getRandomEmptyResponse( + this.discord_empty_responses + ) + log('response4: ' + text) + msg.edit(text) + onMessageResponseUpdated( + channel.id, + edited.id, + msg.id + ) + } + } + }) + edited.channel.stopTyping() + } + }) + }) + .catch((err: string | boolean) => log(err)) + }) + } + ) + } + + prevMessage = {} + prevMessageTimers = {} + messageResponses = {} + conversation = {} + + onMessageDeleted(channel: string | number, messageId: string | number) { + if ( + this.messageResponses[channel] !== undefined && + this.messageResponses[channel][messageId] !== undefined + ) { + delete this.messageResponses[channel][messageId] + } + } + onMessageResponseUpdated( + channel: string | number, + messageId: string | number, + newResponse: any + ) { + if (this.messageResponses[channel] === undefined) + this.messageResponses[channel] = {} + this.messageResponses[channel][messageId] = newResponse + } + + getMessage( + channel: { messages: { fetchMessage: (arg0: any) => any } }, + messageId: any + ) { + return channel.messages.fetchMessage(messageId) + } + + isInConversation(user: string | number) { + return ( + this.conversation[user] !== undefined && + this.conversation[user].isInConversation === true + ) + } + + sentMessage(user: string) { + for (const c in this.conversation) { + if (c === user) continue + if ( + this.conversation[c] !== undefined && + this.conversation[c].timeOutFinished === true + ) { + this.exitConversation(c) + } + } + + if (this.conversation[user] === undefined) { + this.conversation[user] = { + timeoutId: undefined, + timeOutFinished: true, + isInConversation: true, + } + if (this.conversation[user].timeoutId !== undefined) + clearTimeout(this.conversation[user].timeoutId) + this.conversation[user].timeoutId = setTimeout(() => { + if (this.conversation[user] !== undefined) { + this.conversation[user].timeoutId = undefined + this.conversation[user].timeOutFinished = true + } + }, 480000) + } else { + this.conversation[user].timeoutId = setTimeout(() => { + if (this.conversation[user] !== undefined) { + this.conversation[user].timeoutId = undefined + this.conversation[user].timeOutFinished = true + } + }, 480000) + } + } + + exitConversation(user: string) { + if (this.conversation[user] !== undefined) { + if (this.conversation[user].timeoutId !== undefined) + clearTimeout(this.conversation[user].timeoutId) + this.conversation[user].timeoutId = undefined + this.conversation[user].timeOutFinished = true + this.conversation[user].isInConversation = false + delete this.conversation[user] + // roomManager.instance.removeUser(user, 'discord') + } + } + + getResponse(channel: string | number, message: string | number) { + if (this.messageResponses[channel] === undefined) return undefined + return this.messageResponses[channel][message] + } + + async wasHandled( + chatId: any, + messageId: any, + sender: any, + content: any, + timestamp: any + ) { + if (!database || !database.instance) return // log("Postgres not inited"); + return await database.instance.messageExists( + 'discord', + chatId, + messageId, + sender, + content, + timestamp + ) + } + + moreThanOneInConversation() { + let count = 0 + for (const c in this.conversation) { + if (this.conversation[c] === undefined) continue + if ( + this.conversation[c].isInConversation !== undefined && + this.conversation[c].isInConversation === true && + this.conversation[c].timeOutFinished === false + ) + count++ + } + + return count > 1 + } + + client = Discord.Client as any + entity = undefined + handleInput = null + discord_starting_words: string[] = [] + discord_bot_name_regex: string = '' + discord_bot_name: string = 'Bot' + discord_empty_responses: string[] = [] + use_voice: boolean + voice_provider: string + voice_character: string + voice_language_code: string + createDiscordClient = async ( + entity: any, + discord_api_token: string | undefined, + discord_starting_words: string, + discord_bot_name_regex: string, + discord_bot_name: string | RegExp, + discord_empty_responses: string, + handleInput: ( + message: string | undefined, + speaker: string, + agent: string, + client: string, + channelId: string, + entity: number, + roomInfo: { + user: string + inConversation: boolean + isBot: boolean + info3d: string + }[] + ) => Promise, + use_voice, + voice_provider, + voice_character, + voice_language_code + ) => { + console.log('creating discord client') + this.entity = entity + this.handleInput = handleInput + this.use_voice = use_voice + this.voice_provider = voice_provider + this.voice_character = voice_character + this.voice_language_code = voice_language_code + if (!discord_starting_words || discord_starting_words?.length <= 0) { + this.discord_starting_words = ['hi', 'hey'] + } else { + this.discord_starting_words = discord_starting_words?.split(',') + for (let i = 0; i < this.discord_starting_words.length; i++) { + this.discord_starting_words[i] = this.discord_starting_words[i] + .trim() + .toLowerCase() + } + } + if (!discord_empty_responses || discord_empty_responses?.length <= 0) { + this.discord_empty_responses = ["I can't understand you"] + } else { + this.discord_empty_responses = discord_empty_responses?.split(',') + for (let i = 0; i < this.discord_empty_responses.length; i++) { + this.discord_empty_responses[i] = this.discord_empty_responses[i] + .trim() + .toLowerCase() + } + } + + this.discord_bot_name_regex = discord_bot_name_regex + this.discord_bot_name = discord_bot_name + + const token = discord_api_token ?? process.env.DISCORD_API_TOKEN + if (!token) return console.warn('No API token for Discord bot, skipping') + + this.client = new Discord.Client({ + partials: ['MESSAGE', 'USER', 'REACTION'], + intents: [ + Intents.FLAGS.GUILDS, + Intents.FLAGS.GUILD_PRESENCES, + Intents.FLAGS.GUILD_MEMBERS, + Intents.FLAGS.GUILD_MESSAGES, + Intents.FLAGS.GUILD_VOICE_STATES, + ], + }) + this.bot_name = discord_bot_name + this.client.prefix = '!' + this.client.prefixOptionalWhenMentionOrDM = true + + this.client.on('debug', message => { + console.log('debug', message) + }) + + //{ intents: [ Intents.GUILDS, Intents.GUILD_MEMBERS, Intents.GUILD_VOICE_STATES, Intents.GUILD_PRESENCES, Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.DIRECT_MESSAGES] }); + // We also need to make sure we're attaching the config to the CLIENT so it's accessible everywhere! + this.client.helpFields = this.helpFields + this.client._findCommand = this._findCommand + this.client._parseWords = this._parseWords + this.client.name_regex = new RegExp(discord_bot_name, 'ig') + + this.client.username_regex = new RegExp(this.discord_bot_name_regex, 'ig') //'((?:digital|being)(?: |$))' + this.client.edit_messages_max_count = 5 + + const embed = new Discord.MessageEmbed().setColor(0x00ae86) + + this.client.embed = embed + + if (this.use_voice) { + initSpeechClient( + this.client, + this.discord_bot_name, + this.entity, + this.handleInput, + this.voice_provider, + this.voice_character, + this.voice_language_code + ) + } + + this.client.on('messageCreate', this.messageCreate.bind(null, this.client)) + // this.client.on('messageDelete', this.messageDelete.bind(null, this.client)) + // this.client.on('messageUpdate', this.messageUpdate.bind(null, this.client)) + // this.client.on( + // 'presenceUpdate', + // this.presenceUpdate.bind(null, this.client) + // ) + + this.client.on( + 'interactionCreate', + async (interaction: string | boolean) => { + log('Handling interaction', interaction) + this.handleSlashCommand(client, interaction) + } + ) + this.client.on( + 'guildMemberAdd', + async (user: { user: { id: any; username: any } }) => { + this.handleGuildMemberAdd(user) + } + ) + this.client.on('guildMemberRemove', async (user: any) => { + this.handleGuildMemberRemove(user) + }) + this.client.on('messageReactionAdd', async (reaction: any, user: any) => { + this.handleMessageReactionAdd(reaction, user) + }) + + // this.client.commands = new Discord.Collection() + + // this.client.commands.set('agents', this.agents) + // this.client.commands.set('ban', this.ban) + // this.client.commands.set('commands', this.commands) + // this.client.commands.set('ping', this.ping) + // this.client.commands.set('pingagent', this.pingagent) + // this.client.commands.set('setagent', this.setagent) + // this.client.commands.set('setname', this.setname) + // this.client.commands.set('unban', this.unban) + + // setInterval(() => { + // const channelIds: any[] = [] + + // this.client.channels.cache.forEach(async (channel: { topic: string | undefined; id: string | number } | undefined) => { + // if (!channel || !channel.topic) return + // if (channel === undefined || channel.topic === undefined) return + // if ( + // channel.topic.length < 0 || + // channel.topic.toLowerCase() !== 'daily discussion' + // ) + // return + // if (channelIds.includes(channel.id)) return + + // channelIds.push(channel.id) + // if ( + // this.discussionChannels[channel.id] === undefined || + // !this.discussionChannels + // ) { + // this.discussionChannels[channel.id] = { + // timeout: setTimeout(() => { + // delete this.discussionChannels[channel.id] + // }, 1000 * 3600 * 4), + // responded: false, + // } + // // const resp = await handleInput( + // // 'Tell me about ' + 'butterlifes', + // // 'bot', + // // this.discord_bot_name ?? 'Agent', + // // 'discord', + // // message.channel.id, + // // this.spell_handler, + // // this.spell_version + // // ) + // // channel.send(resp) + // } + // }) + // }, 1000 * 3600) + + this.client.login(token) + } + + discussionChannels = {} + + async sendMessageToChannel(channelId: any, msg: any) { + const channel = await this.client.channels.fetch(channelId) + if (channel && channel !== undefined) { + channel.send(msg) + } + } +} + +export default discord_client diff --git a/server/src/entities/connectors/handleInput.ts b/server/src/entities/connectors/handleInput.ts new file mode 100644 index 000000000..37a6ec344 --- /dev/null +++ b/server/src/entities/connectors/handleInput.ts @@ -0,0 +1,65 @@ +/* eslint-disable no-console */ +/* eslint-disable no-param-reassign */ +/* eslint-disable camelcase */ +/* eslint-disable @typescript-eslint/no-inferrable-types */ +import axios from 'axios' +//handles the input from a client according to a selected agent and responds +export async function handleInput( + message: string | undefined, + speaker: string, + agent: string, + client: string, + channelId: string, + entity: number, + spell_handler: string, + spell_version: string = 'latest' +) { + if (spell_handler === undefined) { + spell_handler = 'default' + } + if (spell_version === undefined) { + spell_version = 'latest' + } + + const url = encodeURI( + `https://localhost:8001/spells/${spell_handler}/${spell_version}` + ) + + const response = await axios.post(`${url}`, { + Input: { + Input: message, + Speaker: speaker, + Agent: agent, + Client: client, + ChannelID: channelId, + Entity: entity, + }, + }) + let index = undefined + + for (const x in response.data.outputs) { + index = x + } + + if (index && index !== undefined) { + return response.data.outputs[index] + } else { + return undefined + } +} + +export async function handleCustomInput( + message: string, + sender: string, + isVoice: boolean, + agent: string = 'Thales' +) { + const response = await axios.post(`https://localhost:8001/custom_message`, { + message: message, + sender: sender, + agent: agent, + isVoice: isVoice, + }) + + return response.data.response +} diff --git a/server/src/entities/connectors/instagram.ts b/server/src/entities/connectors/instagram.ts new file mode 100644 index 000000000..02a6bce6c --- /dev/null +++ b/server/src/entities/connectors/instagram.ts @@ -0,0 +1,144 @@ +/* eslint-disable no-invalid-this */ +/* eslint-disable camelcase */ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck + +import { IgApiClient } from 'instagram-private-api' +import { database } from './database' +import { handleInput } from './handleInput' +import { getSetting } from './utils' + +export class instagram_client { + agent + spell_handler + spell_version + + createInstagramClient = async ( + agent, + username, + password, + spell_version, + spell_handler + ) => { + this.agent = agent + this.spell_version = spell_version + this.spell_handler = spell_handler + + const username = getSetting(settings, 'instagramUsername') + const password = getSetting(settings, 'instagramPassword') + if (!username || !password) + return console.warn('No Instagram credentials found, skipping') + + //creates the instagram client and logs in using the credentials + const ig = new IgApiClient() + ig.state.generateDevice(username) + + await ig.simulate.preLoginFlow() + const loggedInUser = await ig.account.login(username, password) + process.nextTick(async () => await ig.simulate.postLoginFlow()) + + const history = { + pending: await ig.feed.directInbox().items(), + unread: [], + } + + for (const idx in history.pending) { + const pending = history.pending[idx] + if (pending.last_permanent_item.item_type === 'text') { + await database.instance.messageExists( + 'instagram', + pending.thread_id, + pending.last_permanent_item.item_id + '', + pending.last_permanent_item.user_id === loggedInUser.pk + ? agent.name + : pending.thread_title, + pending.last_permanent_item.text, + parseInt(pending.last_permanent_item.timestamp) / 1000 + ) + } + } + + setInterval(async () => { + const inbox = { + pending: await ig.feed.directInbox().items(), + } + + for (const idx in inbox.pending) { + const pending = inbox.pending[idx] + if (pending.last_permanent_item.item_type === 'text') { + if (pending.last_permanent_item.user_id === loggedInUser.pk) { + await database.instance.messageExists( + 'instagram', + pending.thread_id, + pending.last_permanent_item.item_id + '', + pending.last_permanent_item.user_id === loggedInUser.pk + ? agent.name + : pending.thread_title, + pending.last_permanent_item.text, + parseInt(pending.last_permanent_item.timestamp) / 1000 + ) + + continue + } + + await database.instance.messageExistsAsyncWitHCallback( + 'instgram', + pending.thread_id, + pending.last_permanent_item.item_id + '', + pending.users[0].username, + pending.last_permanent_item.text, + parseInt(pending.last_permanent_item.timestamp), + async () => { + const timestamp = parseInt(pending.last_permanent_item.timestamp) + const date = new Date(timestamp / 1000) + const utc = new Date( + date.getUTCFullYear(), + date.getUTCMonth(), + date.getUTCDate(), + date.getUTCHours(), + date.getUTCMinutes(), + date.getUTCSeconds() + ) + const utcStr = + date.getDate() + + '/' + + (date.getMonth() + 1) + + '/' + + date.getFullYear() + + ' ' + + utc.getHours() + + ':' + + utc.getMinutes() + + ':' + + utc.getSeconds() + + log('got new message: ' + pending.last_permanent_item.text) + + const resp = await handleInput( + pending.last_permanent_item.text, + pending.users[0].username, + agent.name, + 'instagram', + pending.thread_id, + this.spell_handler, + this.spell_version + ) + + const thread = ig.entity.directThread(chatId) + await thread.broadcastText(resp) + + database.instance.addMessageInHistoryWithDate( + 'instagram', + pending.thread_id, + pending.last_permanent_item.item_id + '', + pending.users[0].username, + pending.last_permanent_item.text, + utcStr + ) + } + ) + } + } + }, 5000) + } +} diff --git a/server/src/entities/connectors/messenger.ts b/server/src/entities/connectors/messenger.ts new file mode 100644 index 000000000..d2451bb7b --- /dev/null +++ b/server/src/entities/connectors/messenger.ts @@ -0,0 +1,197 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable require-await */ +/* eslint-disable camelcase */ +/* eslint-disable no-invalid-this */ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck +import request from 'request' + +import { database } from './database' +import { handleInput } from './handleInput' +import { getRandomEmptyResponse, getSetting } from './utils' + +export class messenger_client { + async addMessageToHistory(chatId, senderName, content, messageId) { + // database.instance.addMessageInHistory( + // 'facebook', + // chatId, + // messageId + '', + // senderName, + // content + // ) + } + + async handleMessage(senderPsid, receivedMessage) { + if (await database.instance.isUserBanned(senderPsid, 'messenger')) return + + log('receivedMessage: ' + receivedMessage.text + ' from: ' + senderPsid) + + if (receivedMessage.text) { + await database.instance.getNewMessageId( + 'messenger', + senderPsid, + async msgId => { + this.addMessageToHistory( + senderPsid, + senderPsid, + receivedMessage.text, + msgId + ) + const message = receivedMessage.text + const resp = await handleInput( + message, + senderPsid, + this.agent.name ?? 'Agent', + 'messenger', + senderPsid + ) + this.handlePacketSend(senderPsid, resp) + } + ) + } + } + + async handlePacketSend(senderPsid, response) { + log('response: ' + response) + if ( + response !== undefined && + response.length <= 2000 && + response.length > 0 + ) { + let text = response + while ( + text === undefined || + text === '' || + text.replace(/\s/g, '').length === 0 + ) + text = getRandomEmptyResponse() + this.callSendAPI(senderPsid, { text: text }, text) + } else if (response.length > 20000) { + const lines = [] + let line = '' + for (let i = 0; i < response.length; i++) { + line += response + if (i >= 1980 && (line[i] === ' ' || line[i] === '')) { + lines.push(line) + line = '' + } + } + + for (let i = 0; i < lines.length; i++) { + if ( + lines[i] !== undefined && + lines[i] !== '' && + lines[i].replace(/\s/g, '').length !== 0 + ) { + if (i === 0) { + let text = lines[1] + while ( + text === undefined || + text === '' || + text.replace(/\s/g, '').length === 0 + ) + text = getRandomEmptyResponse() + this.callSendAPI(senderPsid, { text: text }, text) + } + } + } + } else { + let emptyResponse = getRandomEmptyResponse() + while ( + emptyResponse === undefined || + emptyResponse === '' || + emptyResponse.replace(/\s/g, '').length === 0 + ) + emptyResponse = getRandomEmptyResponse() + this.callSendAPI(senderPsid, { text: emptyResponse }, emptyResponse) + } + } + + async callSendAPI(senderPsid, response, text) { + await database.instance.getNewMessageId( + 'messenger', + senderPsid, + async msgId => { + this.addMessageToHistory(senderPsid, this.agent.name, text, msgId) + // The page access token we have generated in your app settings + const PAGE_ACCESS_TOKEN = getSetting(this.settings, 'messengerToken') + + // Construct the message body + const requestBody = { + recipient: { + id: senderPsid, + }, + message: response, + } + + // Send the HTTP request to the Messenger Platform + request( + { + uri: 'https://graph.facebook.com/v2.6/me/messages', + qs: { access_token: PAGE_ACCESS_TOKEN }, + method: 'POST', + json: requestBody, + }, + (err, _res, _body) => { + if (!err) { + log('Message sent!') + } else { + error('Unable to send message:' + err) + } + } + ) + } + ) + } + + agent + settings + + createMessengerClient = async (app, agent, settings) => { + this.agent = agent + this.settings = settings + + const token = getSetting(settings, 'messengerToken') + const verify_token = getSetting(settings, 'messengerVerifyToken') + + if (!token || !verify_token) + return console.warn('No API tokens for Messenger bot, skipping') + + app.get('/webhook', async function (req, res) { + const VERIFY_TOKEN = verify_token + + const mode = req.query['hub.mode'] + const token = req.query['hub.verify_token'] + const challenge = req.query['hub.challenge'] + + if (mode && token) { + if (mode === 'subscribe' && token === VERIFY_TOKEN) { + log('WEBHOOK_VERIFIED') + res.status(200).send(challenge) + } else { + log('WEBHOOK_FORBIDDEN') + res.sendStatus(403) + } + } + }) + app.post('/webhook', async function (req, res) { + const body = req.body + + if (body.object === 'page') { + await body.entry.forEach(async function (entry) { + const webhookEvent = entry.messaging[0] + const senderPsid = webhookEvent.sender.id + + if (webhookEvent.message) { + await this.handleMessage(senderPsid, webhookEvent.message) + } + }) + + res.status(200).send('EVENT_RECEIVED') + } else { + res.sendStatus(404) + } + }) + log('facebook client created') + } +} diff --git a/server/src/entities/connectors/reddit.ts b/server/src/entities/connectors/reddit.ts new file mode 100644 index 000000000..9cce93694 --- /dev/null +++ b/server/src/entities/connectors/reddit.ts @@ -0,0 +1,495 @@ +/* eslint-disable no-prototype-builtins */ +/* eslint-disable no-invalid-this */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable require-await */ +/* eslint-disable camelcase */ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck + +import SnooStream from 'snoostream' +import * as snoowrap from 'snoowrap' +import { database } from './database' +import { handleInput } from './handleInput' +import { getSetting } from './utils' + +export let reddit + +export const prevMessage = {} +export const prevMessageTimers = {} +export const messageResponses = {} +export const conversation = {} + +export class reddit_client { + reddit + prevMessage = {} + prevMessageTimers = {} + messageResponses = {} + conversation = {} + + onMessageDeleted(channel, messageId) { + if ( + this.messageResponses[channel] !== undefined && + this.messageResponses[channel][messageId] !== undefined + ) { + delete this.messageResponses[channel][messageId] + } + } + onMessageResponseUpdated(channel, messageId, newResponse) { + if (this.messageResponses[channel] === undefined) + this.messageResponses[channel] = {} + this.messageResponses[channel][messageId] = newResponse + } + + getMessage(channel, messageId) { + return channel.messages.fetchMessage(messageId) + } + + isInConversation(user) { + return ( + this.conversation[user] !== undefined && + this.conversation[user].isInConversation === true + ) + } + + sentMessage(user) { + for (const c in this.conversation) { + if (c === user) continue + if ( + this.conversation[c] !== undefined && + this.conversation[c].timeOutFinished === true + ) { + this.exitConversation(c) + } + } + + if (this.conversation[user] === undefined) { + this.conversation[user] = { + timeoutId: undefined, + timeOutFinished: true, + isInConversation: true, + } + if (this.conversation[user].timeoutId !== undefined) + clearTimeout(this.conversation[user].timeoutId) + this.conversation[user].timeoutId = setTimeout(() => { + if (this.conversation[user] !== undefined) { + this.conversation[user].timeoutId = undefined + this.conversation[user].timeOutFinished = true + } + }, 480000) + } else { + this.conversation[user].timeoutId = setTimeout(() => { + if (this.conversation[user] !== undefined) { + this.conversation[user].timeoutId = undefined + this.conversation[user].timeOutFinished = true + } + }, 480000) + } + } + + exitConversation(user) { + if (this.conversation[user] !== undefined) { + if (this.conversation[user].timeoutId !== undefined) + clearTimeout(this.conversation[user].timeoutId) + this.conversation[user].timeoutId = undefined + this.conversation[user].timeOutFinished = true + this.conversation[user].isInConversation = false + delete this.conversation[user] + } + } + + getResponse(channel, message) { + if (this.messageResponses[channel] === undefined) return undefined + return this.messageResponses[channel][message] + } + + async handleMessage(response, messageId, chat_id, args, reddit) { + if (args === 'isChat') { + this.reddit + .getMessage(messageId) + .reply(responses[key]) + .then(async res => { + database.instance.addMessageInHistory( + 'reddit', + chat_id, + res.id, + 'bot', + response + ) + }) + } else if (args === 'isPost') { + this.reddit + .getSubmission(chat_id) + .reply(responses[key]) + .then(async res => { + database.instance.addMessageInHistory( + 'reddit', + chat_id, + res.id, + 'bot', + response + ) + }) + } + } + + addMessageToHistory(chatId, messageId, senderName, content) { + database.instance.addMessageInHistory( + 'reddit-chat', + chatId, + messageId, + senderName, + content + ) + } + async addMessageInHistoryWithDate( + chatId, + messageId, + senderName, + content, + timestamp + ) { + await database.instance.addMessageInHistoryWithDate( + 'reddit-chat', + chatId, + messageId, + senderName, + content, + timestamp + ) + } + async deleteMessageFromHistory(chatId, messageId) { + return + // await database.instance.deleteMessage('reddit-chat', chatId, messageId) + } + async updateMessage(chatId, messageId, newContent) { + // await database.instance.updateMessage( + // 'reddit-chat', + // chatId, + // messageId, + // newContent, + // true + // ) + } + async wasHandled(chatId, messageId, sender, content, timestamp) { + // return await database.instance.messageExistsAsync( + // 'reddit-chat', + // chatId, + // messageId, + // sender, + // content, + // timestamp + // ) + } + + agent + settings + + createRedditClient = async (agent, settings) => { + this.agent = agent + this.settings = settings + + const appId = getSetting(settings, 'redditAppID') + const appSecredId = getSetting(settings, 'redditAppSecretID') + const oauthToken = getSetting(settings, 'redditOathToken') + //https://github.com/not-an-aardvark/reddit-oauth-helper + if (!appId || !appSecredId) + return console.warn('No API token for Reddit bot, skipping') + + const snooWrapOpptions = { + continueAfterRatelimitError: true, + requestDelay: 1100, + } + + this.reddit = new snoowrap({ + userAgent: 'test_db_app', + clientId: appId, + clientSecret: appSecredId, + refreshToken: oauthToken, + }) + this.reddit.config(snooWrapOpptions) + const stream = new SnooStream(reddit) + log('loaded reddit client') + + const regex = new RegExp('((?:carl|sagan)(?: |$))', 'ig') + + const commentStream = stream.commentStream('test_db') + commentStream.on('post', async (post, match) => { + let _match + if (post.hasOwnProperty('body')) { + _match = post.body.match(regex) + } else if (post.hasOwnProperty('selftext')) { + _match = post.selftext.match(regex) + } + + if (_match) { + log('got new commend') // - ' + JSON.stringify(post)) + const id = post.id + const chat_id = post.link_url.split('/')[6] + const senderId = post.author_fullname + const author = post.author.name + const body = post.body + const timestamp = post.created_utc + const resp = await handleInput(body, author, 'Agent', 'reddit', chat_id) + await this.handleMessage(resp, id, chat_id, 'isPost', reddit) + const date = new Date(post.created) + const utc = new Date( + date.getUTCFullYear(), + date.getUTCMonth(), + date.getUTCDate(), + date.getUTCHours(), + date.getUTCMinutes(), + date.getUTCSeconds() + ) + const utcStr = + date.getDate() + + '/' + + (date.getMonth() + 1) + + '/' + + date.getFullYear() + + ' ' + + utc.getHours() + + ':' + + utc.getMinutes() + + ':' + + utc.getSeconds() + + database.instance.addMessageInHistoryWithDate( + 'reddit', + chat_id, + id, + author, + body, + utcStr + ) + } else { + await database.instance.messageExistsAsyncWitHCallback2( + 'reddit', + post.link_url.split('/')[6], + post.id, + post.author.name, + post.body, + post.timestamp, + async () => { + log('got new commend') // - ' + JSON.stringify(post)) + const id = post.id + const chat_id = post.link_url.split('/')[6] + const senderId = post.author_fullname + const author = post.author + const body = post.body + const timestamp = post.created_utc + const resp = await handleInput( + body, + author, + 'Agent', + 'reddit', + chat_id + ) + await this.handleMessage(resp, id, chat_id, 'isPost', reddit) + const date = new Date(post.created) + const utc = new Date( + date.getUTCFullYear(), + date.getUTCMonth(), + date.getUTCDate(), + date.getUTCHours(), + date.getUTCMinutes(), + date.getUTCSeconds() + ) + const utcStr = + date.getDate() + + '/' + + (date.getMonth() + 1) + + '/' + + date.getFullYear() + + ' ' + + utc.getHours() + + ':' + + utc.getMinutes() + + ':' + + utc.getSeconds() + + database.instance.addMessageInHistoryWithDate( + 'reddit', + chat_id, + id, + author, + body, + utcStr + ) + } + ) + } + }) + const submissionStream = stream.submissionStream('test_db', { + regex: '((?:carl|sagan)(?: |$))', + }) + submissionStream.on('post', async (post, match) => { + let _match + if (post.hasOwnProperty('body')) { + _match = post.body.match(regex) + } else if (post.hasOwnProperty('selftext')) { + _match = post.selftext.match(regex) + } + + if (_match) { + log('got new post' + JSON.stringify(post)) + const id = post.id + const chat_id = post.id + const senderId = post.author_fullname + const author = post.author.name + const body = post.selftext + const timestamp = post.created_utc + const resp = await handleInput(body, author, 'Agent', 'reddit', chat_id) + await this.handleMessage(resp, id, chat_id, 'isPost', reddit) + const date = new Date(post.created) + const utc = new Date( + date.getUTCFullYear(), + date.getUTCMonth(), + date.getUTCDate(), + date.getUTCHours(), + date.getUTCMinutes(), + date.getUTCSeconds() + ) + const utcStr = + date.getDate() + + '/' + + (date.getMonth() + 1) + + '/' + + date.getFullYear() + + ' ' + + utc.getHours() + + ':' + + utc.getMinutes() + + ':' + + utc.getSeconds() + + database.instance.addMessageInHistoryWithDate( + 'reddit', + chat_id, + id, + author, + body, + utcStr + ) + } else { + await database.instance.messageExistsAsyncWitHCallback2( + 'reddit', + post.id, + post.id, + post.author.name, + post.body, + post.timestamp, + async () => { + log('got new post') // - ' + JSON.stringify(post)) + const id = post.id + const chat_id = post.id + const senderId = post.author_fullname + const author = post.author + const body = post.selftext + const timestamp = post.created_utc + const resp = await handleInput( + body, + author, + 'Agent', + 'reddit', + chat_id + ) + await this.handleMessage(resp, id, chat_id, 'isPost', reddit) + const date = new Date(post.created) + const utc = new Date( + date.getUTCFullYear(), + date.getUTCMonth(), + date.getUTCDate(), + date.getUTCHours(), + date.getUTCMinutes(), + date.getUTCSeconds() + ) + const utcStr = + date.getDate() + + '/' + + (date.getMonth() + 1) + + '/' + + date.getFullYear() + + ' ' + + utc.getHours() + + ':' + + utc.getMinutes() + + ':' + + utc.getSeconds() + + database.instance.addMessageInHistoryWithDate( + 'reddit', + chat_id, + id, + author, + body, + utcStr + ) + } + ) + } + }) + + setInterval(async () => { + ; (await reddit.getInbox()).forEach(async message => { + const id = message.name + const senderId = message.id + const author = message.author.name + const body = message.body + const timestamp = message.created_utc + const agentConfig = 'Agent' + if (!author.includes('reddit')) { + //log('current message: ' + body) + await database.instance.messageExistsAsyncWitHCallback( + 'reddit', + senderId, + id, + author, + body, + timestamp, + async () => { + log('got new message: ' + body) + const resp = await handleInput( + body, + author, + agentConfig, + 'reddit', + chat_id + ) + await this.handleMessage(resp, id, chat_id, 'isChat', reddit) + const date = new Date(timestamp) + const utc = new Date( + date.getUTCFullYear(), + date.getUTCMonth(), + date.getUTCDate(), + date.getUTCHours(), + date.getUTCMinutes(), + date.getUTCSeconds() + ) + const utcStr = + date.getDate() + + '/' + + (date.getMonth() + 1) + + '/' + + date.getFullYear() + + ' ' + + utc.getHours() + + ':' + + utc.getMinutes() + + ':' + + utc.getSeconds() + + database.instance.addMessageInHistoryWithDate( + 'reddit', + id, + id, + author, + body, + utcStr + ) + } + ) + } + }) + }, 1000) + } +} diff --git a/server/src/entities/connectors/telegram.ts b/server/src/entities/connectors/telegram.ts new file mode 100644 index 000000000..2239b44ca --- /dev/null +++ b/server/src/entities/connectors/telegram.ts @@ -0,0 +1,616 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable no-param-reassign */ +/* eslint-disable no-invalid-this */ +/* eslint-disable camelcase */ +/* eslint-disable require-await */ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck + +// TODO: This was imported fropm our old codebase +// We need to break some of this code out so that we have more control of it in the node graph +// i.e. text classification and such + +import roomManager from '../components/agent/roomManager' +import { classifyText } from '../utils/textClassifier' +import { database } from './database' +import { handleInput } from './handleInput' +import { getRandomEmptyResponse, getSetting, startsWithCapital } from './utils' + +export class telegram_client { + async handleMessage(chat_id, response, message_id, addPing, args, bot) { + let senderId = '' + let senderName = '' + if ( + args !== 'none' && + args.startsWith('[') && + args[args.length - 1] === ']' + ) { + args = JSON.parse(args) + senderId = args[0] + senderName = args[1] + } + log('response: ' + response) + if (response !== undefined && response.length > 0) { + let text = response + while ( + text === undefined || + text === '' || + text.replace(/\s/g, '').length === 0 + ) + text = getRandomEmptyResponse() + if (addPing) + bot + .sendMessage( + chat_id, + `${senderName} ${text}`, + { parse_mode: 'HTML' } + ) + .then(function (_resp) { + this.onMessageResponseUpdated( + _resp.chat.id, + message_id, + _resp.message_id + ) + this.addMessageToHistory( + _resp.chat.id, + _resp.message_id, + this.agent.name, + text + ) + }) + .catch(console.error) + else + bot + .sendMessage(chat_id, text) + .then(function (_resp) { + this.onMessageResponseUpdated( + _resp.chat.id, + message_id, + _resp.message_id + ) + this.addMessageToHistory( + _resp.chat.id, + _resp.message_id, + this.agent.name, + text + ) + }) + .catch(console.error) + } else { + let emptyResponse = getRandomEmptyResponse() + while ( + emptyResponse === undefined || + emptyResponse === '' || + emptyResponse.replace(/\s/g, '').length === 0 + ) + emptyResponse = getRandomEmptyResponse() + if (addPing) + bot + .sendMessage( + chat_id, + `${senderName} ${emptyResponse}`, + { parse_mode: 'HTML' } + ) + .then(function (_resp) { + this.onMessageResponseUpdated( + _resp.chat.id, + message_id, + _resp.message_id + ) + this.addMessageToHistory( + _resp.chat.id, + _resp.message_id, + this.agent.name, + emptyResponse + ) + }) + .catch(console.error) + else + bot + .sendMessage(chat_id, emptyResponse) + .then(function (_resp) { + this.onMessageResponseUpdated( + _resp.chat.id, + message_id, + _resp.message_id + ) + this.addMessageToHistory( + _resp.chat.id, + _resp.message_id, + this.agent.name, + emptyResponse + ) + }) + .catch(console.error) + } + } + + async handleEditMessage(chat_id, message_id, response, args, bot) { + let senderId = '' + let senderName = '' + if ( + args !== 'none' && + args.startsWith('[') && + args[args.length - 1] === ']' + ) { + args = JSON.parse(args) + senderId = args[0] + senderName = args[1] + } + log('response: ' + response) + if ( + response !== undefined && + response.length <= 2000 && + response.length > 0 + ) { + let text = response + while ( + text === undefined || + text === '' || + text.replace(/\s/g, '').length === 0 + ) + text = getRandomEmptyResponse() + bot + .sendMessage( + chat_id, + `${senderName} ${text}`, + { parse_mode: 'HTML' } + ) + .then(function (_resp) { + this.onMessageResponseUpdated( + _resp.chat.id, + message_id, + _resp.message_id + ) + this.addMessageToHistory( + _resp.chat.id, + _resp.message_id, + telegramPacketHandler.instance.botName, + text + ) + }) + .catch(console.error) + } else if (response.length > 2000) { + const lines = [] + let line = '' + for (let i = 0; i < response.length; i++) { + line += response + if (i >= 1980 && (line[i] === ' ' || line[i] === '')) { + lines.push(line) + line = '' + } + } + + for (let i = 0; i < lines.length; i++) { + if ( + lines[i] !== undefined && + lines[i] !== '' && + lines[i].replace(/\s/g, '').length !== 0 + ) { + if (i === 0) { + let text = lines[1] + while ( + text === undefined || + text === '' || + text.replace(/\s/g, '').length === 0 + ) + text = getRandomEmptyResponse() + bot + .sendMessage( + chat_id, + `${senderName} ${text}`, + { parse_mode: 'HTML' } + ) + .then(function (_resp) { + this.onMessageResponseUpdated( + _resp.chat.id, + message_id, + _resp.message_id + ) + this.addMessageToHistory( + _resp.chat.id, + _resp.message_id, + telegramPacketHandler.instance.botName, + text + ) + }) + .catch(console.error) + } + } + } + } else { + let emptyResponse = getRandomEmptyResponse() + while ( + emptyResponse === undefined || + emptyResponse === '' || + emptyResponse.replace(/\s/g, '').length === 0 + ) + emptyResponse = getRandomEmptyResponse() + bot + .sendMessage( + chat_id, + `${senderName} ${emptyResponse}`, + { parse_mode: 'HTML' } + ) + .then(function (_resp) { + this.onMessageResponseUpdated( + _resp.chat.id, + message_id, + _resp.message_id + ) + this.addMessageToHistory( + _resp.chat.id, + _resp.message_id, + telegramPacketHandler.instance.botName, + emptyResponse + ) + }) + .catch(console.error) + } + } + + async onMessageEdit(bot, msg, botName) { + if (await database.instance.isUserBanned(msg.from.id + '', 'telegram')) + return + log('edited_message: ' + JSON.stringify(msg)) + const date = Date.now() / 1000 + const msgDate = msg.date + const diff = date - msgDate + const hours_diff = Math.ceil(diff / 3600) + const mins_diff = Math.ceil((diff - hours_diff) / 60) + if (mins_diff > 12 || (mins_diff <= 12 && hours_diff > 1)) return + const _sender = + msg.from.username === undefined ? msg.from.first_name : msg.from.username + + this.updateMessage(msg.chat.id, msg.message_id, msg.text) + if (msg.from.is_bot) return + + const oldResponse = this.getResponse(msg.chat.id, msg.message_id) + if (oldResponse === undefined) return + + const resp = handleInput( + msg.text, + msg.from.first_name, + 'Agent', + 'telegram', + msg.chat.id + ) + await this.handleEditMessage( + msg.chat.id, + msg.message_id, + resp, + "[ '" + msg.from.id + "', '" + msg.from.first_name + "' ]", + bot + ) + } + + async onMessage(bot, msg, botName, username_regex) { + this.addMessageToHistory( + msg.chat.id, + msg.message_id, + msg.from.username === undefined ? msg.from.first_name : msg.from.username, + msg.text + ) + log(JSON.stringify(msg)) + const date = Date.now() / 1000 + const msgDate = msg.date + const diff = date - msgDate + const hours_diff = Math.ceil(diff / 3600) + const mins_diff = Math.ceil((diff - hours_diff) / 60) + if (mins_diff > 12 || (mins_diff <= 12 && hours_diff > 1)) return + + if (await database.instance.isUserBanned(msg.from.id + '', 'telegram')) + return + let content = msg.text + const _sender = + msg.from.username === undefined ? msg.from.first_name : msg.from.username + this.addMessageToHistory(msg.chat.id, msg.message_id, _sender, content) + let addPing = false + if (msg.chat.type == 'supergroup') { + if (content === '') content = '{sent media}' + let isReply = false + if (msg.reply_to_message !== undefined) { + if (msg.reply_to_message.from.username === botName) isReply = true + else { + this.exitConversation(_sender) + const _replyTo = + msg.reply_to_message.from.username === undefined + ? msg.reply_to_message.from.first_name + : msg.reply_to_message.from.username + this.exitConversation(_replyTo) + return + } + } + let _prev = undefined + if (!msg.from.is_bot) { + _prev = prevMessage[msg.chat.id] + this.prevMessage[msg.chat.id] = _sender + if (prevMessageTimers[msg.chat.id] !== undefined) + clearTimeout(prevMessageTimers[msg.chat.id]) + this.prevMessageTimers[msg.chat.id] = setTimeout( + () => (prevMessage[msg.chat.id] = ''), + 120000 + ) + } + addPing = + (_prev !== undefined && _prev !== '' && _prev !== _sender) || + this.moreThanOneInConversation() + + const isMention = + msg.entities !== undefined && + msg.entities.length === 1 && + msg.entities[0].type === 'mention' && + content.includes('@' + getSetting(this.settings, 'telegramBotName')) + const otherMention = + msg.entities !== undefined && + msg.entities.length > 0 && + msg.entities[0].type === 'mention' && + !content.includes('@' + getSetting(this.settings, 'telegramBotName')) + let startConv = false + let startConvName = '' + if (!isMention && !otherMention) { + const trimmed = content.trimStart() + if (trimmed.toLowerCase().startsWith('hi')) { + const parts = trimmed.split(' ') + if (parts.length > 1) { + if (!startsWithCapital(parts[1])) { + startConv = true + } else { + startConv = false + startConvName = parts[1] + } + } else { + if (trimmed.toLowerCase() === 'hi') { + startConv = true + } + } + } + } + if (otherMention) { + this.exitConversation(_sender) + for (let i = 0; i < msg.entities.length; i++) { + if (msg.entities[i].type === 'mention') { + const _user = msg.text.slice( + msg.entities[i].offset + 1, + msg.entities[i].length + ) + this.exitConversation(_user) + } + } + } + if (!startConv) { + if (startConvName.length > 0) { + this.exitConversation(_sender) + this.exitConversation(startConvName) + } + } + + const isUserNameMention = content + .toLowerCase() + .replace(',', '') + .replace('.', '') + .replace('?', '') + .replace('!', '') + .match(username_regex) + const isInDiscussion = this.isInConversation(_sender) + if (!content.startsWith('!') && !otherMention) { + if (isMention) content = '!ping ' + content.replace('!', '').trim() + else if (isUserNameMention) + content = '!ping ' + content.replace(username_regex, '').trim() + else if (isInDiscussion || startConv || isReply) + content = '!ping ' + content + } + + if (!otherMention && content.startsWith('!ping')) sentMessage(_sender) + + if (otherMention) { + roomManager.instance.userPingedSomeoneElse(_sender, 'telegram') + } + } else { + content = '!ping ' + content + } + + if (content === '!ping ' || !content.startsWith('!ping')) { + if (roomManager.instance.agentCanResponse(user, 'telegram')) { + content = '!ping ' + content + this.sentMessage(_sender) + } else { + const oldChat = database.instance.getEvent( + defaultAgent, + _sender, + 'telegram', + msg.chat.id, + false + ) + if (oldChat !== undefined && oldChat.length > 0) { + const context = await classifyText(values) + const ncontext = await classifyText(content) + log('c1: ' + context + ' c2: ' + ncontext) + + if (context == ncontext) { + roomManager.instance.userTalkedSameTopic(_sender, 'telegram') + if (roomManager.instance.agentCanResponse(_sender, 'telegram')) { + content = '!ping ' + content + this.sentMessage(_sender) + } else { + return + } + } else { + return + } + } + } + } else { + roomManager.instance.userGotInConversationFromAgent(_sender) + } + + const resp = handleInput( + msg.text, + msg.from.first_name, + 'Agent', + 'telegram', + msg.chat.id + ) + await this.handleEditMessage( + msg.chat.id, + msg.message_id, + resp, + addPing + ? "[ '" + msg.from.id + "', '" + msg.from.first_name + "' ]" + : 'none', + bot + ) + } + + prevMessage = {} + prevMessageTimers = {} + messageResponses = {} + conversation = {} + chatHistory = {} + + onMessageDeleted(chatId, messageId) { + if ( + this.messageResponses[chatId] !== undefined && + this.messageResponses[chatId][messageId] !== undefined + ) { + delete this.messageResponses[chatId][messageId] + } + } + onMessageResponseUpdated(chatId, messageId, newResponse) { + if (this.messageResponses[chatId] === undefined) + this.messageResponses[chatId] = {} + this.messageResponses[chatId][messageId] = newResponse + } + + getMessage(chatId, messageId) { + return chatId.messages.fetchMessage(messageId) + } + + isInConversation(user) { + return ( + this.conversation[user] !== undefined && + this.conversation[user].isInConversation === true + ) + } + + sentMessage(user) { + for (const c in this.conversation) { + if (c === user) continue + if ( + this.conversation[c] !== undefined && + this.conversation[c].timeOutFinished === true + ) { + vexitConversation(c) + } + } + + if (this.conversation[user] === undefined) { + this.conversation[user] = { + timeoutId: undefined, + timeOutFinished: true, + isInConversation: true, + } + if (this.conversation[user].timeoutId !== undefined) + clearTimeout(this.conversation[user].timeoutId) + this.conversation[user].timeoutId = setTimeout(() => { + log('conversation for ' + user + ' ended') + if (this.conversation[user] !== undefined) { + this.conversation[user].timeoutId = undefined + this.conversation[user].timeOutFinished = true + } + }, 720000) + } else { + this.conversation[user].timeoutId = setTimeout(() => { + log('conversation for ' + user + ' ended') + if (this.conversation[user] !== undefined) { + this.conversation[user].timeoutId = undefined + this.conversation[user].timeOutFinished = true + } + }, 720000) + } + } + + exitConversation(user) { + if (this.conversation[user] !== undefined) { + if (this.conversation[user].timeoutId !== undefined) + clearTimeout(this.conversation[user].timeoutId) + this.conversation[user].timeoutId = undefined + this.conversation[user].timeOutFinished = true + this.conversation[user].isInConversation = false + delete this.conversation[user] + roomManager.instance.removeUser(user, 'discord') + } + } + + moreThanOneInConversation() { + let count = 0 + for (const c in this.conversation) { + if (this.conversation[c] === undefined) continue + if ( + this.conversation[c].isInConversation !== undefined && + this.conversation[c].isInConversation === true && + this.conversation[c].timeOutFinished === false + ) + count++ + } + + return count > 1 + } + + getResponse(chatId, message) { + if (this.messageResponses[chatId] === undefined) return undefined + return this.messageResponses[chatId][message] + } + + async addMessageToHistory(chatId, messageId, senderName, content) { + return + // await database.instance.addMessageInHistory( + // 'telegram', + // chatId, + // messageId, + // senderName, + // content + // ) + } + + async updateMessage(chatId, messageId, newContent) { + // await database.instance.updateMessage( + // 'telegram', + // chatId, + // messageId, + // newContent, + // true + // ) + } + + agent + settings + + createTelegramClient = async (agent, settings) => { + this.agent = agent + this.settings = settings + + const token = getSetting(settings, 'telegramBotToken') + + if (!token) return console.warn('No API token for Telegram bot, skipping') + const username_regex = new RegExp( + 'botNameRegex', + 'ig' + ) + let botName = '' + + const bot = new TelegramBot(token, { polling: true }) + bot + .getMe() + .then(info => (botName = info.username)) + .catch(console.error) + + bot.on('message', async msg => { + await this.onMessage(bot, msg, botName, username_regex) + }) + bot.on('edited_message', async msg => { + await this.onMessageEdit(bot, msg, botName) + }) + log('telegram client loaded') + } +} diff --git a/server/src/entities/connectors/twilio.ts b/server/src/entities/connectors/twilio.ts new file mode 100644 index 000000000..4bcba9764 --- /dev/null +++ b/server/src/entities/connectors/twilio.ts @@ -0,0 +1,134 @@ +/* eslint-disable no-console */ +/* eslint-disable no-invalid-this */ +/* eslint-disable require-await */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable camelcase */ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment + +import Router from '@koa/router' +import Koa from 'koa' +import Twilio from 'twilio' + +import { handleInput } from './handleInput' +import { getRandomEmptyResponse, getSetting } from './utils' + +export class twilio_client { + async message( + ctx: Koa.ParameterizedContext< + Koa.DefaultState, + Koa.DefaultContext & + Router.RouterParamContext, + any + > + ) { + const resp = await handleInput( + ctx.body.Body, + ctx.body.From, + this.settings['Agent_Name'] ?? 'Agent', + 'twilio', + ctx.body.From, + this.settings['entity'], + this.settings['twilio_spell_handler'], + this.settings['twilio_spell_version'] + ) + await this.handleTwilioMsg(ctx.body.From, resp) + } + + async handleTwilioMsg(chat_id: string, response: string) { + console.log('response: ' + response) + if ( + response !== undefined && + response.length <= 2000 && + response.length > 0 + ) { + let text = response + while ( + text === undefined || + text === '' || + text.replace(/\s/g, '').length === 0 + ) + text = getRandomEmptyResponse(this.settings['twilio_empty_responses']) + this.sendMessage(chat_id, text) + } else if (response.length > 160) { + const lines = [] + let line = '' + for (let i = 0; i < response.length; i++) { + line += response + if (i >= 1980 && (line[i] === ' ' || line[i] === '')) { + lines.push(line) + line = '' + } + } + + for (let i = 0; i < lines.length; i++) { + if ( + lines[i] !== undefined && + lines[i] !== '' && + lines[i].replace(/\s/g, '').length !== 0 + ) { + if (i === 0) { + let text = lines[1] + while ( + text === undefined || + text === '' || + text.replace(/\s/g, '').length === 0 + ) + text = getRandomEmptyResponse( + this.settings['twilio_empty_responses'] + ) + this.sendMessage(chat_id, text) + } + } + } + } else { + let emptyResponse = getRandomEmptyResponse( + this.settings['twilio_empty_responses'] + ) + while ( + emptyResponse === undefined || + emptyResponse === '' || + emptyResponse.replace(/\s/g, '').length === 0 + ) + emptyResponse = getRandomEmptyResponse( + this.settings['twilio_empty_responses'] + ) + this.sendMessage(chat_id, emptyResponse) + } + } + + client: any + settings: any + + createTwilioClient = async (app: Koa, router: Router, settings: any) => { + this.settings = settings + + const accountSid = settings['twilioAccountSID'] + const authToken = settings['twilioAuthToken'] + const twilioNumber = settings['twilioPhoneNumber'] + + if (!accountSid || !authToken || !twilioNumber) + return console.warn('No API token for Twilio bot, skipping') + console.log( + 'twilio client created, sid: ' + accountSid + ' auth token: ' + authToken + ) + + this.client = Twilio(accountSid, authToken) + + router.post('/sms', async (ctx, next) => { + await this.message(ctx) + }) + } + + sendMessage(toNumber: string, body: string) { + console.log('sending sms: ' + body) + this.client.messages + .create({ + from: getSetting(this.settings, 'twilioPhoneNumber'), + to: toNumber, + body: body, + }) + .then((message: any) => console.log('sent message: ' + message.sid)) + .catch(console.error) + console.log('send message to: ' + toNumber + ' body: ' + body) + } +} diff --git a/server/src/entities/connectors/twitter.ts b/server/src/entities/connectors/twitter.ts new file mode 100644 index 000000000..75e004437 --- /dev/null +++ b/server/src/entities/connectors/twitter.ts @@ -0,0 +1,208 @@ +/* eslint-disable prefer-const */ +/* eslint-disable no-invalid-this */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable camelcase */ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck +import { TwitterApi } from 'twitter-api-v2' + +import { handleInput } from './handleInput' + +const createTwitterClient = ( + bearerKey: string, + appKey: string, + appSecret: string, + accessToken: string, + accessSecret: string +) => { + if (bearerKey && bearerKey !== undefined && bearerKey.length > 0) { + console.log('creating with bearer key') + return new TwitterApi(bearerKey) + } else { + console.log('creating with app key') + return new TwitterApi({ + appKey: appKey, + appSecret: appSecret, + accessToken: accessToken, + accessSecret: accessSecret, + }) + } +} + +export class twitter_client { + async handleMessage(response, chat_id, args, twitter, twitterV1, localUser) { + console.log( + 'handle message:', + response, + chat_id, + args, + twitter, + twitterV1, + localUser + ) + if (args === 'DM') { + const dmSent = await twitterV1.v1.sendDm({ + recipient_id: chat_id, + text: response, + }) + database.instance.addMessageInHistory( + 'twitter', + chat_id, + dmSent.event.id, + this.agent.name, + response + ) + } else if (args === 'Twit') { + await twitterV1.v1.reply(response, chat_id).then(res => { + database.instance.addMessageInHistory( + 'twitter', + chat_id, + res.id_str, + this.agent.name, + response + ) + }) + } + } + + agent + settings + + createTwitterClient = async (agent, settings) => { + console.log('TWITTER SETTINGS:', settings) + this.agent = agent + this.settings = settings + + const bearerToken = settings['twitter_token'] + const twitterUser = settings['twitter_id'] + const twitterAppToken = settings['twitter_app_token'] + const twitterAppTokenSecret = settings['twitter_app_token_secret'] + const twitterAccessToken = settings['twitter_access_token'] + const twitterAccessTokenSecret = settings['twitter_access_token_secret'] + + if ((!bearerToken && !twitterAppToken && !twitterAppTokenSecret && !twitterAccessToken && !twitterAccessTokenSecret) || !twitterUser) + return console.warn('No API token for Whatsapp bot, skipping') + + let twitter = createTwitterClient( + bearerToken, + twitterAppToken, + twitterAppTokenSecret, + twitterAccessToken, + twitterAccessTokenSecret + ) + const client = twitter.readWrite + const localUser = await twitter.v2.userByUsername(twitterUser) + + setInterval(async () => { + const tv1 = createTwitterClient( + bearerToken, + twitterAppToken, + twitterAppTokenSecret, + twitterAccessToken, + twitterAccessTokenSecret + ) + const eventsPaginator = await tv1.v1.listDmEvents() + for await (const event of eventsPaginator) { + log('Event: ' + JSON.stringify(event.message_create.message_data.text)) + if (event.type == 'message_create') { + if (event.message_create.sender_id == localUser.data.id) { + log('same sender') + return + } + + let authorName = 'unknown' + const author = await twitter.v2.user(event.message_create.sender_id) + if (author) authorName = author.data.username + + await database.instance.messageExistsAsyncWitHCallback2( + 'twitter', + event.message_create.target.recipient_id, + event.id, + authorName, + event.message_create.message_data.text, + parseInt(event.created_timestamp), + async () => { + const resp = await handleInput( + event.message_create.message_data.text, + authorName, + this.agent.name ?? 'Agent', + 'twitter', + event.id + ) + this.handleMessage(resp, event.id, 'DM', twitter, tv1, localUser) + + database.instance.addMessageInHistoryWithDate( + 'twitter', + event.message_create.target.recipient_id, + event.id, + authorName, + event.message_create.message_data.text, + event.created_timestamp + ) + } + ) + } + } + }, 25000) /*!twit.data.text.match(regex2)) { + + /*const rules = await client.v2.streamRules() + if (rules.data?.length) { + await client.v2.updateStreamRules({ + delete: { ids: rules.data.map(rule => rule.id) }, + }) + } + const tweetRules = process.env.TWITTER_TWEET_RULES.split(',') + const _rules = [] + for (let x in tweetRules) { + log('rule: ' + tweetRules[x]) + _rules.push({value: tweetRules[x]}) + } + await client.v2.updateStreamRules({ + add: _rules + }) + const stream = await client.v2.searchStream({ + "tweet.fields": ['referenced_tweets', 'author_id'], + expansions: ['referenced_tweets.id'] + }) + stream.autoReconnect = true + stream.on(ETwitterStreamEvent.Data, async twit => { + const isARt = twit.data.referenced_tweets?.some(twit => twit.type === 'retweeted') ?? false + if (isARt || (localUser !== undefined && twit.data.author_id == localUser.data.id)) { + log('isArt found') + } else { + if (/*!twit.data.text.match(regex) && */ + /* log('regex doesnt match') + } else { + let authorName = 'unknown' + const author = await twitter.v2.user(twit.data.author_id) + if (author) authorName = author.data.username + let date = new Date(); + if (twit.data.created_at) date = new Date(twit.data.created_at) + const utc = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()); + const utcStr = date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ' ' + utc.getHours() + ':' + utc.getMinutes() + ':' + utc.getSeconds() + var ts = Math.floor(utc.getTime() / 1000); + await database.instance.messageExistsAsyncWitHCallback2('reddit', twit.data.id, twit.data.id, authorName, twit.data.text, ts, () => { + MessageClient.instance.sendMessage(twit.data.text, + twit.data.id, + 'twitter', + twit.data.in_reply_to_user_id ? twit.data.in_reply_to_user_id : twit.data.id, + ts + '', + false, + authorName, + 'Twit') + log('sending twit: ' + JSON.stringify(twit)) + + + database.instance.addMessageInHistoryWithDate( + 'twitter', + twit.data.id, + twit.data.id, + authorName, + twit.data.text, + utcStr) + }) + } + } + })*/ + } +} diff --git a/server/src/entities/connectors/utils.ts b/server/src/entities/connectors/utils.ts new file mode 100644 index 000000000..3fd1dacb0 --- /dev/null +++ b/server/src/entities/connectors/utils.ts @@ -0,0 +1,107 @@ +/* eslint-disable no-console */ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +//@ts-nocheck + +import { existsSync } from 'fs' + +export function getRandomNumber(min, max) { + return Math.floor(Math.random() * (max - min + 1)) + min +} + +export function getRandomEmptyResponse(responses: string[]) {} + +export function startsWithCapital(word) { + return word.charAt(0) === word.charAt(0).toUpperCase() +} + +export function getOS() { + const platform = process.platform + let os + if (platform.includes('darwin')) { + os = 'Mac OS' + } else if (platform.includes('win32')) { + os = 'Windows' + } else if (platform.includes('linux')) { + os = 'Linux' + } + + return os +} + +//returns the Chrome path for puppeteer based on the OS +export function detectOsOption() { + const os = getOS() + const options = { executablePath: null } + let chromePath = '' + switch (os) { + case 'Mac OS': + chromePath = + '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' + break + case 'Windows': + chromePath = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe' + break + case 'Linux': + chromePath = '/usr/bin/google-chrome' + break + default: + break + } + + if (chromePath) { + if (existsSync(chromePath)) { + options.executablePath = chromePath + } else { + console.log( + 'Warning! Please install Google Chrome to make bot workiing correctly in headless mode.\n' + ) + } + } + return options +} + +export function convertLocalToUtcTimezone(date) { + return new Date( + date.getUTCFullYear(), + date.getUTCMonth(), + date.getUTCDate(), + date.getUTCHours(), + date.getUTCMinutes(), + date.getUTCSeconds() + ) +} + +export function wait(ms) { + return new Promise(resolve => { + setTimeout(resolve, ms) + }) +} + +export function randomInt(min, max) { + return Math.floor(Math.random() * (max - min + 1)) + min +} +export function randomFloat(min, max) { + return Math.random() * (max - min + 1) + min +} + +export class idGenerator { + id = 0 + + getId() { + return this.id++ + } + + reset() { + this.id = 0 + } +} + +export function getSetting(settings: any[], key: string) { + for (let i = 0; i < settings.length; i++) { + if (settings[i].name === key) { + return settings[i].value + } + } + + return undefined +} diff --git a/server/src/entities/connectors/voiceUtils/VoiceMessage.ts b/server/src/entities/connectors/voiceUtils/VoiceMessage.ts new file mode 100644 index 000000000..8ec2dc2b9 --- /dev/null +++ b/server/src/entities/connectors/voiceUtils/VoiceMessage.ts @@ -0,0 +1,96 @@ +import { VoiceConnection } from '@discordjs/voice' +import { + Client, + Guild, + GuildMember, + StageChannel, + User, + VoiceChannel, +} from 'discord.js' +import wav from 'wav' + +export interface VoiceMessageData { + duration: number + audioBuffer: Buffer + content?: string + error?: Error + connection: VoiceConnection + author: User +} + +export default class VoiceMessage { + channel: VoiceChannel | StageChannel + + /** + * Speech to text translation + */ + content?: string + + author: User + + /** + * Duration in seconds + */ + duration: number + + /** + * PCM mono 48k audio data + */ + audioBuffer: Buffer + + client: Client + + /** + * If there was any error during handling speech event, this will be set + */ + error?: Error + + connection: VoiceConnection + + /** + * Voice message, it is emited `speech` event + * @param client + * @param data + * @param channel + * @private + */ + constructor({ + client, + data, + channel, + }: { + client: Client + data: VoiceMessageData + channel: VoiceChannel | StageChannel + }) { + this.client = client + this.channel = channel + this.author = data.author + this.audioBuffer = data.audioBuffer + this.connection = data.connection + this.duration = data.duration + this.content = data?.content + this.error = data?.error + } + + /** + * Saves audio to .wav file + * @param filename File directory, for example: `./test.wav` + */ + saveToFile(filename: string): void { + const outputFile = new wav.FileWriter(filename, { + sampleRate: 48000, + channels: 1, + }) + outputFile.write(this.audioBuffer) + outputFile.end() + } + + get member(): GuildMember | undefined { + return this.guild.members.cache.get(this.author.id) + } + + get guild(): Guild { + return this.channel.guild + } +} diff --git a/server/src/entities/connectors/voiceUtils/addSpeechEvent.ts b/server/src/entities/connectors/voiceUtils/addSpeechEvent.ts new file mode 100644 index 000000000..60f4980a2 --- /dev/null +++ b/server/src/entities/connectors/voiceUtils/addSpeechEvent.ts @@ -0,0 +1,33 @@ +import { Client } from 'discord.js' +import setupSpeechEvent from './speech' +import setupVoiceJoinEvent from './voiceJoin' +import { resolveSpeechWithGoogleSpeechV2 } from './googleV2' +import { SpeechOptions } from './speechOptions' + +/** + * Main function, use this to add new events to present [discord.Client](https://discord.js.org/#/docs/main/stable/class/Client) + * + * Defaults uses `en-US` language and google speech v2 api with generic key, that should be used for personal or testing purposes only, as it may be revoked by Google at any time.\ + * You can obtain your own API key here .\ + * See [python speech recognition package](https://github.com/Uberi/speech_recognition/blob/c89856088ad81d81d38be314e3db50905481c5fe/speech_recognition/__init__.py#L850) for more details. + *
+ * + * Example usage: + * ```javascript + * const client = new Client({ + * intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_VOICE_STATES], + * }); + * addSpeechEvent(client, { lang: "pl-PL" }); + * ``` + */ +export const addSpeechEvent = (client: Client, options?: SpeechOptions) => { + const defaultOptions: SpeechOptions = { + lang: 'en-US', + speechRecognition: resolveSpeechWithGoogleSpeechV2, + ignoreBots: true, + } + const speechOptions = { ...defaultOptions, ...options } + + setupVoiceJoinEvent(client, speechOptions) + setupSpeechEvent(client, speechOptions) +} diff --git a/server/src/entities/connectors/voiceUtils/audio.ts b/server/src/entities/connectors/voiceUtils/audio.ts new file mode 100644 index 000000000..3635fcf72 --- /dev/null +++ b/server/src/entities/connectors/voiceUtils/audio.ts @@ -0,0 +1,21 @@ +/** + * Convert stereo audio buffer to mono + * @param input Buffer of stereo audio + * @returns + */ +export function convertStereoToMono(input: Buffer): Buffer { + const stereoData = new Int16Array(input) + const monoData = new Int16Array(stereoData.length / 2) + for (let i = 0, j = 0; i < stereoData.length; i += 4) { + monoData[j] = stereoData[i] + j += 1 + monoData[j] = stereoData[i + 1] + j += 1 + } + return Buffer.from(monoData) +} + +export function getDurationFromMonoBuffer(buffer: Buffer): number { + const duration = buffer.length / 48000 / 2 + return duration +} diff --git a/server/src/entities/connectors/voiceUtils/createVoiceMessage.ts b/server/src/entities/connectors/voiceUtils/createVoiceMessage.ts new file mode 100644 index 000000000..e1745c584 --- /dev/null +++ b/server/src/entities/connectors/voiceUtils/createVoiceMessage.ts @@ -0,0 +1,51 @@ +import { VoiceConnection } from '@discordjs/voice' +import { Client, User } from 'discord.js' +import { convertStereoToMono, getDurationFromMonoBuffer } from './audio' +import { SpeechOptions } from './speechOptions' +import VoiceMessage from './VoiceMessage' + +export default async ({ + client, + bufferData, + user, + connection, + speechOptions, +}: { + client: Client + bufferData: Uint8Array[] + user: User + connection: VoiceConnection + speechOptions: SpeechOptions +}): Promise => { + if (!connection.joinConfig.channelId) return undefined + + const stereoBuffer = Buffer.concat(bufferData) + const monoBuffer = convertStereoToMono(stereoBuffer) + const duration = getDurationFromMonoBuffer(monoBuffer) + if (duration < 1 || duration > 19) return undefined + + let content: string | undefined + let error: Error | undefined + try { + content = await speechOptions.speechRecognition?.(monoBuffer, speechOptions) + } catch (e) { + error = e as Error + } + + const channel = client.channels.cache.get(connection.joinConfig.channelId) + if (!channel || !channel.isVoice()) return undefined + + const voiceMessage = new VoiceMessage({ + client, + data: { + author: user, + duration, + audioBuffer: stereoBuffer, + content, + error, + connection, + }, + channel, + }) + return voiceMessage +} diff --git a/server/src/entities/connectors/voiceUtils/googleV2.ts b/server/src/entities/connectors/voiceUtils/googleV2.ts new file mode 100644 index 000000000..4e09b1d14 --- /dev/null +++ b/server/src/entities/connectors/voiceUtils/googleV2.ts @@ -0,0 +1,69 @@ +import axios, { AxiosRequestConfig } from 'axios' + +/** + * You can obtain API key here [http://www.chromium.org/developers/how-tos/api-keys](http://www.chromium.org/developers/how-tos/api-keys) + */ +export interface GoogleSpeechV2Options { + key?: string + lang?: string + profanityFilter?: boolean +} + +/** + * If API key is not specified uses generic key that works out of the box. + * If language is not specified uses ``"en-US"`` + * See [python speech recognition package](https://github.com/Uberi/speech_recognition/blob/c89856088ad81d81d38be314e3db50905481c5fe/speech_recognition/__init__.py#L850) for more details. + * @param options + * @returns Request config for {@link resolveSpeechWithGoogleSpeechV2} + */ +function getGoogleRequestOptions( + options?: GoogleSpeechV2Options +): AxiosRequestConfig { + let key = 'AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw' + let lang = 'en-US' + let profanityFilter = '1' // Google's default + + if (options) { + if (options.key) key = options.key + if (options.lang) lang = options.lang + if (options.profanityFilter !== undefined) + profanityFilter = options.profanityFilter ? '1' : '0' + } + + const googleRequestOptions: AxiosRequestConfig = { + url: `https://www.google.com/speech-api/v2/recognize?output=json&lang=${lang}&key=${key}&pFilter=${profanityFilter}`, + headers: { + 'Content-Type': 'audio/l16; rate=48000;', + }, + method: 'POST', + transformResponse: [ + data => { + const fixedData = data.replace('{"result":[]}', '') + try { + return JSON.parse(fixedData) + } catch (e) { + return { error: e } + } + }, + ], + } + return googleRequestOptions +} + +/** + * Performs speech recognition using the Google Speech Recognition API V2 + * @param audioBuffer PCM mono audio with 48kHz + * @param options + * @returns Recognized text from speech + */ +export async function resolveSpeechWithGoogleSpeechV2( + audioBuffer: Buffer, + options: GoogleSpeechV2Options = { lang: 'en-US' } +): Promise { + const requestOptions = getGoogleRequestOptions(options) + requestOptions.data = audioBuffer + const response = await axios(requestOptions) + if (response.data.error) + throw new Error(`Google speech api error: ${response.data}`) + return response.data.result[0].alternative[0].transcript +} diff --git a/server/src/entities/connectors/voiceUtils/speech.ts b/server/src/entities/connectors/voiceUtils/speech.ts new file mode 100644 index 000000000..de951a650 --- /dev/null +++ b/server/src/entities/connectors/voiceUtils/speech.ts @@ -0,0 +1,73 @@ +import { + EndBehaviorType, + entersState, + VoiceConnection, + VoiceConnectionStatus, +} from '@discordjs/voice' +import { Client } from 'discord.js' +import prism from 'prism-media' +import { SpeechOptions } from './speechOptions' +import createVoiceMessage from './createVoiceMessage' + +/** + * Starts listening on connection and emits `speech` event when someone stops speaking + * @param connection Connection to listen + */ +const handleSpeakingEvent = ({ + client, + connection, + speechOptions, +}: { + client: Client + connection: VoiceConnection + speechOptions: SpeechOptions +}) => { + connection.receiver.speaking.on( + 'start', + function handleSpeechEventOnConnectionReceiver(userId) { + if (speechOptions.ignoreBots && client.users.cache.get(userId)?.bot) { + return + } + + const { receiver } = connection + const opusStream: any = receiver.subscribe(userId, { + end: { + behavior: EndBehaviorType.AfterSilence, + duration: 100, + }, + }) + const bufferData: Uint8Array[] = [] + opusStream + .pipe( + new prism.opus.Decoder({ rate: 48000, channels: 2, frameSize: 960 }) + ) + .on('data', (data: Uint8Array) => { + bufferData.push(data) + }) + + opusStream.on('end', async () => { + const user = client.users.cache.get(userId) + if (!user) return + + const voiceMessage = await createVoiceMessage({ + client, + bufferData, + user, + connection, + speechOptions, + }) + if (voiceMessage) client.emit('speech', voiceMessage) + }) + } + ) +} + +/** + * Enables `speech` event on Client, which is called whenever someone stops speaking + */ +export default (client: Client, speechOptions: SpeechOptions): void => { + client.on('voiceJoin', async (connection: VoiceConnection) => { + await entersState(connection, VoiceConnectionStatus.Ready, 20e3) + handleSpeakingEvent({ client, speechOptions, connection }) + }) +} diff --git a/server/src/entities/connectors/voiceUtils/speechOptions.ts b/server/src/entities/connectors/voiceUtils/speechOptions.ts new file mode 100644 index 000000000..5501ab6a1 --- /dev/null +++ b/server/src/entities/connectors/voiceUtils/speechOptions.ts @@ -0,0 +1,25 @@ +/** + * Speech recognition function, you can create your own and specify it in [[DiscordSROptions]], when creating [[DiscordSR]] object. + * + * All options that you pass to [[DiscordSR]] constructor, will be later passed to this function. + */ +export interface SpeechRecognition { + ( + audioBuffer: Buffer, + options?: { lang?: string; key?: string } + ): Promise +} + +/** + * Options that will be passed to [[speechRecognition]] function + */ +export interface SpeechOptions { + group?: string + lang?: string + speechRecognition?: SpeechRecognition + key?: string + /** + * Defaults to true + */ + ignoreBots?: boolean +} diff --git a/server/src/entities/connectors/voiceUtils/voiceJoin.ts b/server/src/entities/connectors/voiceUtils/voiceJoin.ts new file mode 100644 index 000000000..a922c39b9 --- /dev/null +++ b/server/src/entities/connectors/voiceUtils/voiceJoin.ts @@ -0,0 +1,36 @@ +import { getVoiceConnection, VoiceConnection } from '@discordjs/voice' +import { Client } from 'discord.js' +import { SpeechOptions } from './speechOptions' + +/** + * It's a bit hacky solution to check if speech handler has been already attached to connection receiver + * It does it by checking if in the listeners of speaking map exists function with the same name as function + * which handles speech event + * @param connection + * @returns + */ +const isSpeechHandlerAttachedToConnection = ( + connection: VoiceConnection +): boolean => { + return Boolean( + connection.receiver.speaking + .listeners('start') + .find(func => func.name === 'handleSpeechEventOnConnectionReceiver') + ) +} + +export default (client: Client, speechOptions: SpeechOptions): void => { + client.on('voiceStateUpdate', (_old, newVoiceState) => { + if (!newVoiceState.channel) return + + const connection = getVoiceConnection( + newVoiceState.channel.guild.id, + speechOptions.group + ) + if (connection && !isSpeechHandlerAttachedToConnection(connection)) + client.emit( + 'voiceJoin', + getVoiceConnection(newVoiceState.channel.guild.id, speechOptions.group) + ) + }) +} diff --git a/server/src/entities/connectors/voiceUtils/witai.ts b/server/src/entities/connectors/voiceUtils/witai.ts new file mode 100644 index 000000000..f4050a911 --- /dev/null +++ b/server/src/entities/connectors/voiceUtils/witai.ts @@ -0,0 +1,57 @@ +//@ts-nocheck +import fetch from 'node-fetch' +import { MessageResponse } from 'node-wit' + +export interface WitaiOptions { + key?: string +} + +/** + * There is an issue with wit.ai response from /speech endpoint, which returns multiple root objects. You can check the docs here: https://wit.ai/docs/http/20210928/#post__speech_link + * This function converts response text to valid json by wrapping it in array and fixing commas. + * @param text + * @returns + */ +const formatWitaiResponse = (text: string): Array => { + const fixedCommas = text.replaceAll('\n}\r\n', '},') + const wrappedInArray = `[${fixedCommas}]` + return JSON.parse(wrappedInArray) +} + +async function extractSpeechText( + key: string, + audioBuffer: Buffer, + contenttype: string +): Promise { + const response = await fetch('https://api.wit.ai/speech', { + method: 'post', + body: audioBuffer, + headers: { + Authorization: `Bearer ${key}`, + 'Content-type': contenttype, + }, + }) + if (response.status !== 200) + throw new Error(`Api error, code: ${response.status}`) + + const data = formatWitaiResponse(await response.text()) + + const latestMessage = data.at(-1) + if (!latestMessage) throw new Error(`Invalid API response`) + + return latestMessage +} + +export async function resolveSpeechWithWitai( + audioBuffer: Buffer, + options?: WitaiOptions +): Promise { + const key = process.env.WITAI_KEY + if (!key) throw new Error("wit.ai API key wasn't specified.") + + const contenttype = + 'audio/raw;encoding=signed-integer;bits=16;rate=48k;endian=little' + const output = await extractSpeechText(key, audioBuffer, contenttype) + + return output.text +} diff --git a/server/src/entities/connectors/website-reader.ts b/server/src/entities/connectors/website-reader.ts new file mode 100644 index 000000000..1251aaa78 --- /dev/null +++ b/server/src/entities/connectors/website-reader.ts @@ -0,0 +1,106 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck + +import * as fs from 'fs' + +import Browser from '../browser-launcher' +import { detectOsOption } from './utils' +import { createWebsiteReader } from './website-reader' + +/* + Website Reader is used a standalone app in order to read the pages of a book + and return it as a txt from booksvooks.com which can be used for the agents to learn +*/ + +//npm run read_book --url https://booksvooks.com/scrolablehtml/pale-blue-dot-a-vision-of-the-human-future-in-space-pdf.html?page=1 --pages 210 --fileName test +const params = process.argv.slice(2) +createWebsiteReader(params[0], parseInt(params[1]), params[2]) + +let browser +let page + +export const createWebsiteReader = async (bookUrl, maxPage, fileName) => { + const options = { + headless: true, + ignoreHTTPSErrors: true, + args: [ + '--disable-web-security=1', + '--autoplay-policy=no-user-gesture-required', + ], + ignoreDefaultArgs: ['--mute-audio', '--mute-video'], + ...detectOsOption(), + } + + browser = await Browser.window(options) + page = await browser.newPage() + page.setViewport({ width: 0, height: 0 }) + await page.setUserAgent( + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36' + ) + await navigate(bookUrl) + await delay(5000) + + let _text = '' + for (let i = 1; i < maxPage; i++) { + const text = await page.evaluate(() => { + const el = document.getElementById('demo') + return el.innerHTML + }) + + const data = getText(text) + _text += data + '\n' + navigate(bookUrl.substring(0, bookUrl.length - 1) + (i + 1)) + await delay(5000) + } + fs.writeFileSync(fileName + '.txt', _text) +} + +const getText = text => { + const lines = text.split('\n') + let _res = '' + for (let i = 0; i < lines.length; i++) { + if ( + !lines[i].toLowerCase().includes('

') && + !lines[i].toLowerCase().includes('

') + ) { + // + } else { + _res = lines[i].split('

').join('\n---\n') + _res = _res.split('\n---\n\n---\n').join('') + _res = _res.split('

').join('') + _res = _res.split('

').join('\n') + _res = _res.replace(/<\/?[^>]+(>|$)/g, '') + } + } + return _res.trim() +} + +const navigate = async (url, searchParams) => { + const parsedUrl = new URL(url.includes('https') ? url : `https://${url}`) + if (searchParams !== undefined) { + for (const x in searchParams) { + parsedUrl.searchParams.set(x, searchParams[x]) + } + } + const context = browser.defaultBrowserContext() + context.overridePermissions(parsedUrl.origin, ['microphone', 'camera']) + console.log('navigating to: ' + parsedUrl) + await page.goto(parsedUrl, { waitUntil: 'domcontentloaded' }) +} + +let counter = 0 +const catchScreenshot = async () => { + counter++ + console.log('screenshot') + const path = 'screenshot' + counter + '.png' + await page.screenshot({ path }) +} + +const delay = async timeout => { + console.log(`Waiting for ${timeout} ms... `) + await waitForTimeout(timeout) +} + +const waitForTimeout = async timeout => { + return await new Promise(resolve => setTimeout(() => resolve(), timeout)) +} diff --git a/server/src/entities/connectors/whatsapp.ts b/server/src/entities/connectors/whatsapp.ts new file mode 100644 index 000000000..55802d68f --- /dev/null +++ b/server/src/entities/connectors/whatsapp.ts @@ -0,0 +1,406 @@ +/* eslint-disable require-await */ +/* eslint-disable no-invalid-this */ +/* eslint-disable camelcase */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck + +import WhatsAppBot from '@green-api/whatsapp-bot' +import { database } from './database' +import { getRandomEmptyResponse, getSetting, startsWithCapital } from './utils' + +export class whatsapp_client { + //TODO: Needs tests - misses API key (needs request from whatsapp) + async onMessage(msg) { + const date = Date.now() / 1000 + const msgDate = msg.date + const diff = date - msgDate + const hours_diff = Math.ceil(diff / 3600) + const mins_diff = Math.ceil((diff - hours_diff) / 60) + if (mins_diff > 12 || (mins_diff <= 12 && hours_diff > 1)) return + + let content = msg.text + const _sender = + msg.from.username === undefined ? msg.from.first_name : msg.from.username + this.addMessageToHistory(msg.chat.id, msg.message_id, _sender, content) + let addPing = false + if (msg.chat.type == 'supergroup') { + if (content === '') content = '{sent media}' + let isReply = false + if (msg.reply_to_message !== undefined) { + if (msg.reply_to_message.from.username === this.botName) isReply = true + else { + this.exitConversation(_sender) + const _replyTo = + msg.reply_to_message.from.username === undefined + ? msg.reply_to_message.from.first_name + : msg.reply_to_message.from.username + this.exitConversation(_replyTo) + return + } + } + let _prev = undefined + if (!msg.from.is_bot) { + _prev = this.prevMessage[msg.chat.id] + this.prevMessage[msg.chat.id] = _sender + if (this.prevMessageTimers[msg.chat.id] !== undefined) + clearTimeout(this.prevMessageTimers[msg.chat.id]) + this.prevMessageTimers[msg.chat.id] = setTimeout( + () => (this.prevMessage[msg.chat.id] = ''), + 120000 + ) + } + addPing = _prev !== undefined && _prev !== '' && _prev !== _sender + + const isMention = + msg.entities !== undefined && + msg.entities.length === 1 && + msg.entities[0].type === 'mention' && + content.includes('@' + this.botName) + const otherMention = + msg.entities !== undefined && + msg.entities.length > 0 && + msg.entities[0].type === 'mention' && + !content.includes('@' + this.botName) + let startConv = false + let startConvName = '' + if (!isMention && !otherMention) { + const trimmed = content.trimStart() + if (trimmed.toLowerCase().startsWith('hi')) { + const parts = trimmed.split(' ') + if (parts.length > 1) { + if (!startsWithCapital(parts[1])) { + startConv = true + } else { + startConv = false + startConvName = parts[1] + } + } else { + if (trimmed.toLowerCase() === 'hi') { + startConv = true + } + } + } + } + if (otherMention) { + this.exitConversation(_sender) + for (let i = 0; i < msg.entities.length; i++) { + if (msg.entities[i].type === 'mention') { + const _user = msg.text.slice( + msg.entities[i].offset + 1, + msg.entities[i].length + ) + this.exitConversation(_user) + } + } + } + if (!startConv) { + if (startConvName.length > 0) { + this.exitConversation(_sender) + this.exitConversation(startConvName) + } + } + + const isUserNameMention = content.toLowerCase().match(username_regex) + const isInDiscussion = this.isInConversation(_sender) + if (!content.startsWith('!') && !otherMention) { + if (isMention) content = '!ping ' + content.replace('!', '').trim() + else if (isUserNameMention) + content = '!ping ' + content.replace(username_regex, '').trim() + else if (isInDiscussion || startConv || isReply) + content = '!ping ' + content + } + + if (!otherMention && content.startsWith('!ping')) + this.sentMessage(_sender) + } else { + content = '!ping ' + content + } + + if (content === '!ping ' || !content.startsWith('!ping')) return + + const args = {} + args['grpc_args'] = {} + + args['parsed_words'] = content.slice('!'.length).trim().split(/ +/g) + + args['command_info'] = [ + 'ping', + ['HandleMessage'], + ['sender', 'message'], + 'ping all agents', + ] + args['grpc_args']['sender'] = _sender + if (args['command_info']) { + args['command'] = args['command_info'][0] + args['grpc_args']['message'] = content.replace('!' + args['command'], '') + args['grpc_method'] = args['command_info'][1][0] + args['grpc_method_params'] = args['command_info'][2] + } + + args['chat_history'] = await this.getChatHistory(msg.chat.id, 10) + await messageResponseHandler(args, async response => { + log(JSON.stringify(response)) + Object.keys(response.response).map(function (key, index) { + log('response: ' + response.response[key]) + if ( + response.response[key] !== undefined && + response.response[key].length <= 2000 && + response.response[key].length > 0 + ) { + let text = response.response[key] + while ( + text === undefined || + text === '' || + text.replace(/\s/g, '').length === 0 + ) + text = getRandomEmptyResponse() + if (addPing) + msg + .reply( + msg.chat.id, + `${msg.from.first_name} ${text}`, + { parse_mode: 'HTML' } + ) + .then(function (_resp) { + this.onMessageResponseUpdated( + _resp.chat.id, + msg.message_id, + _resp.message_id + ) + this.addMessageToHistory( + _resp.chat.id, + _resp.message_id, + this.botName, + text + ) + }) + .catch(console.error) + else + msg + .reply(msg.chat.id, text) + .then(function (_resp) { + this.onMessageResponseUpdated( + _resp.chat.id, + msg.message_id, + _resp.message_id + ) + this.addMessageToHistory( + _resp.chat.id, + _resp.message_id, + this.botName, + text + ) + }) + .catch(console.error) + } else if (response.response[key].length > 2000) { + const lines = [] + let line = '' + for (let i = 0; i < response.response[key].length; i++) { + line += response.response[key] + if (i >= 1980 && (line[i] === ' ' || line[i] === '')) { + lines.push(line) + line = '' + } + } + + for (let i = 0; i < lines.length; i++) { + if ( + lines[i] !== undefined && + lines[i] !== '' && + lines[i].replace(/\s/g, '').length !== 0 + ) { + if (i === 0) { + let text = lines[1] + while ( + text === undefined || + text === '' || + text.replace(/\s/g, '').length === 0 + ) + text = getRandomEmptyResponse() + if (addPing) + msg + .reply( + msg.chat.id, + `${msg.from.first_name} ${text}`, + { parse_mode: 'HTML' } + ) + .then(function (_resp) { + this.onMessageResponseUpdated( + _resp.chat.id, + msg.message_id, + _resp.message_id + ) + this.addMessageToHistory( + _resp.chat.id, + _resp.message_id, + this.botName, + text + ) + }) + .catch(console.error) + else + msg + .reply(msg.chat.id, text) + .then(function (_resp) { + this.onMessageResponseUpdated( + _resp.chat.id, + msg.message_id, + _resp.message_id + ) + this.addMessageToHistory( + _resp.chat.id, + _resp.message_id, + this.botName, + text + ) + }) + .catch(console.error) + } + } + } + } else { + let emptyResponse = getRandomEmptyResponse() + while ( + emptyResponse === undefined || + emptyResponse === '' || + emptyResponse.replace(/\s/g, '').length === 0 + ) + emptyResponse = getRandomEmptyResponse() + if (addPing) + msg + .reply( + msg.chat.id, + `${msg.from.first_name} ${emptyResponse}`, + { parse_mode: 'HTML' } + ) + .then(function (_resp) { + this.onMessageResponseUpdated( + _resp.chat.id, + msg.message_id, + _resp.message_id + ) + this.addMessageToHistory( + _resp.chat.id, + _resp.message_id, + this.botName, + emptyResponse + ) + }) + .catch(console.error) + else + msg + .reply(msg.chat.id, emptyResponse) + .then(function (_resp) { + this.onMessageResponseUpdated( + _resp.chat.id, + msg.message_id, + _resp.message_id + ) + this.addMessageToHistory( + _resp.chat.id, + _resp.message_id, + this.botName, + emptyResponse + ) + }) + .catch(console.error) + } + }) + }).catch(err => log(err)) + } + + prevMessage = {} + prevMessageTimers = {} + messageResponses = {} + conversation = {} + chatHistory = {} + + onMessageDeleted(chatId, messageId) { + if ( + this.messageResponses[chatId] !== undefined && + this.messageResponses[chatId][messageId] !== undefined + ) { + delete this.messageResponses[chatId][messageId] + } + } + onMessageResponseUpdated(chatId, messageId, newResponse) { + if (this.messageResponses[chatId] === undefined) + this.messageResponses[chatId] = {} + this.messageResponses[chatId][messageId] = newResponse + } + + getMessage(chatId, messageId) { + return chatId.messages.fetchMessage(messageId) + } + + isInConversation(user) { + return this.conversation[user] !== undefined + } + + sentMessage(user) { + if (this.conversation[user] !== undefined) { + clearTimeout(this.conversation[user]) + } + + this.conversation[user] = setTimeout(function () { + this.conversation[user] = undefined + }, 120000) + } + + exitConversation(user) { + if (this.conversation[user] !== undefined) { + clearTimeout(this.conversation[user]) + this.conversation[user] = undefined + } + } + + getResponse(chatId, message) { + if (this.messageResponses[chatId] === undefined) return undefined + return this.messageResponses[chatId][message] + } + + async addMessageToHistory(chatId, messageId, senderName, content) { + await database.instance.addMessageInHistory( + 'whatsapp', + chatId, + messageId, + senderName, + content + ) + } + async getChatHistory(chatId, length) { + return [] + // return await database.instance.getHistory(length, 'whatsapp', chatId) + } + async updateMessage(chatId, messageId, newContent) { + // await database.instance.updateMessage( + // 'whatsapp', + // chatId, + // messageId, + // newContent, + // true + // ) + } + // replace with configurable regex later + username_regex = new RegExp('((?:digital|being)(?: |$))', 'ig') + botName + agent + settings + + createWhatsappClient = async (agent, settings) => { + this.agent = agent + this.settings = settings + this.botName = getSetting(settings, 'whatsappBotName') + + const token = getSetting(settings, 'whatsappToken') + if (!token) return console.warn('No API token for Whatsapp bot, skipping') + const bot = new WhatsAppBot(token) + + bot.on('message', async msg => { + log(JSON.stringify(msg)) + await this.onMessage(msg) + }) + bot.launch() + } +} diff --git a/server/src/entities/connectors/wikipedia.ts b/server/src/entities/connectors/wikipedia.ts new file mode 100644 index 000000000..ecb0fcb0b --- /dev/null +++ b/server/src/entities/connectors/wikipedia.ts @@ -0,0 +1,287 @@ +/* eslint-disable no-param-reassign */ +/* eslint-disable no-console */ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck + +import glob from 'glob' +import weaviate from 'weaviate-client' +import wiki from 'wikipedia' + +import { makeCompletionRequest } from '../../utils/MakeCompletionRequest' +import { database } from '../../database' + +const client = weaviate.client({ + scheme: 'http', + host: 'semantic-search-wikipedia-with-weaviate.api.vectors.network:8080/', +}) + +//Creates a new agent based on its Wikipedia article +export async function createWikipediaEntity(speaker, name, personality, facts) { + try { + let start = Date.now() + //gets the info from the wikipedia article, if the agent name can't be found it returns null, in order to send the default agent + let out = null + try { + out = await searchWikipedia(name) + } catch (e) { + console.error(e) + return null + } + + let stop = Date.now() + console.log( + `Time Taken to execute loaded data from wikipedia = ${(stop - start) / 1000 + } seconds` + ) + start = Date.now() + + //const type = await namedEntityRecognition(out.result.title); + + // create a constant called name which uses the value of nameRaw but removes all punctuation + // const name = nameRaw.replace(/[^\w\s]/gi, ''); + console.log('out is ', out) + if (out.result.extract == '' || out.result.extract == null) { + return console.log( + "Error, couldn't find anything on wikiedia about " + name + ) + } + + const factSourcePrompt = `The following are facts about ${name}\n` + const factPrompt = factSourcePrompt + out.result.extract + '\n' + facts + + const personalitySourcePrompt = `Based on the above facts, the following is a description of the personality of an anthropomorphized ${name}:` + + stop = Date.now() + console.log( + `Time Taken to execute save data = ${(stop - start) / 1000} seconds` + ) + start = Date.now() + + let data = { + prompt: factPrompt + '\n' + personalitySourcePrompt, + temperature: 0.9, + max_tokens: 300, + top_p: 1, + frequency_penalty: 0.0, + presence_penalty: 0.0, + stop: ['"""', `${speaker}:`, '\n'], + } + + let res = await makeCompletionRequest( + data, + speaker, + name, + 'personality_generation', + 'davinci', + false + ) + + stop = Date.now() + console.log( + `Time Taken to execute openai request = ${(stop - start) / 1000} seconds` + ) + start = Date.now() + + if (!res.success) { + console.log('Error: Failed to generate personality, check GPT3 keys') + return undefined + } + + const dialogPrompt = `The following is a conversation with ${name}. ${name} is helpful, knowledgeable and very friendly\n${speaker}: Hi there, ${name}! Can you tell me a little bit about yourself?\n${name}:` + + data = { + prompt: + factPrompt + + '\n' + + personalitySourcePrompt + + '\n' + + res + + '\n' + + dialogPrompt, + temperature: 0.9, + max_tokens: 300, + top_p: 1, + frequency_penalty: 0.0, + presence_penalty: 0.0, + stop: ['"""', `${speaker}:`, '\n'], + } + + res = makeCompletionRequest( + data, + speaker, + name, + 'dialog_generation', + 'davinci', + false + ) + + stop = Date.now() + console.log( + `Time Taken to execute openai request 2 = ${(stop - start) / 1000 + } seconds` + ) + start = Date.now() + console.log('res.choice.text (2)') + console.log(res) + + await database.instance.createAgent(name) + + await database.instance.updateAgent(name, { + dialog: dialogPrompt + (await res).choice?.text, + personality: + personalitySourcePrompt + '\n' + personality + '\n' + res.choice?.text, + facts: factPrompt, + }) + stop = Date.now() + console.log( + `Time Taken to execute save data = ${(stop - start) / 1000} seconds` + ) + start = Date.now() + return out + } catch (err) { + console.error(err) + } + return {} +} + +export const searchWikipedia = async keyword => { + console.log('Searching wikipedia for ', keyword) + + // if keywords contains more than three words, summarize with GPT-3 + if (keyword.trim().split(' ').length > 3) { + const data = { + prompt: keyword + '\n\nKeywords:', + temperature: 0.3, + max_tokens: 60, + top_p: 1, + frequency_penalty: 0.8, + presence_penalty: 0, + stop: ['\n'], + } + + const { success, choice } = await makeCompletionRequest( + data, + null, + null, + 'conversation' + ) + if (success) { + keyword = choice.text + } + } + + // Search for it, and accept suggestion if there is one + const searchResults = await wiki.search(keyword) + console.log(searchResults) + // If the first result contains the keyword or vice versa, probably just go with it + if ( + searchResults.results[0] && + (searchResults.results[0].title + .toLowerCase() + .includes(keyword.toLowerCase()) || + keyword + .toLowerCase() + .includes(searchResults.results[0].title.toLowerCase())) + ) { + keyword = searchResults.results[0].title + } else if (searchResults.suggestion) { + keyword = searchResults.suggestion + } else if (searchResults[0] != undefined) { + keyword = searchResults[0].title + } + + // TODO: If certainty is below .92... + // Fuzzy match and sort titles + + let filePath = null + + glob(keyword + '.*', (err, files) => { + if (err) { + console.error(err) + } else { + // a list of paths to javaScript files in the current working directory + console.log(files) + filePath = files[0] + } + }) + + if ( + searchResults.results[0]?.title?.trim().toLowerCase() === + keyword.trim().toLowerCase() + ) { + const result = await lookUpOnWikipedia(keyword) + return { + result, + filePath, + } + } + + console.log('Making weaviate request') + // if it's not immediately located, request from weaviate + const weaviateResponse = await makeWeaviateRequest(keyword) + + if (weaviateResponse?.Paragraph[0]?.inArticle[0]?.title) { + const result = await lookUpOnWikipedia( + weaviateResponse?.Paragraph[0]?.inArticle[0]?.title + ) + console.log('result', result) + return { + result, + filePath, + } + } else + return { + result: keyword, + filePath: '', + } +} + +export const makeWeaviateRequest = async keyword => { + const res = await client.graphql + .get() + .withNearText({ + concepts: [keyword], + certainty: 0.75, + }) + .withClassName('Paragraph') + .withFields('title content inArticle { ... on Article { title } }') + .withLimit(3) + .do() + //console.log("res is", res.data.Get.Paragraph[0]); + + if (res.data.Get !== undefined) { + return res.data.Get + } + return +} + +export async function lookUpOnWikipedia(subject) { + try { + if (await database.instance.wikipediaDataExists(subject)) { + return JSON.parse(await database.instance.getWikipediaData(subject)) + } else { + console.log("Data doesn't yet exist") + } + + // if it doesn't, fetch it from wikipedia and save it to the file + const { title, displaytitle, description, extract } = await wiki.summary( + subject + ) + console.log('Got summary', title) + const summary = { + title, + displaytitle, + description, + extract, + } + console.log('Summary is', summary) + // create a directory recursively at data/wikipedia/ if it doesn't exist + + await database.instance.addWikipediaData(subject, JSON.stringify(summary)) + + return summary + } catch (err) { + console.error(err) + } + console.log('Finished looking up on wikipedia') +} diff --git a/server/src/entities/connectors/xrengine.ts b/server/src/entities/connectors/xrengine.ts new file mode 100644 index 000000000..6dfa8a0f9 --- /dev/null +++ b/server/src/entities/connectors/xrengine.ts @@ -0,0 +1,1439 @@ +/* eslint-disable no-console */ +/* eslint-disable no-prototype-builtins */ +/* eslint-disable no-inner-declarations */ +/* eslint-disable @typescript-eslint/ban-ts-comment */ +/* eslint-disable no-empty */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable no-var */ +/* eslint-disable no-param-reassign */ +/* eslint-disable require-await */ +/* eslint-disable camelcase */ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck + +// TODO: This was imported fropm our old codebase +// We need to break some of this code out so that we have more control of it in the node graph +// i.e. text classification and such + +import { tts } from '../../systems/googleTextToSpeech' +import Xvfb from 'xvfb' +import { database } from '../../database' +import { browserWindow, PageUtils } from './browser' +import { + detectOsOption, + getRandomEmptyResponse, + randomInt, + startsWithCapital, +} from './utils' +import { removeEmojisFromString } from '../../utils/utils' + +function isUrl(url: string): boolean { + if (!url || url === undefined || url.length <= 0 || !url.startsWith('http')) + return false + + try { + const _url = new Url(url) + return true + } catch (e) { + return false + } +} + +export class xrengine_client { + handleInput + UsersInRange = {} + UsersInHarassmentRange = {} + UsersInIntimateRange = {} + UsersLookingAt = {} + + prevMessage = {} + prevMessageTimers = {} + messageResponses = {} + conversation = {} + chatHistory = {} + + onMessageDeleted(chatId, messageId) { + if ( + this.messageResponses[chatId] !== undefined && + this.messageResponses[chatId][messageId] !== undefined + ) { + delete this.messageResponses[chatId][messageId] + } + } + onMessageResponseUpdated(chatId, messageId, newResponse) { + if (this.messageResponses[chatId] === undefined) + this.messageResponses[chatId] = {} + this.messageResponses[chatId][messageId] = newResponse + } + + getMessage(chatId, messageId) { + return chatId.messages.fetchMessage(messageId) + } + + isInConversation(user) { + return ( + this.conversation[user] !== undefined && + this.conversation[user].isInConversation === true + ) + } + + sentMessage(user, userId) { + for (const c in this.conversation) { + if (c === user) continue + if ( + this.conversation[c] !== undefined && + this.conversation[c].timeOutFinished === true + ) { + this.exitConversation(c) + } + } + + if (this.conversation[user] === undefined) { + this.conversation[user] = { + timeoutId: undefined, + timeOutFinished: true, + isInConversation: true, + userId: userId, + } + if (this.conversation[user].timeoutId !== undefined) + clearTimeout(this.conversation[user].timeoutId) + this.conversation[user].timeoutId = setTimeout(() => { + log('conversation for ' + user + ' ended') + if (this.conversation[user] !== undefined) { + this.conversation[user].timeoutId = undefined + this.conversation[user].timeOutFinished = true + } + }, 720000) + } else { + this.conversation[user].timeoutId = setTimeout(() => { + log('conversation for ' + user + ' ended') + if (this.conversation[user] !== undefined) { + this.conversation[user].timeoutId = undefined + this.conversation[user].timeOutFinished = true + } + }, 720000) + } + } + + exitConversation(user) { + if (this.conversation[user] !== undefined) { + if (this.conversation[user].timeoutId !== undefined) + clearTimeout(this.conversation[user].timeoutId) + this.conversation[user].timeoutId = undefined + this.conversation[user].timeOutFinished = true + this.conversation[user].isInConversation = false + delete this.conversation[user] + // roomManager.instance.removeUser(user, 'discord') + } + } + + moreThanOneInConversation() { + let count = 0 + for (const c in this.conversation) { + if (this.conversation[c] === undefined) continue + if ( + this.conversation[c].isInConversation !== undefined && + this.conversation[c].isInConversation === true && + this.conversation[c].timeOutFinished === false + ) + count++ + } + + return count > 1 + } + + getResponse(chatId, message) { + if (this.messageResponses[chatId] === undefined) return undefined + return this.messageResponses[chatId][message] + } + + async wasHandled(chatId, messageId, foundCallback, notFoundCallback) { + notFoundCallback() + return false + + return await database.instance.messageExistsWithCallback( + 'xr-engine', + chatId, + messageId, + foundCallback, + notFoundCallback + ) + } + + async saveIfHandled(chatId, messageId, sender, content, timestamp) { + return await database.instance.messageExists( + 'xr-engine', + chatId, + messageId, + sender, + content, + timestamp + ) + } + + isInRange(user) { + return ( + this.UsersInRange[user] !== undefined || + this.UsersInHarassmentRange[user] !== undefined || + this.UsersInIntimateRange[user] !== undefined + ) + } + + async handleMessage( + id, + sender, + senderId, + channelId, + text, + updatedAt, + bot, + isVoice + ) { + console.log('handling message:', text) + if (text.startsWith('/') || text.startsWith('//')) return + else if (text.includes('[') && text.includes(']')) return + else if (sender === this.settings.xrengine_bot_name) return + else if (text.includes('joined the layer')) { + //const user = text.replace('joined the layer', '') + //await this.handleXREngineResponse('Welcome ' + user, false, sender, false) + /*const response = await handleCustomInput( + '[welcome]' + user, + sender, + this.settings.xrengine_bot_name ?? 'Agent', + null, + 'xr-engine', + channelId, + true + ) + await this.handleXREngineResponse(response, false, sender, isVoice)*/ + return + } else if (text.includes('left the layer') || text.length === 0) return + else if (text.includes('in harassment range with')) return + else if (text.includes('in range with')) return + else if (text.includes('looking at')) return + else if (text.includes('in intimate range')) return + else if (text.startsWith('/') || text.startsWith('//')) return + else if (sender === bot.name || senderId === bot.userId) { + } + await this.wasHandled( + channelId, + id, + () => { + return + }, + async () => { + console.log('message: ', text) + const date = Date.now() / 1000 + const msgDate = updatedAt + const diff = date - msgDate + const hours_diff = Math.ceil(diff / 3600) + const mins_diff = Math.ceil((diff - hours_diff) / 60) + if (mins_diff > 12 || (mins_diff <= 5 && hours_diff > 1)) { + const date = new Date(msgDate) + const utc = new Date( + date.getUTCFullYear(), + date.getUTCMonth(), + date.getUTCDate(), + date.getUTCHours(), + date.getUTCMinutes(), + date.getUTCSeconds() + ) + const utcStr = + date.getDate() + + '/' + + (date.getMonth() + 1) + + '/' + + date.getFullYear() + + ' ' + + utc.getHours() + + ':' + + utc.getMinutes() + + ':' + + utc.getSeconds() + this.saveIfHandled(channelId, id, sender, text, utcStr) + return + } + + if ( + this.UsersInHarassmentRange[sender] !== undefined && + this.UsersInIntimateRange[sender] !== undefined && + this.UsersInRange[sender] !== undefined + ) { + return + } + + let content = text + log('handling message: ' + content) + let addPing = false + let _prev = undefined + _prev = this.prevMessage[channelId] + this.prevMessage[channelId] = sender + if (this.prevMessageTimers[channelId] !== undefined) + clearTimeout(this.prevMessageTimers[channelId]) + this.prevMessageTimers[channelId] = setTimeout( + () => (this.prevMessage[channelId] = ''), + 120000 + ) + + addPing = + (_prev !== undefined && _prev !== '' && _prev !== sender) || + this.moreThanOneInConversation() + + let startConv = true + let startConvName = '' + const trimmed = content.trimStart() + for (let i = 0; i < this.settings.xrengine_starting_words.length; i++) { + if ( + trimmed + .toLowerCase() + .startsWith(this.settings.xrengine_starting_words[i]) + ) { + const parts = trimmed.split(' ') + if (parts.length > 1) { + if (!startsWithCapital(parts[1])) { + startConv = true + } else { + startConv = false + startConvName = parts[1] + } + } else { + if ( + trimmed.toLowerCase() === + this.settings.xrengine_starting_words[i] + ) { + startConv = true + } + } + } + } + + if (!startConv) { + if (startConvName.length > 0) { + this.exitConversation(sender) + this.exitConversation(startConvName) + } + } + + const isUserNameMention = content + .toLowerCase() + .replace(',', '') + .replace('.', '') + .replace('?', '') + .replace('!', '') + .match(bot.username_regex) + const isInDiscussion = this.isInConversation(sender) + if (!content.startsWith('!')) { + if (isUserNameMention) { + log('is user mention') + content = '!ping ' + content.replace(bot.username_regex, '').trim() + } else if (isInDiscussion || startConv) content = '!ping ' + content + } + + if (content.startsWith('!ping')) this.sentMessage(sender, senderId) + else { + if (content === '!ping ' || !content.startsWith('!ping')) { + // if (true) { + //roomManager.instance.agentCanResponse(user, 'xrengine')) { + content = '!ping ' + content + this.sentMessage(sender, senderId) + // } else { + // const oldChat = database.instance.getEvent( + // defaultAgent, + // sender, + // 'xrengine', + // msg.chat.id, + // false + // ) + // if (oldChat !== undefined && oldChat.length > 0) { + // const context = await classifyText(values) + // const ncontext = await classifyText(content) + // log('c1: ' + context + ' c2: ' + ncontext) + + // if (context == ncontext) { + // roomManager.instance.userTalkedSameTopic(sender, 'xrengine') + // if ( + // roomManager.instance.agentCanResponse(sender, 'xrengine') + // ) { + // content = '!ping ' + content + // this.sentMessage(sender) + // } else { + // return + // } + // } else { + // return + // } + // } + // } + } else { + // roomManager.instance.userGotInConversationFromAgent(sender) + } + } + log('content: ' + content + ' sender: ' + sender) + + console.log( + 'in conversation:', + this.conversation, + this.UsersInRange, + this.UsersInHarassmentRange, + this.UsersInIntimateRange + ) + + const roomInfo: { + user: string + inConversation: boolean + isBot: boolean + info3d: string + }[] = [] + + for (let x in this.UsersInRange) { + if (!this.checkIfUserIsAdded(roomInfo, x)) { + roomInfo.push({ + user: x, + inConversation: this.isInConversation(x), + isBot: false, + info3d: 'in range', + }) + } + } + for (let x in this.UsersInHarassmentRange) { + if (!this.checkIfUserIsAdded(roomInfo, x)) { + roomInfo.push({ + user: x, + inConversation: this.isInConversation(x), + isBot: false, + info3d: 'in harassment range', + }) + } + } + for (let x in this.UsersInIntimateRange) { + if (!this.checkIfUserIsAdded(roomInfo, x)) { + roomInfo.push({ + user: x, + inConversation: this.isInConversation(x), + isBot: false, + info3d: 'in intimate range', + }) + } + } + + const response = await this.handleInput( + content.replace('!ping', ''), + sender, + this.settings.xrengine_bot_name ?? 'Agent', + 'xr-engine', + channelId, + this.entity, + roomInfo, + this.settings.xrengine_spell_handler_incoming, + this.spell_version + ) + + console.log('got response:', response) + + await this.handleXREngineResponse(response, addPing, sender, isVoice) + } + ) + } + + checkIfUserIsAdded( + arr: { + user: string + inConversation: boolean + isBot: boolean + info3d: string + }[], + user: string + ): boolean { + for (let i = 0; i < arr.length; i++) { + if (arr[i].user == user) { + return true + } + } + + return false + } + + async handleMessages(messages, bot) { + console.log('handle messages:', messages) + for (let i = 0; i < messages.length; i++) { + this.handleMessage( + messages[i].id, + messages[i].sender.name, + messages[i].sender.userId, + messages[i].channelId, + messages[i].text, + messages[i].updatedAt, + bot, + false + ) + } + } + + async handleXREngineResponse(response, addPing, sender, isVoice) { + if (response === undefined || !response) { + return + } + console.log('response: ' + response) + + if ( + (response as string).trim().toLowerCase().endsWith('.mp3') || + (response as string).trim().toLowerCase().endsWith('.wav') + ) { + isVoice = true + } + + if (!isVoice) { + await this.xrengineBot.sendMessage(response) + if (!(response as string).startsWith('/')) { + isVoice = true + response = removeEmojisFromString(response) + const fileId = await tts(response as string) + const url = + (process.env.FILE_SERVER_URL?.endsWith('/') + ? process.env.FILE_SERVER_URL + : process.env.FILE_SERVER_URL + '/') + fileId + + console.log('url:', url) + response = url + await this.xrengineBot.delay(1000) + await this.xrengineBot.sendMessage('!voiceUrl|' + response) + } + return + } + + if (isVoice === false) { + if (response && response !== undefined && response.length > 0) { + let text = response + if (text.startsWith('/')) addPing = false + if (addPing) text = sender + ' ' + text + this.xrengineBot.sendMessage(text, true) + } else { + let emptyResponse = getRandomEmptyResponse( + this.settings.xrengine_empty_responses + ) + while ( + emptyResponse === undefined || + emptyResponse === '' || + emptyResponse.replace(/\s/g, '').length === 0 + ) { + emptyResponse = getRandomEmptyResponse( + this.settings.xrengine_empty_responses + ) + } + + if (addPing) emptyResponse = sender + ' ' + emptyResponse + this.xrengineBot.sendMessage(emptyResponse, true) + } + } else { + console.log('sending voice url') + this.xrengineBot.sendMessage('!voiceUrl|' + response, true) + //this.xrengineBot.sendAudio(5, responses) + } + } + + doTests = false + xrengineBot = null + xvfb + agent + settings + + async createXREngineClient(agent, settings, cli, handleInput) { + console.log('createXREngineClient', agent) + this.agent = agent + this.settings = settings + this.entity = settings.entity + this.handleInput = handleInput + + let temp = this.settings.xrengine_starting_words + if (temp && temp !== undefined) { + temp = temp.split(',') + } else { + temp = ['hi', 'hey'] + } + this.settings.xrengine_starting_words = [] + for (let i = 0; i < temp.length; i++) { + this.settings.xrengine_starting_words.push(temp[i].toLowerCase()) + } + + temp = this.settings.xrengine_empty_responses + if (temp && temp !== undefined) { + temp = temp.split(',') + } else { + temp = ['I am sorry, I do not understand'] + } + this.settings.xrengine_empty_responses = [] + for (let i = 0; i < temp.length; i++) { + this.settings.xrengine_empty_responses.push(temp[i].toLowerCase()) + } + + //generateVoice('hello there', (buf, path) => {}, false) + console.log('creating xr engine client', settings) + + // if (xr) { + // xr.quit() + // xr = undefined + // } + this.xrengineBot = new XREngineBot({ + headless: true, + agent: agent, + settings: settings, + xrengineclient: this, + }) + + this.xvfb = new Xvfb() + await this.xvfb.start(async function (err, xvfbProcess) { + if (err) { + console.log(err) + this.xvfb.stop(function (_err) { + if (_err) log(_err) + }) + } + + try { + console.log('started virtual window') + console.log('Preparing to connect to ', settings.url) + cli.xrengineBot.delay(3000 + Math.random() * 1000) + console.log('Connecting to server...') + await cli.xrengineBot.launchBrowser() + const XRENGINE_URL = + (settings.url as string) || 'https://n3xus.city/location/test' + cli.xrengineBot.enterRoom(XRENGINE_URL, settings.xrengine_bot_name) + console.log('bot fully loaded') + } catch (e) { + console.log('XVFB ERROR:', e) + } + }) + } + destroy() { + if (this.xrengienBot) { + this.xrengineBot.destroy() + } + if (this.xvfb) { + this.xvfb.stop() + } + + this.xrengineBot = null + this.xvfb = null + } +} + +/** + * Main class for creating a bot. + */ +class XREngineBot { + activeChannel + headless + name + autoLog + fakeMediaPath + page + browser + pu + userId + chatHistory = [] + username_regex + agent + settings + handleInput + xrengineclient: xrengine_client + constructor({ + name = 'Bot', + fakeMediaPath = '', + headless = true, + autoLog = true, + agent, + settings, + xrengineclient, + old = { bool: false }, + } = {}) { + if (old.bool) { + this.browser = old.browser + this.page = old.page + this.pu = old.pu + } + this.headless = headless + this.name = name + this.autoLog = autoLog + this.fakeMediaPath = fakeMediaPath + this.agent = agent + this.settings = settings + this.xrengineclient = xrengineclient + this.handleInput = settings.handleInput + this.useVoice = settings.use_voice + this.voiceProvider = settings.voice_provider + this.voiceCharacter = settings.voice_character + setInterval(() => this.instanceMessages(), 1000) + this.messageLoop() + } + destroy() { + this.browser.close() + this.browser = undefined + this.page = undefined + this.pu = undefined + } + + //delay in seconds + queue: { delay: number; message: string; clean: boolean }[] = [] + timeStamp = 0 + + messageLoop() { + setInterval(async () => { + this.timeStamp += 1 + if ( + this.queue.length > 0 && + this.queue[0] && + this.queue[0].delay <= this.timeStamp + ) { + await this.handleMessage(this.queue[0].message, this.queue[0].clean) + this.queue.shift() + this.timeStamp = 0 + } + }, 1000) + } + async sendMessage(message, clean = false) { + log('sending message: ' + message) + if (!message || message === undefined) return + // TODO: + // Send message to google cloud speech + // Get response URL from google cloud speech + + // await this.sendAudio(5) + + this.evaluate(msg => { + try { + globalThis.sendMessage(msg) + } catch (e) {} + }, message) + /*console.log('typing message') + await this.typeMessage('newMessage', message, false) + console.log('sending message!') + await this.pressKey('Enter')*/ + } + async handleMessage(message, clean = false) { + await this.typeMessage('newMessage', message, clean) + await this.pressKey('Enter') + } + + async sendMovementCommand(x, y, z) { + if (x === undefined || y === undefined || z == undefined) { + log(`Invalid parameters! (${x},${y},${z})`) + return + } + + var _x = parseFloat(x) + var _y = parseFloat(y) + var _z = parseFloat(z) + await this._sendMovementCommand(_x, _y, _z) + } + async _sendMovementCommand(x, y, z) { + if (x === undefined || y === undefined || z === undefined) { + log(`Invalid parameters! (${x},${y},${z})`) + return + } + + var message = '/move ' + x + ',' + y + ',' + z + await this.sendMessage(message) + } + async requestSceneMetadata() { + await this.sendMessage('/metadata scene') + } + async requestWorldMetadata(maxDistance) { + if (maxDistance === undefined || maxDistance <= 0) return + + await this.sendMessage(`/metadata world,${maxDistance}`) + } + async requestAllWorldMetadata() { + await this.requestWorldMetadata(Number.MAX_SAFE_INTEGER) + } + async requestPlayers() { + await this.sendMessage('/listAllusers ') + } + + removeSystemFromChatMessage(text) { + return text.substring(text.indexOf(']', 0) + 1) + } + async goTo(landmark) { + if (landmark === undefined || landmark === '') return + + await this.sendMessage(`/goTo ${landmark}`) + } + async playEmote(emote) { + if (emote === undefined || emote === '') return + + await this.sendMessage(`/emote ${emote}`) + } + async playFaceExpression(types, perc, time) { + if (types === undefined || types.length <= 0) return + if (types.length !== perc.length) return + + var message = '/face ' + for (var i = 0; i < types.length; i++) + message += types[i] + ' ' + perc[i] + ' ' + message += time + + await this.sendMessage(message) + } + async getPosition(player) { + if (player === undefined || player === '') return + + await this.sendMessage(`/getPosition ${player}`) + } + async getRotation(player) { + if (player === undefined || player === '') return + + await this.sendMessage(`/getRotation ${player}`) + } + async getScale(player) { + if (player === undefined || player === '') return + + await this.sendMessage(`/getScale ${player}`) + } + async getTransform(player) { + if (player === undefined || player === '') return + + await this.sendMessage(`getTransform ${player}`) + } + async subscribeToChatSystem(system) { + if (system === undefined || system === '') return + + await this.sendMessage(`/subscribe ${system}`) + } + async unsubscribeFromChatSystem(system) { + if (system === undefined || system === '') return + + await this.sendMessage(`/unsubscribe ${system}`) + } + async getSubscribedChatSystems() { + await this.sendMessage('/getSubscribed') + } + async follow(player) { + if (player === undefined || player === '') return + + await this.sendMessage(`/follow ${player}`) + } + async getChatHistory() { + await this.sendMessage('/getChatHistory') + } + async getLocalUserId() { + await this.sendMessage('/getLocalUserId') + } + async lookAt(player) { + if (player === undefined || player === '') return + + await this.sendMessage(`/lookAt ${player}`) + } + async lipSync(pucker, widen, open) { + await this.sendMessage('/lipSync ' + pucker + ' ' + widen + ' ' + open) + } + + counter = 0 + async instanceMessages() { + //#region Tests + // if (doTests) { + // this.counter++ + // if (this.counter === 10) this.playEmote('dance1') + // if (this.counter === 20) this.requestSceneMetadata() + // if (this.counter === 25) this.sendMovementCommand(1, 1, 1) + // //if (this.counter === 35) this.requestWorldMetadata(5) + // //if (this.counter === 40) this.requestAllWorldMetadata() + // if (this.counter === 25) this.sendMovementCommand(2, 2, 2) + // //if (this.counter === 50) this.follow('alex') + // //if (this.counter === 60) this.follow('stop') + // //if (this.counter === 70) this.goTo('Window') + // // if (this.counter === 75) this.getChatHistory() + // //if (this.counter === 80) this.requestPlayers() + // } + //#endregion + + let active = false + + while (!active) { + try { + await this.updateChannelState() + active = true + } catch { + // console.error("Trying to update but can't") + } + } + + if (!this.activeChannel) return // log('No active channel') + const messages = this.activeChannel.messages + if (messages === undefined || messages === null) return + + for (var i = 0; i < messages.length; i++) { + //messages[i].text = this.removeSystemFromChatMessage(messages[i].text) + const messageId = messages[i].id + const senderId = messages[i].sender.id + var sender = messages[i].sender.name + //var text = message.text + + delete messages[i].senderId + delete messages[i].sender + messages[i].senderName = sender + messages[i].updatedAt = new Date(messages[i].updatedAt).getTime() / 1000 + messages[i].createdAt = new Date(messages[i].createdAt).getTime() / 1000 + messages[i].author = ['xr-engine', senderId] + + if ( + this.chatHistory.includes(messageId) || + this.userId === senderId || + (database.instance && + (await database.instance.isUserBanned(senderId, 'xr-engine'))) + ) { + const index = await this.getMessageIndex(messages, messageId) + if (index > -1) messages.splice(index, 1) + } + + this.chatHistory.push(messageId) + } + + await handleMessages(messages, this) + return this.activeChannel && messages + } + + async getMessageIndex(messages, messageId) { + for (var i = 0; i < messages.length; i++) { + if (messages[i].id === messageId) return i + } + + return -1 + } + + audioClear: any = undefined + async sendAudio(duration, url) { + if (isUrl(url) === false) { + return + } + + console.log('Sending audio...') + + await this.page.screenshot({ path: './screenshot1.png' }) + //await this.clickElementById('button', 'UserAudio') + + if (this.audioClear != null) { + clearTimeout(this.audioClear) + this.audioClear = null + } + + await this.page.click('button#UserAudio') + this.audioClear = setTimeout(async () => { + await this.page.click('button#UserAudio') + this.audioClear = null + }, 8000) + + await this.evaluate(url => { + var audio = document.createElement('audio') + console.log('setting url to:', url) + audio.setAttribute( + 'src', + url + //'https://file-examples-com.github.io/uploads/2017/11/file_example_MP3_700KB.mp3' + ) + audio.setAttribute('crossorigin', 'anonymous') + audio.setAttribute('controls', '') + audio.onplay = function () { + var stream = audio.captureStream() + navigator.mediaDevices.getUserMedia = async function () { + return stream + } + } + document.querySelector('body').appendChild(audio) + /*setTimeout(() => { + document.querySelector('body').removeChild(audio) + }, 10)*/ + audio.play() + }, url) + + // await this.page.click('button#VoiceButton') + await this.page.screenshot({ path: './screenshot2.png' }) + await this.waitForTimeout(duration) + } + + async stopAudio(bot) { + log('Stop audio...') + await this.clickElementById('button', 'UserAudio') + } + + async recvAudio(duration) { + log('Receiving audio...') + await this.waitForSelector('[class*=PartyParticipantWindow]', duration) + } + + async sendVideo(duration) { + log('Sending video...') + await this.clickElementById('button', 'UserVideo') + await this.waitForTimeout(duration) + } + + async stopVideo(bot) { + log('Stop video...') + await this.clickElementById('button', 'UserVideo') + } + + async recvVideo(duration) { + log('Receiving video...') + await this.waitForSelector('[class*=PartyParticipantWindow]', duration) + } + + async delay(timeout) { + log(`Waiting for ${timeout} ms... `) + await this.waitForTimeout(timeout) + } + + async interactObject() {} + + /** Return screenshot + * @param {Function} fn Function to execut _in the node context._ + */ + async screenshot() { + return await this.page.screenshot() + } + + /** Runs a function and takes a screenshot if it fails + * @param {Function} fn Function to execut _in the node context._ + */ + async catchAndScreenShot(fn, path = 'botError.png') { + try { + await fn() + } catch (e) { + if (this.page) { + warn('Caught error. Trying to screenshot') + this.page.screenshot({ path }) + } + error(e) + } + } + + /** + * Runs a function in the browser context + * @param {Function} fn Function to evaluate in the browser context + * @param args The arguments to be passed to fn. These will be serialized when passed through puppeteer + */ + async evaluate(fn, ...args) { + if (!this.browser) { + await this.launchBrowser() + } + return await this.page.evaluate(fn, ...args) + } + + /** + * A main-program type wrapper. Runs a function and quits the bot with a + * screenshot if the function throws an exception + * @param {Function} fn Function to evaluate in the node context + */ + exec(fn) { + this.catchAndScreenShot(() => fn(this)).catch(e => { + error('Failed to run. Check botError.png if it exists. Error:', e) + }) + } + + /** Launches the puppeteer browser instance. It is not necessary to call this + * directly in most cases. It will be done automatically when needed. + */ + async launchBrowser() { + log('Launching browser') + const options = { + headless: true, + slowMo: 0, + ignoreHTTPSErrors: true, + args: [ + '--disable-gpu', + '--use-fake-ui-for-media-stream', + '--disable-web-security=1', + '--ignoreHTTPSErrors: true', + // '--use-fake-device-for-media-stream', + // '--use-file-for-fake-video-capture=/Users/apple/Downloads/football_qcif_15fps.y4m', + // // '--use-file-for-fake-audio-capture=/Users/apple/Downloads/BabyElephantWalk60.wav', + '--allow-file-access=1', + '--no-sandbox', + '--disable-setuid-sandbox', + ], + ignoreDefaultArgs: ['--mute-audio'], + ...detectOsOption(), + } + + this.browser = await browserWindow(options) + this.page = await this.browser.newPage() + this.page.on('console', async message => { + if (message.text().startsWith('scene_metadata')) { + const data = message.text().split('|', 2) + if (data.length === 2) { + const _data = data[1] + log(`Scene Metadata: Data:${_data}`) + // TODO: Replace me with metadata handler + // MessageClient.instance.sendMetadata('xr-engine', 'xr-engine', 'xr-engine', data || 'none') + } else log(`invalid scene metadata length (${data.length}): ${data}`) + } else if (message.text().startsWith('metadata')) { + const data = message.text().split('|', 3) + if (data.length === 3) { + const xyz = data[1] + const _data = data[2] + log(`Metadata: Position: ${xyz}, Data: ${_data}`) + } else log(`invalid metadata length ${data.length}: ${data}`) + } else if (message.text().startsWith('players|')) { + const cmd = message.text().split('|')[0] + const data = message.text().substring(cmd.length + 1) + log(`Players: ${data}`) + } else if (message.text().startsWith('messages|')) { + const cmd = message.text().split('|')[0] + const data = message.text().substring(cmd.length + 1) + log(`Messages: ${data}`) + } else if (message.text().startsWith('proximity|')) { + const data = message.text().split('|') + log('Proximity Data: ' + data) + if (data.length === 4) { + const mode = data[1] + const player = data[2] + const value = data[3] + + if (value === 'left') { + if (mode == 'inRange') { + this.xrengineclient.UsersInRange[player] = undefined + } else if (mode == 'intimate') { + this.xrengineclient.UsersInIntimateRange[player] = undefined + } else if (mode == 'harassment') { + this.xrengineclient.UsersInHarassmentRange[player] = undefined + } else if (mode == 'lookAt') { + this.xrengineclient.UsersLookingAt[player] = undefined + } + } else { + if (mode == 'inRange') { + if (this.xrengineclient.UsersInRange[player] === undefined) { + await this.lookAt('alex') + //await this.playEmote('wave') + } + this.xrengineclient.UsersInRange[player] = value + this.xrengineclient.UsersInIntimateRange[player] = undefined + this.xrengineclient.UsersInHarassmentRange[player] = undefined + } else if (mode == 'intimate') { + if ( + this.xrengineclient.UsersInIntimateRange[player] === undefined + ) { + } + this.xrengineclient.UsersInIntimateRange[player] = value + this.xrengineclient.UsersInRange[player] = undefined + this.xrengineclient.UsersInHarassmentRange[player] = undefined + } else if (mode == 'harassment') { + if ( + this.xrengineclient.UsersInHarassmentRange[player] === undefined + ) { + } + this.xrengineclient.UsersInHarassmentRange[player] = value + this.xrengineclient.UsersInRange[player] = undefined + this.xrengineclient.UsersInIntimateRange[player] = undefined + } else if (mode == 'lookAt') { + this.xrengineclient.UsersLookingAt[player] = value + } + } + } + } else if (message.text().startsWith('localId|')) { + const cmd = message.text().split('|')[0] + const data = message.text().substring(cmd.length + 1) + log('local user id: ' + data) + if (data !== undefined && data !== '') { + this.userId = data + } + } else if (message.text().startsWith('emotions|')) { + } else if (message.text().startsWith('BOT_MESSAGE|')) { + console.log('got new message') + console.log(message.text()) + const msg = message.text().substring(message.text().indexOf('|') + 2) + console.log(msg) + const msgObj = JSON.parse(msg) + + let isVoice = false + if (this.useVoice && msgObj.text.startsWith('voice|')) { + msgObj.text = msgObj.text.substring(msgObj.text.indexOf('|') + 1) + isVoice = false // true + } + + await this.xrengineclient.handleMessage( + msgObj.id, + msgObj.sender, + msgObj.senderId, + msgObj.channelId, + msgObj.text, + msgObj.updatedAt, + this, + isVoice + ) + } else if (message.text().startsWith('VOICE_MESSAGE|')) { + const msg = message.text().substring(msgObj.text.indexOf('|') + 1) + const msgObj = JSON.parse(msg) + console.log('received voice message:', msgObj) + await this.xrengineclient.handleMessage( + randomInt(0, 1000000), + msgObj.sender, + msgObj.senderId, + 'voice-xr-engine', + msgObj.text, + msgObj.updatedAt, + this, + this.useVoice + ) + } + + /*if (this.autoLog)*/ + //console.log('>>', message.text()) + }) + + this.page.setViewport({ width: 0, height: 0 }) + await this.page.setUserAgent( + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36' + ) + + this.pu = new PageUtils(this) + } + + async keyPress(key, numMilliSeconds) { + await this.setFocus('canvas') + await this.clickElementById('canvas', 'engine-renderer-canvas') + const interval = setInterval(() => { + log('Pressing', key) + this.pressKey(key) + }, 100) + return new Promise(resolve => + setTimeout(() => { + log('Clearing button press for ' + key, numMilliSeconds) + this.releaseKey(key) + clearInterval(interval) + resolve() + }, numMilliSeconds) + ) + } + + async pressKey(keycode) { + await this.page.keyboard.down(keycode) + } + + async releaseKey(keycode) { + await this.page.keyboard.up(keycode) + } + + async navigate(url) { + if (!this.browser) { + console.log('browser was null') + await this.launchBrowser() + } + + try { + const parsedUrl = new URL(url.includes('https') ? url : `https://${url}`) + parsedUrl.searchParams.set('bot', 'true') + console.log('parsed url is', parsedUrl) + const context = this.browser.defaultBrowserContext() + console.log('permission allow for ', parsedUrl.origin) + context.overridePermissions(parsedUrl.origin, ['microphone', 'camera']) + + console.log(`Going to ${parsedUrl}`) + await this.page.goto(parsedUrl, { waitUntil: 'domcontentloaded' }) + const data = await this.page.evaluate( + () => document.querySelector('*').outerHTML + ) + + console.log(data) + } catch (error) { + return console.log('Unable to connect to XREngine world', error) + } + + /* const granted = await this.page.evaluate(async () => { + return (await navigator.permissions.query({ name: 'camera' })).state; + }); + log('Granted:', granted);*/ + } + + /** Enters the room specified, enabling the first microphone and speaker found + * @param {string} roomUrl The url of the room to join + * @param {Object} opts + * @param {string} opts.name Name to set as the bot name when joining the room + */ + async enterRoom(roomUrl, name) { + try { + console.log('bot name:', name) + await this.navigate(roomUrl) + console.log('navigate at:', roomUrl) + await this.page.waitForSelector('div[class*="instance-chat-container"]', { + timeout: 100000, + }) + + if (name) { + this.name = name + } else { + name = this.name + } + + this.username_regex = new RegExp( + this.settings.xrengine_bot_name_regex, + 'ig' + ) + + //@ts-ignore + if (this.setName != null) this.setName(name) + + await this.page.mouse.click(0, 0) + + await this.delay(10000) + + await this.getUser() + await this.updateChannelState() + + await this.updateUsername(name) + await this.delay(10000) + await this.updateAvatar( + 'CyberbotGreen', + 'https://try.n3xus.city:8642/avatars/public/CyberbotGreen.glb' + ) + await this.requestPlayers() + await this.getUser() + await setInterval(() => this.getUser(), 1000) + } catch (error) { + console.log('error entering room', error) + } + } + + getRandomNumber(min, max) { + return Math.floor(Math.random() * (max - min + 1)) + min + } + + async updateChannelState() { + this.activeChannel = await this.evaluate(() => { + const chatState = globalThis.chatState + if (chatState === undefined) { + console.log('chat state is undefined') + return + } + const channelState = chatState.channels + const channels = channelState.channels.value + const activeChannelMatch = Object.entries(channels).find( + ([key, channel]) => channels[key].channelType === 'instance' + ) + + if (activeChannelMatch && activeChannelMatch.length > 0) { + const res = activeChannelMatch[0] + + function deepCopy(obj) { + var copy + + if (null == obj || 'object' != typeof obj) return obj + + if (obj instanceof Date) { + copy = new Date() + copy.setTime(obj.getTime()) + return copy + } + + if (obj instanceof Array) { + copy = [] + for (var i = 0, len = obj.length; i < len; i++) { + copy[i] = deepCopy(obj[i]) + } + return copy + } + + if (obj instanceof Object) { + copy = {} + for (var attr in obj) { + if (obj.hasOwnProperty(attr)) copy[attr] = deepCopy(obj[attr]) + } + return copy + } + + throw new Error("Unable to copy obj! Its type isn't supported.") + } + + return res + } else { + return undefined + } + }) + } + + async updateUsername(name) { + if (name === undefined || name === '') return + + await this.clickElementById('SPAN', 'Profile_0') + await this.typeMessage('username', name, true) + await this.pressKey('Enter') + await this.clickElementById('SPAN', 'Profile_0') + } + + async updateAvatar(avatar: string, avatarUrl: string) { + setTimeout( + (avatar, avatarUrl) => { + console.log('updating avatar to:', avatar, avatarUrl) + this.evaluate( + (avatar, avatarUrl) => { + globalThis.setAvatar(avatar, avatarUrl) + }, + avatar, + avatarUrl + ) + }, + 10000, + avatar, + avatarUrl + ) + /* + log(`updating avatar to: ${avatar}`) + await this.clickElementById('SPAN', 'Profile_0') + await this.clickElementById('button', 'CreateIcon') + await this.clickSelectorByAlt('img', avatar)*/ + //await this.clickElementById('button', 'confirm-avatar') + } + + async getUser() { + this.userId = await this.evaluate(() => { + return globalThis.userId + }) + } + + async waitForTimeout(timeout) { + return await new Promise(resolve => setTimeout(() => resolve(), timeout)) + } + + async waitForSelector(selector, timeout) { + return this.page.waitForSelector(selector, { timeout }) + } + + async clickElementByClass(elemType, classSelector) { + await this.pu.clickSelectorClassRegex(elemType || 'button', classSelector) + } + + async clickElementById(elemType, id) { + await this.pu.clickSelectorId(elemType, id) + } + async clickSelectorByAlt(elemType, title) { + await this.pu.clickSelectorByAlt(elemType, title) + } + + async typeOnKeyboard(page, inputText) { + inputText.split('').forEach(async key => { + await page.keyboard.sendCharacter(key) + }) + } + + async typeMessage(input, message, clean) { + if (clean) + await this.page.click(`input[name="${input}"]`, { clickCount: 3 }) + await this.page.type(`input[name="${input}"]`, message, { delay: 50 }) + } + + async setFocus(selector) { + await this.page.focus(selector) + } + + /** + * Leaves the room and closes the browser instance without exiting node + */ + quit() { + if (this.page) { + this.page.close() + } + if (this.browser) { + this.browser.close() + } + } +} + +function log(text: string) { + console.log(text) +} diff --git a/server/src/entities/connectors/zoom.ts b/server/src/entities/connectors/zoom.ts new file mode 100644 index 000000000..39dc4b007 --- /dev/null +++ b/server/src/entities/connectors/zoom.ts @@ -0,0 +1,298 @@ +/* eslint-disable no-param-reassign */ +/* eslint-disable require-await */ +/* eslint-disable no-empty */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable camelcase */ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck +import { launch } from 'puppeteer-stream' +import Xvfb from 'xvfb' +import { detectOsOption, getSetting } from './utils' + +export class zoom_client { + async createZoomClient(agent, settings) { + const xvfb = new Xvfb() + await xvfb.start(async function (err, xvfbProcess) { + if (err) { + log(err) + xvfb.stop(function (_err) { + if (_err) log(_err) + }) + } + + log('started virtual window') + const zoomObj = new zoom(agent, settings) + await zoomObj.init() + }) + } +} + +export class zoom { + agent + settings + fakeMediaPath + + browser + page + + constructor(agent, settings, fakeMediaPath = '') { + this.agent = agent + this.settings = settings + this.fakeMediaPath = fakeMediaPath + } + + async init() { + const options = { + headless: false, + ignoreHTTPSErrors: true, + devtools: true, + args: [ + '--use-fake-ui-for-media-stream', + '--use-fake-device-for-media-stream', + //`--use-file-for-fake-video-capture=${this.fakeMediaPath}video.y4m`, + //`--use-file-for-fake-audio-capture=${this.fakeMediaPath}test_audio.wav`, + '--disable-web-security', + '--autoplay-policy=no-user-gesture-required', + '--ignoreHTTPSErrors: true', + ], + defaultViewport: { + width: 1920, + height: 1080, + }, + ...detectOsOption(), + } + log(JSON.stringify(options)) + + this.browser = await launch(options) + this.page = await this.browser.newPage() + this.page.on('console', log => console.log(log._text)) + + this.page.setViewport({ width: 0, height: 0 }) + await this.page.setUserAgent( + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36' + ) + await this.navigate(getSetting(this.settings, 'zoomInvitationLink')) + await this.delay(20000) + await this.typeMessage('inputname', agent.name, false) + await this.clickElementById('button', 'joinBtn') + await this.delay(20000) + await this.clickElementById('button', 'wc_agree1') + await this.delay(20000) + try { + await this.typeMessage( + 'inputpasscode', + getSetting(this.settings, 'zoomPassword'), + false + ) + await this.clickElementById('button', 'joinBtn') + await this.delay(20000) + } catch (ex) { } + + await this.playVideo('https://woolyss.com/f/spring-vp9-vorbis.webm') + + await this.clickElementById('button', 'audioOptionMenu') + await this.catchScreenshot() + const linkHandlers = await this.page.$x( + "//a[contains(text(), 'Fake Audio Input 1')]" + ) + + if (linkHandlers.length > 0) { + await linkHandlers[0].click() + } else { + throw new Error('Link not found') + } + await this.clickElementById('button', 'videoOptionMenu') + await this.catchScreenshot() + const linkHandlers2 = await this.page.$x( + "//a[contains(text(), 'fake_device_0')]" + ) + if (linkHandlers2.length > 0) { + await linkHandlers2[0].click() + } else { + throw new Error('Link not found') + } + + await this.clickElementById('button', 'audioOptionMenu') + await this.catchScreenshot() + const linkHandlers3 = await this.page.$x( + "//a[contains(text(), 'Fake Audio Output 1')]" + ) + + if (linkHandlers3.length > 0) { + await linkHandlers3[0].click() + } else { + throw new Error('Link not found') + } + + await this.clickElementById('button', 'audioOptionMenu') + await this.catchScreenshot() + await this.getVideo() + this.frameCapturerer() + } + + frameCapturerer() { + setTimeout(() => { + this.getRemoteScreenshot() + this.frameCapturerer() + }, 500) + } + + c = 0 + async getRemoteScreenshot() { + const dataUrl = await this.page.evaluate(async () => { + const sleep = time => new Promise(resolve => setTimeout(resolve, time)) + await sleep(5000) + return document.getElementById('main-video').toDataURL() + }) + + this.c++ + const data = Buffer.from(dataUrl.split(',').pop(), 'base64') + //fs.writeFileSync('image' + this.c + '.png', data); + } + + async getVideo() { + await this.page.evaluate(async () => { + const video = document.getElementById('main-video') + const stream = video.captureStream() + const recorder = new MediaRecorder(stream) + recorder.addEventListener('error', error => { + log('recorder error: ' + error) + }) + recorder.addEventListener('dataavailable', ({ data }) => { + log('data: ' + JSON.stringify(data)) + }) + recorder.start(5000) + log(stream.id) + }) + } + + videoCreated = false + async playVideo(url) { + await this.page.evaluate( + async (_url, _videCreated) => { + let video = undefined + if (!this.videoCreated) + video = await document.createElement('video', {}) + else video = await document.getElementById('video-mock') + video.setAttribute('id', 'video-mock') + video.setAttribute('src', _url) + video.setAttribute('crossorigin', 'anonymous') + video.setAttribute('controls', '') + + video.oncanplay = async () => { + video.play() + } + + video.onplay = async () => { + const stream = video.captureStream() + + navigator.mediaDevices.getUserMedia = () => Promise.resolve(stream) + } + }, + url, + this.videoCreated + ) + this.videoCreated = true + await this.delay(10000) + } + + async clickElementById(elemType, id) { + await this.clickSelectorId(elemType, id) + } + + async clickSelectorId(selector, id) { + log(`Clicking for a ${selector} matching ${id}`) + + await this.page.evaluate( + (selector, id) => { + const matches = Array.from(document.querySelectorAll(selector)) + const singleMatch = matches.find(button => button.id === id) + let result + if (singleMatch && singleMatch.click) { + log('normal click') + result = singleMatch.click() + } + if (singleMatch && !singleMatch.click) { + log('on click') + result = singleMatch.dispatchEvent( + new MouseEvent('click', { bubbles: true }) + ) + } + if (!singleMatch) { + log('event click', matches.length) + if (matches.length > 0) { + const m = matches[0] + result = m.dispatchEvent(new MouseEvent('click', { bubbles: true })) + } + } + }, + selector, + id + ) + } + + async clickElementByClass(elemType, classSelector) { + await this.clickSelectorClassRegex(elemType || 'button', classSelector) + } + + async clickSelectorClassRegex(selector, classRegex) { + log(`Clicking for a ${selector} matching ${classRegex}`) + + await this.page.evaluate( + (selector, classRegex) => { + classRegex = new RegExp(classRegex) + const buttons = Array.from(document.querySelectorAll(selector)) + const enterButton = buttons.find(button => + Array.from(button.classList).some(c => classRegex.test(c)) + ) + if (enterButton) enterButton.click() + }, + selector, + classRegex.toString().slice(1, -1) + ) + } + + async navigate(url, searchParams = undefined) { + if (!this.browser) { + await this.init() + } + + const parsedUrl = new URL(url?.includes('https') ? url : `https://${url}`) + if (searchParams !== undefined) { + for (const x in searchParams) { + parsedUrl.searchParams.set(x, searchParams[x]) + } + } + const context = this.browser.defaultBrowserContext() + context.overridePermissions(parsedUrl.origin, ['microphone', 'camera']) + log('navigating to: ' + parsedUrl) + await this.page.goto(parsedUrl, { waitUntil: 'domcontentloaded' }) + } + + async delay(timeout) { + log(`Waiting for ${timeout} ms... `) + await this.waitForTimeout(timeout) + } + + async waitForTimeout(timeout) { + return await new Promise(resolve => setTimeout(() => resolve(), timeout)) + } + + async waitForSelector(selector, timeout) { + return this.page.waitForSelector(selector, { timeout }) + } + + counter = 0 + async catchScreenshot() { + this.counter++ + log('screenshot') + const path = 'screenshot' + this.counter + '.png' + await this.page.screenshot({ path }) + } + + async typeMessage(input, message, clean) { + if (clean) + await this.page.click(`input[name="${input}"]`, { clickCount: 3 }) + await this.page.type(`input[name=${input}`, message) + } +} diff --git a/server/src/entity-server.ts b/server/src/entity-server.ts new file mode 100644 index 000000000..c8bc3ea06 --- /dev/null +++ b/server/src/entity-server.ts @@ -0,0 +1,17 @@ +import 'regenerator-runtime/runtime' +import { config } from 'dotenv-flow' +config() + +import { roomManager } from '@latitudegames/thoth-core/src/components/entities/roomManager' +import { database } from './database' +import { World } from './entities/World' + +async function init() { + console.log('Starting agent runner') + new database() + await database.instance.connect() + new World() + new roomManager() +} + +init() diff --git a/server/src/handleInput.ts b/server/src/handleInput.ts new file mode 100644 index 000000000..6c45ffe59 --- /dev/null +++ b/server/src/handleInput.ts @@ -0,0 +1,20 @@ +//handles the input from a client according to a selected agent and responds +export async function handleInput( + message: any, + speaker: any, + agent: any, + res: any, + clientName: any, + channelId: any +) { + console.log(message, + speaker, + agent, + res, + clientName, + channelId) + const text = "echo " + message + if (res) res.status(200).send(JSON.stringify({ result: text })) + console.log(agent + '>>> ' + text) + return text +} diff --git a/server/src/middleware/auth.ts b/server/src/middleware/auth.ts new file mode 100644 index 000000000..44ca1a3d0 --- /dev/null +++ b/server/src/middleware/auth.ts @@ -0,0 +1,11 @@ +import Koa from 'koa' + +// TODO: Handle these + +export const noAuth = async (ctx: Koa.Context, next: Koa.Next) => { await next() } + +export const apiKeyAuth = () => { return noAuth } + +export const apiKeyWithAccess = (v: any) => { return noAuth } + + diff --git a/server/src/routes.ts b/server/src/routes.ts new file mode 100644 index 000000000..7fbfe80eb --- /dev/null +++ b/server/src/routes.ts @@ -0,0 +1,14 @@ +import { auth } from './routes/auth/login' +import { completions } from './routes/completions' +import { entities } from './routes/entities' +import { settings } from './routes/settings' +import { spells } from './routes/spells' +import { Route } from './types' + +export const routes: Route[] = [ + ...spells, + ...auth, + ...entities, + ...completions, + ...settings, +] diff --git a/server/src/routes/auth/login.ts b/server/src/routes/auth/login.ts new file mode 100644 index 000000000..14bbcc112 --- /dev/null +++ b/server/src/routes/auth/login.ts @@ -0,0 +1,30 @@ +import axios from 'axios'; +import Koa from 'koa'; + +import { noAuth } from '../../middleware/auth'; +import { Route } from '../../types'; +import { CustomError } from './../../utils/CustomError'; + +export const auth: Route[] = [ + { + path: '/auth/login.json', + access: noAuth, + post: async (ctx: Koa.Context) => { + const response = await axios({ + method: 'post', + url: process.env.API_URL + '/auth/login.json', + headers: { + 'Content-Type': 'application/json' + }, + data: ctx.request.body + }); + // eslint-disable-next-line no-console + console.log("response data is: ", response.data) + + if (response.data.accessToken === null) + throw new CustomError('authentication-error', response.data) + + ctx.body = response.data + }, + } +] \ No newline at end of file diff --git a/server/src/routes/completions/index.ts b/server/src/routes/completions/index.ts new file mode 100644 index 000000000..bb5dd398a --- /dev/null +++ b/server/src/routes/completions/index.ts @@ -0,0 +1,64 @@ +import { noAuth } from './../../middleware/auth'; +import Koa from 'koa' +import { Route } from 'src/types'; + +const defaultOptions = { + model: 'davinci-cached', + presencePenalty: 0.0, + temperature: 0.7, + maxTokens: 120, + n: 1, + logitBias: {}, +} + +export type CompletionRequest = any + +export const completionsParser = async ( + completionRequest: CompletionRequest +) => { + const { + context, + getFullResponse, + modelSource = 'openai', + universalFormat = false, + ...options + } = completionRequest + if (!options) throw console.error('input-failed', 'No parameters provided') + + if (!(modelSource in ModelSources)) + throw console.error('input-failed', 'Model source not supported') + return context +} + +const completionsHandler = async (ctx: Koa.Context) => { + const { + context, + getFullResponse, + modelSource = 'openai', + ...options + } = (ctx.request as any).body + + const completion = await completionsParser({ + context, + getFullResponse, + modelSource, + ...options, + }) + ctx.body = completion +} + +export const completions: Route[] = [ + { + path: '/completions', + access: noAuth, + post: completionsHandler, + } +] + +enum ModelSources { + 'openai', + 'coreweave', + 'ai21', + 'forefront', + 'huggingface', +} diff --git a/server/src/routes/entities.ts b/server/src/routes/entities.ts new file mode 100644 index 000000000..c2b0eed91 --- /dev/null +++ b/server/src/routes/entities.ts @@ -0,0 +1,657 @@ +// @ts-nocheck +import { createWikipediaEntity } from '../entities/connectors/wikipedia' +import { database } from '../database' +import { handleInput } from '../entities/connectors/handleInput' +//@ts-ignore +import weaviate from 'weaviate-client' +import Koa from 'koa' +import 'regenerator-runtime/runtime' +import { noAuth } from '../middleware/auth' +import { Route } from '../types' +import axios from 'axios' +import { cacheManager } from '../cacheManager' +import { makeCompletion } from '../utils/MakeCompletionRequest' +import { MakeModelRequest } from '../utils/MakeModelRequest' +import { tts } from '../systems/googleTextToSpeech' +import { getAudioUrl } from './getAudioUrl' + +export const modules: Record = {} + +const executeHandler = async (ctx: Koa.Context) => { + const message = ctx.request.body.command + const speaker = ctx.request.body.sender + const agent = ctx.request.body.agent + const entityId = ctx.request.body.entityId + const id = ctx.request.body.id + const msg = 'Hello' + const spell_handler = ctx.request.body.handler ?? 'default' + if (message.includes('/become')) { + let out: any = {} + if (!(await database.instance.entityExists(agent))) { + out = await createWikipediaEntity('Speaker', agent, '', '') + } + + if (out === undefined) { + out = {} + } + + out.defaultGreeting = await msg + database.instance.createEvent( + 'conversation', + agent, + 'web', + id, + agent, + out.defaultGreeting + ) + return (ctx.body = out) + } + ctx.body = await handleInput( + message, + speaker, + agent, + 'web', + id, + spell_handler, + entityId + ) +} + +const getEntitiesHandler = async (ctx: Koa.Context) => { + try { + let data = await database.instance.getEntities() + return (ctx.body = data) + } catch (e) { + console.log('getEntitiesHandler:', e) + ctx.status = 500 + return (ctx.body = { error: 'internal error' }) + } +} + +const getEntityHandler = async (ctx: Koa.Context) => { + try { + const instanceId = ctx.request.query.instanceId as string + const isNum = /^\d+$/.test(instanceId) + const _instanceId = isNum + ? parseInt(instanceId) + ? parseInt(instanceId) >= 1 + ? parseInt(instanceId) + : 1 + : 1 + : 1 + let data = await database.instance.getEntity(_instanceId) + if (data === undefined || !data) { + let newId = _instanceId + while ((await database.instance.entityExists(newId)) || newId <= 0) { + newId++ + } + + data = { + id: newId, + personality: '', + enabled: true, + } + } + return (ctx.body = data) + } catch (e) { + console.log('getEntityHandler:', e) + ctx.status = 500 + return (ctx.body = { error: 'internal error' }) + } +} + +const addEntityHandler = async (ctx: Koa.Context) => { + const data = ctx.request.body.data + let instanceId = ctx.request.body.id ?? ctx.request.body.instanceId + + if (!instanceId || instanceId === undefined || instanceId <= 0) { + instanceId = 0 + while ( + (await database.instance.entityExists(instanceId)) || + instanceId <= 0 + ) { + instanceId++ + } + } + + try { + console.log('updated agent database with', data) + if(Object.keys(data).length <= 0) return ( + ctx.body = await database.instance.createEntity() + ) + return (ctx.body = await database.instance.updateEntity(instanceId, data)) + } catch (e) { + console.log('addEntityHandler:', e) + ctx.status = 500 + return (ctx.body = { error: 'internal error' }) + } +} + +const deleteEntityHandler = async (ctx: Koa.Context) => { + const { id } = ctx.params + console.log('deleteEntityHandler', deleteEntityHandler) + + try { + return (ctx.body = await database.instance.deleteEntity(id)) + } catch (e) { + console.log(e) + ctx.status = 500 + return (ctx.body = 'internal error') + } +} + +const getEvent = async (ctx: Koa.Context) => { + const type = ctx.request.query.type as string + const agent = ctx.request.query.agent + const speaker = ctx.request.query.speaker + const client = ctx.request.query.client + const channel = ctx.request.query.channel + const maxCount = parseInt(ctx.request.query.maxCount as string) + const conversation = await database.instance.getEvents( + type, + agent, + speaker, + client, + channel, + true, + maxCount + ) + + console.log('conversation, query:', ctx.request.query, 'conv:', conversation) + + return (ctx.body = conversation) +} + +const getAllEvents = async (ctx: Koa.Context) => { + try { + const events = await database.instance.getAllEvents() + return (ctx.body = events) + } catch (e) { + console.log(e) + ctx.status = 500 + return (ctx.body = 'internal error') + } +} + +const getSortedEventsByDate = async (ctx: Koa.Context) => { + try { + const sortOrder = ctx.request.query.order as st + if(!['asc', 'desc'].includes(sortOrder)) { + ctx.status = 400 + return (ctx.body = 'invalid sort order') + } + const events = await database.instance.getSortedEventsByDate(sortOrder) + return (ctx.body = events) + } catch (e) { + console.log(e) + ctx.status = 500 + return (ctx.body = 'internal error') + } +} + +const deleteEvent = async (ctx: Koa.Context) => { + try { + const { id } = ctx.params + if(!parseInt(id)) { + ctx.status = 400 + return (ctx.body = 'invalid url parameter') + } + const res = await database.instance.deleteEvent(id) + return (ctx.body = res.rowCount) + } catch (e) { + console.log(e) + ctx.status = 500 + return (ctx.body = 'internal error') + } +} + +const updateEvent = async (ctx: Koa.Context) => { + try { + const { id } = ctx.params + if(!parseInt(id)) { + ctx.status = 400 + return (ctx.body = 'invalid url parameter') + } + + const agent = ctx.request.body.agent + const sender = ctx.request.body.sender + const client = ctx.request.body.client + const channel = ctx.request.body.channel + const text = ctx.request.body.text + const type = ctx.request.body.type + const date = ctx.request.body.date + + const res = await database.instance.updateEvent(id, { agent, sender, client, channel, text, type, date }) + return (ctx.body = res) + } catch (e) { + console.log(e) + ctx.status = 500 + return (ctx.body = 'internal error') + } +} + +const createEvent = async (ctx: Koa.Context) => { + const agent = ctx.request.body.agent + const speaker = ctx.request.body.speaker + const client = ctx.request.body.client + const channel = ctx.request.body.channel + const text = ctx.request.body.text + const type = ctx.request.body.type + console.log('Creating event:', agent, speaker, client, channel, text, type) + await database.instance.createEvent( + type, + agent, + client, + channel, + speaker, + text + ) + + return (ctx.body = 'ok') +} + +const getSpeechToText = async (ctx: Koa.Context) => { + const text = ctx.request.query.text + const character = ctx.request.query.character ?? 'none' + console.log("text and character are", text, character) + const cache = await cacheManager.instance.get( + character as string, + 'speech_' + character + ': ' + text, + true + ) + if (cache !== undefined && cache !== null) { + console.log('got sst from cache, cache:', cache) + return (ctx.body = cache) + } + + // const fileId = await tts(text as string) + // const url = + // (process.env.FILE_SERVER_URL?.endsWith('/') + // ? process.env.FILE_SERVER_URL + // : process.env.FILE_SERVER_URL + '/') + fileId + + const url = await getAudioUrl( + process.env.UBER_DUCK_KEY as string, + process.env.UBER_DUCK_SECRET_KEY as string, + character as string, + text as string + ) + console.log('stt url:', url) + + cacheManager.instance.set('global', 'speech_' + character + ': ' + text, url) + + return (ctx.body = url) +} + +const getEntityImage = async (ctx: Koa.Context) => { + const agent = ctx.request.query.agent + + const resp = await axios.get( + `https://en.wikipedia.org/w/api.php?action=query&format=json&formatversion=2&prop=pageimages&piprop=original&titles=${agent}` + ) + + if ( + resp.data.query.pages && + resp.data.query.pages.length > 0 && + resp.data.query.pages[0].original + ) { + return (ctx.body = resp.data.query.pages[0].original.source) + } + + return (ctx.body = '') +} + +const customMessage = async (ctx: Koa.Context) => { + const sender = ctx.request.body?.sender as string + const agent = ctx.request.body?.agent as string + const message = (ctx.request.body?.message as string).trim().toLowerCase() + let isVoice = ctx.request.body?.isVoice as boolean + let url: any = '' + let response = message + + if (message.startsWith('[welcome]')) { + const user = message.replace('[welcome]', '').trim() + response = 'Welcome ' + user + '!' + isVoice = true + } + let cmd = message.trim().toLowerCase() + + if (cmd.length <= 0) { + response = "I can't understand you!" + } else if (cmd === 'play') { + } else if (cmd === 'pause') { + } else if (cmd.startsWith('go to')) { + } else { + response = await requestInformationAboutVideo(sender, agent, cmd) + } + + if (isVoice) { + console.log('generating voice') + const character = 'kurzgesagt' + const cache = cacheManager.instance.get( + 'global', + 'speech_' + character + ': ' + response, + true + ) + if (cache !== undefined && cache !== null) { + return (ctx.body = cache) + } + + url = await getAudioUrl( + process.env.UBER_DUCK_KEY as string, + process.env.UBER_DUCK_SECRET_KEY as string, + character as string, + response as string + ) + + cacheManager.instance.set( + 'global', + 'speech_' + character + ': ' + response, + url + ) + } + + return (ctx.body = { response: isVoice ? url : message, isVoice: isVoice }) +} + +const getFromCache = async (ctx: Koa.Context) => { + const key = ctx.request.query.key as string + const agent = ctx.request.query.agent as string + const strict = ctx.request.query.strict as string + + const value = cacheManager.instance.get(agent, key, strict === 'true') + return (ctx.body = { data: value }) +} + +const deleteFromCache = async (ctx: Koa.Context) => { + const key = ctx.request.query.key as string + const agent = ctx.request.query.agent as string + + cacheManager.instance._delete(agent, key) + return (ctx.body = 'ok') +} + +const setInCache = async (ctx: Koa.Context) => { + const key = ctx.request.body.key as string + const agent = ctx.request.body.agent as string + const value = ctx.request.body.value + + cacheManager.instance.set(agent, key, value) + return (ctx.body = 'ok') +} + +const textCompletion = async (ctx: Koa.Context) => { + const prompt = ctx.request.body.prompt as string + const modelName = ctx.request.body.modelName as string + const temperature = ctx.request.body.temperature as number + const maxTokens = ctx.request.body.maxTokens as number + const topP = ctx.request.body.topP as number + const frequencyPenalty = ctx.request.body.frequencyPenalty as number + const presencePenalty = ctx.request.body.presencePenalty as number + const sender = (ctx.request.body.sender as string) ?? 'User' + let stop = ctx.request.body.stop as string[] + + if (!stop || stop.length === undefined || stop.length <= 0) { + stop = ['"""', `${sender}:`, '\n'] + } else { + for (let i = 0; i < stop.length; i++) { + if (stop[i] === '#speaker:') { + stop[i] = `${sender}:` + } + } + } + + const { success, choice } = await makeCompletion(modelName, { + prompt: prompt, + temperature: temperature, + max_tokens: maxTokens, + top_p: topP, + frequency_penalty: frequencyPenalty, + presence_penalty: presencePenalty, + stop: stop, + }) + + return (ctx.body = { success, choice }) +} + +const hfRequest = async (ctx: Koa.Context) => { + const inputs = ctx.request.body.inputs as string + const model = ctx.request.body.model as string + const parameters = ctx.request.body.parameters as any + const options = (ctx.request.body.options as any) || { + use_cache: false, + wait_for_model: true, + } + + const { success, data } = await MakeModelRequest( + inputs, + model, + parameters, + options + ) + + return (ctx.body = { success, data }) +} + +const makeWeaviateRequest = async (ctx: Koa.Context) => { + const keyword = ctx.request.body.keyword as string + + const client = weaviate.client({ + scheme: 'http', + host: 'semantic-search-wikipedia-with-weaviate.api.vectors.network:8080/', + }) + + const res = await client.graphql + .get() + .withNearText({ + concepts: [keyword], + certainty: 0.75, + }) + .withClassName('Paragraph') + .withFields('title content inArticle { ... on Article { title } }') + .withLimit(3) + .do() + + if (res.data.Get !== undefined) { + return (ctx.body = { data: res.data.Get }) + } + return (ctx.body = { data: '' }) +} + +const getEntityData = async (ctx: Koa.Context) => { + const agent = ctx.request.query.agent as string + + const data = await database.instance.getEntity(agent) + + return (ctx.body = { agent: data }) +} + +const requestInformationAboutVideo = async ( + sender: string, + agent: string, + question: string +): Promise => { + const videoInformation = `` + const prompt = `Information: ${videoInformation} \n ${sender}: ${question.trim().endsWith('?') ? question.trim() : question.trim() + '?' + }\n${agent}:` + + const modelName = 'davinci' + const temperature = 0.9 + const maxTokens = 100 + const topP = 1 + const frequencyPenalty = 0.5 + const presencePenalty = 0.5 + const stop: string[] = ['"""', `${sender}:`, '\n'] + + const { success, choice } = await makeCompletion(modelName, { + prompt: prompt, + temperature: temperature, + max_tokens: maxTokens, + top_p: topP, + frequency_penalty: frequencyPenalty, + presence_penalty: presencePenalty, + stop: stop, + }) + + return success ? choice : "Sorry I can't answer your question!" +} + +const chatEntity = async (ctx: Koa.Context) => { + const speaker = ctx.request.body.speaker as string + const agent = ctx.request?.body?.agent as string + + const personality = '' + const facts = '' + let out = undefined + + if (!(await database.instance.entityExists(agent))) { + out = await createWikipediaEntity(speaker, agent, personality, facts) + } + + if (out === undefined) { + out = {} + } + + return (ctx.body = out) +} + +const getEntitiesInfo = async (ctx: Koa.Context) => { + const id = (ctx.request.query.id as string) + ? parseInt(ctx.request.query.id as string) + : -1 + + try { + let data = await database.instance.getEntities() + let info = undefined + for (let i = 0; i < data.length; i++) { + if (data[i].id === id) { + info = data[i] + } + } + + return (ctx.body = info) + } catch (e) { + console.log('getEntitiesHandler:', e) + ctx.status = 500 + return (ctx.body = { error: 'internal error' }) + } +} + +const handleCustomInput = async (ctx: Koa.Context) => { + const message = ctx.request.body.message as string + const speaker = ctx.request.body.sender as string + const agent = ctx.request.body.agent as string + const client = ctx.request.body.client as string + const channelId = ctx.request.body.channelId as string + + return (ctx.body = { + response: handleInput( + message, + speaker, + agent, + client, + channelId, + 1, + 'default', + 'latest' + ), + }) +} + +export const entities: Route[] = [ + { + path: '/execute', + access: noAuth, + post: executeHandler, + }, + { + path: '/entities', + access: noAuth, + get: getEntitiesHandler, + }, + { + path: '/entity', + access: noAuth, + get: getEntityHandler, + post: addEntityHandler, + }, + { + path: '/entity/:id', + access: noAuth, + delete: deleteEntityHandler, + }, + { + path: '/event', + access: noAuth, + get: getEvent, + post: createEvent, + }, + { + path: '/event/:id', + access: noAuth, + delete: deleteEvent, + put: updateEvent, + }, + { + path: '/events', + access: noAuth, + get: getAllEvents, + }, + { + path: '/events_sorted', + access: noAuth, + get: getSortedEventsByDate, + }, + { + path: '/speech_to_text', + access: noAuth, + get: getSpeechToText, + }, + { + path: '/get_entity_image', + access: noAuth, + get: getEntityImage, + }, + { + path: '/cache_manager', + access: noAuth, + get: getFromCache, + delete: deleteFromCache, + post: setInCache, + }, + { + path: '/text_completion', + access: noAuth, + post: textCompletion, + }, + { + path: '/hf_request', + access: noAuth, + post: hfRequest, + }, + { + path: '/weaviate', + access: noAuth, + post: makeWeaviateRequest, + }, + { + path: '/custom_message', + access: noAuth, + post: customMessage, + }, + { + path: '/chat_agent', + access: noAuth, + post: chatEntity, + }, + { + path: '/entities_info', + access: noAuth, + get: getEntitiesInfo, + }, + { + path: '/handle_custom_input', + access: noAuth, + post: handleCustomInput, + }, +] diff --git a/server/src/routes/getAudioUrl.ts b/server/src/routes/getAudioUrl.ts new file mode 100644 index 000000000..c18da4a17 --- /dev/null +++ b/server/src/routes/getAudioUrl.ts @@ -0,0 +1,54 @@ +import request from 'request'; +import fetch from 'node-fetch'; + + +export function getAudioUrl( + key: string, + secretKey: string, + character: string, + text: string +) { + if (character === undefined) + throw new Error('Define the character voice.'); + if (key === undefined) + throw new Error('Define the key you got from uberduck'); + if (character === undefined) + throw new Error('Define the secret key you got from uberduck.'); + + return new Promise(async (resolve, reject) => { + await request( + { + url: 'https://api.uberduck.ai/speak', + method: 'POST', + body: `{"speech": "${text}","voice": "${character}"}`, + auth: { + user: key, + pass: secretKey, + }, + }, + async (erro: any, response: any, body: any) => { + if (erro) + throw new Error( + 'Error when making request, verify if yours params (key, secretKey, character) are correct.' + ); + const audioResponse: string = 'https://api.uberduck.ai/speak-status?uuid=' + JSON.parse(body).uuid; + let jsonResponse: any = false; + async function getJson(url: string) { + let jsonResult: any = undefined; + await fetch(url) + .then(res => res.json()) + .then(json => { + jsonResult = json; + }); + return jsonResult; + } + + jsonResponse = await getJson(audioResponse); + while (jsonResponse.path === null) + jsonResponse = await getJson(audioResponse); + + resolve(jsonResponse.path); + } + ); + }); +} diff --git a/server/src/routes/settings/index.ts b/server/src/routes/settings/index.ts new file mode 100644 index 000000000..9dade5675 --- /dev/null +++ b/server/src/routes/settings/index.ts @@ -0,0 +1,485 @@ +import Koa from 'koa' +import { noAuth } from './../../middleware/auth' +import { Route } from 'src/types' +import { database } from '../../database' +import { + AddClient, + AddConfiguration, + AddScope, + AddScopeOptional, + ClientFilterOptions, + ConfigurationFilterOptions, + EditClient, + EditConfiguration, + EditScope, +} from './types' +import { + isValidObject, + isValidObjectWithValues, + makeResponse, +} from '../../utils/utils' +import { isString } from 'lodash' + +const addClient = async (ctx: Koa.Context) => { + const { body } = ctx.request + try { + if (isValidObjectWithValues(body, ['defaultValue'])) { + const { isAlreadyExists, data, success } = + await database.instance.addClientSetting(body as AddClient) + if (isAlreadyExists) + return ( + (ctx.body = makeResponse('Setting already exists!', data)), + (ctx.status = 201) + ) + if (success) + return (ctx.body = makeResponse('Setting added successfully', data)) + } + return ( + (ctx.body = makeResponse( + 'Some fields are missing, send valid body!', + {} + )), + (ctx.status = 400) + ) + } catch (error) { + console.error('Error: addClient =>', error) + return ( + (ctx.body = makeResponse('Something went wrong!', {})), (ctx.status = 400) + ) + } +} + +const editClient = async (ctx: Koa.Context) => { + const { + body, + query: { id = null }, + } = ctx.request + + if (!id) + return (ctx.body = makeResponse('Send valid id!', {})), (ctx.status = 400) + + try { + if (isValidObjectWithValues(body, ['defaultValue'])) { + const { success, data, isExists } = + await database.instance.editClientSetting( + body as EditClient, + id as string | number + ) + + if (!isExists) + return ( + (ctx.body = makeResponse('Setting not available in record!', {})), + (ctx.status = 201) + ) + if (success) + return (ctx.body = makeResponse('Setting updated successfully', data)) + + throw Error('Something went wrong!') + } + return ( + (ctx.body = makeResponse( + 'Some fields are missing, send valid body!', + {} + )), + (ctx.status = 400) + ) + } catch (error) { + console.error('Error: editClient =>', error) + return ( + (ctx.body = makeResponse('Something went wrong!', {})), (ctx.status = 400) + ) + } +} + +const deleteClient = async (ctx: Koa.Context) => { + const { + query: { id = null }, + } = ctx.request + + if (!id) + return (ctx.body = makeResponse('Send valid id!', {})), (ctx.status = 400) + + try { + const { success, data, isExists } = + await database.instance.deleteClientSetting(id as string | number) + + if (!isExists) + return ( + (ctx.body = makeResponse('Setting not available in record!', {})), + (ctx.status = 201) + ) + if (success) + return (ctx.body = makeResponse('Setting deleted successfully', data)) + + throw Error('Something went wrong!') + } catch (error) { + console.error('Error: editClient =>', error) + return ( + (ctx.body = makeResponse('Something went wrong!', {})), (ctx.status = 400) + ) + } +} + +const getAllClient = async (ctx: Koa.Context) => { + let { query } = ctx.request as Koa.Request + + let { page, per_page } = query as ClientFilterOptions + + page = page || (1 as any) + per_page = per_page || (10 as any) + + try { + const { success, data } = await database.instance.getAllClientSetting({ + page, + per_page, + }) + + if (success) return (ctx.body = makeResponse('Records available', data)) + + return (ctx.body = makeResponse('Records are not available', data)) + } catch (error) { + console.error('Error: editClient =>', error) + return ( + (ctx.body = makeResponse('Something went wrong!', {})), (ctx.status = 400) + ) + } +} + +const addConfiguration = async (ctx: Koa.Context) => { + const { body } = ctx.request + try { + if (isValidObjectWithValues(body, [])) { + const { isAlreadyExists, data, success } = + await database.instance.addConfigurationSetting( + body as AddConfiguration + ) + + if (isAlreadyExists) + return ( + (ctx.body = makeResponse('Configuration already exists!', data)), + (ctx.status = 201) + ) + + if (success) + return (ctx.body = makeResponse( + 'Configuration added successfully', + data + )) + } + + return ( + (ctx.body = makeResponse( + 'Some fields are missing, send valid body!', + {} + )), + (ctx.status = 400) + ) + } catch (error) { + console.error('Error: addConfiguration =>', error) + return ( + (ctx.body = makeResponse('Something went wrong!', {})), (ctx.status = 400) + ) + } +} + +const editConfiguration = async (ctx: Koa.Context) => { + const { + body, + query: { id = null }, + } = ctx.request + + if (!id) + return (ctx.body = makeResponse('Send valid id!', {})), (ctx.status = 400) + + try { + if (isValidObjectWithValues(body, ['value'])) { + const { success, data, isExists } = + await database.instance.editConfigurationSetting( + body as EditConfiguration, + id as string | number + ) + + if (!isExists) + return ( + (ctx.body = makeResponse( + 'Configuration not available in record!', + {} + )), + (ctx.status = 201) + ) + if (success) + return (ctx.body = makeResponse( + 'Configuration updated successfully', + data + )) + + throw Error('Something went wrong!') + } + return ( + (ctx.body = makeResponse( + 'Some fields are missing, send valid body!', + {} + )), + (ctx.status = 400) + ) + } catch (error) { + console.error('Error: editConfiguration =>', error) + return ( + (ctx.body = makeResponse('Something went wrong!', {})), (ctx.status = 400) + ) + } +} + +const getAllConfiguration = async (ctx: Koa.Context) => { + let { query } = ctx.request as Koa.Request + + let { page, per_page } = query as ConfigurationFilterOptions + + page = page || (1 as any) + per_page = per_page || (10 as any) + + try { + const { success, data } = + await database.instance.getAllConfigurationSettings({ + page, + per_page, + }) + + if (success) return (ctx.body = makeResponse('Records available', data)) + + return (ctx.body = makeResponse('Records are not available', data)) + } catch (error) { + console.error('Error: getAllConfiguration =>', error) + return ( + (ctx.body = makeResponse('Something went wrong!', {})), (ctx.status = 400) + ) + } +} + +const deleteConfiguration = async (ctx: Koa.Context) => { + const { + query: { id = null }, + } = ctx.request + + if (!id) + return (ctx.body = makeResponse('Send valid id!', {})), (ctx.status = 400) + + try { + const { success, data, isExists } = + await database.instance.deleteConfigurationSetting(id as string | number) + + if (!isExists) + return ( + (ctx.body = makeResponse('Setting not available in record!', {})), + (ctx.status = 201) + ) + if (success) + return (ctx.body = makeResponse('Setting deleted successfully', data)) + + throw Error('Something went wrong!') + } catch (error) { + console.error('Error: deleteConfiguration =>', error) + return ( + (ctx.body = makeResponse('Something went wrong!', {})), (ctx.status = 400) + ) + } +} + +const addScope = async (ctx: Koa.Context) => { + const { body } = ctx.request + try { + if ( + isValidObjectWithValues(body, [ + AddScopeOptional.FULLTABLESIZE, + AddScopeOptional.RECORDCOUNT, + AddScopeOptional.TABLESIZE, + ]) + ) { + if (!isValidObject(body.fullTableSize)) { + body.fullTableSize = '0 bytes' + } else { + body.fullTableSize = `${body.fullTableSize.value} ${body.fullTableSize.label}` + } + + if (!isValidObject(body.tableSize)) { + body.tableSize = '0 bytes' + } else { + body.tableSize = `${body.tableSize.value} ${body.tableSize.label}` + } + + if (!body.recordCount) { + body.recordCount = '0' + } + + const { isAlreadyExists, data, success } = + await database.instance.addScopeSetting(body as AddScope) + + if (isAlreadyExists) + return ( + (ctx.body = makeResponse('Scope already exists!', data)), + (ctx.status = 201) + ) + + if (success) + return (ctx.body = makeResponse('Scope added successfully', data)) + } + + return ( + (ctx.body = makeResponse( + 'Some fields are missing, send valid body!', + {} + )), + (ctx.status = 400) + ) + } catch (error) { + console.error('Error: addScope =>', error) + return ( + (ctx.body = makeResponse('Something went wrong!', {})), (ctx.status = 400) + ) + } +} + +const editScope = async (ctx: Koa.Context) => { + const { + body, + query: { id = null }, + } = ctx.request + + if (!id) + return (ctx.body = makeResponse('Send valid id!', {})), (ctx.status = 400) + + try { + if ( + isValidObjectWithValues(body, [ + AddScopeOptional.FULLTABLESIZE, + AddScopeOptional.RECORDCOUNT, + AddScopeOptional.TABLESIZE, + ]) + ) { + if (!isValidObject(body.fullTableSize)) { + body.fullTableSize = '0 bytes' + } else { + body.fullTableSize = `${body.fullTableSize.value} ${body.fullTableSize.label}` + } + + if (!isValidObject(body.tableSize)) { + body.tableSize = '0 bytes' + } else { + body.tableSize = `${body.tableSize.value} ${body.tableSize.label}` + } + + if (!body.recordCount) { + body.recordCount = '0' + } + + const { success, data, isExists } = + await database.instance.editScopeSetting( + body as EditScope, + id as string | number + ) + + if (!isExists) + return ( + (ctx.body = makeResponse('Scope not available in record!', {})), + (ctx.status = 201) + ) + if (success) + return (ctx.body = makeResponse('Scope updated successfully', data)) + + throw Error('Something went wrong!') + } + return ( + (ctx.body = makeResponse( + 'Some fields are missing, send valid body!', + {} + )), + (ctx.status = 400) + ) + } catch (error) { + console.error('Error: editScope =>', error) + return ( + (ctx.body = makeResponse('Something went wrong!', {})), (ctx.status = 400) + ) + } +} + +const getAllScope = async (ctx: Koa.Context) => { + let { query } = ctx.request as Koa.Request + + let { page, per_page } = query as ConfigurationFilterOptions + + page = page || (1 as any) + per_page = per_page || (10 as any) + + try { + const { success, data } = await database.instance.getAllScopeSettings({ + page, + per_page, + }) + + if (success) return (ctx.body = makeResponse('Records available', data)) + + return (ctx.body = makeResponse('Records are not available', data)) + } catch (error) { + console.error('Error: getAllScope =>', error) + return ( + (ctx.body = makeResponse('Something went wrong!', {})), (ctx.status = 400) + ) + } +} + +const deleteScope = async (ctx: Koa.Context) => { + const { + query: { id = null }, + } = ctx.request + + if (!id) + return (ctx.body = makeResponse('Send valid id!', {})), (ctx.status = 400) + + try { + const { success, data, isExists } = + await database.instance.deleteScopeSetting(id as string | number) + + if (!isExists) + return ( + (ctx.body = makeResponse('Setting not available in record!', {})), + (ctx.status = 201) + ) + if (success) + return (ctx.body = makeResponse('Setting deleted successfully', data)) + + throw Error('Something went wrong!') + } catch (error) { + console.error('Error: deleteScope =>', error) + return ( + (ctx.body = makeResponse('Something went wrong!', {})), (ctx.status = 400) + ) + } +} + +export const settings: Route[] = [ + { + path: '/setting/client', + access: noAuth, + post: addClient, + patch: editClient, + delete: deleteClient, + get: getAllClient, + }, + { + path: '/setting/configuration', + access: noAuth, + get: getAllConfiguration, + post: addConfiguration, + patch: editConfiguration, + delete: deleteConfiguration, + }, + { + path: '/setting/scope', + access: noAuth, + get: getAllScope, + post: addScope, + patch: editScope, + delete: deleteScope, + }, +] diff --git a/server/src/routes/settings/types.ts b/server/src/routes/settings/types.ts new file mode 100644 index 000000000..39631b354 --- /dev/null +++ b/server/src/routes/settings/types.ts @@ -0,0 +1,70 @@ +export type AddClient = { + client: string + name: string + type: string + defaultValue: string +} + +export type EditClient = { + name: string + defaultValue: string + id: string +} + +export type ClientFilterOptions = { + per_page: number | string + page: number | string +} + +export type AddConfiguration = { + key: string + value: string +} + +export type EditConfiguration = { + key: string + value: string + id: string +} + +export type ConfigurationFilterOptions = { + per_page: number | string + page: number | string +} + +export type FullTableSize = { + value: string + label: string +} + +export type TableSize = { + value: string + label: string +} + +export type AddScope = { + tables: string + fullTableSize?: FullTableSize + tableSize?: TableSize + recordCount?: string +} + +export type EditScope = { + id: number + tables: string + fullTableSize?: FullTableSize + tableSize?: TableSize + recordCount?: string + isDeleted?: Boolean +} + +export type ScopeFilterOptions = { + per_page: number | string + page: number | string +} + +export enum AddScopeOptional { + FULLTABLESIZE = 'fullTableSize', + TABLESIZE = 'tableSize', + RECORDCOUNT = 'recordCount', +} diff --git a/server/src/routes/spells/index.ts b/server/src/routes/spells/index.ts new file mode 100644 index 000000000..df890a831 --- /dev/null +++ b/server/src/routes/spells/index.ts @@ -0,0 +1,484 @@ +import axios from 'axios' +import Koa from 'koa' +import 'regenerator-runtime/runtime' +import { creatorToolsDatabase } from '../../databases/creatorTools' +import { noAuth } from '../../middleware/auth' +import { Route } from '../../types' +import { CustomError } from '../../utils/CustomError' +import { + buildThothInterface, + extractModuleInputKeys, + runSpell, +} from './runSpell' +import { getTestSpell } from './testSpells' +import { Graph, Module } from './types' + +import otJson0 from 'ot-json0' +import { Op } from 'sequelize' + +export const modules: Record = {} + +const runSpellHandler = async (ctx: Koa.Context) => { + const { spell, version } = ctx.params + const { isTest, userGameState = {} } = ctx.request.body + + let rootSpell + + if (process.env.USE_LATITUDE_API === 'true') { + const response = await axios({ + method: 'GET', + url: process.env.API_URL + '/game/spells/' + spell, + headers: ctx.headers as any, + data: ctx.request.body, + }) + rootSpell = response.data + } else { + rootSpell = await creatorToolsDatabase.spells.findOne({ + where: { name: spell }, + }) + } + + // eslint-disable-next-line functional/no-let + let activeSpell + + if (isTest) { + console.log('test') + activeSpell = getTestSpell(spell) + } else if (version === 'latest') { + console.log('latest') + activeSpell = rootSpell + } else { + if (process.env.USE_LATITUDE_API === 'true') { + console.log('checking the api') + const response = await axios({ + method: 'GET', + url: process.env.API_URL + `/game/spells/deployed/${spell}/${version}`, + headers: ctx.headers as any, + data: ctx.request.body, + }) + activeSpell = response.data + } else { + console.log('getting active spell') + activeSpell = await creatorToolsDatabase.deployedSpells.findOne({ + where: { name: spell, version }, + }) + } + } + + //todo validate spell has an input trigger? + + if (!activeSpell?.graph) { + throw new CustomError( + 'not-found', + `Spell with name ${spell} and version ${version} not found` + ) + } + + // TODO use test spells if body option is given + // const activeSpell = getTestSpell(spell) + const graph = activeSpell.graph as Graph + const modules = activeSpell.modules as Module[] + + const gameState = { + ...rootSpell?.gameState, + ...userGameState, + } + + const thoth = buildThothInterface(ctx, gameState) + + const inputKeys = extractModuleInputKeys(graph) as string[] + + const outputs = await runSpell(graph, inputKeys as any, thoth, modules) + + const newGameState = thoth.getCurrentGameState() + const body = { spell: activeSpell.name, outputs, gameState: newGameState } + ctx.body = body +} + +// Should we use the Latitude API or run independently? +const latitudeApiKey = + process.env.LATITUDE_API_KEY !== '' && process.env.LATITUDE_API_KEY + +const saveHandler = async (ctx: Koa.Context) => { + console.log('ctx.request is', ctx.request) + const body = + typeof ctx.request.body === 'string' + ? JSON.parse(ctx.request.body) + : ctx.request.body + + console.log('ctx.request.body is', ctx.request.body) + + if (!body) throw new CustomError('input-failed', 'No parameters provided') + if (latitudeApiKey) { + const response = await axios({ + method: 'POST', + url: process.env.API_URL + '/game/spells/save', + headers: ctx.headers as any, + data: ctx.request.body, + }) + + ctx.body = response.data + return + } + + const spell = await creatorToolsDatabase.spells.findOne({ + where: { name: body.name }, + }) + + if ( + spell && + spell.userId.toString() !== (ctx.state.user?.id ?? ctx.query.userId).toString() + ) { + throw new CustomError( + 'input-failed', + 'A spell with that name already exists.' + ) + } + + if (!spell) { + const newSpell = await creatorToolsDatabase.spells.create({ + name: body.name, + graph: body.graph, + gameState: body.gameState || {}, + modules: body.modules || [], + userId: ctx.state.user?.id ?? ctx.query.userId, + }) + return (ctx.body = { id: newSpell.id }) + } else { + // TODO eventually we should actually validate the body before dumping it in. + await spell.update(body) + return (ctx.body = { id: spell.id }) + } +} + +const saveDiffHandler = async (ctx: Koa.Context) => { + const { body } = ctx.request + const { name, diff } = body + + if (!body) throw new CustomError('input-failed', 'No parameters provided') + + const spell = await creatorToolsDatabase.spells.findOne({ + where: { name }, + }) + + if (!spell) + throw new CustomError('input-failed', `No spell with ${name} name found.`) + if (!diff) + throw new CustomError('input-failed', 'No diff provided in request body') + + try { + const newGraph = otJson0.type.apply(spell.graph, diff) + + const updatedSpell = await creatorToolsDatabase.spells.update( + { + graph: newGraph, + }, + { + where: { name }, + } + ) + + ctx.response.status = 200 + ctx.body = updatedSpell + } catch (err) { + throw new CustomError('server-error', 'Error processing diff.', err) + } +} + +const newHandler = async (ctx: Koa.Context) => { + if (latitudeApiKey) { + const response = await axios({ + method: 'POST', + url: process.env.API_URL + '/game/spells/save', + headers: ctx.headers as any, + data: ctx.request.body, + }) + + ctx.body = response.data + return + } + + const body = ctx.request.body + if (!body) throw new CustomError('input-failed', 'No parameters provided') + + const missingBody = ['graph', 'name'].filter(property => !body[property]) + + if (missingBody.length > 0) { + const message = `Request body missing ${missingBody.join(', ')} values` + throw new CustomError('input-failed', message) + } + + const spell = await creatorToolsDatabase.spells.findOne({ + where: { + name: body.name, + deletedAt: { [Op.ne]: null } + }, + paranoid: false + }) + + if (spell) await spell.destroy({ force: true }) + + const newSpell = await creatorToolsDatabase.spells.create({ + name: body.name, + graph: body.graph, + gameState: {}, + modules: [], + userId: ctx.state.user?.id ?? body.user, + }) + + return (ctx.body = newSpell) +} + +const patchHandler = async (ctx: Koa.Context) => { + if (latitudeApiKey) { + const response = await axios({ + method: 'POST', + url: process.env.API_URL + '/game/spells/save', + headers: ctx.headers as any, + data: ctx.request.body, + }) + + return (ctx.body = response.data) + } + + const name = ctx.params.name + const userId = ctx.state.user?.id ?? ctx.query.userId + + const spell = await creatorToolsDatabase.spells.findOne({ + where: { + name, + userId, + }, + }) + if (!spell) throw new CustomError('input-failed', 'spell not found') + + await spell.update(ctx.request.body) + + return (ctx.body = { id: spell.id }) +} + +const getSpellsHandler = async (ctx: Koa.Context) => { + if (latitudeApiKey) { + const response = await axios({ + method: 'GET', + url: process.env.API_URL + '/game/spells', + headers: ctx.headers as any, + data: ctx.request.body, + }) + + return (ctx.body = response.data) + } + let queryBody: any = {} + if(ctx.query.userId) queryBody['where'] = { + userId: ctx.query.userId + } + const spells = await creatorToolsDatabase.spells.findAll({ + ...queryBody, + attributes: { + exclude: ['graph', 'gameState', 'modules'], + }, + }) + ctx.body = spells +} + +const getSpellHandler = async (ctx: Koa.Context) => { + const name = ctx.params.name + if (latitudeApiKey) { + const response = await axios({ + method: 'GET', + url: process.env.API_URL + '/game/spells/' + name, + headers: ctx.headers as any, + data: ctx.request.body, + }) + + return (ctx.body = response.data) + } + try { + const spell = await creatorToolsDatabase.spells.findOne({ + where: { name }, + }) + + if (!spell) { + const newSpell = await creatorToolsDatabase.spells.create({ + userId: ctx.state.user?.id ?? ctx.query.userId, + name, + graph: { id: 'demo@0.1.0', nodes: {} }, + gameState: {}, + modules: [], + }) + userId: ctx.state.user?.id ?? 0, (ctx.body = newSpell) + } else { + let userId = ctx.state.user?.id ?? ctx.query.userId + if(spell?.userId !== userId) throw new Error('spell not found') + else ctx.body = spell + } + } catch (e) { + console.error(e) + } +} + +const deleteHandler = async (ctx: Koa.Context) => { + const name = ctx.params.name + if (latitudeApiKey) { + const response = await axios({ + method: 'DELETE', + url: process.env.API_URL + '/game/spells/' + name, + headers: ctx.headers as any, + data: ctx.request.body, + }) + + return (ctx.body = response.data) + } + const spell = await creatorToolsDatabase.spells.findOne({ + where: { name, userId: ctx.state.user?.id ?? ctx.query.userId }, + }) + if (!spell) throw new CustomError('input-failed', 'spell not found') + + try { + await spell.destroy() + + ctx.body = true + } catch (err) { + throw new CustomError('server-error', 'error deleting spell') + } +} + +const deploySpellHandler = async (ctx: Koa.Context) => { + const name = ctx.params.name + if (latitudeApiKey) { + const response = await axios({ + method: 'POST', + url: process.env.API_URL + '/game/spells/' + name + '/deploy', + headers: ctx.headers as any, + data: ctx.request.body, + }) + + return (ctx.body = response.data) + } + const body = + typeof ctx.request.body === 'string' + ? JSON.parse(ctx.request.body) + : ctx.request.body + + const spell = await creatorToolsDatabase.spells.findOne({ where: { name } }) + if (!spell) throw new CustomError('input-failed', 'spell not found') + + const lastDeployedSpell = await creatorToolsDatabase.deployedSpells.findOne({ + where: { name }, + order: [['version', 'desc']], + }) + + const newVersion: number = lastDeployedSpell + ? lastDeployedSpell.version + 1 + : 1 + + const newDeployedSpell = await creatorToolsDatabase.deployedSpells.create({ + name: spell.name, + graph: spell.graph, + versionName: body?.versionName, + userId: ctx.state.user?.id ?? ctx.query.userId, + version: newVersion, + message: body?.message, + modules: spell.modules, + }) + + return (ctx.body = newDeployedSpell.id) +} + +const getdeployedSpellsHandler = async (ctx: Koa.Context) => { + const name = ctx.params.name + if (latitudeApiKey) { + const response = await axios({ + method: 'GET', + url: process.env.API_URL + '/game/spells/deployed/' + name, + headers: ctx.headers as any, + data: ctx.request.body, + }) + + return (ctx.body = response.data) + } + + const spells = await creatorToolsDatabase.deployedSpells.findAll({ + where: { name }, + attributes: { exclude: ['graph'] }, + order: [['version', 'desc']], + }) + return (ctx.body = spells) +} + +const getDeployedSpellHandler = async (ctx: Koa.Context) => { + console.log('handling') + console.log('ctx.request', ctx.request.body) + console.log('ctx.params', ctx.params) + const name = ctx.params.name ?? 'default' + const version = ctx.params.version ?? 'latest' + if (latitudeApiKey) { + const response = await axios({ + method: 'GET', + url: process.env.API_URL + `/game/spells/deployed/${name}/${version}`, + headers: ctx.headers as any, + data: ctx.request.body, + }) + + return (ctx.body = response.data) + } + const spell = await creatorToolsDatabase.deployedSpells.findOne({ + where: { name: name, version: version }, + }) + console.log('done') + return (ctx.body = spell) +} + +export const spells: Route[] = [ + { + path: '/game/spells/save', + access: noAuth, + post: saveHandler, + }, + { + path: '/game/spells/saveDiff', + access: noAuth, + post: saveDiffHandler, + }, + { + path: '/game/spells', + access: noAuth, + post: newHandler, + }, + { + path: '/game/spells/:name', + access: noAuth, + patch: patchHandler, + delete: deleteHandler, + }, + { + path: '/game/spells', + access: noAuth, + get: getSpellsHandler, + }, + { + path: '/game/spells/:name', + access: noAuth, + get: getSpellHandler, + }, + { + path: '/game/spells/:name/deploy', + access: noAuth, + post: deploySpellHandler, + }, + { + path: '/game/spells/deployed/:name', + access: noAuth, + get: getdeployedSpellsHandler, + }, + { + path: '/game/spells/deployed/:name/:version', + access: noAuth, + get: getDeployedSpellHandler, + }, + { + path: '/spells/:spell/:version', + access: noAuth, + post: runSpellHandler, + }, +] diff --git a/server/src/routes/spells/module.ts b/server/src/routes/spells/module.ts new file mode 100644 index 000000000..1f440fe3e --- /dev/null +++ b/server/src/routes/spells/module.ts @@ -0,0 +1,28 @@ +/* eslint-disable functional/no-class */ +/* eslint-disable functional/no-this-expression */ +export class Module { + inputs: Record = {} + outputs: Record = {} + constructor() { + this.inputs = {} + this.outputs = {} + } + + read(inputs: Record) { + this.inputs = inputs + } + + write(outputs: Record) { + Object.keys(this.outputs).forEach(key => { + outputs[key] = this.outputs[key] + }) + } + + getInput(key: string) { + return this.inputs[key] + } + + setOutput(key: string, value: unknown) { + this.outputs[key] = value + } +} diff --git a/server/src/routes/spells/runSpell.ts b/server/src/routes/spells/runSpell.ts new file mode 100644 index 000000000..c0de3864f --- /dev/null +++ b/server/src/routes/spells/runSpell.ts @@ -0,0 +1,153 @@ +import thothCore from '@latitudegames/thoth-core/server' +import Koa from 'koa' +import { CompletionRequest, completionsParser } from '../completions' +import { Module } from './module' +import { Graph, Module as ModuleType, ModuleComponent, Node } from './types' + +// todo: make these dynamically loaded +// import { getEnkiOutputs } from '../enki/enki' +// import { huggingface } from '../vendor/huggingface/huggingface' + +const { initSharedEngine, getComponents } = thothCore +const thothComponents = getComponents() + +export const buildThothInterface = ( + ctx: Koa.Context, + initialGameState: Record +) => { + // eslint-disable-next-line functional/no-let + let gameState = { ...initialGameState } + + return { + completion: async (request: CompletionRequest) => { + const response = await completionsParser({ + ...request, + prompt: request.prompt?.trim(), + stop: request.stop, + }) + return response?.result || '' + }, + // enkiCompletion: async (taskName: string, inputs: string) => { + // const outputs = await getEnkiOutputs(ctx, taskName, inputs) + // return { outputs } + // }, + // huggingface: async (model: string, options: any) => { + // const outputs = await huggingface({ context: ctx, model, options }) + // return { outputs } + // }, + getCurrentGameState: () => { + return gameState + }, + updateCurrentGameState: (update: Record) => { + const newState = { + ...gameState, + ...update, + } + + gameState = newState + }, + } +} + +export const extractModuleInputKeys = (data: Graph) => { + return Object.values(data.nodes).reduce((inputKeys, node: Node) => { + if (node.name !== 'Universal Input') return inputKeys + if (node.data.name && !node.data.useDefault) inputKeys.push(node.data.name) + + return inputKeys + }, [] as string[]) +} + +export function extractNodes(nodes: Record, map: Set) { + const names = Array.from(map.keys()) + return Object.keys(nodes) + .filter(k => names.includes(nodes[k].name)) + .map(k => nodes[k]) + .sort((n1, n2) => n1.position[1] - n2.position[1]) +} + +// TODO: create a proper engine interface with the proper methods types on it. +const engine = initSharedEngine({ + name: 'demo@0.1.0', + components: thothComponents, + server: true, + modules: {}, +}) as any + +export const runSpell = async ( + graph: Graph, + inputs: Record, + thoth: Record, + modules?: ModuleType[] +) => { + + console.log("************ RUN SPELL") + console.log(inputs) + // The module is an interface that the module system uses to write data to + // used internally by the module plugin, and we make use of it here too. + // TODO: Test runing nested modules and watch out for unexpected behaviour + // when child modules overwrite this with their own. + + const module = new Module() + // Parse array of modules into a map of modules by module name + const moduleMap = modules?.reduce((modules, module) => { + modules[module.name] = module + return modules + }, {} as Record) + // Update the modules available in the module manager during the graph run time + engine.moduleManager.setModules(moduleMap) + + // Eventual outputs of running the Spell + const rawOutputs = {} as Record + + // Attaching inputs to the module, which are passed in when the engine runs. + // you can see this at work in the 'workerInputs' function of module-manager + // work inputs worker reads from the module inputs via the key in node.data.name + // important to note: even single string values are wrapped in arrays due to match the client editor format + module.read(inputs) + + // ThothContext: map of services expected by Thoth components, + // allowing client and server provide different sets of helpers that match the common interface + + // EngineContext passed down into the engine and is used by workers. + const context = { + module, + thoth, + silent: true, + } + // Engine process to set up the tasks and prime the system for the first 'run' command. + await engine.process(graph, null, context) + + // Collect all the "trigger ins" that the module manager has gathered + const triggerIns = engine.moduleManager.triggerIns + + function getFirstNodeTrigger(data: Graph) { + const extractedNodes = extractNodes(data.nodes, triggerIns) + return extractedNodes[0] + } + + // Standard default component to start the serverside run sequence from, which has the run function on it. + const component = engine.components.get( + 'Module Trigger In' + ) as ModuleComponent + + // Defaulting to the first node trigger to start our "run" + const triggeredNode = getFirstNodeTrigger(graph) + await component.run(triggeredNode) + // Write all the raw data that was output by the module run to an object + module.write(rawOutputs) + + const formattedOutputs: Record = {} + + // Format raw outputs based on the names assigned to Module Outputs node data in the graph + Object.values(graph.nodes) + .filter(node => { + return node.name.includes('Output') + }) + .forEach((node: Node) => { + formattedOutputs[node.data.name as string] = + rawOutputs[node.data.socketKey as string] + }) + + return formattedOutputs +} diff --git a/server/src/routes/spells/testSpells/actionType.ts b/server/src/routes/spells/testSpells/actionType.ts new file mode 100644 index 000000000..0958c2e7e --- /dev/null +++ b/server/src/routes/spells/testSpells/actionType.ts @@ -0,0 +1,182 @@ +export const actionTypeTest = { + name: 'Action Type Classifier Test', + graph: { + id: 'demo@0.1.0', + nodes: { + 3: { + id: 3, + data: { + socketKey: '22628386-aa18-40cd-8b6a-4e7c03fecb81', + name: 'action', + dataControls: { + name: { + expanded: true, + }, + }, + }, + inputs: {}, + outputs: { + output: { + connections: [ + { + node: 28, + input: 'action', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-705.6770417976608, -209.41743475707628], + name: 'Module Input', + }, + 4: { + id: 4, + data: { + socketKey: '1a819a65-e1e2-4f77-9a42-9f99f546f7c4', + name: 'trigger', + }, + inputs: {}, + outputs: { + trigger: { + connections: [ + { + node: 28, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-703.6864534694615, -338.11887296523986], + name: 'Module Trigger In', + }, + 20: { + id: 20, + data: { + socketKey: 'a48cfd41-46c6-4c59-8292-45483dfbfa3b', + }, + inputs: { + trigger: { + connections: [ + { + node: 28, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [156.14996337890625, -321.1500244140625], + name: 'Module Trigger Out', + }, + 21: { + id: 21, + data: { + socketKey: 'df7ecf3e-a2f9-4637-a2df-f05d59523030', + }, + inputs: { + input: { + connections: [ + { + node: 28, + output: 'actionType', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 28, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [154.16241455078125, -196.77505493164062], + name: 'Module Output', + }, + 28: { + id: 28, + data: { + fewshot: + 'Given an action classify the type of action it is\n\nTypes: look, get, use, craft, dialog, movement, travel, combat, consume, other\n\nAction, Type: pick up the bucket, get\nAction, Type: cast a fireball spell on the goblin, combat\nAction, Type: convince the king to give you his kingdom, dialog\nAction, Type: talk to the merchant, dialog\nAction, Type: leap over the chasm, movement\nAction, Type: climb up the mountain, travel\nAction, Type: throw a stone at the goblin, combat\nAction, Type: run away from the orcs, movement\nAction, Type: ask the baker to give you a free loaf of bread, dialog\nAction, Type: go to the forest, travel\nAction, Type: grab a torch off the wall, get\nAction, Type: throw your sword at the table, use\nAction, Type: journey to the city, travel\nAction, Type: drink your potion, use\nAction, Type: ', + }, + inputs: { + action: { + connections: [ + { + node: 3, + output: 'output', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 4, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: { + actionType: { + connections: [ + { + node: 21, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 20, + input: 'trigger', + data: { + pins: [], + }, + }, + { + node: 21, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-280.3544921875, -294.7459716796875], + name: 'Action Type Classifier', + }, + }, + }, + gameState: {}, + createdAt: 1633699106547, + updatedAt: 1633701323719, + modules: [], +} diff --git a/server/src/routes/spells/testSpells/code.ts b/server/src/routes/spells/testSpells/code.ts new file mode 100644 index 000000000..4b2b302b8 --- /dev/null +++ b/server/src/routes/spells/testSpells/code.ts @@ -0,0 +1,260 @@ +export const codeTest = { + graph: { + id: 'demo@0.1.0', + nodes: { + 21: { + id: 21, + data: { + socketKey: 'df7ecf3e-a2f9-4637-a2df-f05d59523030', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'firstoutput', + }, + inputs: { + input: { + connections: [ + { + node: 98, + output: 'firstoutput', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 98, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [190.30209111975645, -463.73221599046417], + name: 'Module Output', + }, + 39: { + id: 39, + data: { + socketKey: '63ea44a8-74bd-47dc-97cc-d7439c21e5b2', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'secondOutput', + }, + inputs: { + input: { + connections: [ + { + node: 98, + output: 'secondoutput', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 98, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [185.09777715793285, -294.2486376852777], + name: 'Module Output', + }, + 98: { + id: 98, + data: { + code: '\n// See component information in inspector for details.\nfunction worker(node, inputs, data) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n\n const firstInput = inputs["firstInput"][0]\n\n const firstoutput = 1 + firstInput\n const secondOutput = 2 + firstInput\n return {\n firstoutput,\n secondOutput\n }\n}\n', + dataControls: { + name: { + expanded: true, + }, + inputs: { + expanded: false, + }, + outputs: { + expanded: true, + }, + code: { + expanded: true, + }, + }, + outputs: [ + { + name: 'first0utput', + taskType: 'output', + socketKey: 'firstoutput', + connectionType: 'output', + socketType: 'anySocket', + }, + { + name: 'secondOutput', + taskType: 'output', + socketKey: 'secondoutput', + connectionType: 'output', + socketType: 'anySocket', + }, + ], + inputs: [ + { + name: 'firstInput', + taskType: 'output', + socketKey: 'firstinput', + connectionType: 'input', + socketType: 'anySocket', + }, + ], + name: 'Code Test', + }, + inputs: { + trigger: { + connections: [ + { + node: 99, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + firstinput: { + connections: [ + { + node: 100, + output: 'output', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: { + trigger: { + connections: [ + { + node: 21, + input: 'trigger', + data: { + pins: [], + }, + }, + { + node: 39, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + firstoutput: { + connections: [ + { + node: 21, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + secondoutput: { + connections: [ + { + node: 39, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-195.1627615258764, -400.79897016081986], + name: 'Code', + }, + 99: { + id: 99, + data: { + socketKey: 'e807838f-dbb2-49ac-b031-3547a1007815', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'Module Trigger', + }, + inputs: {}, + outputs: { + trigger: { + connections: [ + { + node: 98, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-569.8461463844735, -422.11008759733363], + name: 'Module Trigger In', + }, + 100: { + id: 100, + data: { + socketKey: 'd86f9ad0-00c4-4996-b374-71efdba66df9', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'firstInput', + }, + inputs: {}, + outputs: { + output: { + connections: [ + { + node: 98, + input: 'firstinput', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-570.6368160807893, -296.9847073843718], + name: 'Module Input', + }, + }, + }, + gameState: {}, + createdAt: 1633703542664, + updatedAt: 1633765292751, + name: 'Code Component Test', + modules: [], +} diff --git a/server/src/routes/spells/testSpells/difficultyDetector.ts b/server/src/routes/spells/testSpells/difficultyDetector.ts new file mode 100644 index 000000000..b78bf38e6 --- /dev/null +++ b/server/src/routes/spells/testSpells/difficultyDetector.ts @@ -0,0 +1,245 @@ +export const difficultyDetectorTest = { + name: 'Difficulty Detector Test', + graph: { + id: 'demo@0.1.0', + nodes: { + 3: { + id: 3, + data: { + socketKey: '22628386-aa18-40cd-8b6a-4e7c03fecb81', + name: 'action', + dataControls: { + name: { + expanded: true, + }, + }, + }, + inputs: {}, + outputs: { + output: { + connections: [ + { + node: 36, + input: 'action', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-701.8776033210983, -217.21754462035753], + name: 'Module Input', + }, + 4: { + id: 4, + data: { + socketKey: '1a819a65-e1e2-4f77-9a42-9f99f546f7c4', + name: 'trigger', + }, + inputs: {}, + outputs: { + trigger: { + connections: [ + { + node: 36, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-703.6864534694615, -338.4289925941461], + name: 'Module Trigger In', + }, + 20: { + id: 20, + data: { + socketKey: 'a48cfd41-46c6-4c59-8292-45483dfbfa3b', + }, + inputs: { + trigger: { + connections: [ + { + node: 36, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [156.14996337890625, -321.1500244140625], + name: 'Module Trigger Out', + }, + 21: { + id: 21, + data: { + socketKey: 'df7ecf3e-a2f9-4637-a2df-f05d59523030', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'difficulty', + }, + inputs: { + input: { + connections: [ + { + node: 36, + output: 'difficulty', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 36, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [155.76104736328125, -198.23757934570312], + name: 'Module Output', + }, + 36: { + id: 36, + data: { + fewshot: + 'Given an action, predict how hard it would be for a normal human in a fantasy world and what type of stat it uses.\n\nStat Types: strength, dexterity, endurance, intelligence, charisma\n\nAction, Difficulty, Type: throw an anvil at the man, 8/20, strength\nAction, Difficulty, Type: cast a fireball spell, 6/20, intelligence\nAction, Difficulty, Type: I\'m confident that I can kill the dragon! 2/20, charisma\nAction, Difficulty, Type: convince the king to give you his kingdom, 13/20, charisma\nAction, Difficulty, Type: talk to the merchant, 1/20, charisma\nAction, Difficulty, Type: ask the man if you can jump on his back and ride him around, 11/20, charisma\nAction, Difficulty, Type: pick up the mountain, 20/20, strength\nAction, Difficulty, Type: enter the room and tell the governor that you\'ll slay the dragon, 4/20, charisma\nAction, Difficulty, Type: run away, 4/20, dexterity\nAction, Difficulty, Type: ask why the dragon has been attacking people, 2/20, charisma\nAction, Difficulty, Type: say something wise, 6/20, intelligence\nAction, Difficulty, Type: sees a massive dragon flying over head, 7/20, Luck\nAction, Difficulty, Type: attack the Dragon, 6/20, strength\nAction, Difficulty, Type: continue harder and harder, 6/20, endurance\nAction, Difficulty, Type: feel pity for the gnome, 1/20, charisma\nAction, Difficulty, Type: set up a small blanket and pour the dragon a drink, 2/20, dexterity\nAction, Difficulty, Type: says "wait are you leaving me?", 2/20, charisma\nAction, Difficulty, Type: leap over the chasm, 7/20, dexterity\nAction, Difficulty, Type: talk to the bartender who gives you a pile of gold, 11/20, Luck\nAction, Difficulty, Type: climb up the mountain, 6/20, endurance\nAction, Difficulty, Type: goes to talk to the king, 2/20, charisma\nAction, Difficulty, Type: ask who the evil demon king is, 2/20, charisma\nAction, Difficulty, Type: do a back flip, 6/20, dexterity\nAction, Difficulty, Type: ', + }, + inputs: { + action: { + connections: [ + { + node: 3, + output: 'output', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 4, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: { + trigger: { + connections: [ + { + node: 20, + input: 'trigger', + data: { + pins: [], + }, + }, + { + node: 21, + input: 'trigger', + data: { + pins: [], + }, + }, + { + node: 45, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + difficulty: { + connections: [ + { + node: 21, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + category: { + connections: [ + { + node: 45, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-274.08709716796875, -311.539794921875], + name: 'Difficulty Detector', + }, + 45: { + id: 45, + data: { + socketKey: 'cdf5e66a-7f84-442c-9682-89c2b93f138a', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'category', + }, + inputs: { + input: { + connections: [ + { + node: 36, + output: 'category', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 36, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [153.62489040354674, -48.05979969796463], + name: 'Module Output', + }, + }, + }, + gameState: {}, + createdAt: 1633707484091, + updatedAt: 1633709145421, + modules: [], +} diff --git a/server/src/routes/spells/testSpells/enkiTask.ts b/server/src/routes/spells/testSpells/enkiTask.ts new file mode 100644 index 000000000..0e7e18a9c --- /dev/null +++ b/server/src/routes/spells/testSpells/enkiTask.ts @@ -0,0 +1,520 @@ +export const enkiTaskTest = { + name: 'essential copper', + graph: { + id: 'demo@0.1.0', + nodes: { + 78: { + id: 78, + data: { + socketKey: '1c15de53-4c00-4ef7-a554-4c9dd7f3f487', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'trigger', + }, + inputs: {}, + outputs: { + trigger: { + connections: [ + { + node: 80, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-782.8281555175781, -365.20770263671875], + name: 'Module Trigger In', + }, + 79: { + id: 79, + data: { + socketKey: '212bd2fd-a1fb-428c-ac81-1da928380106', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'item', + }, + inputs: {}, + outputs: { + output: { + connections: [ + { + node: 80, + input: 'input1', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-781.8570861816406, -231.09637451171875], + name: 'Module Input', + }, + 80: { + id: 80, + data: { + dataControls: { + 'throughputs-80': { + expanded: true, + }, + }, + 'throughputs-80': { + inputs: [ + { + name: 'Trigger', + socketKey: 'trigger', + socketType: 'triggerSocket', + taskType: 'option', + }, + { + name: 'input1', + socketKey: 'input1', + socketType: 'stringSocket', + taskType: 'output', + }, + ], + outputs: [ + { + name: 'Trigger', + socketKey: 'trigger', + socketType: 'triggerSocket', + taskType: 'option', + }, + { + name: 'output1', + socketKey: 'output1', + socketType: 'stringSocket', + taskType: 'output', + }, + ], + activeTask: { + taskName: 'Crafting', + task: { + id: '235', + name: 'Crafting', + numInputs: 1, + numOutputs: 1, + unstuffedParentId: null, + createdAt: '2021-06-01T19:28:42.932Z', + updatedAt: '2021-06-01T19:28:42.932Z', + deletedAt: null, + }, + data: [ + { + id: '395', + fewshotTaskId: '235', + inputs: ['trap'], + outputs: ['wood(3), lashing(2)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:43.509Z', + updatedAt: '2021-06-01T19:28:43.509Z', + deletedAt: null, + }, + { + id: '402', + fewshotTaskId: '235', + inputs: ['wooden spear'], + outputs: ['wood(3)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:44.893Z', + updatedAt: '2021-06-01T19:28:44.893Z', + deletedAt: null, + }, + { + id: '396', + fewshotTaskId: '235', + inputs: ['shelter'], + outputs: ['wood(4), lashing(2)\n'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:43.682Z', + updatedAt: '2021-06-01T19:28:43.682Z', + deletedAt: null, + }, + { + id: '403', + fewshotTaskId: '235', + inputs: ['trap'], + outputs: ['wood(3), lashing(2)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:44.905Z', + updatedAt: '2021-06-01T19:28:44.905Z', + deletedAt: null, + }, + { + id: '414', + fewshotTaskId: '235', + inputs: ['shotgun'], + outputs: ['shotgun barrel(1), shotgun parts(3), ammo(20)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:29:52.843Z', + updatedAt: '2021-06-01T19:29:52.843Z', + deletedAt: null, + }, + { + id: '397', + fewshotTaskId: '235', + inputs: ['plane parts'], + outputs: ['uncraftable'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:43.685Z', + updatedAt: '2021-06-01T19:28:43.685Z', + deletedAt: null, + }, + { + id: '404', + fewshotTaskId: '235', + inputs: ['plane parts'], + outputs: ['uncraftable'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:44.915Z', + updatedAt: '2021-06-01T19:28:44.915Z', + deletedAt: null, + }, + { + id: '398', + fewshotTaskId: '235', + inputs: ['jeep'], + outputs: ['jeep frame(1), jeep parts(3), fuel(20)\n'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:43.946Z', + updatedAt: '2021-06-01T19:28:43.946Z', + deletedAt: null, + }, + { + id: '410', + fewshotTaskId: '235', + inputs: ['jeep'], + outputs: ['jeep frame(1), jeep parts(3), fuel(20)\n'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:45.197Z', + updatedAt: '2021-06-01T19:28:45.197Z', + deletedAt: null, + }, + { + id: '412', + fewshotTaskId: '235', + inputs: ['cloth dress'], + outputs: ['cloth(3)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:29:52.804Z', + updatedAt: '2021-06-01T19:29:52.804Z', + deletedAt: null, + }, + ], + serialization: { + id: '169', + fewshotTaskId: '235', + name: 'default', + isPreferred: true, + introduction: + 'Given an item decide what it takes to craft it\n\n', + beforeEachInput: ['Item: '], + inBetween: '\nRequired: ', + beforeEachOutput: [''], + atTheEnd: '\n\nNEXT\n\n', + createdAt: '2021-06-01T19:28:43.359Z', + updatedAt: '2021-06-01T19:29:31.094Z', + deletedAt: null, + }, + }, + }, + outputs: [ + { + name: 'Trigger', + socketKey: 'trigger', + socketType: 'triggerSocket', + taskType: 'option', + }, + { + name: 'output1', + socketKey: 'output1', + socketType: 'stringSocket', + taskType: 'output', + }, + ], + inputs: [ + { + name: 'Trigger', + socketKey: 'trigger', + socketType: 'triggerSocket', + taskType: 'option', + }, + { + name: 'input1', + socketKey: 'input1', + socketType: 'stringSocket', + taskType: 'output', + }, + ], + name: 'Crafting', + activetask: { + taskName: 'Crafting', + task: { + id: '235', + name: 'Crafting', + numInputs: 1, + numOutputs: 1, + unstuffedParentId: null, + createdAt: '2021-06-01T19:28:42.932Z', + updatedAt: '2021-06-01T19:28:42.932Z', + deletedAt: null, + }, + data: [ + { + id: '395', + fewshotTaskId: '235', + inputs: ['trap'], + outputs: ['wood(3), lashing(2)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:43.509Z', + updatedAt: '2021-06-01T19:28:43.509Z', + deletedAt: null, + }, + { + id: '402', + fewshotTaskId: '235', + inputs: ['wooden spear'], + outputs: ['wood(3)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:44.893Z', + updatedAt: '2021-06-01T19:28:44.893Z', + deletedAt: null, + }, + { + id: '396', + fewshotTaskId: '235', + inputs: ['shelter'], + outputs: ['wood(4), lashing(2)\n'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:43.682Z', + updatedAt: '2021-06-01T19:28:43.682Z', + deletedAt: null, + }, + { + id: '403', + fewshotTaskId: '235', + inputs: ['trap'], + outputs: ['wood(3), lashing(2)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:44.905Z', + updatedAt: '2021-06-01T19:28:44.905Z', + deletedAt: null, + }, + { + id: '414', + fewshotTaskId: '235', + inputs: ['shotgun'], + outputs: ['shotgun barrel(1), shotgun parts(3), ammo(20)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:29:52.843Z', + updatedAt: '2021-06-01T19:29:52.843Z', + deletedAt: null, + }, + { + id: '397', + fewshotTaskId: '235', + inputs: ['plane parts'], + outputs: ['uncraftable'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:43.685Z', + updatedAt: '2021-06-01T19:28:43.685Z', + deletedAt: null, + }, + { + id: '404', + fewshotTaskId: '235', + inputs: ['plane parts'], + outputs: ['uncraftable'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:44.915Z', + updatedAt: '2021-06-01T19:28:44.915Z', + deletedAt: null, + }, + { + id: '398', + fewshotTaskId: '235', + inputs: ['jeep'], + outputs: ['jeep frame(1), jeep parts(3), fuel(20)\n'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:43.946Z', + updatedAt: '2021-06-01T19:28:43.946Z', + deletedAt: null, + }, + { + id: '410', + fewshotTaskId: '235', + inputs: ['jeep'], + outputs: ['jeep frame(1), jeep parts(3), fuel(20)\n'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:45.197Z', + updatedAt: '2021-06-01T19:28:45.197Z', + deletedAt: null, + }, + { + id: '412', + fewshotTaskId: '235', + inputs: ['cloth dress'], + outputs: ['cloth(3)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:29:52.804Z', + updatedAt: '2021-06-01T19:29:52.804Z', + deletedAt: null, + }, + ], + serialization: { + id: '169', + fewshotTaskId: '235', + name: 'default', + isPreferred: true, + introduction: + 'Given an item decide what it takes to craft it\n\n', + beforeEachInput: ['Item: '], + inBetween: '\nRequired: ', + beforeEachOutput: [''], + atTheEnd: '\n\nNEXT\n\n', + createdAt: '2021-06-01T19:28:43.359Z', + updatedAt: '2021-06-01T19:29:31.094Z', + deletedAt: null, + }, + }, + }, + inputs: { + trigger: { + connections: [ + { + node: 78, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + input1: { + connections: [ + { + node: 79, + output: 'output', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: { + trigger: { + connections: [ + { + node: 81, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + output1: { + connections: [ + { + node: 81, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-388.7842881066687, -285.2609592400301], + name: 'Enki Task', + }, + 81: { + id: 81, + data: { + socketKey: 'bdab0eb0-11ad-49ac-9cea-06cf2d9fdcdf', + }, + inputs: { + input: { + connections: [ + { + node: 80, + output: 'output1', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 80, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [-29.58056640625, -288.65252685546875], + name: 'Module Output', + }, + }, + }, + gameState: {}, + createdAt: 1633728021053, + updatedAt: 1633728160269, + modules: [], +} diff --git a/server/src/routes/spells/testSpells/entityDetector.ts b/server/src/routes/spells/testSpells/entityDetector.ts new file mode 100644 index 000000000..d4fc81068 --- /dev/null +++ b/server/src/routes/spells/testSpells/entityDetector.ts @@ -0,0 +1,198 @@ +export const entityDetectorTest = { + name: 'Entity Detector Test', + graph: { + id: 'demo@0.1.0', + nodes: { + 104: { + id: 104, + data: { + socketKey: 'fd66489f-c5fe-4852-b0ee-dbbb68651ccd', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'trigger', + }, + inputs: {}, + outputs: { + trigger: { + connections: [ + { + node: 106, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-518.1908389428411, -700.6737452988817], + name: 'Module Trigger In', + }, + 105: { + id: 105, + data: { + socketKey: 'c8251a8d-7cf8-424a-8a9c-501f3bcf416e', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'action', + }, + inputs: {}, + outputs: { + output: { + connections: [ + { + node: 106, + input: 'action', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-516.4863041871465, -561.4494087955308], + name: 'Module Input', + }, + 106: { + id: 106, + data: { + fewshot: + "Given an action, detect what entities the player is interacting with. Ignore entities that the player is just asking about.\n\nEntity types: food, person, creature, object, place, other, none\n\nAction: throw an anvil at the man\nEntities: anvil, man\nTypes: object (use), person (target)\n\nAction: cast a fireball spell\nEntities: none\nTypes: none\n\nAction: convince the king to give you his kingdom\nEntities: king, kingdom\nTypes: person (target), object (dialog)\n\nAction: talk to the merchant\nEntities: merchant\nTypes: person (target)\n\nAction: ask where the bandit leader is\nEntities: bandit leader\nTypes: person (dialog)\n\nAction: leap over the chasm\nEntities: chasm\nTypes: location (target)\n\nAction: climb up the mountain\nEntities: mountain\nTypes: location (target)\n\nAction: throw a stone at the goblin\nEntities: stone, goblin\nTypes: object (use), creature (target)\n\nAction: run away from the orcs\nEntities: orcs\nTypes: creature (target)\n\nAction: ask how that relates to the dragon\nEntities: none\nTypes: none\n\nAction: ask the baker to give you a free loaf of bread\nEntities: baker, loaf of bread\nTypes: person (target), food (dialog)\n\nAction: get the merchant to give you better prices\nEntities: merchant\nTypes: person (target)\n\nAction: keep hiking\nEntities: none\nTypes: none\n\nAction: convince the bartender to give you the deed to his tavern\nEntities: bartender, tavern deed\nTypes: person (target), object (dialog)\n\nAction: go to the woman's home\nEntities: woman's home\nTypes: location (target)\n\nAction: ask the man for some water\nEntities: man, water\nTypes: person (target), object (dialog)\n\nAction: Jump onto your horse\nEntities: horse\nTypes: creature (target)\n\nAction: invent a new spell\nEntities: none\nTypes: none\n\nAction: ask the bartender for a machine gun\nEntities: bartender, machine gun\nTypes: person (target), object (dialog)\n\nAction: ask why the dragon attacked\nEntities: dragon\nTypes: creature (dialog)\n\nAction: cast a torchlight spell\nEntities: none\nTypes: none\n\nAction: ask where Zolarius the wizard is\nEntities: Zolarius the wizard\nTypes: person (dialog)\n\nAction: throw a pie at the waitress\nEntities: pie, waitress\nTypes: food (use), person (target)\n\nAction: ask where the wizard is\nEntities: wizard\nTypes: person (dialog)\n\nAction: draw your sword and fights the wolves\nEntities: sword, wolves\nTypes: object (use), creature (target)\n\nAction: ", + }, + inputs: { + action: { + connections: [ + { + node: 105, + output: 'output', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 104, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: { + trigger: { + connections: [ + { + node: 108, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + entities: { + connections: [ + { + node: 107, + input: 'list', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-108.93954503041961, -663.5801359732754], + name: 'Entity Detector', + }, + 107: { + id: 107, + data: { + separator: '', + }, + inputs: { + list: { + connections: [ + { + node: 106, + output: 'entities', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: { + text: { + connections: [ + { + node: 108, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-312.68483939526766, -310.0190828654877], + name: 'Join List', + }, + 108: { + id: 108, + data: { + socketKey: '1d76b962-c4d1-45da-9b81-b19380933807', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'output', + }, + inputs: { + input: { + connections: [ + { + node: 107, + output: 'text', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 106, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [76.94644438837236, -256.920302403975], + name: 'Module Output', + }, + }, + }, + gameState: {}, + createdAt: 1633871210449, + updatedAt: 1633871455584, + modules: [], +} diff --git a/server/src/routes/spells/testSpells/generator.ts b/server/src/routes/spells/testSpells/generator.ts new file mode 100644 index 000000000..5a638fded --- /dev/null +++ b/server/src/routes/spells/testSpells/generator.ts @@ -0,0 +1,253 @@ +export const generatorTest = { + graph: { + id: 'demo@0.1.0', + nodes: { + 78: { + id: 78, + data: { + socketKey: '1c15de53-4c00-4ef7-a554-4c9dd7f3f487', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'trigger', + }, + inputs: {}, + outputs: { + trigger: { + connections: [ + { + node: 84, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-765.4136047363281, -467.7987060546875], + name: 'Module Trigger In', + }, + 79: { + id: 79, + data: { + socketKey: '212bd2fd-a1fb-428c-ac81-1da928380106', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'prompt', + }, + inputs: {}, + outputs: { + output: { + connections: [ + { + node: 84, + input: 'prompt', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-781.2272033691406, -336.2821044921875], + name: 'Module Input', + }, + 81: { + id: 81, + data: { + socketKey: 'bdab0eb0-11ad-49ac-9cea-06cf2d9fdcdf', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'Generator Result', + }, + inputs: { + input: { + connections: [ + { + node: 84, + output: 'result', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 84, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [76.8306884765625, -475.30615234375], + name: 'Module Output', + }, + 83: { + id: 83, + data: { + socketKey: '6b595627-d8dd-4fdb-9169-163b6f64a989', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'Generator Composed Output', + }, + inputs: { + input: { + connections: [ + { + node: 84, + output: 'composed', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 84, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [86.4466552734375, -285.46502685546875], + name: 'Module Output', + }, + 84: { + id: 84, + data: { + dataControls: { + name: { + expanded: true, + }, + inputs: { + expanded: true, + }, + fewshot: { + expanded: true, + }, + stop: { + expanded: true, + }, + temp: { + expanded: true, + }, + maxTokens: { + expanded: true, + }, + }, + temp: '0.5', + inputs: [ + { + name: 'prompt', + taskType: 'output', + socketKey: 'prompt', + connectionType: 'input', + socketType: 'anySocket', + }, + ], + stop: '/n', + name: 'Generator Test', + maxTokens: '256', + fewshot: '{{prompt}}', + }, + inputs: { + trigger: { + connections: [ + { + node: 78, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + prompt: { + connections: [ + { + node: 79, + output: 'output', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: { + trigger: { + connections: [ + { + node: 81, + input: 'trigger', + data: { + pins: [], + }, + }, + { + node: 83, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + result: { + connections: [ + { + node: 81, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + composed: { + connections: [ + { + node: 83, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-328.26108003224306, -405.9051534333118], + name: 'Generator', + }, + }, + }, + gameState: {}, + createdAt: 1633728021053, + updatedAt: 1633762389299, + name: 'Generator Test', + modules: [], +} diff --git a/server/src/routes/spells/testSpells/huggingface.ts b/server/src/routes/spells/testSpells/huggingface.ts new file mode 100644 index 000000000..f89ebf8a4 --- /dev/null +++ b/server/src/routes/spells/testSpells/huggingface.ts @@ -0,0 +1,245 @@ +export const huggingfaceTest = { + name: 'Huggingface Test', + graph: { + id: 'demo@0.1.0', + nodes: { + 78: { + id: 78, + data: { + socketKey: '1c15de53-4c00-4ef7-a554-4c9dd7f3f487', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'trigger', + }, + inputs: {}, + outputs: { + trigger: { + connections: [ + { + node: 82, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-823.7835388183594, -464.546630859375], + name: 'Module Trigger In', + }, + 79: { + id: 79, + data: { + socketKey: '212bd2fd-a1fb-428c-ac81-1da928380106', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'prompt', + }, + inputs: {}, + outputs: { + output: { + connections: [ + { + node: 82, + input: 'prompt', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-825.5476989746094, -317.13165283203125], + name: 'Module Input', + }, + 81: { + id: 81, + data: { + socketKey: 'bdab0eb0-11ad-49ac-9cea-06cf2d9fdcdf', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'Succesful Response', + }, + inputs: { + input: { + connections: [ + { + node: 82, + output: 'result', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 82, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [-88.110107421875, -388.2340087890625], + name: 'Module Output', + }, + 82: { + id: 82, + data: { + dataControls: { + name: { + expanded: true, + }, + inputs: { + expanded: true, + }, + request: { + expanded: true, + }, + modelName: { + expanded: true, + }, + }, + modelName: 'gpt-2', + inputs: [ + { + name: 'prompt', + taskType: 'output', + socketKey: 'prompt', + connectionType: 'input', + socketType: 'anySocket', + }, + ], + request: '{{prompt}}', + name: 'gpt-2', + }, + inputs: { + trigger: { + connections: [ + { + node: 78, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + prompt: { + connections: [ + { + node: 79, + output: 'output', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: { + trigger: { + connections: [ + { + node: 81, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + result: { + connections: [ + { + node: 81, + input: 'input', + data: { + pins: [], + }, + }, + { + node: 83, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + error: { + connections: [ + { + node: 83, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-471.49945068359375, -441.6856689453125], + name: 'Huggingface', + }, + 83: { + id: 83, + data: { + socketKey: '6b595627-d8dd-4fdb-9169-163b6f64a989', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'Error Response', + }, + inputs: { + input: { + connections: [ + { + node: 82, + output: 'result', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 82, + output: 'error', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [-148.29296875, -218.14520263671875], + name: 'Module Output', + }, + }, + }, + gameState: {}, + createdAt: 1633728021053, + updatedAt: 1633757799829, + modules: [], +} diff --git a/server/src/routes/spells/testSpells/index.ts b/server/src/routes/spells/testSpells/index.ts new file mode 100644 index 000000000..8597cabd4 --- /dev/null +++ b/server/src/routes/spells/testSpells/index.ts @@ -0,0 +1,38 @@ +import { Spell } from '../types' +import { actionTypeTest } from './actionType' +import { codeTest } from './code' +import { difficultyDetectorTest } from './difficultyDetector' +// import { enkiTaskTest } from './enkiTask' +import { entityDetectorTest } from './entityDetector' +import { generatorTest } from './generator' +// import { huggingfaceTest } from './huggingface' +import { itemDetectorTest } from './itemDetector' +import { proseToScriptTest } from './proseToScript' +import { safetyVerifierTest } from './safetyVerifier' +import { switchGateTest } from './switchGate' +import { tenseTransformerTest } from './tenseTransformer' +import { timeDetectorTest } from './timeDetector' + +const testSpells: { [spellName: string]: Spell } = { + actionType: actionTypeTest, + code: codeTest, + difficultyDetector: difficultyDetectorTest, + // enkiTask: enkiTaskTest, + entityDetector: entityDetectorTest, + generator: generatorTest, + // huggingfaceComponent: huggingfaceTest, + itemDetector: itemDetectorTest, + proseToScript: proseToScriptTest, + safetyVerifier: safetyVerifierTest, + switchGate: switchGateTest, + tenseTransformer: tenseTransformerTest, + timeDetector: timeDetectorTest, +} + +export const getTestSpell = (spellName: string) => { + return { + graph: testSpells[spellName], + name: spellName, + modules: {}, + } +} diff --git a/server/src/routes/spells/testSpells/itemDetector.ts b/server/src/routes/spells/testSpells/itemDetector.ts new file mode 100644 index 000000000..f76db5708 --- /dev/null +++ b/server/src/routes/spells/testSpells/itemDetector.ts @@ -0,0 +1,164 @@ +export const itemDetectorTest = { + graph: { + id: 'demo@0.1.0', + nodes: { + 111: { + id: 111, + data: { + socketKey: 'a0c845e4-dfc9-46c0-a896-602988d42751', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'string', + }, + inputs: {}, + outputs: { + output: { + connections: [ + { + node: 114, + input: 'string', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-840.68408203125, -708.9649047851562], + name: 'Module Input', + }, + 113: { + id: 113, + data: { + socketKey: '637abbb4-b969-4133-87ac-03c50ffb44f5', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'moduleTrigger', + }, + inputs: {}, + outputs: { + trigger: { + connections: [ + { + node: 114, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-838.649658203125, -824.8785400390625], + name: 'Module Trigger In', + }, + 114: { + id: 114, + data: { + fewshot: + 'Given an action, detect the item which is taken.\n\nAction, Item: pick up the goblet from the fountain, goblet\nAction, Item: grab the axe from the tree stump, axe\nAction, Item: lean down and grab the spear from the ground, spear\nAction, Item: gather the valerian plant from the forest, valerian plant\nAction, Item: get the necklace from the box, necklace\nAction, Item: ', + }, + inputs: { + string: { + connections: [ + { + node: 111, + output: 'output', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 113, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: { + trigger: { + connections: [ + { + node: 115, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + detectedItem: { + connections: [ + { + node: 115, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-432.4732666015625, -751.004150390625], + name: 'Item Detector', + }, + 115: { + id: 115, + data: { + socketKey: '996fc4c5-ebef-46c8-8245-34096acd5e06', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'moduleOutput', + }, + inputs: { + input: { + connections: [ + { + node: 114, + output: 'detectedItem', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 114, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [-47.934326171875, -718.2261962890625], + name: 'Module Output', + }, + }, + }, + gameState: {}, + createdAt: 1633703542664, + updatedAt: 1633874677931, + name: 'Item Detector Test', + modules: [], +} diff --git a/server/src/routes/spells/testSpells/proseToScript.ts b/server/src/routes/spells/testSpells/proseToScript.ts new file mode 100644 index 000000000..b9159d2cb --- /dev/null +++ b/server/src/routes/spells/testSpells/proseToScript.ts @@ -0,0 +1,75 @@ +export const proseToScriptTest = { + graph: { + id: 'demo@0.1.0', + nodes: { + 111: { + id: 111, + data: { + socketKey: 'a0c845e4-dfc9-46c0-a896-602988d42751', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'string', + }, + inputs: {}, + outputs: { + output: { + connections: [], + }, + }, + position: [-840.68408203125, -708.9649047851562], + name: 'Module Input', + }, + 113: { + id: 113, + data: { + socketKey: '637abbb4-b969-4133-87ac-03c50ffb44f5', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'moduleTrigger', + }, + inputs: {}, + outputs: { + trigger: { + connections: [], + }, + }, + position: [-838.649658203125, -824.8785400390625], + name: 'Module Trigger In', + }, + 115: { + id: 115, + data: { + socketKey: '996fc4c5-ebef-46c8-8245-34096acd5e06', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'moduleOutput', + }, + inputs: { + input: { + connections: [], + }, + trigger: { + connections: [], + }, + }, + outputs: {}, + position: [-47.934326171875, -718.2261962890625], + name: 'Module Output', + }, + }, + }, + gameState: {}, + createdAt: 1633703542664, + updatedAt: 1633875346238, + name: 'Prose to Script Test', + modules: [], +} diff --git a/server/src/routes/spells/testSpells/safetyVerifier.ts b/server/src/routes/spells/testSpells/safetyVerifier.ts new file mode 100644 index 000000000..444ca2048 --- /dev/null +++ b/server/src/routes/spells/testSpells/safetyVerifier.ts @@ -0,0 +1,296 @@ +export const safetyVerifierTest = { + name: 'Safety Verifier Test', + graph: { + id: 'demo@0.1.0', + nodes: { + 3: { + id: 3, + data: { + socketKey: '22628386-aa18-40cd-8b6a-4e7c03fecb81', + name: 'action', + dataControls: { + name: { + expanded: true, + }, + }, + }, + inputs: {}, + outputs: { + output: { + connections: [ + { + node: 47, + input: 'string', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-697.9662860565335, -432.6971950013772], + name: 'Module Input', + }, + 4: { + id: 4, + data: { + socketKey: '1a819a65-e1e2-4f77-9a42-9f99f546f7c4', + name: 'trigger', + }, + inputs: {}, + outputs: { + trigger: { + connections: [ + { + node: 47, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-720.3358099039369, -596.7960354808793], + name: 'Module Trigger In', + }, + 21: { + id: 21, + data: { + socketKey: 'df7ecf3e-a2f9-4637-a2df-f05d59523030', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'safeResult', + }, + inputs: { + input: { + connections: [ + { + node: 49, + output: 'text', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 48, + output: 'true', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [156.1271111580856, -198.96949084098193], + name: 'Module Output', + }, + 45: { + id: 45, + data: { + socketKey: 'cdf5e66a-7f84-442c-9682-89c2b93f138a', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'unsafeResult', + }, + inputs: { + input: { + connections: [ + { + node: 52, + output: 'text', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 48, + output: 'false', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [154.2756224622367, -46.83051108676217], + name: 'Module Output', + }, + 47: { + id: 47, + data: { + fewshot: + "Rate the actions according to the following content categories\nX: Explicit sexual content, rape, cannibalism, incest\nM: Heavy violence, light sexual content, safe for adults\nT: Light violence, safe for teens.\nE: Safe for everyone\n\nAction: dodge and fire a silver arrow.\nRating: E\n\nAction: Kiss her chest\nRating: M\n\nAction: Cum in the pig's mouth\nRating: X\n\nAction: Lick the woman's pussy\nRating: X\n\nAction: Behead the peasant with your axe\nRating: M\n\nAction: pull out elon musks not a flamethrower to burn the dragon\nRating: T\n\nAction: melt gold in cave and cover dragon with the melted gold\nRating: T\n\nAction: Laughed you figured your sister and fucked your best friend.\nRating: X\n\nAction: pick up governor and toss him out the window like from the emperors groove, with him screaming SORRRY\nRating: T\n\nAction: Rub the woman's genitals\nRating: X\n\nAction: Stroke the persons boobs\nRating: X\n\nAction: Pick up the bartender\nRating: T\n\nAction: Ask the guard why he's here.\nRating: E\n\nAction: Release the biggest load in the universe\nRating: X\n\nAction: Cast a spell to summon a fireball\nRating: T\n\nAction: Have sex with her\nRating: X\n\nAction: Take out my flamethrower\nRating: T\n\nAction: Slice off the bandit's head\nRating: M\n\nAction: Jerk off\nRating: X\n\nAction: ", + }, + inputs: { + string: { + connections: [ + { + node: 3, + output: 'output', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 4, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: { + boolean: { + connections: [ + { + node: 48, + input: 'boolean', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 48, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-339.4824346355768, -598.4872628456561], + name: 'Safety Verifier', + }, + 48: { + id: 48, + data: {}, + inputs: { + boolean: { + connections: [ + { + node: 47, + output: 'boolean', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 47, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: { + trueTrue: { + connections: [ + { + node: 21, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + falseFalse: { + connections: [ + { + node: 45, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-649.1743719701242, -213.94146907530003], + name: 'Boolean Gate', + }, + 49: { + id: 49, + data: { + text: 'Boolean Gate Returned True for the Safety Verification Test', + }, + inputs: {}, + outputs: { + text: { + connections: [ + { + node: 21, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-554.0752571100936, -45.870668418467034], + name: 'Input', + }, + 52: { + id: 52, + data: { + text: 'Boolean Gate Returned False for the Safety Verification TestInput text here', + }, + inputs: {}, + outputs: { + text: { + connections: [ + { + node: 45, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-544.7980243568179, 120.77812977283952], + name: 'Input', + }, + }, + }, + gameState: {}, + createdAt: 1633707484091, + updatedAt: 1633721257806, + modules: [], +} diff --git a/server/src/routes/spells/testSpells/switchGate.ts b/server/src/routes/spells/testSpells/switchGate.ts new file mode 100644 index 000000000..084dfcf56 --- /dev/null +++ b/server/src/routes/spells/testSpells/switchGate.ts @@ -0,0 +1,264 @@ +export const switchGateTest = { + name: 'Switch Gate Test', + graph: { + id: 'demo@0.1.0', + nodes: { + 3: { + id: 3, + data: { + socketKey: '22628386-aa18-40cd-8b6a-4e7c03fecb81', + name: 'case', + dataControls: { + name: { + expanded: true, + }, + }, + }, + inputs: {}, + outputs: { + output: { + connections: [ + { + node: 67, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-622.6674659855355, -483.7484979787559], + name: 'Module Input', + }, + 4: { + id: 4, + data: { + socketKey: '1a819a65-e1e2-4f77-9a42-9f99f546f7c4', + name: 'trigger', + }, + inputs: {}, + outputs: { + trigger: { + connections: [ + { + node: 67, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-606.6003857673835, -619.0903126655428], + name: 'Module Trigger In', + }, + 21: { + id: 21, + data: { + socketKey: 'df7ecf3e-a2f9-4637-a2df-f05d59523030', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'resultOne', + }, + inputs: { + input: { + connections: [ + { + node: 49, + output: 'text', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 67, + output: 'option one', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [21.098525865220324, -265.2013801510767], + name: 'Module Output', + }, + 45: { + id: 45, + data: { + socketKey: 'cdf5e66a-7f84-442c-9682-89c2b93f138a', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'resultTwo', + }, + inputs: { + input: { + connections: [ + { + node: 52, + output: 'text', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 67, + output: 'option two', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [16.257959708028004, -118.22581450793004], + name: 'Module Output', + }, + 49: { + id: 49, + data: { + text: 'Switch component identified option one', + }, + inputs: {}, + outputs: { + text: { + connections: [ + { + node: 21, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-619.4228628356076, -274.0385683276239], + name: 'Input', + }, + 52: { + id: 52, + data: { + text: 'Switch component identified option two', + }, + inputs: {}, + outputs: { + text: { + connections: [ + { + node: 45, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-623.5203729280256, -114.82537821705996], + name: 'Input', + }, + 67: { + id: 67, + data: { + dataControls: { + outputs: { + expanded: true, + }, + }, + outputs: [ + { + name: 'option one', + taskType: 'option', + socketKey: 'option one', + connectionType: 'output', + socketType: 'triggerSocket', + }, + { + name: 'option two', + taskType: 'option', + socketKey: 'option two', + connectionType: 'output', + socketType: 'triggerSocket', + }, + ], + }, + inputs: { + input: { + connections: [ + { + node: 3, + output: 'output', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 4, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: { + default: { + connections: [], + }, + optionOne: { + connections: [ + { + node: 21, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + optionTwo: { + connections: [ + { + node: 45, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-156.2683715878353, -532.2053210480004], + name: 'Switch', + }, + }, + }, + gameState: {}, + createdAt: 1633707484091, + updatedAt: 1633726863032, + modules: [], +} diff --git a/server/src/routes/spells/testSpells/tenseTransformer.ts b/server/src/routes/spells/testSpells/tenseTransformer.ts new file mode 100644 index 000000000..ca0d9c42a --- /dev/null +++ b/server/src/routes/spells/testSpells/tenseTransformer.ts @@ -0,0 +1,748 @@ +export const tenseTransformerTest = { + name: 'Tense Transformer Test', + graph: { + id: 'demo@0.1.0', + nodes: { + '2': { + id: 2, + data: { + socketKey: '02c8ac4b-c7e5-45fc-9e6e-62680bd158e5', + name: 'name', + }, + inputs: {}, + outputs: { + output: { + connections: [ + { + node: 5, + input: 'name', + data: {}, + }, + ], + }, + }, + position: [-704.5584311572628, -73.13445406248034], + name: 'Module Input', + }, + '3': { + id: 3, + data: { + socketKey: '22628386-aa18-40cd-8b6a-4e7c03fecb81', + name: 'text', + }, + inputs: {}, + outputs: { + output: { + connections: [ + { + node: 5, + input: 'text', + data: {}, + }, + ], + }, + }, + position: [-705.6770417976608, -207.50874335082628], + name: 'Module Input', + }, + '4': { + id: 4, + data: { + socketKey: '1a819a65-e1e2-4f77-9a42-9f99f546f7c4', + name: 'trigger', + }, + inputs: {}, + outputs: { + trigger: { + connections: [ + { + node: 5, + input: 'trigger', + data: {}, + }, + ], + }, + }, + position: [-703.6864534694615, -338.11887296523986], + name: 'Module Trigger In', + }, + '5': { + id: 5, + data: { + fewshot: + 'Change each statement to be in the third person present tense and correct all grammar.\n\nMatt: am sleepy.\nThird Person: Matt is sleepy.\n---\nMatt: bllogha bloghs.\nThird Person: Matt makes nonsensical sounds.\n--\nJackson: tell the king that you won\'t help him.\nThird Person: Jackson tells the king that he won\'t help him.\n---\nJill: can I have a mug of ale?\nThird Person: Jill says, "Can I have a mug of ale?"\n---\nSam: say i\'d be happy to help you\nThird Person: Sam says, "I\'d be happy to help you."\n---\nCogsworth: draw my sword of light and slice myself in the forehead.\nThird Person: Cogsworth draws his sword of light and slices himself in the forehead.\n---\nJon: say but you said I could have it. Please?\nThird Person: Jon says, "But you said I could have it. Please?"\n---\nEliza: ask my friend where he\'s going\nThird Person: Eliza asks her friend where he\'s going.\n---\nAaron: am sleepy.\nThird Person: Aaron is sleepy.\n---\nRobert: say I think I can resist it if you give me potion of Mind Shield. Do u have one?\nThird Person: Robert says, "I think I can resist it if you give me a potion of Mind Shield. Do you have one?"\n---\nJack: go talk to the knight\nThird Person: Jack goes to talk to the knight\n---\nJack: say What are you doing?!\nThird Person: Jack says, "What are you doing?!"\n---\nJames: I\'m confident that I can kill the dragon!\nThird Person: James says, "I\'m confident that I can kill the dragon!"\n---\nErica: want to go to the store but trip over my own shoes.\nThird Person: Erica wants to go to the store but she trips over her own shoes.\n---\nTom: told her that it was over.\nThird Person: Tom told her that it was over.\n---\nFred: ask what time is it?\nThird Person: Fred asks, "What time is it?"\n---\nJames: okay!\nThird Person: James says, "Okay!"\n--\nFred: command the mercenaries to attack the dragon while you rescue the princess.\nThird Person: Fred commands the mercenaries to attack the dragon while he rescues the princess.\n---\n', + }, + inputs: { + trigger: { + connections: [ + { + node: 4, + output: 'trigger', + data: {}, + }, + ], + }, + text: { + connections: [ + { + node: 3, + output: 'output', + data: {}, + }, + ], + }, + name: { + connections: [ + { + node: 2, + output: 'output', + data: {}, + }, + ], + }, + }, + outputs: { + action: { + connections: [ + { + node: 21, + input: 'input', + data: {}, + }, + ], + }, + trigger: { + connections: [ + { + node: 21, + input: 'trigger', + data: {}, + }, + { + node: 20, + input: 'trigger', + data: {}, + }, + ], + }, + }, + position: [-281.2092672559847, -302.30118353826043], + name: 'Tense Transformer', + }, + '20': { + id: 20, + data: { + socketKey: 'a48cfd41-46c6-4c59-8292-45483dfbfa3b', + }, + inputs: { + trigger: { + connections: [ + { + node: 5, + output: 'trigger', + data: {}, + }, + ], + }, + }, + outputs: {}, + position: [156.14996337890625, -321.1500244140625], + name: 'Module Trigger Out', + }, + '21': { + id: 21, + data: { + socketKey: 'df7ecf3e-a2f9-4637-a2df-f05d59523030', + }, + inputs: { + input: { + connections: [ + { + node: 5, + output: 'action', + data: {}, + }, + ], + }, + trigger: { + connections: [ + { + node: 5, + output: 'trigger', + data: {}, + }, + ], + }, + }, + outputs: {}, + position: [154.16241455078125, -196.77505493164062], + name: 'Module Output', + }, + }, + }, + gameState: {}, + createdAt: 1633382439699, + updatedAt: 1633382623421, + modules: [ + { + name: 'Crafting', + id: 'dd4bc920-2542-44fe-a588-41051e7b09b3', + data: { + id: 'demo@0.1.0', + nodes: { + '26': { + id: 26, + data: { + socketKey: '603e2acd-f17f-4070-b0f1-d93b733048bd', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'input', + }, + inputs: {}, + outputs: { + output: { + connections: [ + { + node: 28, + input: 'input1', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-749.5798034667969, -347.4363742696649], + name: 'Module Input', + }, + '27': { + id: 27, + data: { + socketKey: 'e5ab2f18-b9c0-4214-b0a6-eb48fbc67610', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'triggerin', + }, + inputs: {}, + outputs: { + trigger: { + connections: [ + { + node: 28, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-741.9115600585938, -211.123779296875], + name: 'Module Trigger In', + }, + '28': { + id: 28, + data: { + dataControls: { + 'throughputs-28': { + expanded: true, + }, + }, + 'throughputs-28': { + inputs: [ + { + name: 'Trigger', + socketKey: 'trigger', + socketType: 'triggerSocket', + taskType: 'option', + }, + { + name: 'input1', + socketKey: 'input1', + socketType: 'stringSocket', + taskType: 'output', + }, + ], + outputs: [ + { + name: 'Trigger', + socketKey: 'trigger', + socketType: 'triggerSocket', + taskType: 'option', + }, + { + name: 'output1', + socketKey: 'output1', + socketType: 'stringSocket', + taskType: 'output', + }, + ], + activeTask: { + taskName: 'Crafting', + task: { + id: '235', + name: 'Crafting', + numInputs: 1, + numOutputs: 1, + unstuffedParentId: null, + createdAt: '2021-06-01T19:28:42.932Z', + updatedAt: '2021-06-01T19:28:42.932Z', + deletedAt: null, + }, + data: [ + { + id: '395', + fewshotTaskId: '235', + inputs: ['trap'], + outputs: ['wood(3), lashing(2)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:43.509Z', + updatedAt: '2021-06-01T19:28:43.509Z', + deletedAt: null, + }, + { + id: '402', + fewshotTaskId: '235', + inputs: ['wooden spear'], + outputs: ['wood(3)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:44.893Z', + updatedAt: '2021-06-01T19:28:44.893Z', + deletedAt: null, + }, + { + id: '396', + fewshotTaskId: '235', + inputs: ['shelter'], + outputs: ['wood(4), lashing(2)\n'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:43.682Z', + updatedAt: '2021-06-01T19:28:43.682Z', + deletedAt: null, + }, + { + id: '403', + fewshotTaskId: '235', + inputs: ['trap'], + outputs: ['wood(3), lashing(2)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:44.905Z', + updatedAt: '2021-06-01T19:28:44.905Z', + deletedAt: null, + }, + { + id: '414', + fewshotTaskId: '235', + inputs: ['shotgun'], + outputs: [ + 'shotgun barrel(1), shotgun parts(3), ammo(20)', + ], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:29:52.843Z', + updatedAt: '2021-06-01T19:29:52.843Z', + deletedAt: null, + }, + { + id: '397', + fewshotTaskId: '235', + inputs: ['plane parts'], + outputs: ['uncraftable'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:43.685Z', + updatedAt: '2021-06-01T19:28:43.685Z', + deletedAt: null, + }, + { + id: '404', + fewshotTaskId: '235', + inputs: ['plane parts'], + outputs: ['uncraftable'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:44.915Z', + updatedAt: '2021-06-01T19:28:44.915Z', + deletedAt: null, + }, + { + id: '398', + fewshotTaskId: '235', + inputs: ['jeep'], + outputs: ['jeep frame(1), jeep parts(3), fuel(20)\n'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:43.946Z', + updatedAt: '2021-06-01T19:28:43.946Z', + deletedAt: null, + }, + { + id: '410', + fewshotTaskId: '235', + inputs: ['jeep'], + outputs: ['jeep frame(1), jeep parts(3), fuel(20)\n'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:45.197Z', + updatedAt: '2021-06-01T19:28:45.197Z', + deletedAt: null, + }, + { + id: '412', + fewshotTaskId: '235', + inputs: ['cloth dress'], + outputs: ['cloth(3)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:29:52.804Z', + updatedAt: '2021-06-01T19:29:52.804Z', + deletedAt: null, + }, + ], + serialization: { + id: '169', + fewshotTaskId: '235', + name: 'default', + isPreferred: true, + introduction: + 'Given an item decide what it takes to craft it\n\n', + beforeEachInput: ['Item: '], + inBetween: '\nRequired: ', + beforeEachOutput: [''], + atTheEnd: '\n\nNEXT\n\n', + createdAt: '2021-06-01T19:28:43.359Z', + updatedAt: '2021-06-01T19:29:31.094Z', + deletedAt: null, + }, + }, + }, + outputs: [ + { + name: 'Trigger', + socketKey: 'trigger', + socketType: 'triggerSocket', + taskType: 'option', + }, + { + name: 'output1', + socketKey: 'output1', + socketType: 'stringSocket', + taskType: 'output', + }, + ], + inputs: [ + { + name: 'Trigger', + socketKey: 'trigger', + socketType: 'triggerSocket', + taskType: 'option', + }, + { + name: 'input1', + socketKey: 'input1', + socketType: 'stringSocket', + taskType: 'output', + }, + ], + name: 'Crafting', + activetask: { + taskName: 'Crafting', + task: { + id: '235', + name: 'Crafting', + numInputs: 1, + numOutputs: 1, + unstuffedParentId: null, + createdAt: '2021-06-01T19:28:42.932Z', + updatedAt: '2021-06-01T19:28:42.932Z', + deletedAt: null, + }, + data: [ + { + id: '395', + fewshotTaskId: '235', + inputs: ['trap'], + outputs: ['wood(3), lashing(2)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:43.509Z', + updatedAt: '2021-06-01T19:28:43.509Z', + deletedAt: null, + }, + { + id: '402', + fewshotTaskId: '235', + inputs: ['wooden spear'], + outputs: ['wood(3)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:44.893Z', + updatedAt: '2021-06-01T19:28:44.893Z', + deletedAt: null, + }, + { + id: '396', + fewshotTaskId: '235', + inputs: ['shelter'], + outputs: ['wood(4), lashing(2)\n'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:43.682Z', + updatedAt: '2021-06-01T19:28:43.682Z', + deletedAt: null, + }, + { + id: '403', + fewshotTaskId: '235', + inputs: ['trap'], + outputs: ['wood(3), lashing(2)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:44.905Z', + updatedAt: '2021-06-01T19:28:44.905Z', + deletedAt: null, + }, + { + id: '414', + fewshotTaskId: '235', + inputs: ['shotgun'], + outputs: ['shotgun barrel(1), shotgun parts(3), ammo(20)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:29:52.843Z', + updatedAt: '2021-06-01T19:29:52.843Z', + deletedAt: null, + }, + { + id: '397', + fewshotTaskId: '235', + inputs: ['plane parts'], + outputs: ['uncraftable'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:43.685Z', + updatedAt: '2021-06-01T19:28:43.685Z', + deletedAt: null, + }, + { + id: '404', + fewshotTaskId: '235', + inputs: ['plane parts'], + outputs: ['uncraftable'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:44.915Z', + updatedAt: '2021-06-01T19:28:44.915Z', + deletedAt: null, + }, + { + id: '398', + fewshotTaskId: '235', + inputs: ['jeep'], + outputs: ['jeep frame(1), jeep parts(3), fuel(20)\n'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:43.946Z', + updatedAt: '2021-06-01T19:28:43.946Z', + deletedAt: null, + }, + { + id: '410', + fewshotTaskId: '235', + inputs: ['jeep'], + outputs: ['jeep frame(1), jeep parts(3), fuel(20)\n'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:28:45.197Z', + updatedAt: '2021-06-01T19:28:45.197Z', + deletedAt: null, + }, + { + id: '412', + fewshotTaskId: '235', + inputs: ['cloth dress'], + outputs: ['cloth(3)'], + creator: '23505660', + provenance: null, + tags: null, + createdAt: '2021-06-01T19:29:52.804Z', + updatedAt: '2021-06-01T19:29:52.804Z', + deletedAt: null, + }, + ], + serialization: { + id: '169', + fewshotTaskId: '235', + name: 'default', + isPreferred: true, + introduction: + 'Given an item decide what it takes to craft it\n\n', + beforeEachInput: ['Item: '], + inBetween: '\nRequired: ', + beforeEachOutput: [''], + atTheEnd: '\n\nNEXT\n\n', + createdAt: '2021-06-01T19:28:43.359Z', + updatedAt: '2021-06-01T19:29:31.094Z', + deletedAt: null, + }, + }, + }, + inputs: { + trigger: { + connections: [ + { + node: 27, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + input1: { + connections: [ + { + node: 26, + output: 'output', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: { + trigger: { + connections: [ + { + node: 29, + input: 'trigger', + data: { + pins: [], + }, + }, + { + node: 30, + input: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + output1: { + connections: [ + { + node: 30, + input: 'input', + data: { + pins: [], + }, + }, + ], + }, + }, + position: [-339.24756339127873, -289.64520528432854], + name: 'Enki Task', + }, + '29': { + id: 29, + data: { + socketKey: '89612758-265e-42a6-b832-8ba4f23fc0be', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'triggerout', + }, + inputs: { + trigger: { + connections: [ + { + node: 28, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [33.62321997867616, -326.2289051387818], + name: 'Module Trigger Out', + }, + '30': { + id: 30, + data: { + socketKey: '31a26230-229f-46aa-ba50-002a55d04079', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'output', + }, + inputs: { + input: { + connections: [ + { + node: 28, + output: 'output1', + data: { + pins: [], + }, + }, + ], + }, + trigger: { + connections: [ + { + node: 28, + output: 'trigger', + data: { + pins: [], + }, + }, + ], + }, + }, + outputs: {}, + position: [16.76892539966276, -191.8822412449624], + name: 'Module Output', + }, + }, + }, + }, + ], +} diff --git a/server/src/routes/spells/testSpells/test.json b/server/src/routes/spells/testSpells/test.json new file mode 100644 index 000000000..8448f88b2 --- /dev/null +++ b/server/src/routes/spells/testSpells/test.json @@ -0,0 +1 @@ +{"graph":{"id":"demo@0.1.0","nodes":{"1":{"id":1,"data":{"dataControls":{"name":{"expanded":true},"inputs":{"expanded":true},"fewshot":{"expanded":true},"stop":{"expanded":true},"temp":{"expanded":true},"maxTokens":{"expanded":true}},"name":"Generate Problem","inputs":[],"maxTokens":"150","temp":"0.85","stop":"\"\"\"","fewshot":"The year is 686 AD and the new King of Larion has taken the throne after his father passed away. Larion is a very healthy kingdom. Write events that a medieval king's advisor might present to the king and ask how to solve.\n\nEvent: Peasant Rebellion\nAdvisor: \"My lord! In the northern part of the kingdom a band of peasants has taken up weapons and begun rebelling against your rule. They're angry at the mistreatment they've experienced under Lord Ardensen's hands and are marching on the port city of Elias. If we lose Elias that would be a massive blow to our economy.\"\n\"\"\"\nEvent: Goblin Invasion\nAdvisor: \"Sire! Goblin's have begun invading the kingdom out of the mountains to the east. The groups outnumber our forces ten to one and our people are terrified.\"\n\"\"\"\nEvent: Religious Problems\nAdvisor: \"The followers of Alyssa, a pagan deity, are gaining in numbers. They have begun to harass the followers of Mortis, our kingdom's official religion. There are rumors that more and more of the people are converting to her belief.\"\n\"\"\"\nEvent: New Enemy\nAdvisor: \"Sire, your former ally Lord Thoran, from the kingdom of Kerald, has decided to take advantage of us by attacking on our eastern frontier. He has a large contingent of pikemen and cavalry and is looting the villages in that region.\"\n\"\"\"\nEvent: Palace Intrigue\nAdvisor: \"My lord, it seems your cousin, Lord Faren, has was discovered plotting against your rule and has escaped to our western neighbor of Carthas to hide from your judgement.\n\"\"\"\nEvent: Dragon Attack\nAdvisor: \"A dragon has been terrorizing the kingdom, killing and eating peasants. Several knights have been slayed while attempting to deal with the monster.\"\n\"\"\"\nEvent:"},"inputs":{"trigger":{"connections":[{"node":3,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[{"node":4,"input":"trigger","data":{"pins":[]}}]},"result":{"connections":[{"node":4,"input":"text","data":{"pins":[]}}]},"composed":{"connections":[]}},"position":[-600.4337279661303,-249.1097044892314],"name":"Generator"},"3":{"id":3,"data":{"text":"","display":""},"inputs":{},"outputs":{"text":{"connections":[]},"trigger":{"connections":[{"node":1,"input":"trigger","data":{"pins":[]}}]}},"position":[-1046.6826395620812,-261.4228484973423],"name":"Playtest Input"},"4":{"id":4,"data":{"display":"Natural Disaster\nAdvisor: \"Sire, it seems the entire kingdom is gripped by a massive drought. The crops are dying and there is no end in sight. If this continues the kingdom will be starving by next winter.\"\n\"\"\nEvent: Cult Activity\nAdvisor: \"It appears that a cult are gathering forces intent on taking your throne. They are more militant than your typical religious groups and are determined to eliminate any who oppose them.\"\n\"\"\n\nEvent: Giant Attack\nAdvisor: \"A giant has been harassing the villages on the northern border. Several men have already been killed and two villages were completely destroyed before the giant retreated into the mountains.\"\n\"\n\nEvent: Plague\nAdvisor: \"My lord"},"inputs":{"text":{"connections":[{"node":1,"output":"result","data":{"pins":[]}}]},"trigger":{"connections":[{"node":1,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[]}},"position":[-167.28822411500286,-261.58596049718085],"name":"Playtest Print"}}},"gameState":{},"createdAt":1633205408187,"updatedAt":1633654841606,"name":"subtle teal","modules":[]} \ No newline at end of file diff --git a/server/src/routes/spells/testSpells/timeDetector.ts b/server/src/routes/spells/testSpells/timeDetector.ts new file mode 100644 index 000000000..13fede5e0 --- /dev/null +++ b/server/src/routes/spells/testSpells/timeDetector.ts @@ -0,0 +1,75 @@ +export const timeDetectorTest = { + graph: { + id: 'demo@0.1.0', + nodes: { + 111: { + id: 111, + data: { + socketKey: 'a0c845e4-dfc9-46c0-a896-602988d42751', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'string', + }, + inputs: {}, + outputs: { + output: { + connections: [], + }, + }, + position: [-840.68408203125, -708.9649047851562], + name: 'Module Input', + }, + 113: { + id: 113, + data: { + socketKey: '637abbb4-b969-4133-87ac-03c50ffb44f5', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'moduleTrigger', + }, + inputs: {}, + outputs: { + trigger: { + connections: [], + }, + }, + position: [-838.649658203125, -824.8785400390625], + name: 'Module Trigger In', + }, + 115: { + id: 115, + data: { + socketKey: '996fc4c5-ebef-46c8-8245-34096acd5e06', + dataControls: { + name: { + expanded: true, + }, + }, + name: 'moduleOutput', + }, + inputs: { + input: { + connections: [], + }, + trigger: { + connections: [], + }, + }, + outputs: {}, + position: [-47.934326171875, -718.2261962890625], + name: 'Module Output', + }, + }, + }, + gameState: {}, + createdAt: 1633703542664, + updatedAt: 1633875346238, + name: 'Time Detector Test', + modules: [], +} diff --git a/server/src/routes/spells/types.ts b/server/src/routes/spells/types.ts new file mode 100644 index 000000000..1fde7fd4c --- /dev/null +++ b/server/src/routes/spells/types.ts @@ -0,0 +1,48 @@ +import { ThothComponent } from '@latitudegames/thoth-core/src/thoth-component' + +export type ModuleComponent = ThothComponent & { + run: Function +} + +export type NodeConnections = { + node: number + input?: string + output?: string + data: Record +} + +export type NodeOutputs = { + [outputKey: string]: { + connections: NodeConnections[] + } +} + +export type NodeData = { + socketKey?: string + name?: string + [DataKey: string]: unknown +} + +export type Node = { + id: number + data: NodeData + name: string + inputs: NodeOutputs + outputs?: NodeOutputs + position: number[] +} +export type Module = { name: string; id: string; data: Graph } + +export type Spell = { + name: string + graph: Graph + gameState: Record + createdAt: number + updatedAt: number + modules: Module[] +} + +export type Graph = { + id: string + nodes: Record +} diff --git a/server/src/search-server.ts b/server/src/search-server.ts new file mode 100644 index 000000000..eb19886c5 --- /dev/null +++ b/server/src/search-server.ts @@ -0,0 +1,5 @@ +import { config } from 'dotenv-flow' +config() +import { initSearchCorpus } from './systems/searchCorpus' + +initSearchCorpus(false) diff --git a/server/src/server.ts b/server/src/server.ts new file mode 100644 index 000000000..b218f988e --- /dev/null +++ b/server/src/server.ts @@ -0,0 +1,205 @@ +import { config } from 'dotenv-flow' +config() +//@ts-ignore +import cors from '@koa/cors' +import Router from '@koa/router' +import { initClassifier } from '@latitudegames/thoth-core/src/utils/textClassifier' +import HttpStatus from 'http-status-codes' +import Koa from 'koa' +import koaBody from 'koa-body' +import compose from 'koa-compose' +import { cacheManager } from './cacheManager' +import { database } from './database' +import { creatorToolsDatabase } from './databases/creatorTools' +import { routes } from './routes' +import { Handler, Method, Middleware } from './types' +import { initTextToSpeech } from './systems/googleTextToSpeech' +import { initFileServer } from './systems/fileServer' +import https from 'https' +import http from 'http' +import * as fs from 'fs' +import spawnPythonServer from './systems/pythonServer' +import { convertToMp4 } from './systems/videoConverter' + +const app: Koa = new Koa() +const router: Router = new Router() +// @ts-ignore +process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0 + +async function init() { + /*await convertToMp4( + 'https://cph-p2p-msl.akamaized.net/hls/live/2000341/test/master.m3u8', + 'test.mp4' + )*/ + // async function initLoop() { + // new roomManager() + // const expectedServerDelta = 1000 / 60 + // let lastTime = 0 + + // // @ts-ignore + // globalThis.requestAnimationFrame = f => { + // const serverLoop = () => { + // const now = Date.now() + // if (now - lastTime >= expectedServerDelta) { + // lastTime = now + // f(now) + // } else { + // setImmediate(serverLoop) + // } + // } + // serverLoop() + // } + // } + + // required for some current consumers (i.e Thoth) + // to-do: standardize an allowed origin list based on env values or another source of truth? + await initFileServer() + await initClassifier() + await initTextToSpeech() + new cacheManager(-1) + + if (process.env.RUN_PYTHON_SERVER === 'true') { + spawnPythonServer() + } + + /*const string = 'test string' + const key = 'test_key' + cacheManager.instance.set('global', key, string) + cacheManager.instance.set('global', 'earth', 'earth is a planet') + console.log(await cacheManager.instance.get('global', key)) + console.log(await cacheManager.instance.get('global', 'test key')) + console.log(await cacheManager.instance.get('global', 'testkey')) + console.log(await cacheManager.instance.get('global', 'TEST KEY')) + console.log(await cacheManager.instance.get('global', 'TEST_KEY')) + console.log(await cacheManager.instance.get('global', 'key_test')) + console.log(await cacheManager.instance.get('global', 'key test')) + console.log(await cacheManager.instance.get('global', 'ttes_key'))*/ + const options = { + origin: '*', + } + app.use(cors(options)) + + // new cors_server(process.env.CORS_PORT, '0.0.0.0') + new database() + + await database.instance.connect() + await creatorToolsDatabase.sequelize.sync({ + force: process.env.REFRESH_DB?.toLowerCase().trim() === 'true', + }) + await database.instance.firstInit() + + process.on('unhandledRejection', (err: Error) => { + console.error('Unhandled Rejection:' + err + ' - ' + err.stack) + }) + + // Middleware used by every request. For route-specific middleware, add it to you route middleware specification + app.use(koaBody({ multipart: true })) + + const createRoute = ( + method: Method, + path: string, + middleware: Middleware[], + handler: Handler + ) => { + // This gets a typescript error + // router[method](path, compose(_middleware), handler); + // TODO: Fix this hack: + switch (method) { + case 'get': + router.get(path, compose(middleware), handler) + break + case 'post': + router.post(path, compose(middleware), handler) + break + case 'put': + router.put(path, compose(middleware), handler) + break + case 'delete': + router.delete(path, compose(middleware), handler) + break + case 'head': + router.head(path, compose(middleware), handler) + break + case 'patch': + router.patch(path, compose(middleware), handler) + break + } + } + + type MiddlewareParams = { + access: string | string[] | Middleware + middleware: Middleware[] | undefined + } + + const routeMiddleware = ({ access, middleware = [] }: MiddlewareParams) => { + if (!access) return [...middleware] + if (typeof access === 'function') return [access, ...middleware] + if (typeof access === 'string') return [...middleware] + return [...middleware] + } + + // Create Koa routes from the routes defined in each module + routes.forEach(route => { + const { method, path, access, middleware, handler } = route + const _middleware = routeMiddleware({ access, middleware }) + if (method && handler) { + createRoute(method, path, _middleware, handler) + } + if (route.get) { + createRoute('get', path, _middleware, route.get) + } + if (route.put) { + createRoute('put', path, _middleware, route.put) + } + if (route.post) { + createRoute('post', path, _middleware, route.post) + } + if (route.delete) { + createRoute('delete', path, _middleware, route.delete) + } + if (route.head) { + createRoute('head', path, _middleware, route.head) + } + if (route.patch) { + createRoute('patch', path, _middleware, route.patch) + } + }) + + app.use(router.routes()).use(router.allowedMethods()) + + // generic error handling + app.use(async (ctx: Koa.Context, next: () => Promise) => { + try { + await next() + } catch (error) { + ctx.status = + error.statusCode || error.status || HttpStatus.INTERNAL_SERVER_ERROR + error.status = ctx.status + ctx.body = { error } + ctx.app.emit('error', error, ctx) + } + }) + + const PORT: number = Number(process.env.PORT) || 8001 + const useSSL = + process.env.USESSL === 'true' && + fs.existsSync('certs/') && + fs.existsSync('certs/key.pem') && + fs.existsSync('certs/cert.pem') + + var optionSsl = { + key: useSSL ? fs.readFileSync('certs/key.pem') : '', + cert: useSSL ? fs.readFileSync('certs/cert.pem') : '', + } + useSSL + ? https + .createServer(optionSsl, app.callback()) + .listen(PORT, '0.0.0.0', () => { + console.log('Https Server listening on: 0.0.0.0:' + PORT) + }) + : http.createServer(app.callback()).listen(PORT, '0.0.0.0', () => { + console.log('Http Server listening on: 0.0.0.0:' + PORT) + }) + // await initLoop() +} +init() diff --git a/server/src/speech-server.ts b/server/src/speech-server.ts new file mode 100644 index 000000000..3415b760a --- /dev/null +++ b/server/src/speech-server.ts @@ -0,0 +1,7 @@ +import { config } from 'dotenv-flow' +config() +import { initSpeechServer } from './systems/googleSpeechToText' + +// @ts-ignore +process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0; +initSpeechServer(false) diff --git a/server/src/systems/fileServer.ts b/server/src/systems/fileServer.ts new file mode 100644 index 000000000..2372f0c82 --- /dev/null +++ b/server/src/systems/fileServer.ts @@ -0,0 +1,165 @@ +import https from 'https' +import http from 'http' +import * as fs from 'fs' +import path from 'path' + +export async function initFileServer() { + if (!fs.existsSync('files')) { + console.log('FOLDER DIDNT EXIST AND CREATED') + fs.mkdirSync('files') + } + + if (process.env.USESSL === 'true') { + const success = await initSSL() + if (!success) { + initNoSSL() + } + } else { + await initNoSSL() + } + console.log('file server started on port:', process.env.FILE_SERVER_PORT) +} + +async function initSSL(): Promise { + if ( + !fs.existsSync('certs') || + !fs.existsSync('certs/key.pem') || + !fs.existsSync('certs/cert.pem') + ) { + return false + } + + https + .createServer( + { + key: fs.readFileSync('certs/key.pem'), + cert: fs.readFileSync('certs/cert.pem'), + }, + function (req, res) { + let filePath = '.' + req.url + console.log('file requested:', filePath) + if (filePath == './') { + filePath = './index.html' + } + + let extname = path.extname(filePath) + let contentType = 'text/html' + + switch (extname) { + case '.js': + contentType = 'text/javascript' + break + case '.css': + contentType = 'text/css' + break + case '.json': + contentType = 'application/json' + break + case '.png': + contentType = 'image/png' + break + case '.jpg': + contentType = 'image/jpg' + break + case '.wav': + contentType = 'audio/wav' + break + case '.mp3': + contentType = 'audio/mp3' + break + } + + fs.readFile(filePath, function (error, content) { + if (error) { + if (error.code == 'ENOENT') { + res.writeHead(404) + res.end() + } else { + res.writeHead(500) + res.end('error') + res.end() + } + } else { + res.setHeader('Access-Control-Allow-Origin', '*') + res.setHeader( + 'Access-Control-Allow-Methods', + 'GET, POST, OPTIONS, PUT, PATCH, DELETE' + ) + res.setHeader( + 'Access-Control-Allow-Headers', + 'X-Requested-With,content-type' + ) + res.setHeader('Access-Control-Allow-Credentials', 'true') + res.writeHead(200, { 'Content-Type': contentType }) + res.end(content, 'utf-8') + } + }) + } + ) + .listen(parseInt(process.env.FILE_SERVER_PORT as string)) + + return true +} +async function initNoSSL() { + http + .createServer(function (req, res) { + let filePath = '.' + req.url + if (filePath == './') { + filePath = './index.html' + } + + let extname = path.extname(filePath) + let contentType = 'text/html' + + switch (extname) { + case '.js': + contentType = 'text/javascript' + break + case '.css': + contentType = 'text/css' + break + case '.json': + contentType = 'application/json' + break + case '.png': + contentType = 'image/png' + break + case '.jpg': + contentType = 'image/jpg' + break + case '.wav': + contentType = 'audio/wav' + break + case '.mp3': + contentType = 'audio/mp3' + break + } + + fs.readFile(filePath, function (error, content) { + if (error) { + if (error.code == 'ENOENT') { + res.writeHead(404) + res.end() + } else { + res.writeHead(500) + res.end('error') + res.end() + } + } else { + res.setHeader('Access-Control-Allow-Origin', '*') + res.setHeader( + 'Access-Control-Allow-Methods', + 'GET, POST, OPTIONS, PUT, PATCH, DELETE' + ) + res.setHeader( + 'Access-Control-Allow-Headers', + 'X-Requested-With,content-type' + ) + res.setHeader('Access-Control-Allow-Credentials', 'true') + res.writeHead(200, { 'Content-Type': contentType }) + res.end(content, 'utf-8') + } + }) + }) + .listen(parseInt(process.env.FILE_SERVER_PORT as string)) +} diff --git a/server/src/systems/googleSpeechToText.ts b/server/src/systems/googleSpeechToText.ts new file mode 100644 index 000000000..aa3ffb40a --- /dev/null +++ b/server/src/systems/googleSpeechToText.ts @@ -0,0 +1,110 @@ +import { SpeechClient } from '@google-cloud/speech' +import { Server } from 'socket.io' +import { config } from 'dotenv-flow' +import https from 'https' +import * as fs from 'fs' + +config({ path: '.env' }) + +let speechClient: SpeechClient +const encoding = 'LINEAR16' +const sampleRateHertz = 16000 +const languageCode = 'en-US' + +const request = { + config: { + encoding: encoding as any, + sampleRateHertz: sampleRateHertz, + languageCode: languageCode, + profanityFilter: false, + enableWordTimeOffsets: true, + // speechContexts: [{ + // phrases: ["hi","hello"] + // }] + }, + interimResults: false, +} + +export async function initSpeechServer(ignoreDotEnv: boolean) { + if (ignoreDotEnv === false && process.env.ENABLE_SPEECH_SERVER === 'false') { + console.log('Speech server disabled') + return + } + + const useSSL = process.env.USSSL_SPEECH === 'true' + + const PORT: number = Number(process.env.SPEECH_SERVER_PORT) || 65532 + let io + + if (useSSL) { + const server = https.createServer({ + key: fs.readFileSync('certs/key.pem'), + cert: fs.readFileSync('certs/cert.pem'), + }) + server.listen(PORT) + io = new Server(server, { + cors: { origin: '*', methods: ['GET', 'POST'] }, + }) + } else { + io = new Server(PORT, { + cors: { origin: '*', methods: ['GET', 'POST'] }, + }) + } + + console.log('speech server started on port', PORT) + + speechClient = new SpeechClient() + + io.on('connection', function (client: any) { + console.log('speech client connected') + let recognizeStream: any = null + + client.on('join', function (data: any) { + client.emit('messages', 'Client connected') + }) + client.on('messages', function (data: any) { + client.emit('broad', data) + }) + + client.on('startGoogleCloudStream', function (data: any) { + startRecognitionStream(client) + }) + client.on('endGoogleCloudStream', function (data: any) { + stopRecognitionStream() + }) + + client.on('binaryData', function (data: any) { + try { + if ( + recognizeStream !== null && + recognizeStream !== undefined && + recognizeStream.destroyed === false + ) { + recognizeStream.write(data) + } + } catch (e) { } + }) + + function startRecognitionStream(client: any) { + recognizeStream = speechClient + .streamingRecognize(request) + .on('error', err => { + console.log(err) + }) + .on('data', data => { + client.emit('speechData', data) + if (data.results[0] && data.results[0].isFinal) { + stopRecognitionStream() + startRecognitionStream(client) + } + }) + } + + function stopRecognitionStream() { + if (recognizeStream) { + recognizeStream.end() + } + recognizeStream = null + } + }) +} diff --git a/server/src/systems/googleTextToSpeech.ts b/server/src/systems/googleTextToSpeech.ts new file mode 100644 index 000000000..0bf761427 --- /dev/null +++ b/server/src/systems/googleTextToSpeech.ts @@ -0,0 +1,50 @@ +import { TextToSpeechClient } from '@google-cloud/text-to-speech' +import * as fs from 'fs' +import util from 'util' + +let client: TextToSpeechClient + +export async function initTextToSpeech() { + client = new TextToSpeechClient() +} + +export async function tts(input: string, character = "en-GB-Standard-B", languageCode = 'en-GB') { + if (!client || client === undefined) { + client = new TextToSpeechClient() + } + + const ttsRequest = { + input: { text: input }, + voice: { + languageCode: languageCode, + name: character, + ssmlGender: 1 /*Male*/, + }, + audioConfig: { audioEncoding: 2 /*MP3*/ }, + } + + console.log("ttsRequest is", ttsRequest) + + const fileName = makeid(8) + '.mp3' + const outputFile = 'files/' + fileName + if (fs.existsSync(outputFile)) { + fs.unlinkSync(outputFile) + } + + const [response] = await client.synthesizeSpeech(ttsRequest) + const writeFile = util.promisify(fs.writeFile) + await writeFile(outputFile, response.audioContent as string, 'binary') + console.log(`Audio content written to file: ${outputFile}`) + return outputFile +} + +function makeid(length: number) { + var result = '' + var characters = + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' + var charactersLength = characters.length + for (var i = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)) + } + return result +} diff --git a/server/src/systems/pythonServer.ts b/server/src/systems/pythonServer.ts new file mode 100644 index 000000000..772bacb7f --- /dev/null +++ b/server/src/systems/pythonServer.ts @@ -0,0 +1,30 @@ +import { spawn } from 'child_process' +import * as fs from 'fs' +import path from 'path' +import os from 'os' + +export default async function spawnPythonServer() { + const _path = path.resolve(__dirname, '../../../pyserver') + '/main.py' + if (!fs.existsSync(_path)) { + console.error('Python server not found!') + return + } + + console.log('Spawning python server...') + const p = os.platform() + let pythonPath = 'python3' + if (p === 'win32') { + pythonPath = 'python' + } + + const process = spawn(pythonPath, [_path]) + process.stdout.on('data', data => { + console.log('>> ', data.toString()) + }) + process.stderr.on('data', data => { + console.log('>> ', data.toString()) + }) + process.stdin.on('data', data => { + console.log('>> ', data.toString()) + }) +} diff --git a/server/src/systems/searchCorpus.ts b/server/src/systems/searchCorpus.ts new file mode 100644 index 000000000..2f6908513 --- /dev/null +++ b/server/src/systems/searchCorpus.ts @@ -0,0 +1,476 @@ +//@ts-ignore +import cors from '@koa/cors' +//@ts-ignore +import weaviate from 'weaviate-client' +import { config } from 'dotenv-flow' +import HttpStatus from 'http-status-codes' +import Koa from 'koa' +import koaBody from 'koa-body' +import Router from '@koa/router' +import axios from 'axios' +import { + includeInFields, + removePunctuation, + simplifyWords, +} from '../utils/utils' +import { database } from '../database' +import { + initClassifier, + classifyText, +} from '@latitudegames/thoth-core/src/utils/textClassifier' +import keyword_extractor from 'keyword-extractor' + +config({ path: '.env' }) +const searchEngine = 'davinci' +const client = weaviate.client({ + scheme: 'http', + host: 'semantic-search-wikipedia-with-weaviate.api.vectors.network:8080/', +}) + +export async function initSearchCorpus(ignoreDotEnv: boolean) { + if (ignoreDotEnv === false && process.env.ENABLE_SEARCH_CORPUS === 'false') { + return + } + + if (!database.instance || database.instance === undefined) { + new database().connect() + await initClassifier() + } + + const app: Koa = new Koa() + const router: Router = new Router() + + const options = { + origin: '*', + } + app.use(cors(options)) + app.use(koaBody({ multipart: true })) + + router.get('/document-store', async function (ctx: Koa.Context) { + const stores = await database.instance.getDocumentStores() + return (ctx.body = stores.sort((a, b) => a.id - b.id)) + }) + router.get('/document', async function (ctx: Koa.Context) { + const storeId = ctx.query.storeId + const documents: any = await database.instance.getDocumentsOfStore(storeId) + return (ctx.body = documents) + }) + router.get('/document/:docId', async function (ctx: Koa.Context) { + const docId = ctx.params.docId + const doc = await database.instance.getSingleDocument(docId) + return (ctx.body = doc) + }) + router.post('/document', async function (ctx: Koa.Context) { + const { body } = ctx.request + const description = body?.description || '' + const keywords = body?.keywords + const is_included = body?.is_included && true + const storeId = body?.storeId + + let id = -1 + try { + id = await database.instance.addDocument( + description, + keywords, + is_included, + storeId + ) + const resp = await axios.get( + `${process.env.PYTHON_SERVER_URL}/update_search_model` + ) + if (resp.data.status != 'ok') { + return (ctx.body = 'internal error') + } + } catch (e) { + console.log(e) + return (ctx.body = 'internal error') + } + + if (id === -1) { + return (ctx.body = 'internal error') + } + + return (ctx.body = { documentId: id }) + }) + router.delete('/document', async function (ctx: Koa.Context) { + const documentId = ctx.query.documentId + console.log('deleting document: ' + documentId) + + try { + await database.instance.removeDocument(documentId) + const resp = await axios.get( + `${process.env.PYTHON_SERVER_URL}/update_search_model` + ) + if (resp.data.status != 'ok') { + return (ctx.body = 'internal error') + } + } catch (e) { + console.log(e) + return (ctx.body = 'internal error') + } + + return (ctx.body = 'ok') + }) + router.post('/update_document', async function (ctx: Koa.Context) { + const { body } = ctx.request + const documentId = body?.documentId + const description = body?.description || '' + const keywords = body?.keywords + const is_included = body?.is_included && true + const storeId = body?.storeId + + try { + await database.instance.updateDocument( + documentId, + description, + keywords, + is_included, + storeId + ) + const resp = await axios.get( + `${process.env.PYTHON_SERVER_URL}/update_search_model` + ) + if (resp.data.status != 'ok') { + return (ctx.body = 'internal error') + } + } catch (e) { + console.log(e) + return (ctx.body = 'internal error') + } + + return (ctx.body = 'ok') + }) + router.get('/search', async function (ctx: Koa.Context) { + const question = ctx.request.query?.question as string + const cleanQuestion = removePunctuation(question) + const resp = await axios.post(`${process.env.PYTHON_SERVER_URL}/search`, { + isKeywords: false, + query: cleanQuestion, + }) + return (ctx.body = + resp.data.status == 'ok' && resp.data.data.length > 0 + ? resp.data.data + : 'No documents where found to search from!') + + /*const words = simplifyWords(cleanQuestion.split(' ')) + const topic = await classifyText(question) + console.log('topic:', topic) + + let maxMetadata = 0 + let maxIdMetadata = -1 + let maxKeywords = 0 + let maxIdKeywords = -1 + + const documents = await database.instance.getAllDocumentsForSearch() + + console.log('loaded ' + documents.length + ' documents') + for (let i = 0; i < documents.length; i++) { + documents[i].description = (documents[i].description as string) + .split(',') + .map(el => el.trim().toLowerCase()) + documents[i].keywords = (documents[i].keywords as string) + .split(',') + .map(el => el.trim().toLowerCase()) + + const metadataCount = includeInFields( + documents[i].description as string[], + words + ) + const keywordsCount = includeInFields( + documents[i].keywords as string[], + words + ) + + if (metadataCount > maxMetadata) { + maxMetadata = metadataCount + maxIdMetadata = i + } + if (keywordsCount > maxKeywords) { + maxKeywords = keywordsCount + maxIdKeywords = i + } + } + console.log('maxIdMetadata ::: ', maxIdMetadata) + console.log('maxIdKeywords ::: ', maxIdKeywords) + + const testDocs = [] + if (maxIdKeywords === maxIdMetadata && maxIdKeywords !== -1) { + return (ctx.body = documents[maxIdKeywords]) + } else if (maxIdKeywords !== maxIdMetadata) { + if (maxIdKeywords !== -1 && maxIdMetadata !== -1) { + testDocs.push(documents[maxIdMetadata]) + testDocs.push(documents[maxIdKeywords]) + } else if (maxIdKeywords !== -1) { + testDocs.push(documents[maxIdKeywords]) + } else if (maxIdMetadata !== -1) { + testDocs.push(documents[maxIdMetadata]) + } else { + for (let i = 0; i < documents.length; i++) { + testDocs.push(documents[i]) + } + } + } + + if (testDocs.length !== 0) { + testDocs.forEach(doc => { + doc.keywords = doc.keywords.join(',') + doc.description = doc.description.join(',') + }) + let stringifiedDocuments = testDocs.map(doc => JSON.stringify(doc)) + const response = await axios.post( + `https://api.openai.com/v1/engines/${searchEngine}/search`, + { documents: stringifiedDocuments, query: question }, + { + headers: { + 'Content-Type': 'application/json', + Authorization: 'Bearer ' + process.env.OPENAI_API_KEY, + }, + } + ) + + let highestScore = 0 + let highestScoreIndex = -1 + console.log('response ::: ', response.data) + + for (let i = 0; i < response.data.data.length; i++) { + if (response.data.data[i].score > highestScore) { + highestScore = response.data.data[i].score + highestScoreIndex = i + } + } + + if (highestScoreIndex >= 0) { + return (ctx.body = + testDocs[response.data.data[highestScoreIndex]['document']]) + } else { + return (ctx.body = 'No documents where found to search from!') + } + } else return (ctx.body = 'No documents where found to search from!')*/ + }) + + router.post('/content-object', async function (ctx: Koa.Context) { + const { body } = ctx.request + const description = body?.description || '' + const keywords = body?.keywords + const is_included = body?.is_included && true + const documentId = body?.documentId + + let id = -1 + try { + id = await database.instance.addContentObj( + description, + keywords, + is_included, + documentId + ) + } catch (e) { + console.log(e) + return (ctx.body = 'internal error') + } + + if (id === -1) { + return (ctx.body = 'internal error') + } + + return (ctx.body = { contentObjId: id }) + }) + router.put('/content-object', async function (ctx: Koa.Context) { + const { body } = ctx.request + const objId = body.objId + const description = body?.description || '' + const keywords = body?.keywords + const is_included = body?.is_included && true + const documentId = body?.documentId + + try { + await database.instance.editContentObj( + objId, + description, + keywords, + is_included, + documentId + ) + } catch (e) { + console.log(e) + return (ctx.body = 'internal error') + } + + return (ctx.body = 'ok') + }) + router.get('/content-object', async function (ctx: Koa.Context) { + const documentId = ctx.query.documentId + const contentObjects: any = await database.instance.getContentObjOfDocument( + documentId + ) + + return (ctx.body = contentObjects) + }) + router.delete('/content-object', async function (ctx: Koa.Context) { + const objId = ctx.query.objId + try { + await database.instance.removeContentObject(objId) + } catch (e) { + console.log(e) + return (ctx.body = 'internal error') + } + return (ctx.body = 'ok') + }) + + router.get('/document-store', async function (ctx: Koa.Context) { + const stores = await database.instance.getDocumentStores() + return (ctx.body = stores) + }) + router.get('/document-store/:name', async function (ctx: Koa.Context) { + const name = ctx.params.name + const store = await database.instance.getSingleDocumentStore(name) + return (ctx.body = store) + }) + router.post('/document-store', async function (ctx: Koa.Context) { + const name = ctx.request.body?.name || '' + let id = -1 + try { + id = await database.instance.addDocumentStore(name) + } catch (e) { + console.log(e) + return (ctx.body = 'internal error') + } + if (id === -1) return (ctx.body = 'internal error') + return (ctx.body = { documentStoreId: id }) + }) + router.put('/document-store', async function (ctx: Koa.Context) { + const storeId = ctx.request.body?.id + const name = ctx.request.body?.name || '' + try { + await database.instance.updateDocumentStore(storeId, name) + } catch (e) { + console.log(e) + return (ctx.body = 'internal error') + } + return (ctx.body = 'ok') + }) + router.delete('/document-store', async function (ctx: Koa.Context) { + const storeId = ctx.query.storeId + try { + await database.instance.removeDocumentStore(storeId) + } catch (e) { + console.log(e) + return (ctx.body = 'internal error') + } + return (ctx.body = 'ok') + }) + + app.use(router.routes()).use(router.allowedMethods()) + + app.use(async (ctx: Koa.Context, next: () => Promise) => { + try { + await next() + } catch (error) { + ctx.status = + error.statusCode || error.status || HttpStatus.INTERNAL_SERVER_ERROR + error.status = ctx.status + ctx.body = { error } + ctx.app.emit('error', error, ctx) + } + }) + + const PORT: number = Number(process.env.SEARCH_CORPUS_PORT) || 65531 + + app.listen(PORT, '0.0.0.0', () => { + console.log('Corpus Search Server listening on: 0.0.0.0:' + PORT) + }) +} + +export async function extractKeywords(input: string): Promise { + const keywords: string[] = [] + + const res = keyword_extractor.extract(input, { + language: 'english', + remove_digits: true, + return_changed_case: true, + remove_duplicates: true, + }) + + if (res.length == 0) { + return [] + } + + const result: any = await MakeModelRequest(input, 'flair/pos-english') + + for (let i = 0; i < res.length; i++) { + for (let j = 0; j < result.length; j++) { + if (result[j].word === res[i]) { + if ( + result[j].entity_group === 'NN' || + result[j].entity_group === 'NNS' + ) { + keywords.push(res[i]) + break + } + } + } + } + if (keywords.length === 0) { + return [] + } + + let totalLength = 0 + const respp: string[] = [] + for (let i = 0; i < keywords.length; i++) { + const weaviateResponse: any = await makeWeaviateRequest(keywords[i]) + + if (weaviateResponse.Paragraph.length > 0) { + const sum: any = await MakeModelRequest( + weaviateResponse.Paragraph[0].content, + 'facebook/bart-large-cnn' + ) + if (sum && sum.length > 0) { + totalLength += sum[0].summary_text.length + if (totalLength > 1000) { + return keywords + } + respp.push(keywords[i]) + } + } + } + return respp +} + +export async function MakeModelRequest( + inputs: any, + model: string, + parameters = {}, + options = { use_cache: false, wait_for_model: true } +) { + try { + const response = await axios.post( + `https://api-inference.huggingface.co/models/${model}`, + { inputs, parameters, options }, + { + headers: { + Authorization: `Bearer ${process.env.HF_API_KEY}`, + }, + } + ) + return await response.data + } catch (err) { + console.error(err) + return { success: false } + } +} +export const makeWeaviateRequest = async (keyword: string) => { + const res = await client.graphql + .get() + .withNearText({ + concepts: [keyword], + certainty: 0.75, + }) + .withClassName('Paragraph') + .withFields('title content inArticle { ... on Article { title } }') + .withLimit(3) + .do() + + if (res.data.Get !== undefined) { + return res.data.Get + } + return +} diff --git a/server/src/systems/videoConverter.ts b/server/src/systems/videoConverter.ts new file mode 100644 index 000000000..90c09394a --- /dev/null +++ b/server/src/systems/videoConverter.ts @@ -0,0 +1,15 @@ +//@ts-ignore +import m3u8toMp4 from 'm3u8-to-mp4' +import https from 'https' +import downloader from 'm3u8_multi_downloader' + +export async function convertToMp4(hls: string, output: string) { + console.log( + 'CONVERTING-----------------------------------------------------------' + ) + const converter = new m3u8toMp4() + await converter.setInputFile(hls).setOutputFile(output).start() + console.log( + 'CONVERTED-----------------------------------------------------------' + ) +} diff --git a/server/src/types.ts b/server/src/types.ts new file mode 100644 index 000000000..46bf26393 --- /dev/null +++ b/server/src/types.ts @@ -0,0 +1,41 @@ +import Koa from 'koa' + +export type Middleware = (ctx: Koa.Context, next: any) => any + +export type Method = + | 'get' + | 'head' + | 'post' + | 'put' + | 'delete' + | 'connect' + | 'options' + | 'trace' + | 'patch' + +export type Handler = (ctx: Koa.Context) => any + +export type Route = { + method?: Method + path: string + access: string | string[] | Middleware + middleware?: Middleware[] + handler?: Handler + get?: Handler + put?: Handler + post?: Handler + del?: Handler + delete?: Handler + head?: Handler + patch?: Handler +} + +// Go-inspired function return +export type GoFn = [ + boolean, // Ok + string | null, // Message + any // body +] + +// Elixir-inspired function return +export type ExFn = [true, any] | [false, string] diff --git a/server/src/utils/CustomError.ts b/server/src/utils/CustomError.ts new file mode 100644 index 000000000..60ce7cd17 --- /dev/null +++ b/server/src/utils/CustomError.ts @@ -0,0 +1,52 @@ +export type CustomErrorCodes = + | 'input-failed' + | 'server-error' + | 'not-found' + | 'open-ai-error' + | 'ai21-error' + | 'coreweave-error' + | 'forefront-error' + | 'authentication-error' + | `generation-model-error` + +// eslint-disable-next-line functional/no-class +export class CustomError extends Error { + public code: CustomErrorCodes + public message: string + public details?: string + public constructor( + code: CustomErrorCodes, + message: string, + details?: string + ) { + super() + /* eslint-disable functional/no-this-expression */ + this.code = code + this.message = message + this.details = details + /* eslint-enable functional/no-this-expression */ + } +} + +export const mapStatusCode = (customErrorCode: CustomErrorCodes) => { + switch (customErrorCode) { + case 'input-failed': + return 400 + case 'authentication-error': + return 401 + case 'not-found': + return 404 + case 'open-ai-error': + return 502 + case 'coreweave-error': + return 502 + case 'ai21-error': + return 502 + case 'forefront-error': + return 502 + case 'generation-model-error': + return 502 + case 'server-error': + return 500 + } +} diff --git a/server/src/utils/MakeCompletionRequest.ts b/server/src/utils/MakeCompletionRequest.ts new file mode 100644 index 000000000..cec9dac90 --- /dev/null +++ b/server/src/utils/MakeCompletionRequest.ts @@ -0,0 +1,122 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +//@ts-nocheck +import axios from 'axios' + +// TODO: Refactor and remove this, replace with Thoth completion node + +export async function MakeCompletionRequest( + data, + speaker, + agent, + type, + engine +) { + // if ((await database.instance.getConfig())['use_gptj']) { + // const params = { + // temperature: 0.8, + // repetition_penalty: 0.5, + // max_length: 500, + // return_full_text: false, + // max_new_tokens: 150, + // } + // const options = { + // wait_for_model: true, + // } + // const response = await makeModelRequest( + // data.prompt, + // 'EleutherAI/gpt-j-6B', + // params, + // options + // ) + // console.log('response', response.body) + // const responseModified = { + // success: true, + // choice: { text: response[0].generated_text.split('\n')[0] }, + // } + // return responseModified + // } else { + return await makeOpenAIGPT3Request(data, speaker, agent, type, engine) + // } +} +const useDebug = false +async function makeOpenAIGPT3Request(data, speaker, agent, type, engine) { + if (useDebug) return { success: true, choice: { text: 'Default response' } } + const API_KEY = process.env.OPENAI_API_KEY + const headers = { + 'Content-Type': 'application/json', + Authorization: 'Bearer ' + API_KEY, + } + try { + const gptEngine = engine ?? 'davinci' + const resp = await axios.post( + `https://api.openai.com/v1/engines/${gptEngine}/completions`, + data, + { headers: headers } + ) + + if (resp.data.choices && resp.data.choices.length > 0) { + const choice = resp.data.choices[0] + return { success: true, choice } + } + } catch (err) { + console.error(err) + return { success: false } + } +} + +export async function makeCompletion( + engine: string, + data: { + prompt: string + temperature: number + max_tokens: number + top_p: number + frequency_penalty: number + presence_penalty: number + stop: string[] + } +): Promise { + const API_KEY = + process.env.OPENAI_API_KEY + + const headers = { + 'Content-Type': 'application/json', + Authorization: 'Bearer ' + API_KEY, + } + + const _data = {} + _data.prompt = data.prompt + if (data.temperature && data.temperature !== undefined) { + _data.temperature = data.temperature + } + if (data.max_tokens && data.max_tokens !== undefined) { + _data.max_tokens = data.max_tokens + } + if (data.top_p && data.top_p !== undefined) { + _data.top_p = data.top_p + } + if (data.frequency_penalty && data.frequency_penalty !== undefined) { + _data.frequency_penalty = data.frequency_penalty + } + if (data.presence_penalty && data.presence_penalty !== undefined) { + _data.presence_penalty = data.presence_penalty + } + _data.stop = data.stop + + try { + const gptEngine = engine ?? 'davinci' + const resp = await axios.post( + `https://api.openai.com/v1/engines/${gptEngine}/completions`, + _data, + { headers: headers } + ) + + if (resp.data.choices && resp.data.choices.length > 0) { + const choice = resp.data.choices[0] + return { success: true, choice } + } + } catch (err) { + console.error(err) + return { success: false } + } +} \ No newline at end of file diff --git a/server/src/utils/MakeModelRequest.ts b/server/src/utils/MakeModelRequest.ts new file mode 100644 index 000000000..086ba15b6 --- /dev/null +++ b/server/src/utils/MakeModelRequest.ts @@ -0,0 +1,29 @@ +/* eslint-disable no-console */ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +//@ts-nocheck + +import axios from 'axios' + +//Model Request using the Hugging Face API (models can be found at -> https://huggingface.co/models) +export async function MakeModelRequest( + inputs, + model, + parameters = {}, + options = { use_cache: false, wait_for_model: true } +) { + try { + const response = await axios.post( + `https://api-inference.huggingface.co/models/${model}`, + { inputs, parameters, options }, + { + headers: { + Authorization: `Bearer ${process.env.HF_API_KEY}`, + }, + } + ) + return await response.data + } catch (err) { + console.error(err) + return { success: false } + } +} diff --git a/server/src/utils/base64.ts b/server/src/utils/base64.ts new file mode 100644 index 000000000..b6100149a --- /dev/null +++ b/server/src/utils/base64.ts @@ -0,0 +1,7 @@ +// const encode64 = (str: string): string => { +// return Buffer.from(str, 'utf-8').toString('base64') +// } + +export const decode64 = (str: string): string => { + return Buffer.from(str, 'base64').toString('utf-8') +} diff --git a/server/src/utils/crypt.ts b/server/src/utils/crypt.ts new file mode 100644 index 000000000..40f9569a1 --- /dev/null +++ b/server/src/utils/crypt.ts @@ -0,0 +1,37 @@ +import cryptojs from 'crypto-js' + +const key = `${process.env.AES_KEY}` +const iv = `${process.env.AES_IV}` +const OLD_KEY = `,cf&Vzp3,QA9XJNPf0!X$%~tpw%meD_{vZwGJvWPN}E{4Dw^*qChQkEWt_TDyZ4` + +export const encrypt = (str: string): string => { + const enc = cryptojs.AES.encrypt(str, key, { + iv: cryptojs.enc.Utf8.parse(iv), + }) + const words = cryptojs.enc.Utf8.parse(`${enc}`) + return cryptojs.enc.Base64.stringify(words) +} + +export const decrypt = (str: string): string => { + const b64 = cryptojs.enc.Base64.parse(str) + const words = cryptojs.enc.Utf8.stringify(b64) + try { + const dec = cryptojs.AES.decrypt(words, key, { + iv: cryptojs.enc.Utf8.parse(iv), + }) + if (!dec || dec.toString(cryptojs.enc.Utf8) === '') { + // Try the old key on error + const dec2 = cryptojs.AES.decrypt(words, OLD_KEY, { + iv: cryptojs.enc.Utf8.parse(iv), + }) + return dec2.toString(cryptojs.enc.Utf8) + } + return dec.toString(cryptojs.enc.Utf8) + } catch (error) { + // Try the old key on error + const dec = cryptojs.AES.decrypt(words, OLD_KEY, { + iv: cryptojs.enc.Utf8.parse(iv), + }) + return dec.toString(cryptojs.enc.Utf8) + } +} diff --git a/server/src/utils/respond.ts b/server/src/utils/respond.ts new file mode 100644 index 000000000..a6fdce388 --- /dev/null +++ b/server/src/utils/respond.ts @@ -0,0 +1,6 @@ +import { Context } from 'koa' + +export const respond = (ctx: Context, status: number, msg: string) => { + ctx.status = status + ctx.body = msg +} diff --git a/server/src/utils/utils.ts b/server/src/utils/utils.ts new file mode 100644 index 000000000..1663a6b35 --- /dev/null +++ b/server/src/utils/utils.ts @@ -0,0 +1,167 @@ +const punctRE = + /[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>?@\[\]^_`{|}~]/g +const spaceRE = /\s+/g +import nlp from 'compromise' +import { + isBoolean, + isDate, + isEmpty, + isNull, + isNumber, + isString, + isUndefined, +} from 'lodash' + +export function removePunctuation(str: string): string { + return str.replace(punctRE, '').replace(spaceRE, ' ') +} + +export function simplifyWords(words: string[]): string[] { + for (let i = 0; i < words.length; i++) { + const doc = nlp(words[i]) + doc.nouns().toSingular().toLowerCase() + doc.verbs().toPresentTense().toLowerCase() + words[i] = doc.text() + } + + return words +} + +export function includeInFields(arr: string[], words: string[]): number { + let count = 0 + for (let i = 0; i < words.length; i++) { + let filtered = arr.filter(el => el.includes(words[i])) + if (filtered.length) count++ + } + return count +} + +export function removeEmojisFromString(str: string): string { + return str + .replace( + /(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC69\uDC6E\uDC70-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD26\uDD30-\uDD39\uDD3D\uDD3E\uDDD1-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])?|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDEEB\uDEEC\uDEF4-\uDEF8]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD4C\uDD50-\uDD6B\uDD80-\uDD97\uDDC0\uDDD0-\uDDE6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEF8]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD4C\uDD50-\uDD6B\uDD80-\uDD97\uDDC0\uDDD0-\uDDE6])\uFE0F/g, + '' + ) + .replace(/:(.*?):/g, '') +} + +export const isValidObject = (obj: any): boolean => { + return obj && Object.keys(obj).length > 0 +} + +export const isValidArray = (arr: any): boolean => { + return arr && Array.isArray(arr) && arr.length > 0 +} + +export const isValidObjectWithValues = ( + obj: any, + skipKeys: string[] +): boolean => { + let isValid = true + + if (isValidObject(obj)) { + Object.entries(obj).forEach(([key, value]: any) => { + if (!skipKeys.includes(key)) { + if ( + (!isNumber(value) && !isBoolean(value) && isEmpty(value)) || + (!isNumber(value) && !isBoolean(value) && isUndefined(value)) + ) { + isValid = false + } else if ( + typeof value === 'string' && + isString(value) && + (value.length === 0 || value.charAt(0) === ' ') + ) { + isValid = false + } else if (typeof value === 'object') { + if (!(isValidArray(value) || isValidObject(value))) { + isValid = false + } + } else if (typeof value === 'number' && !Number.isInteger(value)) { + isValid = false + } + } + }) + return isValid + } + return false +} + +export const validBodyFieldsForUpdate = (obj: any, skipKeys: string[]): any => { + let newObj: any = {} + + if (isValidObject(obj)) { + const keys = Object.keys(obj) + + for (let index = 0; index < keys.length; index++) { + let isValid = true + const value = obj[keys[index]] + if (!skipKeys.includes(keys[index])) { + if (!isNumber(value) && !isBoolean(value) && isEmpty(value)) { + isValid = false + } else if ( + !isNumber(value) && + !isBoolean(value) && + isUndefined(value) + ) { + isValid = false + } else if ( + isString(value) && + (value.length === 0 || value.charAt(0) === ' ') + ) { + isValid = false + } else if (typeof value === 'object') { + if (!(isValidArray(value) || isValidObject(value))) { + isValid = false + } + } else if (isNumber(value) && value === 0) { + isValid = false + } else if (isNull(value)) { + isValid = false + } + } + + if (isValid) { + newObj[keys[index]] = value + } + } + } + return { ...newObj } +} + +export const makeResponse = (message: string, body: any) => { + if (isValidArray(body)) { + return { message, payload: body } + } + + if (isValidObject(body)) { + return { message, payload: [body] } + } + + return { message, payload: [] } +} + +export const makeUpdateQuery = ({ table, wheres, cols }: any): string => { + // Setup static beginning of query + let query = [`UPDATE ${table}`] + query.push('SET') + + // Create another array storing each set command + // and assigning a number value for parameterized query + let set: any = [] + cols.forEach(function (col: any, i: number) { + set.push(col + ' = ($' + (i + 1) + ')') + }) + query.push(set.join(', ')) + + query.push('WHERE') + + // Add the WHERE statement to look up by id + Object.entries(wheres).forEach(([key, value]: any, index: number) => { + if (index === 0) query.push(` ${key} = ` + value) + if (index > 0) query.push(`AND ${key} = ` + value) + }) + + // Return a complete query string + return query.join(' ') +} diff --git a/server/tsconfig.json b/server/tsconfig.json new file mode 100644 index 000000000..ffdb6affb --- /dev/null +++ b/server/tsconfig.json @@ -0,0 +1,38 @@ +{ + "compileOnSave": true, + "compilerOptions": { + "experimentalDecorators": true, + "allowJs": true, + "jsx": "react-jsx", + + "allowUnreachableCode": false, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "moduleResolution": "node", + "module": "commonjs", + "outDir": "dist", + "removeComments": true, + "skipLibCheck": true, + "sourceMap": true, + "target": "ES2021", + "typeRoots": ["./@types", "node_modules/@types"], + "types": ["node", "jest"], + "baseUrl": ".", + "paths": { + "gpt-3-encoder": ["@types/gpt-3-encoder.d.ts"], + "ot-json0": ["@types/ot-json0.d.ts"], + "@latitudegames/thoth-core": ["@types/thoth-core.d.ts"] + }, + "noImplicitAny": true, + "strictNullChecks": true + }, + "include": [ + "hocs/**/*.ts", + "jobs/**/*.ts", + "src/**/*.ts", + "@types/**/*.d.ts", + "__tests__/**/*.ts", + "index.ts" + ] +} diff --git a/sharedb/package.json b/sharedb/package.json index cd2190e16..c2b3118ef 100644 --- a/sharedb/package.json +++ b/sharedb/package.json @@ -1,5 +1,5 @@ { - "name": "@thoth/sharedb", + "name": "@latitudegames/thoth-sharedb", "version": "1.0.0", "description": "", "main": "index.js", diff --git a/tsconfig.json b/tsconfig.json index 68ff11207..b1be64a90 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], + "target": "ES2021", + "lib": ["dom", "dom.iterable", "es2021"], "sourceMap": true, "allowJs": true, "skipLibCheck": true, diff --git a/yarn.lock b/yarn.lock index cdba74c4f..97be51d2d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,947 +2,1066 @@ # yarn lockfile v1 -"@auto-it/bot-list@10.32.0": - version "10.32.0" - resolved "https://registry.yarnpkg.com/@auto-it/bot-list/-/bot-list-10.32.0.tgz#3614b5fd04041f486b62fea98cc137ec83dc2f98" - integrity sha512-W04OgTRHXpgorZRojYZ36AT54uUYqzsFnBm6FaAgVqGS2d5zS1CvyOBzH+rgYN38709suSWNK/xQYbua6ycoVA== - -"@auto-it/core@10.32.0": - version "10.32.0" - resolved "https://registry.yarnpkg.com/@auto-it/core/-/core-10.32.0.tgz#d0d4c54878b7c1d5c5a926e304b9d652b2ee8059" - integrity sha512-xx1lldpBT23W2sHv63UhpxlRy7WvAazrp0ZFnQ/n7JQL1x81kuHSs8trlnpa/G+R7fdATTJU5R6yr8vGz03FpQ== - dependencies: - "@auto-it/bot-list" "10.32.0" +"@2toad/profanity@^1.3.1": + "integrity" "sha512-e5Ne0y/NWcRGUtrxV6BRpOzi5BTZ8hkG0dnrNwJu9NiwQvVS+4/2XGMZocNykJzaBQ80yabjJ8yxW749gg/Viw==" + "resolved" "https://registry.npmjs.org/@2toad/profanity/-/profanity-1.3.1.tgz" + "version" "1.3.1" + +"@ampproject/remapping@^2.1.0": + "integrity" "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==" + "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@apidevtools/json-schema-ref-parser@^9.0.6": + "integrity" "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==" + "resolved" "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz" + "version" "9.0.9" + dependencies: + "@jsdevtools/ono" "^7.1.3" + "@types/json-schema" "^7.0.6" + "call-me-maybe" "^1.0.1" + "js-yaml" "^4.1.0" + +"@apidevtools/openapi-schemas@^2.0.4": + "integrity" "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==" + "resolved" "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz" + "version" "2.1.0" + +"@apidevtools/swagger-cli@4.0.4": + "integrity" "sha512-hdDT3B6GLVovCsRZYDi3+wMcB1HfetTU20l2DC8zD3iFRNMC6QNAZG5fo/6PYeHWBEv7ri4MvnlKodhNB0nt7g==" + "resolved" "https://registry.npmjs.org/@apidevtools/swagger-cli/-/swagger-cli-4.0.4.tgz" + "version" "4.0.4" + dependencies: + "@apidevtools/swagger-parser" "^10.0.1" + "chalk" "^4.1.0" + "js-yaml" "^3.14.0" + "yargs" "^15.4.1" + +"@apidevtools/swagger-methods@^3.0.2": + "integrity" "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==" + "resolved" "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz" + "version" "3.0.2" + +"@apidevtools/swagger-parser@^10.0.1": + "integrity" "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==" + "resolved" "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz" + "version" "10.0.3" + dependencies: + "@apidevtools/json-schema-ref-parser" "^9.0.6" + "@apidevtools/openapi-schemas" "^2.0.4" + "@apidevtools/swagger-methods" "^3.0.2" + "@jsdevtools/ono" "^7.1.3" + "call-me-maybe" "^1.0.1" + "z-schema" "^5.0.1" + +"@auto-it/bot-list@10.36.5": + "integrity" "sha512-nEXcOa8UVHYzVdszPKTGldoE2h1mI2RvrHpqtOpjTNuUOy3eb8QuaAu8nSI2AsUPEWFToPLgdxgz90iAeDInRg==" + "resolved" "https://registry.npmjs.org/@auto-it/bot-list/-/bot-list-10.36.5.tgz" + "version" "10.36.5" + +"@auto-it/core@10.36.5": + "integrity" "sha512-muA7V4oKl5EYt7xzuuQp1qyXjUIapUn5XRj9fHgDrFcHseQhOZLJjjmPXI7W6NVZ9AGW98eq7xcQzbg/VC1HSg==" + "resolved" "https://registry.npmjs.org/@auto-it/core/-/core-10.36.5.tgz" + "version" "10.36.5" + dependencies: + "@auto-it/bot-list" "10.36.5" "@endemolshinegroup/cosmiconfig-typescript-loader" "^3.0.2" - "@octokit/plugin-enterprise-compatibility" "^1.2.2" - "@octokit/plugin-retry" "^3.0.1" - "@octokit/plugin-throttling" "^3.2.0" - "@octokit/rest" "^18.0.0" - await-to-js "^3.0.0" - chalk "^4.0.0" - cosmiconfig "7.0.0" - deepmerge "^4.0.0" - dotenv "^8.0.0" - endent "^2.0.1" - enquirer "^2.3.4" - env-ci "^5.0.1" - fast-glob "^3.1.1" - fp-ts "^2.5.3" - fromentries "^1.2.0" - gitlog "^4.0.3" - https-proxy-agent "^5.0.0" - import-cwd "^3.0.0" - import-from "^3.0.0" - io-ts "^2.1.2" - lodash.chunk "^4.2.0" - log-symbols "^4.0.0" - node-fetch "2.6.1" - parse-author "^2.0.0" - parse-github-url "1.0.2" - pretty-ms "^7.0.0" - requireg "^0.2.2" - semver "^7.0.0" - signale "^1.4.0" - tapable "^2.2.0" - terminal-link "^2.1.1" - tinycolor2 "^1.4.1" - ts-node "^9.1.1" - tslib "2.1.0" - type-fest "^0.21.1" - typescript-memoize "^1.0.0-alpha.3" - url-join "^4.0.0" - -"@auto-it/npm@10.32.0": - version "10.32.0" - resolved "https://registry.yarnpkg.com/@auto-it/npm/-/npm-10.32.0.tgz#ff0c70690ba007a9cd2338e5162b06d58092fc7a" - integrity sha512-sI3QVzZE9GVzzC5+ds39elC8EPk4RVgkXyPmat8Tp67pGh9haSJi3H2hXwijZVkrEmwC0PZcC0imEx+PRb8L+g== - dependencies: - "@auto-it/core" "10.32.0" - "@auto-it/package-json-utils" "10.32.0" - await-to-js "^3.0.0" - endent "^2.0.1" - env-ci "^5.0.1" - fp-ts "^2.5.3" - get-monorepo-packages "^1.1.0" - io-ts "^2.1.2" - registry-url "^5.1.0" - semver "^7.0.0" - tslib "2.1.0" - typescript-memoize "^1.0.0-alpha.3" - url-join "^4.0.0" - user-home "^2.0.0" - -"@auto-it/package-json-utils@10.32.0": - version "10.32.0" - resolved "https://registry.yarnpkg.com/@auto-it/package-json-utils/-/package-json-utils-10.32.0.tgz#c9a479cb2becac139821f525aab0973170cde40a" - integrity sha512-XSlHt4SOxp3XClzxJdrK/BUt4ix3k4zvZGQGN/3fLp9Z+2vm5/VTuyCqvMnqrvNyWt8POvBbeTIqYDnMUIQPkg== - dependencies: - parse-author "^2.0.0" - parse-github-url "1.0.2" - -"@auto-it/released@10.32.0": - version "10.32.0" - resolved "https://registry.yarnpkg.com/@auto-it/released/-/released-10.32.0.tgz#2164fff6057b32db5921282b0166b282fd182a3b" - integrity sha512-7OfjcgdCz1otdH1JcsUOvbFQeQRyG7d6fv0G1bPUVoEo5wWzJGdcPrFTKQOmeypeyVyG2uMBnJMfUJkZDE77PQ== - dependencies: - "@auto-it/bot-list" "10.32.0" - "@auto-it/core" "10.32.0" - deepmerge "^4.0.0" - fp-ts "^2.5.3" - io-ts "^2.1.2" - tslib "2.1.0" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" - integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== - -"@babel/core@^7.1.0", "@babel/core@^7.6.0", "@babel/core@^7.7.2", "@babel/core@^7.7.5": - version "7.15.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" - integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helpers" "^7.15.4" - "@babel/parser" "^7.15.5" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/generator@^7.15.4", "@babel/generator@^7.7.2": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0" - integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw== - dependencies: - "@babel/types" "^7.15.4" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835" - integrity sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz#21ad815f609b84ee0e3058676c33cf6d1670525f" - integrity sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9" - integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ== - dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e" - integrity sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - -"@babel/helper-create-regexp-features-plugin@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4" - integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - regexpu-core "^4.7.1" - -"@babel/helper-define-polyfill-provider@^0.2.2": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" - integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== + "@octokit/plugin-enterprise-compatibility" "1.3.0" + "@octokit/plugin-retry" "^3.0.9" + "@octokit/plugin-throttling" "^3.6.2" + "@octokit/rest" "^18.12.0" + "await-to-js" "^3.0.0" + "chalk" "^4.0.0" + "cosmiconfig" "7.0.0" + "deepmerge" "^4.0.0" + "dotenv" "^8.0.0" + "endent" "^2.1.0" + "enquirer" "^2.3.4" + "env-ci" "^5.0.1" + "fast-glob" "^3.1.1" + "fp-ts" "^2.5.3" + "fromentries" "^1.2.0" + "gitlog" "^4.0.3" + "https-proxy-agent" "^5.0.0" + "import-cwd" "^3.0.0" + "import-from" "^3.0.0" + "io-ts" "^2.1.2" + "lodash.chunk" "^4.2.0" + "log-symbols" "^4.0.0" + "node-fetch" "2.6.7" + "parse-author" "^2.0.0" + "parse-github-url" "1.0.2" + "pretty-ms" "^7.0.0" + "requireg" "^0.2.2" + "semver" "^7.0.0" + "signale" "^1.4.0" + "tapable" "^2.2.0" + "terminal-link" "^2.1.1" + "tinycolor2" "^1.4.1" + "ts-node" "^9.1.1" + "tslib" "2.1.0" + "type-fest" "^0.21.1" + "typescript-memoize" "^1.0.0-alpha.3" + "url-join" "^4.0.0" + +"@auto-it/npm@10.36.5": + "integrity" "sha512-Tct2LxqECJR/kG2+yAlJFi5NtE+JqfoO48hGOAk94sZvET29jWN8hln1eHPI2SIA1a1VOddQsSHbCEbGzrgTeg==" + "resolved" "https://registry.npmjs.org/@auto-it/npm/-/npm-10.36.5.tgz" + "version" "10.36.5" + dependencies: + "@auto-it/core" "10.36.5" + "@auto-it/package-json-utils" "10.36.5" + "await-to-js" "^3.0.0" + "endent" "^2.1.0" + "env-ci" "^5.0.1" + "fp-ts" "^2.5.3" + "get-monorepo-packages" "^1.1.0" + "io-ts" "^2.1.2" + "registry-url" "^5.1.0" + "semver" "^7.0.0" + "tslib" "2.1.0" + "typescript-memoize" "^1.0.0-alpha.3" + "url-join" "^4.0.0" + "user-home" "^2.0.0" + +"@auto-it/package-json-utils@10.36.5": + "integrity" "sha512-rS0RjNj3dO/YUsyTdXxmjzvfdaXBQaChxQUful2LCHMoFPuAzlh7Sk8HGR/h1tp5NVw3998GwaglCENSpEIFYA==" + "resolved" "https://registry.npmjs.org/@auto-it/package-json-utils/-/package-json-utils-10.36.5.tgz" + "version" "10.36.5" + dependencies: + "parse-author" "^2.0.0" + "parse-github-url" "1.0.2" + +"@auto-it/released@10.36.5": + "integrity" "sha512-dbSxtnjSlPVy1D/BBZw2DW3aSVVvujebS32zaiPzy6gsvvkwlzavpm1iuG5jfmdo5Ai490CGcIePMWbhZ7lqXA==" + "resolved" "https://registry.npmjs.org/@auto-it/released/-/released-10.36.5.tgz" + "version" "10.36.5" + dependencies: + "@auto-it/bot-list" "10.36.5" + "@auto-it/core" "10.36.5" + "deepmerge" "^4.0.0" + "fp-ts" "^2.5.3" + "io-ts" "^2.1.2" + "tslib" "2.1.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7": + "integrity" "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==" + "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz" + "version" "7.16.7" + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/code-frame@7.12.11": + "integrity" "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==" + "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" + "version" "7.12.11" + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.7": + "integrity" "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==" + "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz" + "version" "7.17.7" + +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.6.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0", "@babel/core@^7.9.6": + "integrity" "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==" + "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz" + "version" "7.17.9" + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.9" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.9" + "@babel/parser" "^7.17.9" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.9" + "@babel/types" "^7.17.0" + "convert-source-map" "^1.7.0" + "debug" "^4.1.0" + "gensync" "^1.0.0-beta.2" + "json5" "^2.2.1" + "semver" "^6.3.0" + +"@babel/generator@^7.14.2": + "integrity" "sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA==" + "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.14.3.tgz" + "version" "7.14.3" + dependencies: + "@babel/types" "^7.14.2" + "jsesc" "^2.5.1" + "source-map" "^0.5.0" + +"@babel/generator@^7.17.9", "@babel/generator@^7.7.2": + "integrity" "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==" + "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz" + "version" "7.17.9" + dependencies: + "@babel/types" "^7.17.0" + "jsesc" "^2.5.1" + "source-map" "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.0.0": + "integrity" "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==" + "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz" + "version" "7.12.13" + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-annotate-as-pure@^7.16.7": + "integrity" "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==" + "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz" + "version" "7.16.7" + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + "integrity" "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==" + "resolved" "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz" + "version" "7.16.7" + dependencies: + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.7": + "integrity" "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==" + "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz" + "version" "7.17.7" + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-validator-option" "^7.16.7" + "browserslist" "^4.17.5" + "semver" "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": + "integrity" "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz" + "version" "7.17.9" + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + +"@babel/helper-create-regexp-features-plugin@^7.16.7": + "integrity" "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==" + "resolved" "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz" + "version" "7.17.0" + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "regexpu-core" "^5.0.1" + +"@babel/helper-define-polyfill-provider@^0.3.1": + "integrity" "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==" + "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz" + "version" "0.3.1" dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" "@babel/helper-plugin-utils" "^7.13.0" "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-explode-assignable-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz#f9aec9d219f271eaf92b9f561598ca6b2682600c" - integrity sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-function-name@^7.14.5", "@babel/helper-function-name@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" - integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== - dependencies: - "@babel/helper-get-function-arity" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-get-function-arity@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" - integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-hoist-variables@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" - integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-member-expression-to-functions@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" - integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" - integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz#7da80c8cbc1f02655d83f8b79d25866afe50d226" - integrity sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw== - dependencies: - "@babel/helper-module-imports" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-simple-access" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/helper-validator-identifier" "^7.15.7" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.6" - -"@babel/helper-optimise-call-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" - integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" - integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== - -"@babel/helper-plugin-utils@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" - integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== - -"@babel/helper-remap-async-to-generator@^7.14.5", "@babel/helper-remap-async-to-generator@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz#2637c0731e4c90fbf58ac58b50b2b5a192fc970f" - integrity sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-wrap-function" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-replace-supers@^7.14.5", "@babel/helper-replace-supers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" - integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-simple-access@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" - integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb" - integrity sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-split-export-declaration@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" - integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== - -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@babel/helper-wrap-function@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz#6f754b2446cfaf3d612523e6ab8d79c27c3a3de7" - integrity sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw== - dependencies: - "@babel/helper-function-name" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helpers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43" - integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ== - dependencies: - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.15.4", "@babel/parser@^7.15.5", "@babel/parser@^7.7.2": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae" - integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g== - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e" - integrity sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog== + "debug" "^4.1.1" + "lodash.debounce" "^4.0.8" + "resolve" "^1.14.2" + "semver" "^6.1.2" + +"@babel/helper-environment-visitor@^7.16.7": + "integrity" "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==" + "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz" + "version" "7.16.7" + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-explode-assignable-expression@^7.16.7": + "integrity" "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz" + "version" "7.16.7" + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-function-name@^7.14.2": + "integrity" "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz" + "version" "7.14.2" + dependencies: + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.14.2" + +"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": + "integrity" "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==" + "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz" + "version" "7.17.9" + dependencies: + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" + +"@babel/helper-get-function-arity@^7.12.13": + "integrity" "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==" + "resolved" "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz" + "version" "7.12.13" + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-hoist-variables@^7.16.7": + "integrity" "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==" + "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz" + "version" "7.16.7" + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-member-expression-to-functions@^7.16.7", "@babel/helper-member-expression-to-functions@^7.17.7": + "integrity" "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==" + "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz" + "version" "7.17.7" + dependencies: + "@babel/types" "^7.17.0" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": + "integrity" "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz" + "version" "7.16.7" + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": + "integrity" "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz" + "version" "7.17.7" + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + +"@babel/helper-optimise-call-expression@^7.16.7": + "integrity" "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==" + "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz" + "version" "7.16.7" + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + "integrity" "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==" + "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz" + "version" "7.16.7" + +"@babel/helper-remap-async-to-generator@^7.16.8": + "integrity" "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==" + "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz" + "version" "7.16.8" + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helper-replace-supers@^7.16.7": + "integrity" "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==" + "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz" + "version" "7.16.7" + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-simple-access@^7.17.7": + "integrity" "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==" + "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz" + "version" "7.17.7" + dependencies: + "@babel/types" "^7.17.0" + +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + "integrity" "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==" + "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz" + "version" "7.16.0" + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-split-export-declaration@^7.12.13": + "integrity" "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==" + "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz" + "version" "7.12.13" + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-split-export-declaration@^7.16.7": + "integrity" "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==" + "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz" + "version" "7.16.7" + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-validator-identifier@^7.14.0": + "integrity" "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz" + "version" "7.14.0" + +"@babel/helper-validator-identifier@^7.16.7": + "integrity" "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz" + "version" "7.16.7" + +"@babel/helper-validator-option@^7.16.7": + "integrity" "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz" + "version" "7.16.7" + +"@babel/helper-wrap-function@^7.16.8": + "integrity" "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==" + "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz" + "version" "7.16.8" + dependencies: + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helpers@^7.17.9": + "integrity" "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==" + "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz" + "version" "7.17.9" + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.9" + "@babel/types" "^7.17.0" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7": + "integrity" "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==" + "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz" + "version" "7.17.9" + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + "chalk" "^2.0.0" + "js-tokens" "^4.0.0" + +"@babel/highlight@^7.12.13": + "integrity" "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==" + "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz" + "version" "7.14.0" + dependencies: + "@babel/helper-validator-identifier" "^7.14.0" + "chalk" "^2.0.0" + "js-tokens" "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9": + "integrity" "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==" + "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz" + "version" "7.17.9" + +"@babel/parser@^7.12.13", "@babel/parser@^7.14.2": + "integrity" "sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA==" + "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.14.4.tgz" + "version" "7.14.4" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": + "integrity" "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": + "integrity" "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz" + "version" "7.16.7" + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" "@babel/plugin-external-helpers@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-external-helpers/-/plugin-external-helpers-7.14.5.tgz#920baa1569a8df5d5710abc342c7b1ac8968ed76" - integrity sha512-q/B/hLX+nDGk73Xn529d7Ar4ih17J8pNBbsXafq8oXij0XfFEA/bks+u+6q5q04zO5o/qivjzui6BqzPfYShEg== + "integrity" "sha512-3MvRbPgl957CR3ZMeW/ukGrKDM3+m5vtTkgrBAKKbUgrAkb1molwjRqUvAYsCnwboN1vXgHStotdhAvTgQS/Gw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-async-generator-functions@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.4.tgz#f82aabe96c135d2ceaa917feb9f5fca31635277e" - integrity sha512-2zt2g5vTXpMC3OmK6uyjvdXptbhBXfA77XGrd3gh93zwG8lZYBLOBImiGBEG0RANu3JqKEACCz5CGk73OJROBw== +"@babel/plugin-proposal-async-generator-functions@^7.16.8": + "integrity" "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz" + "version" "7.16.8" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.15.4" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" - integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== +"@babel/plugin-proposal-class-properties@^7.14.5", "@babel/plugin-proposal-class-properties@^7.16.7": + "integrity" "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-class-static-block@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz#3e7ca6128453c089e8b477a99f970c63fc1cb8d7" - integrity sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA== +"@babel/plugin-proposal-class-static-block@^7.16.7": + "integrity" "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz" + "version" "7.17.6" dependencies: - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.17.6" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-dynamic-import@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c" - integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== +"@babel/plugin-proposal-dynamic-import@^7.16.7": + "integrity" "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76" - integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA== +"@babel/plugin-proposal-export-namespace-from@^7.16.7": + "integrity" "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" - integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== +"@babel/plugin-proposal-json-strings@^7.16.7": + "integrity" "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738" - integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw== +"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": + "integrity" "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" - integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": + "integrity" "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" - integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg== +"@babel/plugin-proposal-numeric-separator@^7.16.7": + "integrity" "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.15.6": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz#ef68050c8703d07b25af402cb96cf7f34a68ed11" - integrity sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg== +"@babel/plugin-proposal-object-rest-spread@^7.15.6", "@babel/plugin-proposal-object-rest-spread@^7.16.7": + "integrity" "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz" + "version" "7.17.3" dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/compat-data" "^7.17.0" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.15.4" + "@babel/plugin-transform-parameters" "^7.16.7" -"@babel/plugin-proposal-optional-catch-binding@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" - integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== +"@babel/plugin-proposal-optional-catch-binding@^7.16.7": + "integrity" "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" - integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== +"@babel/plugin-proposal-optional-chaining@^7.16.7": + "integrity" "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" - integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== +"@babel/plugin-proposal-private-methods@^7.16.11": + "integrity" "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz" + "version" "7.16.11" dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.10" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-private-property-in-object@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz#55c5e3b4d0261fd44fe637e3f624cfb0f484e3e5" - integrity sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA== +"@babel/plugin-proposal-private-property-in-object@^7.16.7": + "integrity" "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" - integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== +"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + "integrity" "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + "integrity" "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + "version" "7.8.4" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + "integrity" "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + "integrity" "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + "version" "7.12.13" dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + "integrity" "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + "integrity" "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + "integrity" "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== +"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": + "integrity" "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + "version" "7.10.4" dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + "integrity" "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.12.13": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" - integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== +"@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.16.7": + "integrity" "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz" + "version" "7.16.7" dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-syntax-jsx@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" - integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + "integrity" "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + "version" "7.10.4" dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + "integrity" "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + "integrity" "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + "version" "7.10.4" dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + "integrity" "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + "integrity" "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + "integrity" "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + "integrity" "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.14.5", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716" - integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== +"@babel/plugin-syntax-typescript@^7.16.7", "@babel/plugin-syntax-typescript@^7.7.2": + "integrity" "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-arrow-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" - integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== +"@babel/plugin-transform-arrow-functions@^7.16.7": + "integrity" "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" - integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== +"@babel/plugin-transform-async-to-generator@^7.16.8": + "integrity" "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz" + "version" "7.16.8" dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" -"@babel/plugin-transform-block-scoped-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" - integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== +"@babel/plugin-transform-block-scoped-functions@^7.16.7": + "integrity" "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-block-scoping@^7.15.3": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" - integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q== +"@babel/plugin-transform-block-scoping@^7.16.7": + "integrity" "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-classes@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz#50aee17aaf7f332ae44e3bce4c2e10534d5d3bf1" - integrity sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg== +"@babel/plugin-transform-classes@^7.16.7": + "integrity" "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - globals "^11.1.0" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "globals" "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" - integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== +"@babel/plugin-transform-computed-properties@^7.16.7": + "integrity" "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-destructuring@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" - integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== +"@babel/plugin-transform-destructuring@^7.16.7": + "integrity" "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz" + "version" "7.17.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" - integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== +"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": + "integrity" "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-duplicate-keys@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" - integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== +"@babel/plugin-transform-duplicate-keys@^7.16.7": + "integrity" "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-exponentiation-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" - integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== +"@babel/plugin-transform-exponentiation-operator@^7.16.7": + "integrity" "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-for-of@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz#25c62cce2718cfb29715f416e75d5263fb36a8c2" - integrity sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA== +"@babel/plugin-transform-for-of@^7.16.7": + "integrity" "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" - integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== +"@babel/plugin-transform-function-name@^7.16.7": + "integrity" "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" - integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== +"@babel/plugin-transform-literals@^7.16.7": + "integrity" "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-member-expression-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" - integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== +"@babel/plugin-transform-member-expression-literals@^7.16.7": + "integrity" "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-modules-amd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" - integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== +"@babel/plugin-transform-modules-amd@^7.16.7": + "integrity" "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "babel-plugin-dynamic-import-node" "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1" - integrity sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA== +"@babel/plugin-transform-modules-commonjs@^7.16.8": + "integrity" "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz" + "version" "7.17.9" dependencies: - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.15.4" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "babel-plugin-dynamic-import-node" "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz#b42890c7349a78c827719f1d2d0cd38c7d268132" - integrity sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw== +"@babel/plugin-transform-modules-systemjs@^7.16.7": + "integrity" "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz" + "version" "7.17.8" dependencies: - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.9" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "babel-plugin-dynamic-import-node" "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" - integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== +"@babel/plugin-transform-modules-umd@^7.16.7": + "integrity" "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz#c68f5c5d12d2ebaba3762e57c2c4f6347a46e7b2" - integrity sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": + "integrity" "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz" + "version" "7.16.8" dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" -"@babel/plugin-transform-new-target@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" - integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== +"@babel/plugin-transform-new-target@^7.16.7": + "integrity" "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-object-super@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" - integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== +"@babel/plugin-transform-object-super@^7.16.7": + "integrity" "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" -"@babel/plugin-transform-parameters@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz#5f2285cc3160bf48c8502432716b48504d29ed62" - integrity sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ== +"@babel/plugin-transform-parameters@^7.16.7": + "integrity" "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-property-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" - integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== +"@babel/plugin-transform-property-literals@^7.16.7": + "integrity" "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-react-display-name@^7.14.5": - version "7.15.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz#6aaac6099f1fcf6589d35ae6be1b6e10c8c602b9" - integrity sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q== +"@babel/plugin-transform-react-display-name@^7.16.7": + "integrity" "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-react-jsx-development@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz#1a6c73e2f7ed2c42eebc3d2ad60b0c7494fcb9af" - integrity sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ== +"@babel/plugin-transform-react-jsx-development@^7.16.7": + "integrity" "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/plugin-transform-react-jsx" "^7.14.5" + "@babel/plugin-transform-react-jsx" "^7.16.7" -"@babel/plugin-transform-react-jsx@^7.14.5": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz#3314b2163033abac5200a869c4de242cd50a914c" - integrity sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw== +"@babel/plugin-transform-react-jsx@^7.16.7": + "integrity" "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz" + "version" "7.17.3" dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-jsx" "^7.14.5" - "@babel/types" "^7.14.9" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-jsx" "^7.16.7" + "@babel/types" "^7.17.0" -"@babel/plugin-transform-react-pure-annotations@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz#18de612b84021e3a9802cbc212c9d9f46d0d11fc" - integrity sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g== +"@babel/plugin-transform-react-pure-annotations@^7.16.7": + "integrity" "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-regenerator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f" - integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== +"@babel/plugin-transform-regenerator@^7.16.7": + "integrity" "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz" + "version" "7.17.9" dependencies: - regenerator-transform "^0.14.2" + "regenerator-transform" "^0.15.0" -"@babel/plugin-transform-reserved-words@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" - integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== +"@babel/plugin-transform-reserved-words@^7.16.7": + "integrity" "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-shorthand-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" - integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== +"@babel/plugin-transform-shorthand-properties@^7.16.7": + "integrity" "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-spread@^7.14.6": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz#6bd40e57fe7de94aa904851963b5616652f73144" - integrity sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag== +"@babel/plugin-transform-spread@^7.16.7": + "integrity" "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" -"@babel/plugin-transform-sticky-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" - integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== +"@babel/plugin-transform-sticky-regex@^7.16.7": + "integrity" "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-template-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" - integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== +"@babel/plugin-transform-template-literals@^7.16.7": + "integrity" "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-typeof-symbol@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" - integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== +"@babel/plugin-transform-typeof-symbol@^7.16.7": + "integrity" "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-typescript@^7.15.0": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.15.4.tgz#db7a062dcf8be5fc096bc0eeb40a13fbfa1fa251" - integrity sha512-sM1/FEjwYjXvMwu1PJStH11kJ154zd/lpY56NQJ5qH2D0mabMv1CAy/kdvS9RP4Xgfj9fBBA3JiSLdDHgXdzOA== +"@babel/plugin-transform-typescript@^7.16.7": + "integrity" "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz" + "version" "7.16.8" dependencies: - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-typescript" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-typescript" "^7.16.7" -"@babel/plugin-transform-unicode-escapes@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b" - integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== +"@babel/plugin-transform-unicode-escapes@^7.16.7": + "integrity" "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-unicode-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" - integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== +"@babel/plugin-transform-unicode-regex@^7.16.7": + "integrity" "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/preset-env@^7.15.6": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.6.tgz#0f3898db9d63d320f21b17380d8462779de57659" - integrity sha512-L+6jcGn7EWu7zqaO2uoTDjjMBW+88FXzV8KvrBl2z6MtRNxlsmUNRlZPaNNPUTgqhyC5DHNFk/2Jmra+ublZWw== + "integrity" "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==" + "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz" + "version" "7.16.11" dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.15.4" - "@babel/plugin-proposal-async-generator-functions" "^7.15.4" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-class-static-block" "^7.15.4" - "@babel/plugin-proposal-dynamic-import" "^7.14.5" - "@babel/plugin-proposal-export-namespace-from" "^7.14.5" - "@babel/plugin-proposal-json-strings" "^7.14.5" - "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" - "@babel/plugin-proposal-numeric-separator" "^7.14.5" - "@babel/plugin-proposal-object-rest-spread" "^7.15.6" - "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-private-methods" "^7.14.5" - "@babel/plugin-proposal-private-property-in-object" "^7.15.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" + "@babel/compat-data" "^7.16.8" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions" "^7.16.8" + "@babel/plugin-proposal-class-properties" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.16.7" + "@babel/plugin-proposal-json-strings" "^7.16.7" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.11" + "@babel/plugin-proposal-private-property-in-object" "^7.16.7" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" @@ -957,162 +1076,267 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.14.5" - "@babel/plugin-transform-async-to-generator" "^7.14.5" - "@babel/plugin-transform-block-scoped-functions" "^7.14.5" - "@babel/plugin-transform-block-scoping" "^7.15.3" - "@babel/plugin-transform-classes" "^7.15.4" - "@babel/plugin-transform-computed-properties" "^7.14.5" - "@babel/plugin-transform-destructuring" "^7.14.7" - "@babel/plugin-transform-dotall-regex" "^7.14.5" - "@babel/plugin-transform-duplicate-keys" "^7.14.5" - "@babel/plugin-transform-exponentiation-operator" "^7.14.5" - "@babel/plugin-transform-for-of" "^7.15.4" - "@babel/plugin-transform-function-name" "^7.14.5" - "@babel/plugin-transform-literals" "^7.14.5" - "@babel/plugin-transform-member-expression-literals" "^7.14.5" - "@babel/plugin-transform-modules-amd" "^7.14.5" - "@babel/plugin-transform-modules-commonjs" "^7.15.4" - "@babel/plugin-transform-modules-systemjs" "^7.15.4" - "@babel/plugin-transform-modules-umd" "^7.14.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.9" - "@babel/plugin-transform-new-target" "^7.14.5" - "@babel/plugin-transform-object-super" "^7.14.5" - "@babel/plugin-transform-parameters" "^7.15.4" - "@babel/plugin-transform-property-literals" "^7.14.5" - "@babel/plugin-transform-regenerator" "^7.14.5" - "@babel/plugin-transform-reserved-words" "^7.14.5" - "@babel/plugin-transform-shorthand-properties" "^7.14.5" - "@babel/plugin-transform-spread" "^7.14.6" - "@babel/plugin-transform-sticky-regex" "^7.14.5" - "@babel/plugin-transform-template-literals" "^7.14.5" - "@babel/plugin-transform-typeof-symbol" "^7.14.5" - "@babel/plugin-transform-unicode-escapes" "^7.14.5" - "@babel/plugin-transform-unicode-regex" "^7.14.5" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.15.6" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" - core-js-compat "^3.16.0" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + "@babel/plugin-transform-arrow-functions" "^7.16.7" + "@babel/plugin-transform-async-to-generator" "^7.16.8" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.16.7" + "@babel/plugin-transform-classes" "^7.16.7" + "@babel/plugin-transform-computed-properties" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.16.8" + "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-umd" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" + "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.16.7" + "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.16.8" + "babel-plugin-polyfill-corejs2" "^0.3.0" + "babel-plugin-polyfill-corejs3" "^0.5.0" + "babel-plugin-polyfill-regenerator" "^0.3.0" + "core-js-compat" "^3.20.2" + "semver" "^6.3.0" + +"@babel/preset-modules@^0.1.5": + "integrity" "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==" + "resolved" "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" + "version" "0.1.5" dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" "@babel/plugin-transform-dotall-regex" "^7.4.4" "@babel/types" "^7.4.4" - esutils "^2.0.2" + "esutils" "^2.0.2" "@babel/preset-react@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.14.5.tgz#0fbb769513f899c2c56f3a882fa79673c2d4ab3c" - integrity sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ== + "integrity" "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==" + "resolved" "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-transform-react-display-name" "^7.14.5" - "@babel/plugin-transform-react-jsx" "^7.14.5" - "@babel/plugin-transform-react-jsx-development" "^7.14.5" - "@babel/plugin-transform-react-pure-annotations" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-react-display-name" "^7.16.7" + "@babel/plugin-transform-react-jsx" "^7.16.7" + "@babel/plugin-transform-react-jsx-development" "^7.16.7" + "@babel/plugin-transform-react-pure-annotations" "^7.16.7" "@babel/preset-typescript@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.15.0.tgz#e8fca638a1a0f64f14e1119f7fe4500277840945" - integrity sha512-lt0Y/8V3y06Wq/8H/u0WakrqciZ7Fz7mwPDHWUJAXlABL5hiUG42BNlRXiELNjeWjO5rWmnNKlx+yzJvxezHow== + "integrity" "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==" + "resolved" "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz" + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-transform-typescript" "^7.15.0" - -"@babel/runtime-corejs3@^7.10.2": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz#403139af262b9a6e8f9ba04a6fdcebf8de692bf1" - integrity sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg== - dependencies: - core-js-pure "^3.16.0" - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" - integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.17.2": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2" - integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.15.4", "@babel/template@^7.3.3": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" - integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.7.2": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" - integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.14.9", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" - integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig== - dependencies: - "@babel/helper-validator-identifier" "^7.14.9" - to-fast-properties "^2.0.0" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-typescript" "^7.16.7" + +"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.15.4": + "integrity" "sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw==" + "resolved" "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz" + "version" "7.17.9" + dependencies: + "core-js-pure" "^3.20.2" + "regenerator-runtime" "^0.13.4" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.17.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + "integrity" "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==" + "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz" + "version" "7.17.9" + dependencies: + "regenerator-runtime" "^0.13.4" + +"@babel/runtime@^7.14.0": + "integrity" "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==" + "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz" + "version" "7.14.0" + dependencies: + "regenerator-runtime" "^0.13.4" + +"@babel/template@^7.12.13": + "integrity" "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==" + "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz" + "version" "7.12.13" + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/template@^7.16.7", "@babel/template@^7.3.3": + "integrity" "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==" + "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz" + "version" "7.16.7" + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.2": + "integrity" "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==" + "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz" + "version" "7.17.9" + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.9" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.9" + "@babel/types" "^7.17.0" + "debug" "^4.1.0" + "globals" "^11.1.0" + +"@babel/traverse@^7.4.5": + "integrity" "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==" + "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz" + "version" "7.14.2" + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.14.2" + "@babel/helper-function-name" "^7.14.2" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.14.2" + "@babel/types" "^7.14.2" + "debug" "^4.1.0" + "globals" "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + "integrity" "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==" + "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz" + "version" "7.17.0" + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + "to-fast-properties" "^2.0.0" + +"@babel/types@^7.12.13", "@babel/types@^7.13.12", "@babel/types@^7.14.2": + "integrity" "sha512-lCj4aIs0xUefJFQnwwQv2Bxg7Omd6bgquZ6LGC+gGMh6/s5qDVfjuCMlDmYQ15SLsWHd9n+X3E75lKIhl5Lkiw==" + "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.14.4.tgz" + "version" "7.14.4" + dependencies: + "@babel/helper-validator-identifier" "^7.14.0" + "to-fast-properties" "^2.0.0" "@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + "integrity" "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" + "resolved" "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + "version" "0.2.3" "@callstack/async-storage@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@callstack/async-storage/-/async-storage-2.0.3.tgz#93fc98f768926024fe01d759acaba6c80feb5727" - integrity sha512-JK/cV/nRHdYDdBmT0GZ7otywZXFNpWMuzjkGgeyhd/Pc+alpaSspg73U6lxFBM5ndnY+T1iQ3RSfUZl3QG+nwQ== + "integrity" "sha512-JK/cV/nRHdYDdBmT0GZ7otywZXFNpWMuzjkGgeyhd/Pc+alpaSspg73U6lxFBM5ndnY+T1iQ3RSfUZl3QG+nwQ==" + "resolved" "https://registry.npmjs.org/@callstack/async-storage/-/async-storage-2.0.3.tgz" + "version" "2.0.3" dependencies: - lodash.merge "^4.6.0" + "lodash.merge" "^4.6.0" "@craco/craco@^5.5.0": - version "5.9.0" - resolved "https://registry.yarnpkg.com/@craco/craco/-/craco-5.9.0.tgz#dcd34330b558596a4841374743071b7fa041dce9" - integrity sha512-2Q8gIB4W0/nPiUxr9iAKUhGsFlXYN0/wngUdK1VWtfV2NtBv+yllNn2AjieaLbttgpQinuOYmDU65vocC0NMDg== - dependencies: - cross-spawn "^7.0.0" - lodash "^4.17.15" - webpack-merge "^4.2.2" + "integrity" "sha512-2Q8gIB4W0/nPiUxr9iAKUhGsFlXYN0/wngUdK1VWtfV2NtBv+yllNn2AjieaLbttgpQinuOYmDU65vocC0NMDg==" + "resolved" "https://registry.npmjs.org/@craco/craco/-/craco-5.9.0.tgz" + "version" "5.9.0" + dependencies: + "cross-spawn" "^7.0.0" + "lodash" "^4.17.15" + "webpack-merge" "^4.2.2" + +"@cspotcode/source-map-consumer@0.8.0": + "integrity" "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==" + "resolved" "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz" + "version" "0.8.0" + +"@cspotcode/source-map-support@0.7.0": + "integrity" "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==" + "resolved" "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz" + "version" "0.7.0" + dependencies: + "@cspotcode/source-map-consumer" "0.8.0" + +"@derhuerst/http-basic@^8.2.0": + "integrity" "sha512-ek065nW95mleLHo8vZ+ob7QTQPNOwDEjCe27BX2flme/UTu9z2mD1uRRPko38u7al4tTZADMtozpll8PQHAZgg==" + "resolved" "https://registry.npmjs.org/@derhuerst/http-basic/-/http-basic-8.2.2.tgz" + "version" "8.2.2" + dependencies: + "caseless" "^0.12.0" + "concat-stream" "^1.6.2" + "http-response-object" "^3.0.1" + "parse-cache-control" "^1.0.1" + +"@discordjs/builders@^0.11.0": + "integrity" "sha512-ZTB8yJdJKrKlq44dpWkNUrAtEJEq0gqpb7ASdv4vmq6/mZal5kOv312hQ56I/vxwMre+VIkoHquNUAfnTbiYtg==" + "resolved" "https://registry.npmjs.org/@discordjs/builders/-/builders-0.11.0.tgz" + "version" "0.11.0" + dependencies: + "@sindresorhus/is" "^4.2.0" + "discord-api-types" "^0.26.0" + "ts-mixer" "^6.0.0" + "tslib" "^2.3.1" + "zod" "^3.11.6" + +"@discordjs/collection@^0.4.0": + "integrity" "sha512-zmjq+l/rV35kE6zRrwe8BHqV78JvIh2ybJeZavBi5NySjWXqN3hmmAKg7kYMMXSeiWtSsMoZ/+MQi0DiQWy2lw==" + "resolved" "https://registry.npmjs.org/@discordjs/collection/-/collection-0.4.0.tgz" + "version" "0.4.0" + +"@discordjs/node-pre-gyp@^0.4.2": + "integrity" "sha512-V239Czn+DXFGLhhuccwEDBoTdgMGrRu30dOlzm1GzrSIjwFj01ZJerNX7x+CEX1NG1Q/1gGfOOkeZFNHjycrRA==" + "resolved" "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.2.tgz" + "version" "0.4.2" + dependencies: + "detect-libc" "^1.0.3" + "https-proxy-agent" "^5.0.0" + "make-dir" "^3.1.0" + "node-fetch" "^2.6.5" + "nopt" "^5.0.0" + "npmlog" "^5.0.1" + "rimraf" "^3.0.2" + "semver" "^7.3.5" + "tar" "^6.1.11" + +"@discordjs/opus@^0.7.0": + "integrity" "sha512-3Xxa3dh7taSDwBAR5fLALZ/KTxvbMmHCMxYLYve6NlPO7Ms1CLmKqp/R4ZoVzkRGQVUVWEhaB1s0v9jfa2tfDg==" + "resolved" "https://registry.npmjs.org/@discordjs/opus/-/opus-0.7.0.tgz" + "version" "0.7.0" + dependencies: + "@discordjs/node-pre-gyp" "^0.4.2" + "node-addon-api" "^4.2.0" + +"@discordjs/voice@^0.9.0": + "integrity" "sha512-fSAYtPCEfIyG56hC2cRJuyfvQGr+aawSssLCqYg70vZ51dKO4spEKOB8V6vNMP5HnEplbhmxkB3YbshFKtnCQQ==" + "resolved" "https://registry.npmjs.org/@discordjs/voice/-/voice-0.9.0.tgz" + "version" "0.9.0" + dependencies: + "@types/ws" "^8.5.3" + "discord-api-types" "^0.29.0" + "prism-media" "^1.3.2" + "tiny-typed-emitter" "^2.1.0" + "tslib" "^2.3.1" + "ws" "^8.5.0" "@discoveryjs/json-ext@^0.5.0": - version "0.5.5" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz#9283c9ce5b289a3c4f61c12757469e59377f81f3" - integrity sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA== + "integrity" "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==" + "resolved" "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" + "version" "0.5.7" -"@emotion/babel-plugin@^11.7.1": - version "11.7.2" - resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.7.2.tgz#fec75f38a6ab5b304b0601c74e2a5e77c95e5fa0" - integrity sha512-6mGSCWi9UzXut/ZAN6lGFu33wGR3SJisNl3c0tvlmb8XChH1b2SUvxvnOh7hvLpqyRdHHU9AiazV3Cwbk5SXKQ== +"@emotion/babel-plugin@^11.0.0", "@emotion/babel-plugin@^11.7.1": + "integrity" "sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==" + "resolved" "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz" + "version" "11.9.2" dependencies: "@babel/helper-module-imports" "^7.12.13" "@babel/plugin-syntax-jsx" "^7.12.13" @@ -1120,49 +1344,38 @@ "@emotion/hash" "^0.8.0" "@emotion/memoize" "^0.7.5" "@emotion/serialize" "^1.0.2" - babel-plugin-macros "^2.6.1" - convert-source-map "^1.5.0" - escape-string-regexp "^4.0.0" - find-root "^1.1.0" - source-map "^0.5.7" - stylis "4.0.13" + "babel-plugin-macros" "^2.6.1" + "convert-source-map" "^1.5.0" + "escape-string-regexp" "^4.0.0" + "find-root" "^1.1.0" + "source-map" "^0.5.7" + "stylis" "4.0.13" "@emotion/cache@^10.0.27": - version "10.0.29" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" - integrity sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ== + "integrity" "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==" + "resolved" "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz" + "version" "10.0.29" dependencies: "@emotion/sheet" "0.9.4" "@emotion/stylis" "0.8.5" "@emotion/utils" "0.11.3" "@emotion/weak-memoize" "0.2.5" -"@emotion/cache@^11.4.0": - version "11.4.0" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.4.0.tgz#293fc9d9a7a38b9aad8e9337e5014366c3b09ac0" - integrity sha512-Zx70bjE7LErRO9OaZrhf22Qye1y4F7iDl+ITjet0J+i+B88PrAOBkKvaAWhxsZf72tDLajwCgfCjJ2dvH77C3g== - dependencies: - "@emotion/memoize" "^0.7.4" - "@emotion/sheet" "^1.0.0" - "@emotion/utils" "^1.0.0" - "@emotion/weak-memoize" "^0.2.5" - stylis "^4.0.3" - -"@emotion/cache@^11.7.1": - version "11.7.1" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.7.1.tgz#08d080e396a42e0037848214e8aa7bf879065539" - integrity sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A== +"@emotion/cache@^11.1.3", "@emotion/cache@^11.4.0", "@emotion/cache@^11.7.1": + "integrity" "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==" + "resolved" "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz" + "version" "11.7.1" dependencies: "@emotion/memoize" "^0.7.4" "@emotion/sheet" "^1.1.0" "@emotion/utils" "^1.0.0" "@emotion/weak-memoize" "^0.2.5" - stylis "4.0.13" + "stylis" "4.0.13" "@emotion/core@^10.0.0": - version "10.1.1" - resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.1.1.tgz#c956c1365f2f2481960064bcb8c4732e5fb612c3" - integrity sha512-ZMLG6qpXR8x031NXD8HJqugy/AZSkAuMxxqB46pmAR7ze47MhNJ56cdoX243QPZdGctrdfo+s08yZTiwaUcRKA== + "integrity" "sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww==" + "resolved" "https://registry.npmjs.org/@emotion/core/-/core-10.3.1.tgz" + "version" "10.3.1" dependencies: "@babel/runtime" "^7.5.5" "@emotion/cache" "^10.0.27" @@ -1172,110 +1385,128 @@ "@emotion/utils" "0.11.3" "@emotion/css@^10.0.27": - version "10.0.27" - resolved "https://registry.yarnpkg.com/@emotion/css/-/css-10.0.27.tgz#3a7458198fbbebb53b01b2b87f64e5e21241e14c" - integrity sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw== + "integrity" "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==" + "resolved" "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz" + "version" "10.0.27" dependencies: "@emotion/serialize" "^0.11.15" "@emotion/utils" "0.11.3" - babel-plugin-emotion "^10.0.27" + "babel-plugin-emotion" "^10.0.27" + +"@emotion/css@11.1.3": + "integrity" "sha512-RSQP59qtCNTf5NWD6xM08xsQdCZmVYnX/panPYvB6LQAPKQB6GL49Njf0EMbS3CyDtrlWsBcmqBtysFvfWT3rA==" + "resolved" "https://registry.npmjs.org/@emotion/css/-/css-11.1.3.tgz" + "version" "11.1.3" + dependencies: + "@emotion/babel-plugin" "^11.0.0" + "@emotion/cache" "^11.1.3" + "@emotion/serialize" "^1.0.0" + "@emotion/sheet" "^1.0.0" + "@emotion/utils" "^1.0.0" -"@emotion/hash@0.8.0", "@emotion/hash@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" - integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== +"@emotion/hash@^0.8.0", "@emotion/hash@0.8.0": + "integrity" "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + "resolved" "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz" + "version" "0.8.0" -"@emotion/is-prop-valid@0.8.8", "@emotion/is-prop-valid@^0.8.1": - version "0.8.8" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" - integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== +"@emotion/is-prop-valid@^0.8.1": + "integrity" "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==" + "resolved" "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" + "version" "0.8.8" + dependencies: + "@emotion/memoize" "0.7.4" + +"@emotion/is-prop-valid@^0.8.8": + "integrity" "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==" + "resolved" "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" + "version" "0.8.8" dependencies: "@emotion/memoize" "0.7.4" "@emotion/is-prop-valid@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz#34ad6e98e871aa6f7a20469b602911b8b11b3a95" - integrity sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ== + "integrity" "sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ==" + "resolved" "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz" + "version" "1.1.2" dependencies: "@emotion/memoize" "^0.7.4" -"@emotion/memoize@0.7.4": - version "0.7.4" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" - integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== +"@emotion/is-prop-valid@0.8.8": + "integrity" "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==" + "resolved" "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" + "version" "0.8.8" + dependencies: + "@emotion/memoize" "0.7.4" -"@emotion/memoize@^0.7.1", "@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" - integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== +"@emotion/memoize@^0.7.1", "@emotion/memoize@0.7.4": + "integrity" "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + "resolved" "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" + "version" "0.7.4" -"@emotion/react@^11.1.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.4.1.tgz#a1b0b767b5bad57515ffb0cad9349614d27f4d57" - integrity sha512-pRegcsuGYj4FCdZN6j5vqCALkNytdrKw3TZMekTzNXixRg4wkLsU5QEaBG5LC6l01Vppxlp7FE3aTHpIG5phLg== - dependencies: - "@babel/runtime" "^7.13.10" - "@emotion/cache" "^11.4.0" - "@emotion/serialize" "^1.0.2" - "@emotion/sheet" "^1.0.2" - "@emotion/utils" "^1.0.0" - "@emotion/weak-memoize" "^0.2.5" - hoist-non-react-statics "^3.3.1" +"@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5": + "integrity" "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" + "resolved" "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz" + "version" "0.7.5" -"@emotion/react@^11.8.2": - version "11.8.2" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.8.2.tgz#e51f5e6372e22e82780836c9288da19af4b51e70" - integrity sha512-+1bcHBaNJv5nkIIgnGKVsie3otS0wF9f1T1hteF3WeVvMNQEtfZ4YyFpnphGoot3ilU/wWMgP2SgIDuHLE/wAA== +"@emotion/react@^11.1.1", "@emotion/react@^11.8.2": + "integrity" "sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ==" + "resolved" "https://registry.npmjs.org/@emotion/react/-/react-11.9.0.tgz" + "version" "11.9.0" dependencies: "@babel/runtime" "^7.13.10" "@emotion/babel-plugin" "^11.7.1" "@emotion/cache" "^11.7.1" - "@emotion/serialize" "^1.0.2" + "@emotion/serialize" "^1.0.3" "@emotion/utils" "^1.1.0" "@emotion/weak-memoize" "^0.2.5" - hoist-non-react-statics "^3.3.1" + "hoist-non-react-statics" "^3.3.1" -"@emotion/serialize@^0.11.15", "@emotion/serialize@^0.11.16": - version "0.11.16" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.16.tgz#dee05f9e96ad2fb25a5206b6d759b2d1ed3379ad" - integrity sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg== +"@emotion/serialize@^0.11.15": + "integrity" "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==" + "resolved" "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz" + "version" "0.11.16" dependencies: "@emotion/hash" "0.8.0" "@emotion/memoize" "0.7.4" "@emotion/unitless" "0.7.5" "@emotion/utils" "0.11.3" - csstype "^2.5.7" + "csstype" "^2.5.7" -"@emotion/serialize@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.2.tgz#77cb21a0571c9f68eb66087754a65fa97bfcd965" - integrity sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A== +"@emotion/serialize@^0.11.16": + "integrity" "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==" + "resolved" "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz" + "version" "0.11.16" + dependencies: + "@emotion/hash" "0.8.0" + "@emotion/memoize" "0.7.4" + "@emotion/unitless" "0.7.5" + "@emotion/utils" "0.11.3" + "csstype" "^2.5.7" + +"@emotion/serialize@^1.0.0", "@emotion/serialize@^1.0.2", "@emotion/serialize@^1.0.3": + "integrity" "sha512-2mSSvgLfyV3q+iVh3YWgNlUc2a9ZlDU7DjuP5MjK3AXRR0dYigCrP99aeFtaB2L/hjfEZdSThn5dsZ0ufqbvsA==" + "resolved" "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.3.tgz" + "version" "1.0.3" dependencies: "@emotion/hash" "^0.8.0" "@emotion/memoize" "^0.7.4" "@emotion/unitless" "^0.7.5" "@emotion/utils" "^1.0.0" - csstype "^3.0.2" + "csstype" "^3.0.2" -"@emotion/sheet@0.9.4": - version "0.9.4" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" - integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== +"@emotion/sheet@^1.0.0", "@emotion/sheet@^1.1.0": + "integrity" "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==" + "resolved" "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz" + "version" "1.1.0" -"@emotion/sheet@^1.0.0", "@emotion/sheet@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.0.2.tgz#1d9ffde531714ba28e62dac6a996a8b1089719d0" - integrity sha512-QQPB1B70JEVUHuNtzjHftMGv6eC3Y9wqavyarj4x4lg47RACkeSfNo5pxIOKizwS9AEFLohsqoaxGQj4p0vSIw== - -"@emotion/sheet@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.1.0.tgz#56d99c41f0a1cda2726a05aa6a20afd4c63e58d2" - integrity sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g== +"@emotion/sheet@0.9.4": + "integrity" "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==" + "resolved" "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz" + "version" "0.9.4" -"@emotion/styled-base@^10.0.27": - version "10.0.31" - resolved "https://registry.yarnpkg.com/@emotion/styled-base/-/styled-base-10.0.31.tgz#940957ee0aa15c6974adc7d494ff19765a2f742a" - integrity sha512-wTOE1NcXmqMWlyrtwdkqg87Mu6Rj1MaukEoEmEkHirO5IoHDJ8LgCQL4MjJODgxWxXibGR3opGp1p7YvkNEdXQ== +"@emotion/styled-base@^10.3.0": + "integrity" "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==" + "resolved" "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz" + "version" "10.3.0" dependencies: "@babel/runtime" "^7.5.5" "@emotion/is-prop-valid" "0.8.8" @@ -1283,17 +1514,17 @@ "@emotion/utils" "0.11.3" "@emotion/styled@^10.0.0": - version "10.0.27" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-10.0.27.tgz#12cb67e91f7ad7431e1875b1d83a94b814133eaf" - integrity sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q== + "integrity" "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==" + "resolved" "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz" + "version" "10.3.0" dependencies: - "@emotion/styled-base" "^10.0.27" - babel-plugin-emotion "^10.0.27" + "@emotion/styled-base" "^10.3.0" + "babel-plugin-emotion" "^10.0.27" "@emotion/styled@^11.8.1": - version "11.8.1" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.8.1.tgz#856f6f63aceef0eb783985fa2322e2bf66d04e17" - integrity sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ== + "integrity" "sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ==" + "resolved" "https://registry.npmjs.org/@emotion/styled/-/styled-11.8.1.tgz" + "version" "11.8.1" dependencies: "@babel/runtime" "^7.13.10" "@emotion/babel-plugin" "^11.7.1" @@ -1301,283 +1532,653 @@ "@emotion/serialize" "^1.0.2" "@emotion/utils" "^1.1.0" +"@emotion/stylis@^0.8.4": + "integrity" "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + "resolved" "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz" + "version" "0.8.5" + "@emotion/stylis@0.8.5": - version "0.8.5" - resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" - integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + "integrity" "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + "resolved" "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz" + "version" "0.8.5" -"@emotion/unitless@0.7.5", "@emotion/unitless@^0.7.5": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" - integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== +"@emotion/unitless@^0.7.4": + "integrity" "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + "resolved" "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz" + "version" "0.7.5" -"@emotion/utils@0.11.3": - version "0.11.3" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" - integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== +"@emotion/unitless@^0.7.5", "@emotion/unitless@0.7.5": + "integrity" "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + "resolved" "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz" + "version" "0.7.5" -"@emotion/utils@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.0.0.tgz#abe06a83160b10570816c913990245813a2fd6af" - integrity sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA== +"@emotion/utils@^1.0.0", "@emotion/utils@^1.1.0": + "integrity" "sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ==" + "resolved" "https://registry.npmjs.org/@emotion/utils/-/utils-1.1.0.tgz" + "version" "1.1.0" -"@emotion/utils@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.1.0.tgz#86b0b297f3f1a0f2bdb08eeac9a2f49afd40d0cf" - integrity sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ== +"@emotion/utils@0.11.3": + "integrity" "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==" + "resolved" "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz" + "version" "0.11.3" -"@emotion/weak-memoize@0.2.5", "@emotion/weak-memoize@^0.2.5": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" - integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== +"@emotion/weak-memoize@^0.2.5", "@emotion/weak-memoize@0.2.5": + "integrity" "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" + "resolved" "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz" + "version" "0.2.5" "@endemolshinegroup/cosmiconfig-typescript-loader@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz#eea4635828dde372838b0909693ebd9aafeec22d" - integrity sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA== - dependencies: - lodash.get "^4" - make-error "^1" - ts-node "^9" - tslib "^2" + "integrity" "sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==" + "resolved" "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "lodash.get" "^4" + "make-error" "^1" + "ts-node" "^9" + "tslib" "^2" + +"@eslint/eslintrc@^0.4.2": + "integrity" "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==" + "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" + "version" "0.4.3" + dependencies: + "ajv" "^6.12.4" + "debug" "^4.1.1" + "espree" "^7.3.0" + "globals" "^13.9.0" + "ignore" "^4.0.6" + "import-fresh" "^3.2.1" + "js-yaml" "^3.13.1" + "minimatch" "^3.0.4" + "strip-json-comments" "^3.1.1" + +"@exodus/schemasafe@^1.0.0-rc.2": + "integrity" "sha512-GoXw0U2Qaa33m3eUcxuHnHpNvHjNlLo0gtV091XBpaRINaB4X6FGCG5XKxSFNFiPpugUDqNruHzaqpTdDm4AOg==" + "resolved" "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.0.0-rc.3.tgz" + "version" "1.0.0-rc.3" + +"@ffmpeg-installer/ffmpeg@^1.0.20": + "integrity" "sha512-Uq4rmwkdGxIa9A6Bd/VqqYbT7zqh1GrT5/rFwCwKM70b42W5gIjWeVETq6SdcL0zXqDtY081Ws/iJWhr1+xvQg==" + "resolved" "https://registry.npmjs.org/@ffmpeg-installer/ffmpeg/-/ffmpeg-1.1.0.tgz" + "version" "1.1.0" + optionalDependencies: + "@ffmpeg-installer/darwin-arm64" "4.1.5" + "@ffmpeg-installer/darwin-x64" "4.1.0" + "@ffmpeg-installer/linux-arm" "4.1.3" + "@ffmpeg-installer/linux-arm64" "4.1.4" + "@ffmpeg-installer/linux-ia32" "4.1.0" + "@ffmpeg-installer/linux-x64" "4.1.0" + "@ffmpeg-installer/win32-ia32" "4.1.0" + "@ffmpeg-installer/win32-x64" "4.1.0" + +"@ffmpeg-installer/linux-x64@4.1.0": + "integrity" "sha512-Y5BWhGLU/WpQjOArNIgXD3z5mxxdV8c41C+U15nsE5yF8tVcdCGet5zPs5Zy3Ta6bU7haGpIzryutqCGQA/W8A==" + "resolved" "https://registry.npmjs.org/@ffmpeg-installer/linux-x64/-/linux-x64-4.1.0.tgz" + "version" "4.1.0" "@gar/promisify@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" - integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== + "integrity" "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + "resolved" "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" + "version" "1.1.3" + +"@google-cloud/common@^3.0.0": + "integrity" "sha512-XMbJYMh/ZSaZnbnrrOFfR/oQrb0SxG4qh6hDisWCoEbFcBHV0qHQo4uXfeMCzolx2Mfkh6VDaOGg+hyJsmxrlw==" + "resolved" "https://registry.npmjs.org/@google-cloud/common/-/common-3.10.0.tgz" + "version" "3.10.0" + dependencies: + "@google-cloud/projectify" "^2.0.0" + "@google-cloud/promisify" "^2.0.0" + "arrify" "^2.0.1" + "duplexify" "^4.1.1" + "ent" "^2.2.0" + "extend" "^3.0.2" + "google-auth-library" "^7.14.0" + "retry-request" "^4.2.2" + "teeny-request" "^7.0.0" + +"@google-cloud/projectify@^2.0.0": + "integrity" "sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ==" + "resolved" "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.1.1.tgz" + "version" "2.1.1" + +"@google-cloud/promisify@^2.0.0": + "integrity" "sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA==" + "resolved" "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz" + "version" "2.0.4" + +"@google-cloud/speech@^4.10.0": + "integrity" "sha512-NtP3w+ko6r3TdHZsEY30C0xNvFW/78N/sJXEc83awPi+NCqQKo43zMHc8WCvG8OX5j/3LiHIkCz+2tNqJM9BoQ==" + "resolved" "https://registry.npmjs.org/@google-cloud/speech/-/speech-4.10.1.tgz" + "version" "4.10.1" + dependencies: + "@google-cloud/common" "^3.0.0" + "@types/pumpify" "^1.4.1" + "google-gax" "^2.30.1" + "protobufjs" "^6.8.6" + "pumpify" "^2.0.0" + "stream-events" "^1.0.4" + "uuid" "^8.3.2" + +"@google-cloud/text-to-speech@^3.4.0": + "integrity" "sha512-0N5QEZxTdv89lG5Dcd7VEaTkL7LuPXWlTf7fmar7reAhsUVh9PeqJJttCXxPaHQ1LY+czvxDzswysHvVdYxL+Q==" + "resolved" "https://registry.npmjs.org/@google-cloud/text-to-speech/-/text-to-speech-3.4.0.tgz" + "version" "3.4.0" + dependencies: + "google-gax" "^2.24.1" + +"@green-api/v1-whatsapp-api-client@^0.1.7": + "integrity" "sha512-AJQZyVRXpuAOArG13IxELSeOqs7E7+Nv5a8wz2tdXhjbbHAAReYffw/6goSjGYUKWPv/4ytOPCw6qMABmlZxwQ==" + "resolved" "https://registry.npmjs.org/@green-api/v1-whatsapp-api-client/-/v1-whatsapp-api-client-0.1.7.tgz" + "version" "0.1.7" + dependencies: + "@types/axios" "^0.14.0" + "axios" "^0.21.0" + +"@green-api/whatsapp-api-client@^0.3.13": + "integrity" "sha512-+vZLGSMT7rBHTxIRjcEGpwt8cjxFUJHxaHAG8Dh3RZY4fvEzhPJ4EMEiaYrPxQsGoWaKHC3OdsgIhoihgYwxiQ==" + "resolved" "https://registry.npmjs.org/@green-api/whatsapp-api-client/-/whatsapp-api-client-0.3.23.tgz" + "version" "0.3.23" + dependencies: + "axios" "0.21.2" + "fs" "0.0.1-security" + +"@green-api/whatsapp-bot@0.2.5": + "integrity" "sha512-dXBjn+8FAhb3SFGWNq/nEvBs3e0rzC/abcNnE8z3tsBNUyX3u+6a6Gfg7l2zW0Lkn8c7Jg3P+d4KXE3RVfKxsg==" + "resolved" "https://registry.npmjs.org/@green-api/whatsapp-bot/-/whatsapp-bot-0.2.5.tgz" + "version" "0.2.5" + dependencies: + "@green-api/v1-whatsapp-api-client" "^0.1.7" + "@green-api/whatsapp-api-client" "^0.3.13" + "debug" "^4.0.1" + "minimist" "^1.2.0" + "module-alias" "^2.2.2" + "node-fetch" "^2.2.0" + "sandwich-stream" "^2.0.1" + "telegram-typings" "^3.6.0" + +"@grpc/grpc-js@~1.6.0": + "integrity" "sha512-eBM03pu9hd3VqDQG+kHahiG1x80RGkkqqRb1Pchcwqej/KkAH95gAvKs6laqaHCycYaPK+TKuNQnOz9UXYA8qw==" + "resolved" "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.6.7.tgz" + "version" "1.6.7" + dependencies: + "@grpc/proto-loader" "^0.6.4" + "@types/node" ">=12.12.47" + +"@grpc/proto-loader@^0.6.1", "@grpc/proto-loader@^0.6.4": + "integrity" "sha512-UlcCS8VbsU9d3XTXGiEVFonN7hXk+oMXZtoHHG2oSA1/GcDP1q6OUgs20PzHDGizzyi8ufGSUDlk3O2NyY7leg==" + "resolved" "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.9.tgz" + "version" "0.6.9" + dependencies: + "@types/long" "^4.0.1" + "lodash.camelcase" "^4.3.0" + "long" "^4.0.0" + "protobufjs" "^6.10.0" + "yargs" "^16.2.0" "@hutson/parse-repository-url@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" - integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== + "integrity" "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==" + "resolved" "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz" + "version" "3.0.2" "@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + "integrity" "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==" + "resolved" "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + "version" "1.1.0" dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" + "camelcase" "^5.3.1" + "find-up" "^4.1.0" + "get-package-type" "^0.1.0" + "js-yaml" "^3.13.1" + "resolve-from" "^5.0.0" "@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + "integrity" "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" + "resolved" "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + "version" "0.1.3" -"@jest/console@^27.2.3": - version "27.2.3" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.2.3.tgz#c87fe48397dc7511089be71da93fb41869b75b7e" - integrity sha512-7akAz7p6T31EEYVVKxs6fKaR7CUgem22M/0TjCP7a64FIhNif2EiWcRzMkkDZbYhImG+Tz5qy9gMk2Wtl5GV1g== +"@jest/console@^27.5.1": + "integrity" "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==" + "resolved" "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz" + "version" "27.5.1" dependencies: - "@jest/types" "^27.2.3" + "@jest/types" "^27.5.1" "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^27.2.3" - jest-util "^27.2.3" - slash "^3.0.0" - -"@jest/core@^27.2.3": - version "27.2.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.2.3.tgz#b21a3ffb69bef017c4562d27689bb798c0194501" - integrity sha512-I+VX+X8pkw2I057swT3ufNp6V5EBeFO1dl+gvIexdV0zg1kZ+cz9CrPbWL75dYrJIInf5uWPwDwOoJCALrTxWw== - dependencies: - "@jest/console" "^27.2.3" - "@jest/reporters" "^27.2.3" - "@jest/test-result" "^27.2.3" - "@jest/transform" "^27.2.3" - "@jest/types" "^27.2.3" + "chalk" "^4.0.0" + "jest-message-util" "^27.5.1" + "jest-util" "^27.5.1" + "slash" "^3.0.0" + +"@jest/core@^27.0.6", "@jest/core@^27.5.1": + "integrity" "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==" + "resolved" "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/console" "^27.5.1" + "@jest/reporters" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^27.2.3" - jest-config "^27.2.3" - jest-haste-map "^27.2.3" - jest-message-util "^27.2.3" - jest-regex-util "^27.0.6" - jest-resolve "^27.2.3" - jest-resolve-dependencies "^27.2.3" - jest-runner "^27.2.3" - jest-runtime "^27.2.3" - jest-snapshot "^27.2.3" - jest-util "^27.2.3" - jest-validate "^27.2.3" - jest-watcher "^27.2.3" - micromatch "^4.0.4" - p-each-series "^2.1.0" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^27.2.3": - version "27.2.3" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.2.3.tgz#3ae328d778a67e027bad27541d1c09ed94312609" - integrity sha512-xXZk/Uhq6TTRydg4RyNawNZ82lX88r3997t5ykzQBfB3Wd+mqzSyC4XWzw4lTZJISldwn9/FunexTSGBFcvVAg== - dependencies: - "@jest/fake-timers" "^27.2.3" - "@jest/types" "^27.2.3" + "ansi-escapes" "^4.2.1" + "chalk" "^4.0.0" + "emittery" "^0.8.1" + "exit" "^0.1.2" + "graceful-fs" "^4.2.9" + "jest-changed-files" "^27.5.1" + "jest-config" "^27.5.1" + "jest-haste-map" "^27.5.1" + "jest-message-util" "^27.5.1" + "jest-regex-util" "^27.5.1" + "jest-resolve" "^27.5.1" + "jest-resolve-dependencies" "^27.5.1" + "jest-runner" "^27.5.1" + "jest-runtime" "^27.5.1" + "jest-snapshot" "^27.5.1" + "jest-util" "^27.5.1" + "jest-validate" "^27.5.1" + "jest-watcher" "^27.5.1" + "micromatch" "^4.0.4" + "rimraf" "^3.0.0" + "slash" "^3.0.0" + "strip-ansi" "^6.0.0" + +"@jest/environment@^27.5.1": + "integrity" "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==" + "resolved" "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^27.2.3" + "jest-mock" "^27.5.1" -"@jest/fake-timers@^27.2.3": - version "27.2.3" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.2.3.tgz#21cdef9cb9edd30c80026a0176eba58f5fbcaa67" - integrity sha512-A8+X35briNiabUPcLqYQY+dsvBUozX9DCa7HgJLdvRK/JPAKUpthYHjnI9y6QUYaDTqGZEo4rLf7LXE51MwP3Q== +"@jest/fake-timers@^27.5.1": + "integrity" "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==" + "resolved" "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz" + "version" "27.5.1" dependencies: - "@jest/types" "^27.2.3" + "@jest/types" "^27.5.1" "@sinonjs/fake-timers" "^8.0.1" "@types/node" "*" - jest-message-util "^27.2.3" - jest-mock "^27.2.3" - jest-util "^27.2.3" + "jest-message-util" "^27.5.1" + "jest-mock" "^27.5.1" + "jest-util" "^27.5.1" -"@jest/globals@^27.2.3": - version "27.2.3" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.2.3.tgz#6b8d652083d78709b243d9571457058f1c6c5fea" - integrity sha512-JVjQDs5z34XvFME0qHmKwWtgzRnBa/i22nfWjzlIUvkdFCzndN+JTLEWNXAgyBbGnNYuMZ8CpvgF9uhKt/cR3g== +"@jest/globals@^27.5.1": + "integrity" "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==" + "resolved" "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" + "version" "27.5.1" dependencies: - "@jest/environment" "^27.2.3" - "@jest/types" "^27.2.3" - expect "^27.2.3" + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + "expect" "^27.5.1" -"@jest/reporters@^27.2.3": - version "27.2.3" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.2.3.tgz#47c27be7c3e2069042b6fba12c1f8f62f91302db" - integrity sha512-zc9gQDjUAnkRQ5C0LW2u4JU9Ojqp9qc8OXQkMSmAbou6lN0mvDGEl4PG5HrZxpW4nE2FjIYyX6JAn05QT3gLbw== +"@jest/reporters@^27.5.1": + "integrity" "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==" + "resolved" "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz" + "version" "27.5.1" dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.2.3" - "@jest/test-result" "^27.2.3" - "@jest/transform" "^27.2.3" - "@jest/types" "^27.2.3" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^27.2.3" - jest-resolve "^27.2.3" - jest-util "^27.2.3" - jest-worker "^27.2.3" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^8.1.0" - -"@jest/source-map@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.0.6.tgz#be9e9b93565d49b0548b86e232092491fb60551f" - integrity sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" - -"@jest/test-result@^27.2.3": - version "27.2.3" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.2.3.tgz#7d8f790186c7ec7600edc1d8781656268f038255" - integrity sha512-+pRxO4xSJyUxoA0ENiTq8wT+5RCFOxK4nlNY2lUes/VF33uB54GBkZeXlljZcZjuzS1Yarz4hZI/a4mBtv9jQA== - dependencies: - "@jest/console" "^27.2.3" - "@jest/types" "^27.2.3" + "@jest/console" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + "chalk" "^4.0.0" + "collect-v8-coverage" "^1.0.0" + "exit" "^0.1.2" + "glob" "^7.1.2" + "graceful-fs" "^4.2.9" + "istanbul-lib-coverage" "^3.0.0" + "istanbul-lib-instrument" "^5.1.0" + "istanbul-lib-report" "^3.0.0" + "istanbul-lib-source-maps" "^4.0.0" + "istanbul-reports" "^3.1.3" + "jest-haste-map" "^27.5.1" + "jest-resolve" "^27.5.1" + "jest-util" "^27.5.1" + "jest-worker" "^27.5.1" + "slash" "^3.0.0" + "source-map" "^0.6.0" + "string-length" "^4.0.1" + "terminal-link" "^2.0.0" + "v8-to-istanbul" "^8.1.0" + +"@jest/source-map@^27.5.1": + "integrity" "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==" + "resolved" "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "callsites" "^3.0.0" + "graceful-fs" "^4.2.9" + "source-map" "^0.6.0" + +"@jest/test-result@^27.5.1": + "integrity" "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==" + "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/console" "^27.5.1" + "@jest/types" "^27.5.1" "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" + "collect-v8-coverage" "^1.0.0" -"@jest/test-sequencer@^27.2.3": - version "27.2.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.2.3.tgz#a9e376b91a64c6f5ab37f05e9d304340609125d7" - integrity sha512-QskUVqLU2zzRYchI2Q9I9A2xnbDqGo70WIWkKf4+tD+BAkohDxOF46Q7iYxznPiRTcoYtqttSZiNSS4rgQDxrQ== +"@jest/test-sequencer@^27.5.1": + "integrity" "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==" + "resolved" "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz" + "version" "27.5.1" dependencies: - "@jest/test-result" "^27.2.3" - graceful-fs "^4.2.4" - jest-haste-map "^27.2.3" - jest-runtime "^27.2.3" + "@jest/test-result" "^27.5.1" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^27.5.1" + "jest-runtime" "^27.5.1" -"@jest/transform@^27.2.3": - version "27.2.3" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.2.3.tgz#1df37dbfe5bc29c00f227acae11348437a76b77e" - integrity sha512-ZpYsc9vK+OfV/9hMsVOrCH/9rvzBHAp91OOzkLqdWf3FWpDzjxAH+OlLGcS4U8WeWsdpe8/rOMKLwFs9DwL/2A== +"@jest/transform@^27.5.1": + "integrity" "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==" + "resolved" "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz" + "version" "27.5.1" dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^27.2.3" - babel-plugin-istanbul "^6.0.0" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^27.2.3" - jest-regex-util "^27.0.6" - jest-util "^27.2.3" - micromatch "^4.0.4" - pirates "^4.0.1" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" + "@jest/types" "^27.5.1" + "babel-plugin-istanbul" "^6.1.1" + "chalk" "^4.0.0" + "convert-source-map" "^1.4.0" + "fast-json-stable-stringify" "^2.0.0" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^27.5.1" + "jest-regex-util" "^27.5.1" + "jest-util" "^27.5.1" + "micromatch" "^4.0.4" + "pirates" "^4.0.4" + "slash" "^3.0.0" + "source-map" "^0.6.1" + "write-file-atomic" "^3.0.0" "@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + "integrity" "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==" + "resolved" "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" + "version" "26.6.2" dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@jest/types@^27.1.1": - version "27.1.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.1.1.tgz#77a3fc014f906c65752d12123a0134359707c0ad" - integrity sha512-yqJPDDseb0mXgKqmNqypCsb85C22K1aY5+LUxh7syIM9n/b0AsaltxNy+o6tt29VcfGDpYEve175bm3uOhcehA== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" + "chalk" "^4.0.0" -"@jest/types@^27.2.3": - version "27.2.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.2.3.tgz#e0242545f442242c2538656d947a147443eee8f2" - integrity sha512-UJMDg90+W2i/QsS1NIN6Go8O/rSHLFWUkofGqKsUQs54mhmCVyLTiDy1cwKhoNO5fpmr9fctm9L/bRp/YzA1uQ== +"@jest/types@^27.5.1": + "integrity" "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==" + "resolved" "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" + "version" "27.5.1" dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^16.0.0" - chalk "^4.0.0" + "chalk" "^4.0.0" + +"@jridgewell/gen-mapping@^0.1.0": + "integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==" + "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" + "version" "0.1.1" + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/resolve-uri@^3.0.3": + "integrity" "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==" + "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz" + "version" "3.0.6" + +"@jridgewell/set-array@^1.0.0": + "integrity" "sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==" + "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.0.tgz" + "version" "1.1.0" + +"@jridgewell/sourcemap-codec@^1.4.10": + "integrity" "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" + "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz" + "version" "1.4.11" + +"@jridgewell/trace-mapping@^0.3.9": + "integrity" "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==" + "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + "version" "0.3.9" + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jsdevtools/ono@^7.1.3": + "integrity" "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==" + "resolved" "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz" + "version" "7.1.3" + +"@koa/cors@3.1.0": + "integrity" "sha512-7ulRC1da/rBa6kj6P4g2aJfnET3z8Uf3SWu60cjbtxTA5g8lxRdX/Bd2P92EagGwwAhANeNw8T8if99rJliR6Q==" + "resolved" "https://registry.npmjs.org/@koa/cors/-/cors-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "vary" "^1.1.2" + +"@koa/router@^10.0.0": + "integrity" "sha512-ORNjq5z4EmQPriKbR0ER3k4Gh7YGNhWDL7JBW+8wXDrHLbWYKYSJaOJ9aN06npF5tbTxe2JBOsurpJDAvjiXKw==" + "resolved" "https://registry.npmjs.org/@koa/router/-/router-10.1.1.tgz" + "version" "10.1.1" + dependencies: + "debug" "^4.1.1" + "http-errors" "^1.7.3" + "koa-compose" "^4.1.0" + "methods" "^1.1.2" + "path-to-regexp" "^6.1.0" + +"@latitudegames/thoth-client@file:/mnt/e/Projects/Work/nexus-thoth/client": + "resolved" "file:client" + "version" "0.1.0" + dependencies: + "@callstack/async-storage" "^2.0.3" + "@emotion/react" "^11.8.2" + "@emotion/styled" "^11.8.1" + "@latitudegames/thoth-core" "^0.0.67" + "@material-ui/core" "^4.12.1" + "@material-ui/icons" "^4.11.2" + "@monaco-editor/react" "^4.2.1" + "@mui/icons-material" "^5.5.1" + "@mui/material" "^5.5.3" + "@mui/styles" "^5.5.3" + "@rebass/forms" "^4.0.6" + "@reduxjs/toolkit" "^1.6.2" + "@types/deep-equal" "^1.0.1" + "@types/jest" "^26.0.24" + "@types/node" "^16.4.3" + "@types/react" "^18.0.0" + "@types/react-dom" "^18.0.0" + "@types/react-redux" "^7.1.18" + "add" "^2.0.6" + "axios" "^0.21.4" + "better-react-spinkit" "^2.0.4" + "classnames" "^2.3.1" + "deep-equal" "^2.0.5" + "eslint-config-react-app" "^6.0.0" + "flexlayout-react" "^0.5.12" + "handlebars" "^4.7.7" + "history" "^5.0.1" + "json-format" "^1.0.1" + "notistack" "^2.0.3" + "prism-themes" "^1.7.0" + "prismjs" "^1.24.0" + "pubsub-js" "^1.9.3" + "react" "^18.0.0" + "react-console-emulator" "^5.0.1" + "react-custom-scrollbars" "^4.2.1" + "react-custom-scrollbars-2" "^4.4.0" + "react-dom" "^18.0.0" + "react-hook-form" "^7.15.4" + "react-hotkeys-hook" "^3.3.2" + "react-icons" "^4.2.0" + "react-redux" "^7.2.5" + "react-router" "^6.0.0" + "react-router-dom" "^6.0.0" + "react-scroll-to-bottom" "^4.2.0" + "react-select" "^4.3.1" + "react-simple-code-editor" "^0.11.0" + "react-table" "7.7.0" + "rebass" "^4.0.7" + "reconnecting-websocket" "^4.4.0" + "redux" "^4.1.1" + "redux-persist" "^6.0.0" + "regenerator-runtime" "^0.13.9" + "rete-comment-plugin" "^0.7.0-rc.1" + "rete-connection-reroute-plugin" "^0.4.0" + "rete-context-menu-plugin" "^0.6.0-rc.1" + "rete-react-render-plugin" "^0.2.1" + "sharedb" "^2.2.5" + "socket.io-client" "^4.4.1" + "unique-names-generator" "^4.5.0" + "uuid" "^8.3.2" + "vite-plugin-env-compatible" "^1.1.1" + "vite-plugin-react" "^4.0.1" + "web-vitals" "^1.0.1" + +"@latitudegames/thoth-core@^0.0.67", "@latitudegames/thoth-core@file:/mnt/e/Projects/Work/nexus-thoth/core": + "resolved" "file:core" + "version" "0.0.67" + dependencies: + "@2toad/profanity" "^1.3.1" + "@green-api/whatsapp-bot" "0.2.5" + "@types/deep-equal" "^1.0.1" + "axios" "0.24.0" + "deep-equal" "^2.0.5" + "discord.js" "^13.6.0" + "dotenv-flow" "3.2.0" + "emoji-dictionary" "1.0.11" + "emoji-regex" "10.0.0" + "glob" "^7.2.0" + "googleapis" "^39.2.0" + "grawlix" "^1.0.6" + "grawlix-racism" "^1.0.2" + "handlebars" "^4.7.7" + "inquirer" "^8.2.0" + "instagram-private-api" "1.45.3" + "jsdom" "^17.0.0" + "keyword-extractor" "^0.0.20" + "license-webpack-plugin" "^4.0.2" + "lodash" "^4.17.21" + "mustache" "^4.2.0" + "natural" "^5.1.13" + "node-telegram-bot-api" "0.56.0" + "openai-api" "1.2.6" + "path" "^0.12.7" + "pg" "8.7.1" + "puppeteer" "13.0.1" + "puppeteer-extra" "3.2.3" + "puppeteer-extra-plugin-stealth" "2.9.0" + "puppeteer-screen-recorder" "^2.0.2" + "puppeteer-stream" "2.0.7" + "racist" "^1.0.6" + "react" "^18.0.0" + "readline" "^1.3.0" + "reddit" "1.2.1" + "redis" "4.0.1" + "regenerator-runtime" "^0.13.9" + "rete" "github:latitudegames/rete" + "rete-area-plugin" "^0.2.1" + "rete-connection-plugin" "^0.9.0" + "rete-context-menu-plugin" "^0.6.0-rc.1" + "rete-module-plugin" "^0.4.1" + "rete-react-render-plugin" "^0.2.1" + "similarity" "^1.2.1" + "snoostream" "1.0.1" + "snoowrap" "1.23.0" + "tedis" "0.1.12" + "twilio" "3.72.0" + "twit" "2.2.11" + "twitter-api-v2" "1.8.0" + "twitter-autohook" "1.7.2" + "uuid" "^8.3.2" + "weaviate-client" "^2.3.0" + "wikipedia" "^1.1.6" + "xvfb" "0.4.0" + +"@latitudegames/thoth-server@file:/mnt/e/Projects/Work/nexus-thoth/server": + "resolved" "file:server" + "version" "0.1.0" + dependencies: + "@2toad/profanity" "^1.3.1" + "@google-cloud/speech" "^4.10.0" + "@koa/cors" "3.1.0" + "@koa/router" "^10.0.0" + "@types/dotenv-flow" "^3.2.0" + "@types/jsonwebtoken" "^8.5.6" + "aws-sdk" "^2.1027.0" + "axios" "0.24.0" + "bcrypt" "^5.0.1" + "compromise" "^14.0.0" + "cors-anywhere" "^0.4.4" + "crypto-js" "^4.0.0" + "discord.js" "^13.6.0" + "dotenv-flow" "^3.1.0" + "email-validator" "^2.0.4" + "english-anagrams" "^1.0.0" + "global" "^4.4.0" + "gpt-3-encoder" "^1.1.3" + "http-status-codes" "^2.1.4" + "jsdom" "^17.0.0" + "jsonwebtoken" "^8.5.1" + "koa" "^2.13.1" + "koa-body" "4.2.0" + "koa-compose" "4.1.0" + "lodash" "^4.17.21" + "nodemon" "^2.0.7" + "openai-api" "^1.2.5" + "ot-json0" "^1.1.0" + "pg" "8.7.1" + "pg-hstore" "2.3.4" + "pm2" "^5.0.0" + "promise-retry" "^2.0.1" + "request" "^2.88.2" + "request-promise" "^4.2.6" + "sequelize" "^6.15.0" + "sequelize-auto" "^0.8.8" + "similarity" "^1.2.1" + "socket.io" "^4.4.1" + "stripe" "^8.191.0" + "ts-node" "^10.2.1" + "uuid" "^8.3.2" + "verify-apple-id-token" "^2.1.0" + +"@latitudegames/thoth-sharedb@file:/mnt/e/Projects/Work/nexus-thoth/sharedb": + "resolved" "file:sharedb" + "version" "1.0.0" + dependencies: + "@teamwork/websocket-json-stream" "^2.0.0" + "express" "^4.17.3" + "sharedb" "^2.2.5" + "ws" "^8.5.0" + +"@leichtgewicht/ip-codec@^2.0.1": + "integrity" "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==" + "resolved" "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz" + "version" "2.0.3" "@lerna/add@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-4.0.0.tgz#c36f57d132502a57b9e7058d1548b7a565ef183f" - integrity sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng== + "integrity" "sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng==" + "resolved" "https://registry.npmjs.org/@lerna/add/-/add-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/bootstrap" "4.0.0" "@lerna/command" "4.0.0" "@lerna/filter-options" "4.0.0" "@lerna/npm-conf" "4.0.0" "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - npm-package-arg "^8.1.0" - p-map "^4.0.0" - pacote "^11.2.6" - semver "^7.3.4" + "dedent" "^0.7.0" + "npm-package-arg" "^8.1.0" + "p-map" "^4.0.0" + "pacote" "^11.2.6" + "semver" "^7.3.4" "@lerna/bootstrap@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-4.0.0.tgz#5f5c5e2c6cfc8fcec50cb2fbe569a8c607101891" - integrity sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw== + "integrity" "sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw==" + "resolved" "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/command" "4.0.0" "@lerna/filter-options" "4.0.0" @@ -1591,21 +2192,21 @@ "@lerna/symlink-binary" "4.0.0" "@lerna/symlink-dependencies" "4.0.0" "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - get-port "^5.1.1" - multimatch "^5.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - p-map "^4.0.0" - p-map-series "^2.1.0" - p-waterfall "^2.1.1" - read-package-tree "^5.3.1" - semver "^7.3.4" + "dedent" "^0.7.0" + "get-port" "^5.1.1" + "multimatch" "^5.0.0" + "npm-package-arg" "^8.1.0" + "npmlog" "^4.1.2" + "p-map" "^4.0.0" + "p-map-series" "^2.1.0" + "p-waterfall" "^2.1.1" + "read-package-tree" "^5.3.1" + "semver" "^7.3.4" "@lerna/changed@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-4.0.0.tgz#b9fc76cea39b9292a6cd263f03eb57af85c9270b" - integrity sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ== + "integrity" "sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ==" + "resolved" "https://registry.npmjs.org/@lerna/changed/-/changed-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/collect-updates" "4.0.0" "@lerna/command" "4.0.0" @@ -1613,155 +2214,155 @@ "@lerna/output" "4.0.0" "@lerna/check-working-tree@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-4.0.0.tgz#257e36a602c00142e76082a19358e3e1ae8dbd58" - integrity sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q== + "integrity" "sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q==" + "resolved" "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/collect-uncommitted" "4.0.0" "@lerna/describe-ref" "4.0.0" "@lerna/validation-error" "4.0.0" "@lerna/child-process@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-4.0.0.tgz#341b96a57dffbd9705646d316e231df6fa4df6e1" - integrity sha512-XtCnmCT9eyVsUUHx6y/CTBYdV9g2Cr/VxyseTWBgfIur92/YKClfEtJTbOh94jRT62hlKLqSvux/UhxXVh613Q== + "integrity" "sha512-XtCnmCT9eyVsUUHx6y/CTBYdV9g2Cr/VxyseTWBgfIur92/YKClfEtJTbOh94jRT62hlKLqSvux/UhxXVh613Q==" + "resolved" "https://registry.npmjs.org/@lerna/child-process/-/child-process-4.0.0.tgz" + "version" "4.0.0" dependencies: - chalk "^4.1.0" - execa "^5.0.0" - strong-log-transformer "^2.1.0" + "chalk" "^4.1.0" + "execa" "^5.0.0" + "strong-log-transformer" "^2.1.0" "@lerna/clean@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-4.0.0.tgz#8f778b6f2617aa2a936a6b5e085ae62498e57dc5" - integrity sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA== + "integrity" "sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA==" + "resolved" "https://registry.npmjs.org/@lerna/clean/-/clean-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/command" "4.0.0" "@lerna/filter-options" "4.0.0" "@lerna/prompt" "4.0.0" "@lerna/pulse-till-done" "4.0.0" "@lerna/rimraf-dir" "4.0.0" - p-map "^4.0.0" - p-map-series "^2.1.0" - p-waterfall "^2.1.1" + "p-map" "^4.0.0" + "p-map-series" "^2.1.0" + "p-waterfall" "^2.1.1" "@lerna/cli@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-4.0.0.tgz#8eabd334558836c1664df23f19acb95e98b5bbf3" - integrity sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA== + "integrity" "sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA==" + "resolved" "https://registry.npmjs.org/@lerna/cli/-/cli-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/global-options" "4.0.0" - dedent "^0.7.0" - npmlog "^4.1.2" - yargs "^16.2.0" + "dedent" "^0.7.0" + "npmlog" "^4.1.2" + "yargs" "^16.2.0" "@lerna/collect-uncommitted@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-4.0.0.tgz#855cd64612969371cfc2453b90593053ff1ba779" - integrity sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g== + "integrity" "sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g==" + "resolved" "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/child-process" "4.0.0" - chalk "^4.1.0" - npmlog "^4.1.2" + "chalk" "^4.1.0" + "npmlog" "^4.1.2" "@lerna/collect-updates@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-4.0.0.tgz#8e208b1bafd98a372ff1177f7a5e288f6bea8041" - integrity sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw== + "integrity" "sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw==" + "resolved" "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/child-process" "4.0.0" "@lerna/describe-ref" "4.0.0" - minimatch "^3.0.4" - npmlog "^4.1.2" - slash "^3.0.0" + "minimatch" "^3.0.4" + "npmlog" "^4.1.2" + "slash" "^3.0.0" "@lerna/command@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-4.0.0.tgz#991c7971df8f5bf6ae6e42c808869a55361c1b98" - integrity sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A== + "integrity" "sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A==" + "resolved" "https://registry.npmjs.org/@lerna/command/-/command-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/child-process" "4.0.0" "@lerna/package-graph" "4.0.0" "@lerna/project" "4.0.0" "@lerna/validation-error" "4.0.0" "@lerna/write-log-file" "4.0.0" - clone-deep "^4.0.1" - dedent "^0.7.0" - execa "^5.0.0" - is-ci "^2.0.0" - npmlog "^4.1.2" + "clone-deep" "^4.0.1" + "dedent" "^0.7.0" + "execa" "^5.0.0" + "is-ci" "^2.0.0" + "npmlog" "^4.1.2" "@lerna/conventional-commits@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-4.0.0.tgz#660fb2c7b718cb942ead70110df61f18c6f99750" - integrity sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw== + "integrity" "sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw==" + "resolved" "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/validation-error" "4.0.0" - conventional-changelog-angular "^5.0.12" - conventional-changelog-core "^4.2.2" - conventional-recommended-bump "^6.1.0" - fs-extra "^9.1.0" - get-stream "^6.0.0" - lodash.template "^4.5.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - pify "^5.0.0" - semver "^7.3.4" + "conventional-changelog-angular" "^5.0.12" + "conventional-changelog-core" "^4.2.2" + "conventional-recommended-bump" "^6.1.0" + "fs-extra" "^9.1.0" + "get-stream" "^6.0.0" + "lodash.template" "^4.5.0" + "npm-package-arg" "^8.1.0" + "npmlog" "^4.1.2" + "pify" "^5.0.0" + "semver" "^7.3.4" "@lerna/create-symlink@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-4.0.0.tgz#8c5317ce5ae89f67825443bd7651bf4121786228" - integrity sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig== + "integrity" "sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig==" + "resolved" "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-4.0.0.tgz" + "version" "4.0.0" dependencies: - cmd-shim "^4.1.0" - fs-extra "^9.1.0" - npmlog "^4.1.2" + "cmd-shim" "^4.1.0" + "fs-extra" "^9.1.0" + "npmlog" "^4.1.2" "@lerna/create@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-4.0.0.tgz#b6947e9b5dfb6530321952998948c3e63d64d730" - integrity sha512-mVOB1niKByEUfxlbKTM1UNECWAjwUdiioIbRQZEeEabtjCL69r9rscIsjlGyhGWCfsdAG5wfq4t47nlDXdLLag== + "integrity" "sha512-mVOB1niKByEUfxlbKTM1UNECWAjwUdiioIbRQZEeEabtjCL69r9rscIsjlGyhGWCfsdAG5wfq4t47nlDXdLLag==" + "resolved" "https://registry.npmjs.org/@lerna/create/-/create-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/child-process" "4.0.0" "@lerna/command" "4.0.0" "@lerna/npm-conf" "4.0.0" "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - fs-extra "^9.1.0" - globby "^11.0.2" - init-package-json "^2.0.2" - npm-package-arg "^8.1.0" - p-reduce "^2.1.0" - pacote "^11.2.6" - pify "^5.0.0" - semver "^7.3.4" - slash "^3.0.0" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^3.0.0" - whatwg-url "^8.4.0" - yargs-parser "20.2.4" + "dedent" "^0.7.0" + "fs-extra" "^9.1.0" + "globby" "^11.0.2" + "init-package-json" "^2.0.2" + "npm-package-arg" "^8.1.0" + "p-reduce" "^2.1.0" + "pacote" "^11.2.6" + "pify" "^5.0.0" + "semver" "^7.3.4" + "slash" "^3.0.0" + "validate-npm-package-license" "^3.0.4" + "validate-npm-package-name" "^3.0.0" + "whatwg-url" "^8.4.0" + "yargs-parser" "20.2.4" "@lerna/describe-ref@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-4.0.0.tgz#53c53b4ea65fdceffa072a62bfebe6772c45d9ec" - integrity sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ== + "integrity" "sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ==" + "resolved" "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/child-process" "4.0.0" - npmlog "^4.1.2" + "npmlog" "^4.1.2" "@lerna/diff@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-4.0.0.tgz#6d3071817aaa4205a07bf77cfc6e932796d48b92" - integrity sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag== + "integrity" "sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag==" + "resolved" "https://registry.npmjs.org/@lerna/diff/-/diff-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/child-process" "4.0.0" "@lerna/command" "4.0.0" "@lerna/validation-error" "4.0.0" - npmlog "^4.1.2" + "npmlog" "^4.1.2" "@lerna/exec@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-4.0.0.tgz#eb6cb95cb92d42590e9e2d628fcaf4719d4a8be6" - integrity sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw== + "integrity" "sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw==" + "resolved" "https://registry.npmjs.org/@lerna/exec/-/exec-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/child-process" "4.0.0" "@lerna/command" "4.0.0" @@ -1769,125 +2370,125 @@ "@lerna/profiler" "4.0.0" "@lerna/run-topologically" "4.0.0" "@lerna/validation-error" "4.0.0" - p-map "^4.0.0" + "p-map" "^4.0.0" "@lerna/filter-options@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-4.0.0.tgz#ac94cc515d7fa3b47e2f7d74deddeabb1de5e9e6" - integrity sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw== + "integrity" "sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw==" + "resolved" "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/collect-updates" "4.0.0" "@lerna/filter-packages" "4.0.0" - dedent "^0.7.0" - npmlog "^4.1.2" + "dedent" "^0.7.0" + "npmlog" "^4.1.2" "@lerna/filter-packages@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-4.0.0.tgz#b1f70d70e1de9cdd36a4e50caa0ac501f8d012f2" - integrity sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA== + "integrity" "sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA==" + "resolved" "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/validation-error" "4.0.0" - multimatch "^5.0.0" - npmlog "^4.1.2" + "multimatch" "^5.0.0" + "npmlog" "^4.1.2" "@lerna/get-npm-exec-opts@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-4.0.0.tgz#dc955be94a4ae75c374ef9bce91320887d34608f" - integrity sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ== + "integrity" "sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ==" + "resolved" "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-4.0.0.tgz" + "version" "4.0.0" dependencies: - npmlog "^4.1.2" + "npmlog" "^4.1.2" "@lerna/get-packed@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-4.0.0.tgz#0989d61624ac1f97e393bdad2137c49cd7a37823" - integrity sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w== + "integrity" "sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w==" + "resolved" "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-4.0.0.tgz" + "version" "4.0.0" dependencies: - fs-extra "^9.1.0" - ssri "^8.0.1" - tar "^6.1.0" + "fs-extra" "^9.1.0" + "ssri" "^8.0.1" + "tar" "^6.1.0" "@lerna/github-client@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-4.0.0.tgz#2ced67721363ef70f8e12ffafce4410918f4a8a4" - integrity sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw== + "integrity" "sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw==" + "resolved" "https://registry.npmjs.org/@lerna/github-client/-/github-client-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/child-process" "4.0.0" "@octokit/plugin-enterprise-rest" "^6.0.1" "@octokit/rest" "^18.1.0" - git-url-parse "^11.4.4" - npmlog "^4.1.2" + "git-url-parse" "^11.4.4" + "npmlog" "^4.1.2" "@lerna/gitlab-client@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-4.0.0.tgz#00dad73379c7b38951d4b4ded043504c14e2b67d" - integrity sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA== + "integrity" "sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA==" + "resolved" "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-4.0.0.tgz" + "version" "4.0.0" dependencies: - node-fetch "^2.6.1" - npmlog "^4.1.2" - whatwg-url "^8.4.0" + "node-fetch" "^2.6.1" + "npmlog" "^4.1.2" + "whatwg-url" "^8.4.0" "@lerna/global-options@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-4.0.0.tgz#c7d8b0de6a01d8a845e2621ea89e7f60f18c6a5f" - integrity sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ== + "integrity" "sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ==" + "resolved" "https://registry.npmjs.org/@lerna/global-options/-/global-options-4.0.0.tgz" + "version" "4.0.0" "@lerna/has-npm-version@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-4.0.0.tgz#d3fc3292c545eb28bd493b36e6237cf0279f631c" - integrity sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg== + "integrity" "sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg==" + "resolved" "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/child-process" "4.0.0" - semver "^7.3.4" + "semver" "^7.3.4" "@lerna/import@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-4.0.0.tgz#bde656c4a451fa87ae41733ff8a8da60547c5465" - integrity sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg== + "integrity" "sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg==" + "resolved" "https://registry.npmjs.org/@lerna/import/-/import-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/child-process" "4.0.0" "@lerna/command" "4.0.0" "@lerna/prompt" "4.0.0" "@lerna/pulse-till-done" "4.0.0" "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - fs-extra "^9.1.0" - p-map-series "^2.1.0" + "dedent" "^0.7.0" + "fs-extra" "^9.1.0" + "p-map-series" "^2.1.0" "@lerna/info@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/info/-/info-4.0.0.tgz#b9fb0e479d60efe1623603958a831a88b1d7f1fc" - integrity sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q== + "integrity" "sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q==" + "resolved" "https://registry.npmjs.org/@lerna/info/-/info-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/command" "4.0.0" "@lerna/output" "4.0.0" - envinfo "^7.7.4" + "envinfo" "^7.7.4" "@lerna/init@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-4.0.0.tgz#dadff67e6dfb981e8ccbe0e6a310e837962f6c7a" - integrity sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ== + "integrity" "sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ==" + "resolved" "https://registry.npmjs.org/@lerna/init/-/init-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/child-process" "4.0.0" "@lerna/command" "4.0.0" - fs-extra "^9.1.0" - p-map "^4.0.0" - write-json-file "^4.3.0" + "fs-extra" "^9.1.0" + "p-map" "^4.0.0" + "write-json-file" "^4.3.0" "@lerna/link@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-4.0.0.tgz#c3a38aabd44279d714e90f2451e31b63f0fb65ba" - integrity sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w== + "integrity" "sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w==" + "resolved" "https://registry.npmjs.org/@lerna/link/-/link-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/command" "4.0.0" "@lerna/package-graph" "4.0.0" "@lerna/symlink-dependencies" "4.0.0" - p-map "^4.0.0" - slash "^3.0.0" + "p-map" "^4.0.0" + "slash" "^3.0.0" "@lerna/list@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-4.0.0.tgz#24b4e6995bd73f81c556793fe502b847efd9d1d7" - integrity sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg== + "integrity" "sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg==" + "resolved" "https://registry.npmjs.org/@lerna/list/-/list-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/command" "4.0.0" "@lerna/filter-options" "4.0.0" @@ -1895,171 +2496,171 @@ "@lerna/output" "4.0.0" "@lerna/listable@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-4.0.0.tgz#d00d6cb4809b403f2b0374fc521a78e318b01214" - integrity sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ== + "integrity" "sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ==" + "resolved" "https://registry.npmjs.org/@lerna/listable/-/listable-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/query-graph" "4.0.0" - chalk "^4.1.0" - columnify "^1.5.4" + "chalk" "^4.1.0" + "columnify" "^1.5.4" "@lerna/log-packed@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-4.0.0.tgz#95168fe2e26ac6a71e42f4be857519b77e57a09f" - integrity sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ== + "integrity" "sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ==" + "resolved" "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-4.0.0.tgz" + "version" "4.0.0" dependencies: - byte-size "^7.0.0" - columnify "^1.5.4" - has-unicode "^2.0.1" - npmlog "^4.1.2" + "byte-size" "^7.0.0" + "columnify" "^1.5.4" + "has-unicode" "^2.0.1" + "npmlog" "^4.1.2" "@lerna/npm-conf@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-4.0.0.tgz#b259fd1e1cee2bf5402b236e770140ff9ade7fd2" - integrity sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw== + "integrity" "sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw==" + "resolved" "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-4.0.0.tgz" + "version" "4.0.0" dependencies: - config-chain "^1.1.12" - pify "^5.0.0" + "config-chain" "^1.1.12" + "pify" "^5.0.0" "@lerna/npm-dist-tag@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-4.0.0.tgz#d1e99b4eccd3414142f0548ad331bf2d53f3257a" - integrity sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw== + "integrity" "sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw==" + "resolved" "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/otplease" "4.0.0" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" - npmlog "^4.1.2" + "npm-package-arg" "^8.1.0" + "npm-registry-fetch" "^9.0.0" + "npmlog" "^4.1.2" "@lerna/npm-install@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-4.0.0.tgz#31180be3ab3b7d1818a1a0c206aec156b7094c78" - integrity sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg== + "integrity" "sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg==" + "resolved" "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/child-process" "4.0.0" "@lerna/get-npm-exec-opts" "4.0.0" - fs-extra "^9.1.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - signal-exit "^3.0.3" - write-pkg "^4.0.0" + "fs-extra" "^9.1.0" + "npm-package-arg" "^8.1.0" + "npmlog" "^4.1.2" + "signal-exit" "^3.0.3" + "write-pkg" "^4.0.0" "@lerna/npm-publish@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-4.0.0.tgz#84eb62e876fe949ae1fd62c60804423dbc2c4472" - integrity sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w== + "integrity" "sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w==" + "resolved" "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/otplease" "4.0.0" "@lerna/run-lifecycle" "4.0.0" - fs-extra "^9.1.0" - libnpmpublish "^4.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - pify "^5.0.0" - read-package-json "^3.0.0" + "fs-extra" "^9.1.0" + "libnpmpublish" "^4.0.0" + "npm-package-arg" "^8.1.0" + "npmlog" "^4.1.2" + "pify" "^5.0.0" + "read-package-json" "^3.0.0" "@lerna/npm-run-script@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-4.0.0.tgz#dfebf4f4601442e7c0b5214f9fb0d96c9350743b" - integrity sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA== + "integrity" "sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA==" + "resolved" "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/child-process" "4.0.0" "@lerna/get-npm-exec-opts" "4.0.0" - npmlog "^4.1.2" + "npmlog" "^4.1.2" "@lerna/otplease@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-4.0.0.tgz#84972eb43448f8a1077435ba1c5e59233b725850" - integrity sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw== + "integrity" "sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw==" + "resolved" "https://registry.npmjs.org/@lerna/otplease/-/otplease-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/prompt" "4.0.0" "@lerna/output@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-4.0.0.tgz#b1d72215c0e35483e4f3e9994debc82c621851f2" - integrity sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w== + "integrity" "sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w==" + "resolved" "https://registry.npmjs.org/@lerna/output/-/output-4.0.0.tgz" + "version" "4.0.0" dependencies: - npmlog "^4.1.2" + "npmlog" "^4.1.2" "@lerna/pack-directory@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-4.0.0.tgz#8b617db95d20792f043aaaa13a9ccc0e04cb4c74" - integrity sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ== + "integrity" "sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ==" + "resolved" "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/get-packed" "4.0.0" "@lerna/package" "4.0.0" "@lerna/run-lifecycle" "4.0.0" - npm-packlist "^2.1.4" - npmlog "^4.1.2" - tar "^6.1.0" - temp-write "^4.0.0" + "npm-packlist" "^2.1.4" + "npmlog" "^4.1.2" + "tar" "^6.1.0" + "temp-write" "^4.0.0" "@lerna/package-graph@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-4.0.0.tgz#16a00253a8ac810f72041481cb46bcee8d8123dd" - integrity sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw== + "integrity" "sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw==" + "resolved" "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/prerelease-id-from-version" "4.0.0" "@lerna/validation-error" "4.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - semver "^7.3.4" + "npm-package-arg" "^8.1.0" + "npmlog" "^4.1.2" + "semver" "^7.3.4" "@lerna/package@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-4.0.0.tgz#1b4c259c4bcff45c876ee1d591a043aacbc0d6b7" - integrity sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q== + "integrity" "sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q==" + "resolved" "https://registry.npmjs.org/@lerna/package/-/package-4.0.0.tgz" + "version" "4.0.0" dependencies: - load-json-file "^6.2.0" - npm-package-arg "^8.1.0" - write-pkg "^4.0.0" + "load-json-file" "^6.2.0" + "npm-package-arg" "^8.1.0" + "write-pkg" "^4.0.0" "@lerna/prerelease-id-from-version@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-4.0.0.tgz#c7e0676fcee1950d85630e108eddecdd5b48c916" - integrity sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg== + "integrity" "sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg==" + "resolved" "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-4.0.0.tgz" + "version" "4.0.0" dependencies: - semver "^7.3.4" + "semver" "^7.3.4" "@lerna/profiler@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-4.0.0.tgz#8a53ab874522eae15d178402bff90a14071908e9" - integrity sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q== + "integrity" "sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q==" + "resolved" "https://registry.npmjs.org/@lerna/profiler/-/profiler-4.0.0.tgz" + "version" "4.0.0" dependencies: - fs-extra "^9.1.0" - npmlog "^4.1.2" - upath "^2.0.1" + "fs-extra" "^9.1.0" + "npmlog" "^4.1.2" + "upath" "^2.0.1" "@lerna/project@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-4.0.0.tgz#ff84893935833533a74deff30c0e64ddb7f0ba6b" - integrity sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg== + "integrity" "sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg==" + "resolved" "https://registry.npmjs.org/@lerna/project/-/project-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/package" "4.0.0" "@lerna/validation-error" "4.0.0" - cosmiconfig "^7.0.0" - dedent "^0.7.0" - dot-prop "^6.0.1" - glob-parent "^5.1.1" - globby "^11.0.2" - load-json-file "^6.2.0" - npmlog "^4.1.2" - p-map "^4.0.0" - resolve-from "^5.0.0" - write-json-file "^4.3.0" + "cosmiconfig" "^7.0.0" + "dedent" "^0.7.0" + "dot-prop" "^6.0.1" + "glob-parent" "^5.1.1" + "globby" "^11.0.2" + "load-json-file" "^6.2.0" + "npmlog" "^4.1.2" + "p-map" "^4.0.0" + "resolve-from" "^5.0.0" + "write-json-file" "^4.3.0" "@lerna/prompt@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-4.0.0.tgz#5ec69a803f3f0db0ad9f221dad64664d3daca41b" - integrity sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ== + "integrity" "sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ==" + "resolved" "https://registry.npmjs.org/@lerna/prompt/-/prompt-4.0.0.tgz" + "version" "4.0.0" dependencies: - inquirer "^7.3.3" - npmlog "^4.1.2" + "inquirer" "^7.3.3" + "npmlog" "^4.1.2" "@lerna/publish@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-4.0.0.tgz#f67011305adeba120066a3b6d984a5bb5fceef65" - integrity sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg== + "integrity" "sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg==" + "resolved" "https://registry.npmjs.org/@lerna/publish/-/publish-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/check-working-tree" "4.0.0" "@lerna/child-process" "4.0.0" @@ -2080,70 +2681,70 @@ "@lerna/run-topologically" "4.0.0" "@lerna/validation-error" "4.0.0" "@lerna/version" "4.0.0" - fs-extra "^9.1.0" - libnpmaccess "^4.0.1" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" - npmlog "^4.1.2" - p-map "^4.0.0" - p-pipe "^3.1.0" - pacote "^11.2.6" - semver "^7.3.4" + "fs-extra" "^9.1.0" + "libnpmaccess" "^4.0.1" + "npm-package-arg" "^8.1.0" + "npm-registry-fetch" "^9.0.0" + "npmlog" "^4.1.2" + "p-map" "^4.0.0" + "p-pipe" "^3.1.0" + "pacote" "^11.2.6" + "semver" "^7.3.4" "@lerna/pulse-till-done@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-4.0.0.tgz#04bace7d483a8205c187b806bcd8be23d7bb80a3" - integrity sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg== + "integrity" "sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg==" + "resolved" "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-4.0.0.tgz" + "version" "4.0.0" dependencies: - npmlog "^4.1.2" + "npmlog" "^4.1.2" "@lerna/query-graph@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-4.0.0.tgz#09dd1c819ac5ee3f38db23931143701f8a6eef63" - integrity sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg== + "integrity" "sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg==" + "resolved" "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/package-graph" "4.0.0" "@lerna/resolve-symlink@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-4.0.0.tgz#6d006628a210c9b821964657a9e20a8c9a115e14" - integrity sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA== + "integrity" "sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA==" + "resolved" "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-4.0.0.tgz" + "version" "4.0.0" dependencies: - fs-extra "^9.1.0" - npmlog "^4.1.2" - read-cmd-shim "^2.0.0" + "fs-extra" "^9.1.0" + "npmlog" "^4.1.2" + "read-cmd-shim" "^2.0.0" "@lerna/rimraf-dir@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-4.0.0.tgz#2edf3b62d4eb0ef4e44e430f5844667d551ec25a" - integrity sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg== + "integrity" "sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg==" + "resolved" "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/child-process" "4.0.0" - npmlog "^4.1.2" - path-exists "^4.0.0" - rimraf "^3.0.2" + "npmlog" "^4.1.2" + "path-exists" "^4.0.0" + "rimraf" "^3.0.2" "@lerna/run-lifecycle@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-4.0.0.tgz#e648a46f9210a9bcd7c391df6844498cb5079334" - integrity sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ== + "integrity" "sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ==" + "resolved" "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/npm-conf" "4.0.0" - npm-lifecycle "^3.1.5" - npmlog "^4.1.2" + "npm-lifecycle" "^3.1.5" + "npmlog" "^4.1.2" "@lerna/run-topologically@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-4.0.0.tgz#af846eeee1a09b0c2be0d1bfb5ef0f7b04bb1827" - integrity sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA== + "integrity" "sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA==" + "resolved" "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/query-graph" "4.0.0" - p-queue "^6.6.2" + "p-queue" "^6.6.2" "@lerna/run@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-4.0.0.tgz#4bc7fda055a729487897c23579694f6183c91262" - integrity sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ== + "integrity" "sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ==" + "resolved" "https://registry.npmjs.org/@lerna/run/-/run-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/command" "4.0.0" "@lerna/filter-options" "4.0.0" @@ -2153,46 +2754,46 @@ "@lerna/run-topologically" "4.0.0" "@lerna/timer" "4.0.0" "@lerna/validation-error" "4.0.0" - p-map "^4.0.0" + "p-map" "^4.0.0" "@lerna/symlink-binary@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-4.0.0.tgz#21009f62d53a425f136cb4c1a32c6b2a0cc02d47" - integrity sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA== + "integrity" "sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA==" + "resolved" "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/create-symlink" "4.0.0" "@lerna/package" "4.0.0" - fs-extra "^9.1.0" - p-map "^4.0.0" + "fs-extra" "^9.1.0" + "p-map" "^4.0.0" "@lerna/symlink-dependencies@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-4.0.0.tgz#8910eca084ae062642d0490d8972cf2d98e9ebbd" - integrity sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw== + "integrity" "sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw==" + "resolved" "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/create-symlink" "4.0.0" "@lerna/resolve-symlink" "4.0.0" "@lerna/symlink-binary" "4.0.0" - fs-extra "^9.1.0" - p-map "^4.0.0" - p-map-series "^2.1.0" + "fs-extra" "^9.1.0" + "p-map" "^4.0.0" + "p-map-series" "^2.1.0" "@lerna/timer@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-4.0.0.tgz#a52e51bfcd39bfd768988049ace7b15c1fd7a6da" - integrity sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg== + "integrity" "sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg==" + "resolved" "https://registry.npmjs.org/@lerna/timer/-/timer-4.0.0.tgz" + "version" "4.0.0" "@lerna/validation-error@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-4.0.0.tgz#af9d62fe8304eaa2eb9a6ba1394f9aa807026d35" - integrity sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw== + "integrity" "sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw==" + "resolved" "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-4.0.0.tgz" + "version" "4.0.0" dependencies: - npmlog "^4.1.2" + "npmlog" "^4.1.2" "@lerna/version@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-4.0.0.tgz#532659ec6154d8a8789c5ab53878663e244e3228" - integrity sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA== + "integrity" "sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA==" + "resolved" "https://registry.npmjs.org/@lerna/version/-/version-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/check-working-tree" "4.0.0" "@lerna/child-process" "4.0.0" @@ -2207,610 +2808,963 @@ "@lerna/run-lifecycle" "4.0.0" "@lerna/run-topologically" "4.0.0" "@lerna/validation-error" "4.0.0" - chalk "^4.1.0" - dedent "^0.7.0" - load-json-file "^6.2.0" - minimatch "^3.0.4" - npmlog "^4.1.2" - p-map "^4.0.0" - p-pipe "^3.1.0" - p-reduce "^2.1.0" - p-waterfall "^2.1.1" - semver "^7.3.4" - slash "^3.0.0" - temp-write "^4.0.0" - write-json-file "^4.3.0" + "chalk" "^4.1.0" + "dedent" "^0.7.0" + "load-json-file" "^6.2.0" + "minimatch" "^3.0.4" + "npmlog" "^4.1.2" + "p-map" "^4.0.0" + "p-pipe" "^3.1.0" + "p-reduce" "^2.1.0" + "p-waterfall" "^2.1.1" + "semver" "^7.3.4" + "slash" "^3.0.0" + "temp-write" "^4.0.0" + "write-json-file" "^4.3.0" "@lerna/write-log-file@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-4.0.0.tgz#18221a38a6a307d6b0a5844dd592ad53fa27091e" - integrity sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg== - dependencies: - npmlog "^4.1.2" - write-file-atomic "^3.0.3" - -"@monaco-editor/loader@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.1.1.tgz#37db648c81a86946d0febd391de00df9c28a0a3d" - integrity sha512-mkT4r4xDjIyOG9o9M6rJDSzEIeonwF80sYErxEvAAL4LncFVdcbNli8Qv6NDqF6nyv6sunuKkDzo4iFjxPL+uQ== - dependencies: - state-local "^1.0.6" + "integrity" "sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg==" + "resolved" "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "npmlog" "^4.1.2" + "write-file-atomic" "^3.0.3" + +"@lifeomic/attempt@^3.0.0": + "integrity" "sha512-GlM2AbzrErd/TmLL3E8hAHmb5Q7VhDJp35vIbyPVA5Rz55LZuRr8pwL3qrwwkVNo05gMX1J44gURKb4MHQZo7w==" + "resolved" "https://registry.npmjs.org/@lifeomic/attempt/-/attempt-3.0.3.tgz" + "version" "3.0.3" + +"@mapbox/node-pre-gyp@^1.0.0": + "integrity" "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==" + "resolved" "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz" + "version" "1.0.9" + dependencies: + "detect-libc" "^2.0.0" + "https-proxy-agent" "^5.0.0" + "make-dir" "^3.1.0" + "node-fetch" "^2.6.7" + "nopt" "^5.0.0" + "npmlog" "^5.0.1" + "rimraf" "^3.0.2" + "semver" "^7.3.5" + "tar" "^6.1.11" + +"@material-ui/core@^4.12.1": + "integrity" "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==" + "resolved" "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz" + "version" "4.12.4" + dependencies: + "@babel/runtime" "^7.4.4" + "@material-ui/styles" "^4.11.5" + "@material-ui/system" "^4.12.2" + "@material-ui/types" "5.1.0" + "@material-ui/utils" "^4.11.3" + "@types/react-transition-group" "^4.2.0" + "clsx" "^1.0.4" + "hoist-non-react-statics" "^3.3.2" + "popper.js" "1.16.1-lts" + "prop-types" "^15.7.2" + "react-is" "^16.8.0 || ^17.0.0" + "react-transition-group" "^4.4.0" + +"@material-ui/icons@^4.11.2": + "integrity" "sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==" + "resolved" "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz" + "version" "4.11.3" + dependencies: + "@babel/runtime" "^7.4.4" + +"@material-ui/styles@^4.11.5": + "integrity" "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==" + "resolved" "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz" + "version" "4.11.5" + dependencies: + "@babel/runtime" "^7.4.4" + "@emotion/hash" "^0.8.0" + "@material-ui/types" "5.1.0" + "@material-ui/utils" "^4.11.3" + "clsx" "^1.0.4" + "csstype" "^2.5.2" + "hoist-non-react-statics" "^3.3.2" + "jss" "^10.5.1" + "jss-plugin-camel-case" "^10.5.1" + "jss-plugin-default-unit" "^10.5.1" + "jss-plugin-global" "^10.5.1" + "jss-plugin-nested" "^10.5.1" + "jss-plugin-props-sort" "^10.5.1" + "jss-plugin-rule-value-function" "^10.5.1" + "jss-plugin-vendor-prefixer" "^10.5.1" + "prop-types" "^15.7.2" + +"@material-ui/system@^4.12.2": + "integrity" "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==" + "resolved" "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz" + "version" "4.12.2" + dependencies: + "@babel/runtime" "^7.4.4" + "@material-ui/utils" "^4.11.3" + "csstype" "^2.5.2" + "prop-types" "^15.7.2" + +"@material-ui/types@5.1.0": + "integrity" "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==" + "resolved" "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz" + "version" "5.1.0" + +"@material-ui/utils@^4.11.3": + "integrity" "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==" + "resolved" "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz" + "version" "4.11.3" + dependencies: + "@babel/runtime" "^7.4.4" + "prop-types" "^15.7.2" + "react-is" "^16.8.0 || ^17.0.0" + +"@monaco-editor/loader@^1.3.1": + "integrity" "sha512-LfpAO6e54SZQW0nnI1sWKO4XtAlNx3WHXYZixeVy0HhZ4txGPOok4rs2u4dSi2+iRWeL198cZ2FlFQKr8mH+cw==" + "resolved" "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.3.1.tgz" + "version" "1.3.1" + dependencies: + "state-local" "^1.0.6" "@monaco-editor/react@^4.2.1": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@monaco-editor/react/-/react-4.2.2.tgz#636e5b8eb9519ef62f475f9a4a50f62ee0c493a8" - integrity sha512-yDDct+f/mZ946tJEXudvmMC8zXDygkELNujpJGjqJ0gS3WePZmS/IwBBsuJ8JyKQQC3Dy/+Ivg1sSpW+UvCv9g== + "integrity" "sha512-yQsYnVkgP5RC5ZMoRVCXSBn4D4hLUOgoQK+AZJpVY57NDXmEb57OVaaYKh8/RTzxkpuLV278hKNw5DnuzlgQwg==" + "resolved" "https://registry.npmjs.org/@monaco-editor/react/-/react-4.4.4.tgz" + "version" "4.4.4" dependencies: - "@monaco-editor/loader" "^1.1.1" - prop-types "^15.7.2" + "@monaco-editor/loader" "^1.3.1" + "prop-types" "^15.7.2" -"@mui/base@5.0.0-alpha.74": - version "5.0.0-alpha.74" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.74.tgz#15509242e7911446d5957375b1b18cbb72b3a750" - integrity sha512-pw3T1xNXpW8pLo9+BvtyazZb0CSjNJsjbzznlbV/aNkBfjNPXQVI3X1NDm3WSI8y6M96WDIVO7XrHAohOwALSQ== +"@mui/base@5.0.0-alpha.78": + "integrity" "sha512-5L+GNe2M9/tFjQpjK2r837+kzRg/l6D5R9SQbG1wmSWejw5Ei8P+KXIgS/NLNi9g7dUT8bnCyzz9AZKQX1Jsfg==" + "resolved" "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.78.tgz" + "version" "5.0.0-alpha.78" dependencies: "@babel/runtime" "^7.17.2" "@emotion/is-prop-valid" "^1.1.2" "@mui/types" "^7.1.3" - "@mui/utils" "^5.5.3" - "@popperjs/core" "^2.11.4" - clsx "^1.1.1" - prop-types "^15.7.2" - react-is "^17.0.2" + "@mui/utils" "^5.6.1" + "@popperjs/core" "^2.11.5" + "clsx" "^1.1.1" + "prop-types" "^15.7.2" + "react-is" "^17.0.2" "@mui/icons-material@^5.5.1": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.5.1.tgz#848a57972617411370775980cbc6990588d4aafb" - integrity sha512-40f68p5+Yhq3dCn3QYHqQt5RETPyR3AkDw+fma8PtcjqvZ+d+jF84kFmT6NqwA3he7TlwluEtkyAmPzUE4uPdA== + "integrity" "sha512-9QdI7axKuBAyaGz4mtdi7Uy1j73/thqFmEuxpJHxNC7O8ADEK1Da3t2veK2tgmsXsUlAHcAG63gg+GvWWeQNqQ==" + "resolved" "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.6.2.tgz" + "version" "5.6.2" dependencies: "@babel/runtime" "^7.17.2" "@mui/material@^5.5.3": - version "5.5.3" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.5.3.tgz#411e53a69da3f9d6664e99f1bdcdaf2760540fdc" - integrity sha512-eADa3kUYbbr1jNjcufn0a7HeU8cSo0agbrkj720hodxVFNIfzq7a2e58Z+PaZqll55kMGBvlYJ7rTcXU399x5A== + "integrity" "sha512-2VovFsbCEhic29NYoBF7zFrpH2sEOlKXXDhGjzxmWiI9OnC3SX63hapWunjaVsiRINVnjuMHuW1MOs4UtV8Gfg==" + "resolved" "https://registry.npmjs.org/@mui/material/-/material-5.6.3.tgz" + "version" "5.6.3" dependencies: "@babel/runtime" "^7.17.2" - "@mui/base" "5.0.0-alpha.74" - "@mui/system" "^5.5.3" + "@mui/base" "5.0.0-alpha.78" + "@mui/system" "^5.6.3" "@mui/types" "^7.1.3" - "@mui/utils" "^5.5.3" + "@mui/utils" "^5.6.1" "@types/react-transition-group" "^4.4.4" - clsx "^1.1.1" - csstype "^3.0.11" - hoist-non-react-statics "^3.3.2" - prop-types "^15.7.2" - react-is "^17.0.2" - react-transition-group "^4.4.2" - -"@mui/private-theming@^5.5.3": - version "5.5.3" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.5.3.tgz#c232a39dd3c268fdef7e92ccc40d51bda9eec3ab" - integrity sha512-Wf7NurY7lk8SBWelSBY2U02zxLt1773JpIcXTHuEC9/GZdQA4CXCJGl2cVQzheKhee5rZ+8JwGulrRiVl1m+4A== + "clsx" "^1.1.1" + "csstype" "^3.0.11" + "hoist-non-react-statics" "^3.3.2" + "prop-types" "^15.7.2" + "react-is" "^17.0.2" + "react-transition-group" "^4.4.2" + +"@mui/private-theming@^5.6.2": + "integrity" "sha512-IbrSfFXfiZdyhRMC2bgGTFtb16RBQ5mccmjeh3MtAERWuepiCK7gkW5D9WhEsfTu6iez+TEjeUKSgmMHlsM2mg==" + "resolved" "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.6.2.tgz" + "version" "5.6.2" dependencies: "@babel/runtime" "^7.17.2" - "@mui/utils" "^5.5.3" - prop-types "^15.7.2" + "@mui/utils" "^5.6.1" + "prop-types" "^15.7.2" -"@mui/styled-engine@^5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.5.2.tgz#1f92dd27d76f0b7df7aa52c7c7a710e59b2275a6" - integrity sha512-jkz5AHHbA43akBo5L3y1X1/X0f+RvXvCp3eXKt+iOf3qnKSAausbtlVz7gBbC4xIWDnP1Jb/6T+t/0/7gObRYA== +"@mui/styled-engine@^5.6.1": + "integrity" "sha512-jEhH6TBY8jc9S8yVncXmoTYTbATjEu44RMFXj6sIYfKr5NArVwTwRo3JexLL0t3BOAiYM4xsFLgfKEIvB9SAeQ==" + "resolved" "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.6.1.tgz" + "version" "5.6.1" dependencies: "@babel/runtime" "^7.17.2" "@emotion/cache" "^11.7.1" - prop-types "^15.7.2" + "prop-types" "^15.7.2" "@mui/styles@^5.5.3": - version "5.5.3" - resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.5.3.tgz#e462adec9a24ee4f6982394c172f20221bef30d7" - integrity sha512-jxiXgyzYXDh5pUdfKvs5ZTJqQRNFUgbG9Q/hOPh0nHrKYmlrikt2Z3b9Rjrkp2QCh9R3kuy8LHlv/u+QjnnIqg== + "integrity" "sha512-QxEP5BUJALljOm7GHi3FF5hUy41EvrYWy5DerVjwggi8g4j4RnFG6Ak+EKsfJhrLLZoBdOyvNSoBn3o3B3dCsA==" + "resolved" "https://registry.npmjs.org/@mui/styles/-/styles-5.6.2.tgz" + "version" "5.6.2" dependencies: "@babel/runtime" "^7.17.2" "@emotion/hash" "^0.8.0" - "@mui/private-theming" "^5.5.3" + "@mui/private-theming" "^5.6.2" "@mui/types" "^7.1.3" - "@mui/utils" "^5.5.3" - clsx "^1.1.1" - csstype "^3.0.11" - hoist-non-react-statics "^3.3.2" - jss "^10.8.2" - jss-plugin-camel-case "^10.8.2" - jss-plugin-default-unit "^10.8.2" - jss-plugin-global "^10.8.2" - jss-plugin-nested "^10.8.2" - jss-plugin-props-sort "^10.8.2" - jss-plugin-rule-value-function "^10.8.2" - jss-plugin-vendor-prefixer "^10.8.2" - prop-types "^15.7.2" - -"@mui/system@^5.5.3": - version "5.5.3" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.5.3.tgz#c78d4c16009430389ffd3495d694945422d72ca5" - integrity sha512-J9JcySJuEqfEoP334K/2gEWm2vOx73Uqjii3qlFVhWRBOAJ0Pjyk0sN5W/eVRbwhUm95DNgh2V5s8dRK3vzyVw== + "@mui/utils" "^5.6.1" + "clsx" "^1.1.1" + "csstype" "^3.0.11" + "hoist-non-react-statics" "^3.3.2" + "jss" "^10.8.2" + "jss-plugin-camel-case" "^10.8.2" + "jss-plugin-default-unit" "^10.8.2" + "jss-plugin-global" "^10.8.2" + "jss-plugin-nested" "^10.8.2" + "jss-plugin-props-sort" "^10.8.2" + "jss-plugin-rule-value-function" "^10.8.2" + "jss-plugin-vendor-prefixer" "^10.8.2" + "prop-types" "^15.7.2" + +"@mui/system@^5.6.3": + "integrity" "sha512-4SRi52a4ttZ2S4EHEDE8arVNuKqyQLTYUTF80WAZ0tQwnG20qwlBtzcrywCGItmVAMl7RUaYopyWOx3yVPvrmQ==" + "resolved" "https://registry.npmjs.org/@mui/system/-/system-5.6.3.tgz" + "version" "5.6.3" dependencies: "@babel/runtime" "^7.17.2" - "@mui/private-theming" "^5.5.3" - "@mui/styled-engine" "^5.5.2" + "@mui/private-theming" "^5.6.2" + "@mui/styled-engine" "^5.6.1" "@mui/types" "^7.1.3" - "@mui/utils" "^5.5.3" - clsx "^1.1.1" - csstype "^3.0.11" - prop-types "^15.7.2" + "@mui/utils" "^5.6.1" + "clsx" "^1.1.1" + "csstype" "^3.0.11" + "prop-types" "^15.7.2" "@mui/types@^7.1.3": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.1.3.tgz#d7636f3046110bcccc63e6acfd100e2ad9ca712a" - integrity sha512-DDF0UhMBo4Uezlk+6QxrlDbchF79XG6Zs0zIewlR4c0Dt6GKVFfUtzPtHCH1tTbcSlq/L2bGEdiaoHBJ9Y1gSA== + "integrity" "sha512-DDF0UhMBo4Uezlk+6QxrlDbchF79XG6Zs0zIewlR4c0Dt6GKVFfUtzPtHCH1tTbcSlq/L2bGEdiaoHBJ9Y1gSA==" + "resolved" "https://registry.npmjs.org/@mui/types/-/types-7.1.3.tgz" + "version" "7.1.3" -"@mui/utils@^5.5.3": - version "5.5.3" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.5.3.tgz#f6e1f10c0e8f4d0bf750588c2c3a96ad819c5b65" - integrity sha512-t627eVRpl3SlxVya0cIVNs8jPl4KCEiGaTSWY9iKKTcMNaeDbuRML+zv/CFHDPr1zFv+FjJSP02ySB+tZ8xIag== +"@mui/utils@^5.6.1": + "integrity" "sha512-CPrzrkiBusCZBLWu0Sg5MJvR3fKJyK3gKecLVX012LULyqg2U64Oz04BKhfkbtBrPBbSQxM+DWW9B1c9hmV9nQ==" + "resolved" "https://registry.npmjs.org/@mui/utils/-/utils-5.6.1.tgz" + "version" "5.6.1" dependencies: "@babel/runtime" "^7.17.2" "@types/prop-types" "^15.7.4" "@types/react-is" "^16.7.1 || ^17.0.0" - prop-types "^15.7.2" - react-is "^17.0.2" + "prop-types" "^15.7.2" + "react-is" "^17.0.2" + +"@node-redis/client@^1.0.1": + "integrity" "sha512-SRlHlrz2xAg1o5j9ZdnoF2fA8EZydbXr1mdUv35w0O0NP3XcYt3nQ7WAtmOu13kUa90PhmVoqTDMsTereAETfg==" + "resolved" "https://registry.npmjs.org/@node-redis/client/-/client-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "cluster-key-slot" "1.1.0" + "generic-pool" "3.8.2" + "redis-parser" "3.0.0" + "yallist" "4.0.0" + +"@node-redis/json@^1.0.1": + "integrity" "sha512-qVRgn8WfG46QQ08CghSbY4VhHFgaTY71WjpwRBGEuqGPfWwfRcIf3OqSpR7Q/45X+v3xd8mvYjywqh0wqJ8T+g==" + "resolved" "https://registry.npmjs.org/@node-redis/json/-/json-1.0.2.tgz" + "version" "1.0.2" + +"@node-redis/search@^1.0.1": + "integrity" "sha512-MCOL8iCKq4v+3HgEQv8zGlSkZyXSXtERgrAJ4TSryIG/eLFy84b57KmNNa/V7M1Q2Wd2hgn2nPCGNcQtk1R1OQ==" + "resolved" "https://registry.npmjs.org/@node-redis/search/-/search-1.0.5.tgz" + "version" "1.0.5" + +"@node-redis/time-series@^1.0.0": + "integrity" "sha512-HGQ8YooJ8Mx7l28tD7XjtB3ImLEjlUxG1wC1PAjxu6hPJqjPshUZxAICzDqDjtIbhDTf48WXXUcx8TQJB1XTKA==" + "resolved" "https://registry.npmjs.org/@node-redis/time-series/-/time-series-1.0.2.tgz" + "version" "1.0.2" "@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + "version" "2.1.5" dependencies: "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" + "run-parallel" "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + "version" "2.0.5" "@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + "version" "1.2.8" dependencies: "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" + "fastq" "^1.6.0" "@npmcli/ci-detect@^1.0.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz#6c1d2c625fb6ef1b9dea85ad0a5afcbef85ef22a" - integrity sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q== + "integrity" "sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q==" + "resolved" "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz" + "version" "1.4.0" "@npmcli/fs@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.0.0.tgz#589612cfad3a6ea0feafcb901d29c63fd52db09f" - integrity sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ== + "integrity" "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==" + "resolved" "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz" + "version" "1.1.1" dependencies: "@gar/promisify" "^1.0.1" - semver "^7.3.5" + "semver" "^7.3.5" "@npmcli/git@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" - integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== + "integrity" "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==" + "resolved" "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz" + "version" "2.1.0" dependencies: "@npmcli/promise-spawn" "^1.3.2" - lru-cache "^6.0.0" - mkdirp "^1.0.4" - npm-pick-manifest "^6.1.1" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^2.0.2" + "lru-cache" "^6.0.0" + "mkdirp" "^1.0.4" + "npm-pick-manifest" "^6.1.1" + "promise-inflight" "^1.0.1" + "promise-retry" "^2.0.1" + "semver" "^7.3.5" + "which" "^2.0.2" "@npmcli/installed-package-contents@^1.0.6": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" - integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== + "integrity" "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==" + "resolved" "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz" + "version" "1.0.7" dependencies: - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" + "npm-bundled" "^1.1.1" + "npm-normalize-package-bin" "^1.0.1" "@npmcli/move-file@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" - integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + "integrity" "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==" + "resolved" "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz" + "version" "1.1.2" dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" + "mkdirp" "^1.0.4" + "rimraf" "^3.0.2" "@npmcli/node-gyp@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.2.tgz#3cdc1f30e9736dbc417373ed803b42b1a0a29ede" - integrity sha512-yrJUe6reVMpktcvagumoqD9r08fH1iRo01gn1u0zoCApa9lnZGEigVKUd2hzsCId4gdtkZZIVscLhNxMECKgRg== + "integrity" "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==" + "resolved" "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz" + "version" "1.0.3" "@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5" - integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg== + "integrity" "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==" + "resolved" "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz" + "version" "1.3.2" dependencies: - infer-owner "^1.0.4" + "infer-owner" "^1.0.4" "@npmcli/run-script@^1.8.2": - version "1.8.6" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" - integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== + "integrity" "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==" + "resolved" "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz" + "version" "1.8.6" dependencies: "@npmcli/node-gyp" "^1.0.2" "@npmcli/promise-spawn" "^1.3.2" - node-gyp "^7.1.0" - read-package-json-fast "^2.0.1" + "node-gyp" "^7.1.0" + "read-package-json-fast" "^2.0.1" "@octokit/auth-token@^2.4.4": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" - integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== + "integrity" "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==" + "resolved" "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz" + "version" "2.5.0" dependencies: "@octokit/types" "^6.0.3" "@octokit/core@^3.5.1": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.5.1.tgz#8601ceeb1ec0e1b1b8217b960a413ed8e947809b" - integrity sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw== + "integrity" "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==" + "resolved" "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz" + "version" "3.6.0" dependencies: "@octokit/auth-token" "^2.4.4" "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.6.0" + "@octokit/request" "^5.6.3" "@octokit/request-error" "^2.0.5" "@octokit/types" "^6.0.3" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" + "before-after-hook" "^2.2.0" + "universal-user-agent" "^6.0.0" "@octokit/endpoint@^6.0.1": - version "6.0.12" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" - integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== + "integrity" "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==" + "resolved" "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz" + "version" "6.0.12" dependencies: "@octokit/types" "^6.0.3" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" + "is-plain-object" "^5.0.0" + "universal-user-agent" "^6.0.0" "@octokit/graphql@^4.5.8": - version "4.8.0" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" - integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== + "integrity" "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==" + "resolved" "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz" + "version" "4.8.0" dependencies: "@octokit/request" "^5.6.0" "@octokit/types" "^6.0.3" - universal-user-agent "^6.0.0" + "universal-user-agent" "^6.0.0" -"@octokit/openapi-types@^10.6.1": - version "10.6.1" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-10.6.1.tgz#4eb303e7da4de3d17216db80e3be6309f03b9fcc" - integrity sha512-53YKy8w8+sHQhUONhTiYt6MqNqPolejYr6rK/3VOevpORAIYGQEX2pmXnnhgdSsjHy176e5ZBgVt0ppOGziS7g== +"@octokit/openapi-types@^11.2.0": + "integrity" "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==" + "resolved" "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz" + "version" "11.2.0" -"@octokit/plugin-enterprise-compatibility@^1.2.2": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-compatibility/-/plugin-enterprise-compatibility-1.3.0.tgz#034f035cc1789b0f0d616e71e41f50f73804e89e" - integrity sha512-h34sMGdEOER/OKrZJ55v26ntdHb9OPfR1fwOx6Q4qYyyhWA104o11h9tFxnS/l41gED6WEI41Vu2G2zHDVC5lQ== +"@octokit/plugin-enterprise-compatibility@1.3.0": + "integrity" "sha512-h34sMGdEOER/OKrZJ55v26ntdHb9OPfR1fwOx6Q4qYyyhWA104o11h9tFxnS/l41gED6WEI41Vu2G2zHDVC5lQ==" + "resolved" "https://registry.npmjs.org/@octokit/plugin-enterprise-compatibility/-/plugin-enterprise-compatibility-1.3.0.tgz" + "version" "1.3.0" dependencies: "@octokit/request-error" "^2.1.0" "@octokit/types" "^6.0.3" "@octokit/plugin-enterprise-rest@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" - integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== + "integrity" "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==" + "resolved" "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz" + "version" "6.0.1" -"@octokit/plugin-paginate-rest@^2.16.0": - version "2.16.5" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.16.5.tgz#4d8098410f4c4697d33979f06f38d2ed2574adf1" - integrity sha512-2PfRGymdBypqRes4Xelu0BAZZRCV/Qg0xgo8UB10UKoghCM+zg640+T5WkRsRD0edwfLBPP3VsJgDyDTG4EIYg== +"@octokit/plugin-paginate-rest@^2.16.8": + "integrity" "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==" + "resolved" "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz" + "version" "2.17.0" dependencies: - "@octokit/types" "^6.31.0" + "@octokit/types" "^6.34.0" "@octokit/plugin-request-log@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" - integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== + "integrity" "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==" + "resolved" "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz" + "version" "1.0.4" -"@octokit/plugin-rest-endpoint-methods@5.11.2": - version "5.11.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.11.2.tgz#f3c374cdf4197b25ee62d8e132538115039fb4cc" - integrity sha512-oOJ/gC3e6XS5OyvLhS32BslGkKAyt/tgbLJUH1PKfIyDiRm4c6lSm+NHpy/L9WcdiCQji0RPglXTIH+8degjBg== +"@octokit/plugin-rest-endpoint-methods@^5.12.0": + "integrity" "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==" + "resolved" "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz" + "version" "5.13.0" dependencies: - "@octokit/types" "^6.31.0" - deprecation "^2.3.1" + "@octokit/types" "^6.34.0" + "deprecation" "^2.3.1" -"@octokit/plugin-retry@^3.0.1": - version "3.0.9" - resolved "https://registry.yarnpkg.com/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz#ae625cca1e42b0253049102acd71c1d5134788fe" - integrity sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ== +"@octokit/plugin-retry@^3.0.9": + "integrity" "sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==" + "resolved" "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz" + "version" "3.0.9" dependencies: "@octokit/types" "^6.0.3" - bottleneck "^2.15.3" + "bottleneck" "^2.15.3" -"@octokit/plugin-throttling@^3.2.0": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-throttling/-/plugin-throttling-3.5.2.tgz#8b1797a5f14edbca0b8af619394056ed0ed5c9b5" - integrity sha512-Eu7kfJxU8vmHqWGNszWpg+GVp2tnAfax3XQV5CkYPEE69C+KvInJXW9WajgSeW+cxYe0UVdouzCtcreGNuJo7A== +"@octokit/plugin-throttling@^3.6.2": + "integrity" "sha512-0az5fxgVlhFfFtiKLKVXTpmCG2tK3BG0fYI8SO4pmGlN1kyJktJVQA+6KKaFxtxMIWsuHmSEAkR6zSgtk86g2A==" + "resolved" "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-3.6.2.tgz" + "version" "3.6.2" dependencies: "@octokit/types" "^6.0.1" - bottleneck "^2.15.3" + "bottleneck" "^2.15.3" "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" - integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== + "integrity" "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==" + "resolved" "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz" + "version" "2.1.0" dependencies: "@octokit/types" "^6.0.3" - deprecation "^2.0.0" - once "^1.4.0" + "deprecation" "^2.0.0" + "once" "^1.4.0" -"@octokit/request@^5.6.0": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.1.tgz#f97aff075c37ab1d427c49082fefeef0dba2d8ce" - integrity sha512-Ls2cfs1OfXaOKzkcxnqw5MR6drMA/zWX/LIS/p8Yjdz7QKTPQLMsB3R+OvoxE6XnXeXEE2X7xe4G4l4X0gRiKQ== +"@octokit/request@^5.6.0", "@octokit/request@^5.6.3": + "integrity" "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==" + "resolved" "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz" + "version" "5.6.3" dependencies: "@octokit/endpoint" "^6.0.1" "@octokit/request-error" "^2.1.0" "@octokit/types" "^6.16.1" - is-plain-object "^5.0.0" - node-fetch "^2.6.1" - universal-user-agent "^6.0.0" + "is-plain-object" "^5.0.0" + "node-fetch" "^2.6.7" + "universal-user-agent" "^6.0.0" -"@octokit/rest@^18.0.0", "@octokit/rest@^18.1.0": - version "18.11.1" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.11.1.tgz#6baa998fcb6ede938e4df6e2567846bc7cb50b72" - integrity sha512-UadwFo10+5TQ/gm/E1r1M3Wkz8WUNyX3TLBO64YmlyZFoCPPLwdhVDHFJ+XGL/+sErPiyps3drvx1I9vMncunA== +"@octokit/rest@^18.1.0", "@octokit/rest@^18.12.0": + "integrity" "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==" + "resolved" "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz" + "version" "18.12.0" dependencies: "@octokit/core" "^3.5.1" - "@octokit/plugin-paginate-rest" "^2.16.0" + "@octokit/plugin-paginate-rest" "^2.16.8" "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "5.11.2" - -"@octokit/types@^6.0.1", "@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.31.0": - version "6.31.1" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.31.1.tgz#223d062778bb6121635a022d3bf545d506fcc880" - integrity sha512-xkF46eaYcpT8ieO78mZWhMq3bt37zIsP5BUkN+zWgX+mTYDB7jOtUP1MOxcSF8hhJhsjjlB1YDgQAhX0z0oqPw== - dependencies: - "@octokit/openapi-types" "^10.6.1" + "@octokit/plugin-rest-endpoint-methods" "^5.12.0" + +"@octokit/types@^6.0.1", "@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.34.0": + "integrity" "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==" + "resolved" "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz" + "version" "6.34.0" + dependencies: + "@octokit/openapi-types" "^11.2.0" + +"@opencensus/core@^0.0.8": + "integrity" "sha512-yUFT59SFhGMYQgX0PhoTR0LBff2BEhPrD9io1jWfF/VDbakRfs6Pq60rjv0Z7iaTav5gQlttJCX2+VPxFWCuoQ==" + "resolved" "https://registry.npmjs.org/@opencensus/core/-/core-0.0.8.tgz" + "version" "0.0.8" + dependencies: + "continuation-local-storage" "^3.2.1" + "log-driver" "^1.2.7" + "semver" "^5.5.0" + "shimmer" "^1.2.0" + "uuid" "^3.2.1" + +"@opencensus/core@0.0.9": + "integrity" "sha512-31Q4VWtbzXpVUd2m9JS6HEaPjlKvNMOiF7lWKNmXF84yUcgfAFL5re7/hjDmdyQbOp32oGc+RFV78jXIldVz6Q==" + "resolved" "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz" + "version" "0.0.9" + dependencies: + "continuation-local-storage" "^3.2.1" + "log-driver" "^1.2.7" + "semver" "^5.5.0" + "shimmer" "^1.2.0" + "uuid" "^3.2.1" + +"@opencensus/propagation-b3@0.0.8": + "integrity" "sha512-PffXX2AL8Sh0VHQ52jJC4u3T0H6wDK6N/4bg7xh4ngMYOIi13aR1kzVvX1sVDBgfGwDOkMbl4c54Xm3tlPx/+A==" + "resolved" "https://registry.npmjs.org/@opencensus/propagation-b3/-/propagation-b3-0.0.8.tgz" + "version" "0.0.8" + dependencies: + "@opencensus/core" "^0.0.8" + "uuid" "^3.2.1" + +"@panva/asn1.js@^1.0.0": + "integrity" "sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw==" + "resolved" "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz" + "version" "1.0.0" "@plotdb/json0@^0.0.5": - version "0.0.5" - resolved "https://registry.yarnpkg.com/@plotdb/json0/-/json0-0.0.5.tgz#080b51f472796dc680d21f92aef1ce9f5f0de2b9" - integrity sha512-eerS2BBMXCL7QZ6y5w2TLcRsfRhXudf/LMRyfJ1+/XVaZTGAFPuZFjV0ys4RvWfQ9uW9/rkQJQRQ1rcO1Jx25g== - dependencies: - diff-match-patch "^1.0.4" - json0-ot-diff "^1.0.5" - ot-json0 "^1.1.0" + "integrity" "sha512-eerS2BBMXCL7QZ6y5w2TLcRsfRhXudf/LMRyfJ1+/XVaZTGAFPuZFjV0ys4RvWfQ9uW9/rkQJQRQ1rcO1Jx25g==" + "resolved" "https://registry.npmjs.org/@plotdb/json0/-/json0-0.0.5.tgz" + "version" "0.0.5" + dependencies: + "diff-match-patch" "^1.0.4" + "json0-ot-diff" "^1.0.5" + "ot-json0" "^1.1.0" + +"@pm2/agent@~2.0.0": + "integrity" "sha512-QKHMm6yexcvdDfcNE7PL9D6uEjoQPGRi+8dh+rc4Hwtbpsbh5IAvZbz3BVGjcd4HaX6pt2xGpOohG7/Y2L4QLw==" + "resolved" "https://registry.npmjs.org/@pm2/agent/-/agent-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "async" "~3.2.0" + "chalk" "~3.0.0" + "dayjs" "~1.8.24" + "debug" "~4.3.1" + "eventemitter2" "~5.0.1" + "fast-json-patch" "^3.0.0-1" + "fclone" "~1.0.11" + "nssocket" "0.6.0" + "pm2-axon" "~4.0.1" + "pm2-axon-rpc" "~0.7.0" + "proxy-agent" "~5.0.0" + "semver" "~7.2.0" + "ws" "~7.4.0" + +"@pm2/io@~5.0.0": + "integrity" "sha512-3rToDVJaRoob5Lq8+7Q2TZFruoEkdORxwzFpZaqF4bmH6Bkd7kAbdPrI/z8X6k1Meq5rTtScM7MmDgppH6aLlw==" + "resolved" "https://registry.npmjs.org/@pm2/io/-/io-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "@opencensus/core" "0.0.9" + "@opencensus/propagation-b3" "0.0.8" + "async" "~2.6.1" + "debug" "~4.3.1" + "eventemitter2" "^6.3.1" + "require-in-the-middle" "^5.0.0" + "semver" "6.3.0" + "shimmer" "^1.2.0" + "signal-exit" "^3.0.3" + "tslib" "1.9.3" + +"@pm2/js-api@~0.6.7": + "integrity" "sha512-jiJUhbdsK+5C4zhPZNnyA3wRI01dEc6a2GhcQ9qI38DyIk+S+C8iC3fGjcjUbt/viLYKPjlAaE+hcT2/JMQPXw==" + "resolved" "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.6.7.tgz" + "version" "0.6.7" + dependencies: + "async" "^2.6.3" + "axios" "^0.21.0" + "debug" "~4.3.1" + "eventemitter2" "^6.3.1" + "ws" "^7.0.0" + +"@pm2/pm2-version-check@latest": + "integrity" "sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==" + "resolved" "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "debug" "^4.3.1" "@polka/url@^1.0.0-next.20": - version "1.0.0-next.20" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.20.tgz#111b5db0f501aa89b05076fa31f0ea0e0c292cd3" - integrity sha512-88p7+M0QGxKpmnkfXjS4V26AnoC/eiqZutE8GLdaI5X12NY75bXSdTY9NkmYb2Xyk1O+MmkuO6Frmsj84V6I8Q== - -"@popperjs/core@^2.11.4": - version "2.11.5" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.5.tgz#db5a11bf66bdab39569719555b0f76e138d7bd64" - integrity sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw== + "integrity" "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" + "resolved" "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz" + "version" "1.0.0-next.21" + +"@popperjs/core@^2.11.5": + "integrity" "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==" + "resolved" "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz" + "version" "2.11.5" + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + "integrity" "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + "resolved" "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz" + "version" "1.1.2" + +"@protobufjs/base64@^1.1.2": + "integrity" "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + "resolved" "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz" + "version" "1.1.2" + +"@protobufjs/codegen@^2.0.4": + "integrity" "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + "resolved" "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz" + "version" "2.0.4" + +"@protobufjs/eventemitter@^1.1.0": + "integrity" "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + "resolved" "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz" + "version" "1.1.0" + +"@protobufjs/fetch@^1.1.0": + "integrity" "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=" + "resolved" "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + "integrity" "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + "resolved" "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz" + "version" "1.0.2" + +"@protobufjs/inquire@^1.1.0": + "integrity" "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + "resolved" "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz" + "version" "1.1.0" + +"@protobufjs/path@^1.1.2": + "integrity" "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + "resolved" "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz" + "version" "1.1.2" + +"@protobufjs/pool@^1.1.0": + "integrity" "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + "resolved" "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz" + "version" "1.1.0" + +"@protobufjs/utf8@^1.1.0": + "integrity" "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + "resolved" "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz" + "version" "1.1.0" "@rebass/forms@^4.0.6": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@rebass/forms/-/forms-4.0.6.tgz#19a3af64f855baa65dec65aecadda5cd95a09dd7" - integrity sha512-20dHAlb5V0Na2HxCr73Jjoc4hD1ElimmlBpQtclXMoXUsjJ7ORdCNL1S9R54MX5f7iU2VrLGHU42eL7+nONNPQ== - dependencies: - reflexbox "^4.0.6" + "integrity" "sha512-20dHAlb5V0Na2HxCr73Jjoc4hD1ElimmlBpQtclXMoXUsjJ7ORdCNL1S9R54MX5f7iU2VrLGHU42eL7+nONNPQ==" + "resolved" "https://registry.npmjs.org/@rebass/forms/-/forms-4.0.6.tgz" + "version" "4.0.6" + dependencies: + "reflexbox" "^4.0.6" + +"@redocly/ajv@^6.12.3": + "integrity" "sha512-RB6vWO78v6c+SW/3bZh+XZMr4nGdJKAiPGsBALuUZnLuCiQ7aXCT1AuFHqnfS2gyXbEUEj+kw8p4ux8KdAfs3A==" + "resolved" "https://registry.npmjs.org/@redocly/ajv/-/ajv-6.12.4.tgz" + "version" "6.12.4" + dependencies: + "fast-deep-equal" "^3.1.1" + "fast-json-stable-stringify" "^2.0.0" + "json-schema-traverse" "^0.4.1" + "uri-js" "^4.2.2" + +"@redocly/openapi-core@^1.0.0-beta.50": + "integrity" "sha512-GuXn4IETxpbRd8dlAQDQPtvqOpbMvPMeC/e5mv5MOXkLIznNk4vjiQVe6QSCbZbCHzzpb2+89B6S7asebPm4Rg==" + "resolved" "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.0.0-beta.50.tgz" + "version" "1.0.0-beta.50" + dependencies: + "@redocly/ajv" "^6.12.3" + "@types/node" "^14.11.8" + "colorette" "^1.2.0" + "js-levenshtein" "^1.1.6" + "js-yaml" "^3.14.1" + "lodash.isequal" "^4.5.0" + "minimatch" "^3.0.4" + "node-fetch" "^2.6.1" + "yaml-ast-parser" "0.0.43" + +"@redocly/react-dropdown-aria@^2.0.11": + "integrity" "sha512-feQEZlyBvQsbT/fvpJ4jJ5OLGaUPpnskHYDsY8DGpPymN+HUeDQrqkBEbbKRwMKidFTI2cxk2kJNNTnvdS9jyw==" + "resolved" "https://registry.npmjs.org/@redocly/react-dropdown-aria/-/react-dropdown-aria-2.0.12.tgz" + "version" "2.0.12" "@reduxjs/toolkit@^1.6.2": - version "1.6.2" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.6.2.tgz#2f2b5365df77dd6697da28fdf44f33501ed9ba37" - integrity sha512-HbfI/hOVrAcMGAYsMWxw3UJyIoAS9JTdwddsjlr5w3S50tXhWb+EMyhIw+IAvCVCLETkzdjgH91RjDSYZekVBA== + "integrity" "sha512-Q6mzbTpO9nOYRnkwpDlFOAbQnd3g7zj7CtHAZWz5SzE5lcV97Tf8f3SzOO8BoPOMYBFgfZaqTUZqgGu+a0+Fng==" + "resolved" "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.8.1.tgz" + "version" "1.8.1" dependencies: - immer "^9.0.6" - redux "^4.1.0" - redux-thunk "^2.3.0" - reselect "^4.0.0" + "immer" "^9.0.7" + "redux" "^4.1.2" + "redux-thunk" "^2.4.1" + "reselect" "^4.1.5" "@rollup/plugin-babel@^5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz#9cb1c5146ddd6a4968ad96f209c50c62f92f9879" - integrity sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw== + "integrity" "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==" + "resolved" "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz" + "version" "5.3.1" dependencies: "@babel/helper-module-imports" "^7.10.4" "@rollup/pluginutils" "^3.1.0" "@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + "integrity" "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==" + "resolved" "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz" + "version" "3.1.0" dependencies: "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" + "estree-walker" "^1.0.1" + "picomatch" "^2.2.2" + +"@sapphire/async-queue@^1.1.9": + "integrity" "sha512-FFTlPOWZX1kDj9xCAsRzH5xEJfawg1lNoYAA+ecOWJMHOfiZYb1uXOI3ne9U4UILSEPwfE68p3T9wUHwIQfR0g==" + "resolved" "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.1.tgz" + "version" "1.3.1" "@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + "integrity" "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" + "version" "0.14.0" + +"@sindresorhus/is@^4.2.0": + "integrity" "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" + "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" + "version" "4.6.0" "@sinonjs/commons@^1.7.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + "integrity" "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==" + "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz" + "version" "1.8.3" dependencies: - type-detect "4.0.8" + "type-detect" "4.0.8" "@sinonjs/fake-timers@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz#1c1c9a91419f804e59ae8df316a07dd1c3a76b94" - integrity sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew== + "integrity" "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==" + "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" + "version" "8.1.0" dependencies: "@sinonjs/commons" "^1.7.0" +"@socket.io/base64-arraybuffer@~1.0.2": + "integrity" "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==" + "resolved" "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz" + "version" "1.0.2" + +"@socket.io/component-emitter@~3.1.0": + "integrity" "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + "resolved" "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz" + "version" "3.1.0" + "@styled-system/background@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/background/-/background-5.1.2.tgz#75c63d06b497ab372b70186c0bf608d62847a2ba" - integrity sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A== + "integrity" "sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A==" + "resolved" "https://registry.npmjs.org/@styled-system/background/-/background-5.1.2.tgz" + "version" "5.1.2" dependencies: "@styled-system/core" "^5.1.2" "@styled-system/border@^5.1.5": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@styled-system/border/-/border-5.1.5.tgz#0493d4332d2b59b74bb0d57d08c73eb555761ba6" - integrity sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A== + "integrity" "sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A==" + "resolved" "https://registry.npmjs.org/@styled-system/border/-/border-5.1.5.tgz" + "version" "5.1.5" dependencies: "@styled-system/core" "^5.1.2" "@styled-system/color@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/color/-/color-5.1.2.tgz#b8d6b4af481faabe4abca1a60f8daa4ccc2d9f43" - integrity sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA== + "integrity" "sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA==" + "resolved" "https://registry.npmjs.org/@styled-system/color/-/color-5.1.2.tgz" + "version" "5.1.2" dependencies: "@styled-system/core" "^5.1.2" "@styled-system/core@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/core/-/core-5.1.2.tgz#b8b7b86455d5a0514f071c4fa8e434b987f6a772" - integrity sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw== + "integrity" "sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw==" + "resolved" "https://registry.npmjs.org/@styled-system/core/-/core-5.1.2.tgz" + "version" "5.1.2" dependencies: - object-assign "^4.1.1" + "object-assign" "^4.1.1" "@styled-system/css@^5.0.0", "@styled-system/css@^5.1.5": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@styled-system/css/-/css-5.1.5.tgz#0460d5f3ff962fa649ea128ef58d9584f403bbbc" - integrity sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A== + "integrity" "sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A==" + "resolved" "https://registry.npmjs.org/@styled-system/css/-/css-5.1.5.tgz" + "version" "5.1.5" "@styled-system/flexbox@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/flexbox/-/flexbox-5.1.2.tgz#077090f43f61c3852df63da24e4108087a8beecf" - integrity sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ== + "integrity" "sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ==" + "resolved" "https://registry.npmjs.org/@styled-system/flexbox/-/flexbox-5.1.2.tgz" + "version" "5.1.2" dependencies: "@styled-system/core" "^5.1.2" "@styled-system/grid@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/grid/-/grid-5.1.2.tgz#7165049877732900b99cd00759679fbe45c6c573" - integrity sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg== + "integrity" "sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg==" + "resolved" "https://registry.npmjs.org/@styled-system/grid/-/grid-5.1.2.tgz" + "version" "5.1.2" dependencies: "@styled-system/core" "^5.1.2" "@styled-system/layout@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/layout/-/layout-5.1.2.tgz#12d73e79887e10062f4dbbbc2067462eace42339" - integrity sha512-wUhkMBqSeacPFhoE9S6UF3fsMEKFv91gF4AdDWp0Aym1yeMPpqz9l9qS/6vjSsDPF7zOb5cOKC3tcKKOMuDCPw== + "integrity" "sha512-wUhkMBqSeacPFhoE9S6UF3fsMEKFv91gF4AdDWp0Aym1yeMPpqz9l9qS/6vjSsDPF7zOb5cOKC3tcKKOMuDCPw==" + "resolved" "https://registry.npmjs.org/@styled-system/layout/-/layout-5.1.2.tgz" + "version" "5.1.2" dependencies: "@styled-system/core" "^5.1.2" "@styled-system/position@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/position/-/position-5.1.2.tgz#56961266566836f57a24d8e8e33ce0c1adb59dd3" - integrity sha512-60IZfMXEOOZe3l1mCu6sj/2NAyUmES2kR9Kzp7s2D3P4qKsZWxD1Se1+wJvevb+1TP+ZMkGPEYYXRyU8M1aF5A== + "integrity" "sha512-60IZfMXEOOZe3l1mCu6sj/2NAyUmES2kR9Kzp7s2D3P4qKsZWxD1Se1+wJvevb+1TP+ZMkGPEYYXRyU8M1aF5A==" + "resolved" "https://registry.npmjs.org/@styled-system/position/-/position-5.1.2.tgz" + "version" "5.1.2" dependencies: "@styled-system/core" "^5.1.2" "@styled-system/shadow@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/shadow/-/shadow-5.1.2.tgz#beddab28d7de03cd0177a87ac4ed3b3b6d9831fd" - integrity sha512-wqniqYb7XuZM7K7C0d1Euxc4eGtqEe/lvM0WjuAFsQVImiq6KGT7s7is+0bNI8O4Dwg27jyu4Lfqo/oIQXNzAg== + "integrity" "sha512-wqniqYb7XuZM7K7C0d1Euxc4eGtqEe/lvM0WjuAFsQVImiq6KGT7s7is+0bNI8O4Dwg27jyu4Lfqo/oIQXNzAg==" + "resolved" "https://registry.npmjs.org/@styled-system/shadow/-/shadow-5.1.2.tgz" + "version" "5.1.2" dependencies: "@styled-system/core" "^5.1.2" "@styled-system/should-forward-prop@^5.0.0": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@styled-system/should-forward-prop/-/should-forward-prop-5.1.5.tgz#c392008c6ae14a6eb78bf1932733594f7f7e5c76" - integrity sha512-+rPRomgCGYnUIaFabDoOgpSDc4UUJ1KsmlnzcEp0tu5lFrBQKgZclSo18Z1URhaZm7a6agGtS5Xif7tuC2s52Q== + "integrity" "sha512-+rPRomgCGYnUIaFabDoOgpSDc4UUJ1KsmlnzcEp0tu5lFrBQKgZclSo18Z1URhaZm7a6agGtS5Xif7tuC2s52Q==" + "resolved" "https://registry.npmjs.org/@styled-system/should-forward-prop/-/should-forward-prop-5.1.5.tgz" + "version" "5.1.5" dependencies: "@emotion/is-prop-valid" "^0.8.1" "@emotion/memoize" "^0.7.1" - styled-system "^5.1.5" + "styled-system" "^5.1.5" "@styled-system/space@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/space/-/space-5.1.2.tgz#38925d2fa29a41c0eb20e65b7c3efb6e8efce953" - integrity sha512-+zzYpR8uvfhcAbaPXhH8QgDAV//flxqxSjHiS9cDFQQUSznXMQmxJegbhcdEF7/eNnJgHeIXv1jmny78kipgBA== + "integrity" "sha512-+zzYpR8uvfhcAbaPXhH8QgDAV//flxqxSjHiS9cDFQQUSznXMQmxJegbhcdEF7/eNnJgHeIXv1jmny78kipgBA==" + "resolved" "https://registry.npmjs.org/@styled-system/space/-/space-5.1.2.tgz" + "version" "5.1.2" dependencies: "@styled-system/core" "^5.1.2" "@styled-system/typography@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/typography/-/typography-5.1.2.tgz#65fb791c67d50cd2900d234583eaacdca8c134f7" - integrity sha512-BxbVUnN8N7hJ4aaPOd7wEsudeT7CxarR+2hns8XCX1zp0DFfbWw4xYa/olA0oQaqx7F1hzDg+eRaGzAJbF+jOg== + "integrity" "sha512-BxbVUnN8N7hJ4aaPOd7wEsudeT7CxarR+2hns8XCX1zp0DFfbWw4xYa/olA0oQaqx7F1hzDg+eRaGzAJbF+jOg==" + "resolved" "https://registry.npmjs.org/@styled-system/typography/-/typography-5.1.2.tgz" + "version" "5.1.2" dependencies: "@styled-system/core" "^5.1.2" "@styled-system/variant@^5.1.5": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@styled-system/variant/-/variant-5.1.5.tgz#8446d8aad06af3a4c723d717841df2dbe4ddeafd" - integrity sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw== + "integrity" "sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw==" + "resolved" "https://registry.npmjs.org/@styled-system/variant/-/variant-5.1.5.tgz" + "version" "5.1.5" dependencies: "@styled-system/core" "^5.1.2" "@styled-system/css" "^5.1.5" "@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + "integrity" "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==" + "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" + "version" "1.1.2" dependencies: - defer-to-connect "^1.0.1" + "defer-to-connect" "^1.0.1" "@teamwork/websocket-json-stream@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@teamwork/websocket-json-stream/-/websocket-json-stream-2.0.0.tgz#4eba02b1fde23112beef0080a84a4e6db251877e" - integrity sha512-SCEM44hjNyxYwrtyJrjlHmeTd9RJlZr04BAMbHSBhdW0M2IXv0SC+4XeuRXPiY7U7pJ0W8TSUwVP/28MV/ds0w== + "integrity" "sha512-SCEM44hjNyxYwrtyJrjlHmeTd9RJlZr04BAMbHSBhdW0M2IXv0SC+4XeuRXPiY7U7pJ0W8TSUwVP/28MV/ds0w==" + "resolved" "https://registry.npmjs.org/@teamwork/websocket-json-stream/-/websocket-json-stream-2.0.0.tgz" + "version" "2.0.0" "@testing-library/dom@^7.28.1": - version "7.31.2" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.31.2.tgz#df361db38f5212b88555068ab8119f5d841a8c4a" - integrity sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ== + "integrity" "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==" + "resolved" "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz" + "version" "7.31.2" dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" "@types/aria-query" "^4.2.0" - aria-query "^4.2.2" - chalk "^4.1.0" - dom-accessibility-api "^0.5.6" - lz-string "^1.4.4" - pretty-format "^26.6.2" + "aria-query" "^4.2.2" + "chalk" "^4.1.0" + "dom-accessibility-api" "^0.5.6" + "lz-string" "^1.4.4" + "pretty-format" "^26.6.2" "@testing-library/jest-dom@^5.11.4": - version "5.14.1" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz#8501e16f1e55a55d675fe73eecee32cdaddb9766" - integrity sha512-dfB7HVIgTNCxH22M1+KU6viG5of2ldoA5ly8Ar8xkezKHKXjRvznCdbMbqjYGgO2xjRbwnR+rR8MLUIqF3kKbQ== + "integrity" "sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA==" + "resolved" "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz" + "version" "5.16.4" dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" - aria-query "^4.2.2" - chalk "^3.0.0" - css "^3.0.0" - css.escape "^1.5.1" - dom-accessibility-api "^0.5.6" - lodash "^4.17.15" - redent "^3.0.0" + "aria-query" "^5.0.0" + "chalk" "^3.0.0" + "css" "^3.0.0" + "css.escape" "^1.5.1" + "dom-accessibility-api" "^0.5.6" + "lodash" "^4.17.15" + "redent" "^3.0.0" "@testing-library/react@^11.1.0": - version "11.2.7" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-11.2.7.tgz#b29e2e95c6765c815786c0bc1d5aed9cb2bf7818" - integrity sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA== + "integrity" "sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA==" + "resolved" "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz" + "version" "11.2.7" dependencies: "@babel/runtime" "^7.12.5" "@testing-library/dom" "^7.28.1" "@testing-library/user-event@^12.1.10": - version "12.8.3" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-12.8.3.tgz#1aa3ed4b9f79340a1e1836bc7f57c501e838704a" - integrity sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ== + "integrity" "sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ==" + "resolved" "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.8.3.tgz" + "version" "12.8.3" dependencies: "@babel/runtime" "^7.12.5" "@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + "integrity" "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" + "resolved" "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" + "version" "1.1.2" + +"@tootallnate/once@2": + "integrity" "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" + "resolved" "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" + "version" "2.0.0" + +"@tsconfig/node10@^1.0.7": + "integrity" "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==" + "resolved" "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz" + "version" "1.0.8" + +"@tsconfig/node12@^1.0.7": + "integrity" "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==" + "resolved" "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz" + "version" "1.0.9" + +"@tsconfig/node14@^1.0.0": + "integrity" "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==" + "resolved" "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz" + "version" "1.0.1" + +"@tsconfig/node16@^1.0.2": + "integrity" "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==" + "resolved" "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz" + "version" "1.0.2" + +"@types/accepts@*": + "integrity" "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==" + "resolved" "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz" + "version" "1.3.5" + dependencies: + "@types/node" "*" "@types/aria-query@^4.2.0": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" - integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== + "integrity" "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==" + "resolved" "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz" + "version" "4.2.2" + +"@types/aws-sdk@^2.7.0": + "integrity" "sha1-g1iLPRTr3KHUzl4CM4dXdWjOgvM=" + "resolved" "https://registry.npmjs.org/@types/aws-sdk/-/aws-sdk-2.7.0.tgz" + "version" "2.7.0" + dependencies: + "aws-sdk" "*" + +"@types/axios@^0.14.0": + "integrity" "sha1-7CMA++fX3d1+udOr+HmZlkyvzkY=" + "resolved" "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz" + "version" "0.14.0" + dependencies: + "axios" "*" "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.3": - version "7.1.16" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.16.tgz#bc12c74b7d65e82d29876b5d0baf5c625ac58702" - integrity sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ== + "integrity" "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==" + "resolved" "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz" + "version" "7.1.19" dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -2819,539 +3773,1082 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5" - integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA== + "integrity" "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==" + "resolved" "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz" + "version" "7.6.4" dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + "integrity" "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==" + "resolved" "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz" + "version" "7.4.1" dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" - integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== + "integrity" "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==" + "resolved" "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz" + "version" "7.17.1" dependencies: "@babel/types" "^7.3.0" +"@types/bcrypt@^5.0.0": + "integrity" "sha512-agtcFKaruL8TmcvqbndlqHPSJgsolhf/qPWchFlgnW1gECTN/nKbFcoFnvKAQRFfKbh+BO6A3SWdJu9t+xF3Lw==" + "resolved" "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "@types/node" "*" + +"@types/bluebird@*": + "integrity" "sha512-HBNx4lhkxN7bx6P0++W8E289foSu8kO8GCk2unhuVggO+cE7rh9DhZUyPhUxNRG9m+5B5BTKxZQ5ZP92x/mx9Q==" + "resolved" "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.36.tgz" + "version" "3.5.36" + "@types/body-parser@*": - version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + "integrity" "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==" + "resolved" "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" + "version" "1.19.2" dependencies: "@types/connect" "*" "@types/node" "*" +"@types/bonjour@^3.5.9": + "integrity" "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==" + "resolved" "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz" + "version" "3.5.10" + dependencies: + "@types/node" "*" + +"@types/caseless@*": + "integrity" "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==" + "resolved" "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz" + "version" "0.12.2" + +"@types/chance@^1.0.2": + "integrity" "sha512-X6c6ghhe4/sQh4XzcZWSFaTAUOda38GQHmq9BUanYkOE/EO7ZrkazwKmtsj3xzTjkLWmwULE++23g3d3CCWaWw==" + "resolved" "https://registry.npmjs.org/@types/chance/-/chance-1.1.3.tgz" + "version" "1.1.3" + "@types/cheerio@^0.22.22": - version "0.22.30" - resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.30.tgz#6c1ded70d20d890337f0f5144be2c5e9ce0936e6" - integrity sha512-t7ZVArWZlq3dFa9Yt33qFBQIK4CQd1Q3UJp0V+UhP6vgLWLM6Qug7vZuRSGXg45zXeB1Fm5X2vmBkEX58LV2Tw== + "integrity" "sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw==" + "resolved" "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.31.tgz" + "version" "0.22.31" dependencies: "@types/node" "*" "@types/command-line-args@^5.0.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.2.0.tgz#adbb77980a1cc376bb208e3f4142e907410430f6" - integrity sha512-UuKzKpJJ/Ief6ufIaIzr3A/0XnluX7RvFgwkV89Yzvm77wCh1kFaFmqN8XEnGcN62EuHdedQjEMb8mYxFLGPyA== + "integrity" "sha512-UuKzKpJJ/Ief6ufIaIzr3A/0XnluX7RvFgwkV89Yzvm77wCh1kFaFmqN8XEnGcN62EuHdedQjEMb8mYxFLGPyA==" + "resolved" "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.0.tgz" + "version" "5.2.0" "@types/command-line-usage@^5.0.1": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@types/command-line-usage/-/command-line-usage-5.0.2.tgz#ba5e3f6ae5a2009d466679cc431b50635bf1a064" - integrity sha512-n7RlEEJ+4x4TS7ZQddTmNSxP+zziEG0TNsMfiRIxcIVXt71ENJ9ojeXmGO3wPoTdn7pJcU2xc3CJYMktNT6DPg== + "integrity" "sha512-n7RlEEJ+4x4TS7ZQddTmNSxP+zziEG0TNsMfiRIxcIVXt71ENJ9ojeXmGO3wPoTdn7pJcU2xc3CJYMktNT6DPg==" + "resolved" "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.2.tgz" + "version" "5.0.2" + +"@types/component-emitter@^1.2.10": + "integrity" "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==" + "resolved" "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz" + "version" "1.2.11" + +"@types/connect-history-api-fallback@^1.3.5": + "integrity" "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==" + "resolved" "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz" + "version" "1.3.5" + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" "@types/connect@*": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + "integrity" "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==" + "resolved" "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" + "version" "3.4.35" dependencies: "@types/node" "*" -"@types/eslint-scope@^3.7.0": - version "3.7.1" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.1.tgz#8dc390a7b4f9dd9f1284629efce982e41612116e" - integrity sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g== +"@types/content-disposition@*": + "integrity" "sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ==" + "resolved" "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.4.tgz" + "version" "0.5.4" + +"@types/cookie@^0.4.1": + "integrity" "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + "resolved" "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz" + "version" "0.4.1" + +"@types/cookiejar@*": + "integrity" "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==" + "resolved" "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz" + "version" "2.1.2" + +"@types/cookies@*": + "integrity" "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==" + "resolved" "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz" + "version" "0.7.7" + dependencies: + "@types/connect" "*" + "@types/express" "*" + "@types/keygrip" "*" + "@types/node" "*" + +"@types/cors@^2.8.12": + "integrity" "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + "resolved" "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz" + "version" "2.8.12" + +"@types/crypto-js@^4.0.2": + "integrity" "sha512-BG7fQKZ689HIoc5h+6D2Dgq1fABRa0RbBWKBd9SP/MVRVXROflpm5fhwyATX5duFmbStzyzyycPB8qUYKDH3NA==" + "resolved" "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.1.tgz" + "version" "4.1.1" + +"@types/debug@^4.1.0", "@types/debug@^4.1.7": + "integrity" "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==" + "resolved" "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz" + "version" "4.1.7" + dependencies: + "@types/ms" "*" + +"@types/deep-equal@^1.0.1": + "integrity" "sha512-mMUu4nWHLBlHtxXY17Fg6+ucS/MnndyOWyOe7MmwkoMYxvfQU2ajtRaEvqSUv+aVkMqH/C0NCI8UoVfRNQ10yg==" + "resolved" "https://registry.npmjs.org/@types/deep-equal/-/deep-equal-1.0.1.tgz" + "version" "1.0.1" + +"@types/dotenv-flow@^3.2.0": + "integrity" "sha512-A79hbPwocbYkcTwGcDOFbKDuqyVo5mLAz/6Iq465YZ7R7Go5bT1PIM8I2jlPQkaD9u9fbotGVLkUPhX+9XUHfw==" + "resolved" "https://registry.npmjs.org/@types/dotenv-flow/-/dotenv-flow-3.2.0.tgz" + "version" "3.2.0" + +"@types/duplexify@*": + "integrity" "sha512-n0zoEj/fMdMOvqbHxmqnza/kXyoGgJmEpsXjpP+gEqE1Ye4yNqc7xWipKnUoMpWhMuzJQSfK2gMrwlElly7OGQ==" + "resolved" "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.6.1.tgz" + "version" "3.6.1" + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.3": + "integrity" "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==" + "resolved" "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz" + "version" "3.7.3" dependencies: "@types/eslint" "*" "@types/estree" "*" +"@types/eslint-visitor-keys@^1.0.0": + "integrity" "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==" + "resolved" "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz" + "version" "1.0.0" + "@types/eslint@*": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.0.tgz#7e41f2481d301c68e14f483fe10b017753ce8d5a" - integrity sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A== + "integrity" "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==" + "resolved" "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz" + "version" "8.4.1" dependencies: "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^0.0.50": - version "0.0.50" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" - integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== +"@types/estree@*", "@types/estree@0.0.39": + "integrity" "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" + "version" "0.0.39" + +"@types/estree@^0.0.51": + "integrity" "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz" + "version" "0.0.51" -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/express-jwt@0.0.42": + "integrity" "sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==" + "resolved" "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz" + "version" "0.0.42" + dependencies: + "@types/express" "*" + "@types/express-unless" "*" -"@types/express-serve-static-core@^4.17.18": - version "4.17.28" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" - integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": + "integrity" "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==" + "resolved" "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz" + "version" "4.17.28" dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" -"@types/express@^4.17.13": - version "4.17.13" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" - integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== +"@types/express-unless@*": + "integrity" "sha512-TyPLQaF6w8UlWdv4gj8i46B+INBVzURBNRahCozCSXfsK2VTlL1wNyTlMKw817VHygBtlcl5jfnPadlydr06Yw==" + "resolved" "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.3.tgz" + "version" "0.5.3" + dependencies: + "@types/express" "*" + +"@types/express@*", "@types/express@^4.17.13": + "integrity" "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==" + "resolved" "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz" + "version" "4.17.13" dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.18" "@types/qs" "*" "@types/serve-static" "*" +"@types/formidable@^1.0.31": + "integrity" "sha512-zu3mQJa4hDNubEMViSj937602XdDGzK7Q5pJ5QmLUbNxclbo9tZGt5jtwM352ssZ+pqo5V4H14TBvT/ALqQQcA==" + "resolved" "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.5.tgz" + "version" "1.2.5" + dependencies: + "@types/node" "*" + "@types/graceful-fs@^4.1.2": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + "integrity" "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==" + "resolved" "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz" + "version" "4.1.5" dependencies: "@types/node" "*" "@types/hoist-non-react-statics@^3.3.0": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" - integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + "integrity" "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==" + "resolved" "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz" + "version" "3.3.1" dependencies: "@types/react" "*" - hoist-non-react-statics "^3.3.0" + "hoist-non-react-statics" "^3.3.0" + +"@types/html-minifier-terser@^6.0.0": + "integrity" "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + "resolved" "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" + "version" "6.1.0" -"@types/html-minifier-terser@^5.0.0": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz#693b316ad323ea97eed6b38ed1a3cc02b1672b57" - integrity sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w== +"@types/http-assert@*": + "integrity" "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" + "resolved" "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz" + "version" "1.5.3" -"@types/http-proxy@^1.17.5": - version "1.17.7" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.7.tgz#30ea85cc2c868368352a37f0d0d3581e24834c6f" - integrity sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w== +"@types/http-errors@*": + "integrity" "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==" + "resolved" "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz" + "version" "1.8.2" + +"@types/http-proxy@^1.17.8": + "integrity" "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==" + "resolved" "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz" + "version" "1.17.8" dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + "integrity" "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" + "version" "2.0.4" "@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + "integrity" "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==" + "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + "version" "3.0.0" dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + "integrity" "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==" + "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" + "version" "3.0.1" dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@*": - version "27.0.2" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.0.2.tgz#ac383c4d4aaddd29bbf2b916d8d105c304a5fcd7" - integrity sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA== +"@types/jest@*", "@types/jest@26.0.23": + "integrity" "sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==" + "resolved" "https://registry.npmjs.org/@types/jest/-/jest-26.0.23.tgz" + "version" "26.0.23" dependencies: - jest-diff "^27.0.0" - pretty-format "^27.0.0" + "jest-diff" "^26.0.0" + "pretty-format" "^26.0.0" "@types/jest@^26.0.24": - version "26.0.24" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.24.tgz#943d11976b16739185913a1936e0de0c4a7d595a" - integrity sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w== + "integrity" "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==" + "resolved" "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz" + "version" "26.0.24" dependencies: - jest-diff "^26.0.0" - pretty-format "^26.0.0" + "jest-diff" "^26.0.0" + "pretty-format" "^26.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== +"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + "integrity" "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" + "version" "7.0.11" "@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "integrity" "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" + "resolved" "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + "version" "0.0.29" + +"@types/jsonwebtoken@^8.5.6": + "integrity" "sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A==" + "resolved" "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz" + "version" "8.5.8" + dependencies: + "@types/node" "*" + +"@types/keygrip@*": + "integrity" "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" + "resolved" "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz" + "version" "1.0.2" + +"@types/koa__router@^8.0.4": + "integrity" "sha512-WXgKWpBsbS14kzmzD9LeFapOIa678h7zvUHxDwXwSx4ETKXhXLVUAToX6jZ/U7EihM7qwyD9W/BZvB0MRu7MTQ==" + "resolved" "https://registry.npmjs.org/@types/koa__router/-/koa__router-8.0.11.tgz" + "version" "8.0.11" + dependencies: + "@types/koa" "*" + +"@types/koa-compose@*": + "integrity" "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==" + "resolved" "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz" + "version" "3.2.5" + dependencies: + "@types/koa" "*" + +"@types/koa@*", "@types/koa@^2.13.1": + "integrity" "sha512-dfHYMfU+z/vKtQB7NUrthdAEiSvnLebvBjwHtfFmpZmB7em2N3WVQdHgnFq+xvyVgxW5jKDmjWfLD3lw4g4uTw==" + "resolved" "https://registry.npmjs.org/@types/koa/-/koa-2.13.4.tgz" + "version" "2.13.4" + dependencies: + "@types/accepts" "*" + "@types/content-disposition" "*" + "@types/cookies" "*" + "@types/http-assert" "*" + "@types/http-errors" "*" + "@types/keygrip" "*" + "@types/koa-compose" "*" + "@types/node" "*" "@types/lodash@^4.14.172": - version "4.14.174" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.174.tgz#b4b06b6eced9850eed6b6a8f1abdd0f5192803c1" - integrity sha512-KMBLT6+g9qrGXpDt7ohjWPUD34WA/jasrtjTEHStF0NPdEwJ1N9SZ+4GaMVDeuk/y0+X5j9xFm6mNiXS7UoaLQ== + "integrity" "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==" + "resolved" "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz" + "version" "4.14.182" + +"@types/long@^4.0.0", "@types/long@^4.0.1": + "integrity" "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + "resolved" "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz" + "version" "4.0.2" "@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + "integrity" "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + "resolved" "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz" + "version" "1.3.2" "@types/minimatch@^3.0.3": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + "integrity" "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + "resolved" "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz" + "version" "3.0.5" "@types/minimist@^1.2.0": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" - integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + "integrity" "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" + "resolved" "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz" + "version" "1.2.2" -"@types/node@*", "@types/node@^16.4.3": - version "16.10.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.1.tgz#f3647623199ca920960006b3dccf633ea905f243" - integrity sha512-4/Z9DMPKFexZj/Gn3LylFgamNKHm4K3QDi0gz9B26Uk0c8izYf97B5fxfpspMNkWlFupblKM/nV8+NA9Ffvr+w== +"@types/ms@*": + "integrity" "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + "resolved" "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz" + "version" "0.7.31" + +"@types/node-fetch@^2.5.12": + "integrity" "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==" + "resolved" "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz" + "version" "2.6.1" + dependencies: + "@types/node" "*" + "form-data" "^3.0.0" + +"@types/node@*", "@types/node@^15.3.0", "@types/node@>=10.0.0", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=8.1.0": + "integrity" "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz" + "version" "15.14.9" + +"@types/node@^10.0.3": + "integrity" "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz" + "version" "10.17.60" + +"@types/node@^14.11.8": + "integrity" "sha512-e6ZowgGJmTuXa3GyaPbTGxX17tnThl2aSSizrFthQ7m9uLGZBXiGhgE55cjRZTF5kjZvYn9EOPOMljdjwbflxw==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-14.17.3.tgz" + "version" "14.17.3" + +"@types/node@^15.6.1": + "integrity" "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz" + "version" "15.12.2" + +"@types/node@^16.4.3": + "integrity" "sha512-wh/d0pcu/Ie2mqTIqh4tjd0mLAB4JWxOjHQtLN20HS7sjMHiV4Afr+90hITTyZcxowwha5wjv32jGEn1zkEFMg==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-16.11.31.tgz" + "version" "16.11.31" + +"@types/node@^8.10.50": + "integrity" "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz" + "version" "8.10.66" "@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + "integrity" "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" + "resolved" "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" + "version" "2.4.1" "@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + "integrity" "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + "version" "4.0.0" + +"@types/pg@^7.14.11": + "integrity" "sha512-EnZkZ1OMw9DvNfQkn2MTJrwKmhJYDEs5ujWrPfvseWNoI95N8B4HzU/Ltrq5ZfYxDX/Zg8mTzwr6UAyTjjFvXA==" + "resolved" "https://registry.npmjs.org/@types/pg/-/pg-7.14.11.tgz" + "version" "7.14.11" + dependencies: + "@types/node" "*" + "pg-protocol" "^1.2.0" + "pg-types" "^2.2.0" "@types/prettier@^2.1.5": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.1.tgz#e1303048d5389563e130f5bdd89d37a99acb75eb" - integrity sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw== + "integrity" "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==" + "resolved" "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz" + "version" "2.6.0" + +"@types/promise-retry@^1.1.3": + "integrity" "sha512-LxIlEpEX6frE3co3vCO2EUJfHIta1IOmhDlcAsR4GMMv9hev1iTI9VwberVGkePJAuLZs5rMucrV8CziCfuJMw==" + "resolved" "https://registry.npmjs.org/@types/promise-retry/-/promise-retry-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "@types/retry" "*" "@types/prop-types@*", "@types/prop-types@^15.7.4": - version "15.7.4" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" - integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + "integrity" "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" + "version" "15.7.5" "@types/pubsub-js@^1.8.2": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@types/pubsub-js/-/pubsub-js-1.8.3.tgz#f480a9e4f72f50e1e3cc598ef1b32f3bfbbcd6b6" - integrity sha512-6BqY04dh2UV1dNV690tyJVJYQ0U6qBH4tU+FCwY1Mhl8jOPOP9qiIvgLnB59cVik/E6/R002oXZpGiDm+2C8eA== + "integrity" "sha512-6BqY04dh2UV1dNV690tyJVJYQ0U6qBH4tU+FCwY1Mhl8jOPOP9qiIvgLnB59cVik/E6/R002oXZpGiDm+2C8eA==" + "resolved" "https://registry.npmjs.org/@types/pubsub-js/-/pubsub-js-1.8.3.tgz" + "version" "1.8.3" + +"@types/pumpify@^1.4.1": + "integrity" "sha512-l7u/Dnh1OG9T7VH6TvulR0g8oE8hgIW5409mSUKi8Vxw2+JV18aTa06Sv5bvNjrD0zbsB/cuZ/iTFQgFNfzIuw==" + "resolved" "https://registry.npmjs.org/@types/pumpify/-/pumpify-1.4.1.tgz" + "version" "1.4.1" + dependencies: + "@types/duplexify" "*" + "@types/node" "*" + +"@types/puppeteer@*": + "integrity" "sha512-98Kghehs7+/GD9b56qryhqdqVCXUTbetTv3PlvDnmFRTHQH0j9DIp1f7rkAW3BAj4U3yoeSEQnKgdW8bDq0Y0Q==" + "resolved" "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.6.tgz" + "version" "5.4.6" + dependencies: + "@types/node" "*" "@types/qs@*": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + "integrity" "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + "resolved" "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" + "version" "6.9.7" "@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + "integrity" "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + "resolved" "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" + "version" "1.2.4" -"@types/react-dom@^17.0.9": - version "17.0.9" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.9.tgz#441a981da9d7be117042e1a6fd3dac4b30f55add" - integrity sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg== +"@types/react-csv@^1.1.2": + "integrity" "sha512-hCtZyXAubxBtn3Oi3I9kNAx2liRTaMtl1eWpO2M98aYkHuoSTbYO8OcZEjyr9aJJ30Xnoxj+uES3G6L6O1qgtg==" + "resolved" "https://registry.npmjs.org/@types/react-csv/-/react-csv-1.1.2.tgz" + "version" "1.1.2" dependencies: "@types/react" "*" +"@types/react-dom@^17.0.9": + "integrity" "sha512-DWcXf8EbMrO/gWnQU7Z88Ws/p16qxGpPyjTKTpmBSFKeE+HveVubqGO1CVK7FrwlWD5MuOcvh8gtd0/XO38NdQ==" + "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.16.tgz" + "version" "17.0.16" + dependencies: + "@types/react" "^17" + "@types/react-is@^16.7.1 || ^17.0.0": - version "17.0.3" - resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-17.0.3.tgz#2d855ba575f2fc8d17ef9861f084acc4b90a137a" - integrity sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw== + "integrity" "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==" + "resolved" "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz" + "version" "17.0.3" dependencies: "@types/react" "*" -"@types/react-redux@^7.1.16", "@types/react-redux@^7.1.18": - version "7.1.18" - resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.18.tgz#2bf8fd56ebaae679a90ebffe48ff73717c438e04" - integrity sha512-9iwAsPyJ9DLTRH+OFeIrm9cAbIj1i2ANL3sKQFATqnPWRbg+jEFXyZOKHiQK/N86pNRXbb4HRxAxo0SIX1XwzQ== +"@types/react-redux@^7.1.18", "@types/react-redux@^7.1.20": + "integrity" "sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ==" + "resolved" "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.24.tgz" + "version" "7.1.24" dependencies: "@types/hoist-non-react-statics" "^3.3.0" "@types/react" "*" - hoist-non-react-statics "^3.3.0" - redux "^4.0.0" + "hoist-non-react-statics" "^3.3.0" + "redux" "^4.0.0" -"@types/react-transition-group@^4.4.4": - version "4.4.4" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e" - integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug== +"@types/react-table@7.7.9": + "integrity" "sha512-ejP/J20Zlj9VmuLh73YgYkW2xOSFTW39G43rPH93M4mYWdMmqv66lCCr+axZpkdtlNLGjvMG2CwzT4S6abaeGQ==" + "resolved" "https://registry.npmjs.org/@types/react-table/-/react-table-7.7.9.tgz" + "version" "7.7.9" dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^17.0.15": - version "17.0.24" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.24.tgz#7e1b3f78d0fc53782543f9bce6d949959a5880bd" - integrity sha512-eIpyco99gTH+FTI3J7Oi/OH8MZoFMJuztNRimDOJwH4iGIsKV2qkGnk4M9VzlaVWeEEWLWSQRy0FEA0Kz218cg== +"@types/react-transition-group@^4.2.0", "@types/react-transition-group@^4.4.4": + "integrity" "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==" + "resolved" "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz" + "version" "4.4.4" + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^17", "@types/react@^17.0.15": + "integrity" "sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g==" + "resolved" "https://registry.npmjs.org/@types/react/-/react-17.0.44.tgz" + "version" "17.0.44" + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + "csstype" "^3.0.2" + +"@types/react@^18.0.0": + "integrity" "sha512-+j2hk9BzCOrrOSJASi5XiOyBbERk9jG5O73Ya4M0env5Ixi6vUNli4qy994AINcEF+1IEHISYFfIT4zwr++LKw==" + "resolved" "https://registry.npmjs.org/@types/react/-/react-18.0.8.tgz" + "version" "18.0.8" dependencies: "@types/prop-types" "*" "@types/scheduler" "*" - csstype "^3.0.2" + "csstype" "^3.0.2" + +"@types/request-promise@^4.1.43", "@types/request-promise@^4.1.48": + "integrity" "sha512-sLsfxfwP5G3E3U64QXxKwA6ctsxZ7uKyl4I28pMj3JvV+ztWECRns73GL71KMOOJME5u1A5Vs5dkBqyiR1Zcnw==" + "resolved" "https://registry.npmjs.org/@types/request-promise/-/request-promise-4.1.48.tgz" + "version" "4.1.48" + dependencies: + "@types/bluebird" "*" + "@types/request" "*" + +"@types/request@*", "@types/request@^2.48.2": + "integrity" "sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==" + "resolved" "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz" + "version" "2.48.8" + dependencies: + "@types/caseless" "*" + "@types/node" "*" + "@types/tough-cookie" "*" + "form-data" "^2.5.0" -"@types/retry@^0.12.0": - version "0.12.1" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" - integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== +"@types/retry@*": + "integrity" "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==" + "resolved" "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz" + "version" "0.12.2" + +"@types/retry@0.12.0": + "integrity" "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + "resolved" "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" + "version" "0.12.0" "@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + "integrity" "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" + "version" "0.16.2" + +"@types/serve-index@^1.9.1": + "integrity" "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==" + "resolved" "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz" + "version" "1.9.1" + dependencies: + "@types/express" "*" "@types/serve-static@*": - version "1.13.10" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" - integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== + "integrity" "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==" + "resolved" "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz" + "version" "1.13.10" dependencies: "@types/mime" "^1" "@types/node" "*" "@types/sharedb@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@types/sharedb/-/sharedb-2.2.0.tgz#61a1ab5d1bc5596bf8b0933a7eafb5b7fad8b2f6" - integrity sha512-VbsWaKdU/m9I9CUBtBSj+hcWMT8jr0mEg0qAebUxEwR2nreRKHC6/3WbhXKYqqaC36jDXleKv3TXnMMgTUioSQ== + "integrity" "sha512-VbsWaKdU/m9I9CUBtBSj+hcWMT8jr0mEg0qAebUxEwR2nreRKHC6/3WbhXKYqqaC36jDXleKv3TXnMMgTUioSQ==" + "resolved" "https://registry.npmjs.org/@types/sharedb/-/sharedb-2.2.0.tgz" + "version" "2.2.0" + +"@types/sockjs@^0.3.33": + "integrity" "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==" + "resolved" "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz" + "version" "0.3.33" + dependencies: + "@types/node" "*" "@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + "integrity" "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==" + "resolved" "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz" + "version" "0.1.2" "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + "integrity" "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" + "resolved" "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" + "version" "2.0.1" + +"@types/superagent@*": + "integrity" "sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ==" + "resolved" "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz" + "version" "4.1.15" + dependencies: + "@types/cookiejar" "*" + "@types/node" "*" + +"@types/supertest@2.0.11": + "integrity" "sha512-uci4Esokrw9qGb9bvhhSVEjd6rkny/dk5PK/Qz4yxKiyppEI+dOPlNrZBahE3i+PoKFYyDxChVXZ/ysS/nrm1Q==" + "resolved" "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.11.tgz" + "version" "2.0.11" + dependencies: + "@types/superagent" "*" "@types/tapable@^1": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" - integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== + "integrity" "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==" + "resolved" "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz" + "version" "1.0.8" "@types/testing-library__jest-dom@^5.9.1": - version "5.14.1" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.1.tgz#014162a5cee6571819d48e999980694e2f657c3c" - integrity sha512-Gk9vaXfbzc5zCXI9eYE9BI5BNHEp4D3FWjgqBE/ePGYElLAP+KvxBcsdkwfIVvezs605oiyd/VrpiHe3Oeg+Aw== + "integrity" "sha512-oKZe+Mf4ioWlMuzVBaXQ9WDnEm1+umLx0InILg+yvZVBBDmzV5KfZyLrCvadtWcx8+916jLmHafcmqqffl+iIw==" + "resolved" "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.3.tgz" + "version" "5.14.3" dependencies: "@types/jest" "*" +"@types/tough-cookie@*": + "integrity" "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==" + "resolved" "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz" + "version" "4.0.2" + "@types/uglify-js@*": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.1.tgz#5e889e9e81e94245c75b6450600e1c5ea2878aea" - integrity sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ== + "integrity" "sha512-/xFrPIo+4zOeNGtVMbf9rUm0N+i4pDf1ynExomqtokIJmVzR3962lJ1UE+MmexMkA0cmN9oTzg5Xcbwge0Ij2Q==" + "resolved" "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.2.tgz" + "version" "3.13.2" dependencies: - source-map "^0.6.1" + "source-map" "^0.6.1" + +"@types/uuid@^8.3.0", "@types/uuid@^8.3.1": + "integrity" "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" + "resolved" "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz" + "version" "8.3.4" + +"@types/validator@^13.7.1": + "integrity" "sha512-KFcchQ3h0OPQgFirBRPZr5F/sVjxZsOrQHedj3zi8AH3Zv/hOLx2OLR4hxR5HcfoU+33n69ZuOfzthKVdMoTiw==" + "resolved" "https://registry.npmjs.org/@types/validator/-/validator-13.7.2.tgz" + "version" "13.7.2" -"@types/uuid@^8.3.1": - version "8.3.1" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.1.tgz#1a32969cf8f0364b3d8c8af9cc3555b7805df14f" - integrity sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg== +"@types/validator@13.6.3": + "integrity" "sha512-fWG42pMJOL4jKsDDZZREnXLjc3UE0R8LOJfARWYg6U966rxDT7TYejYzLnUF5cvSObGg34nd0+H2wHHU5Omdfw==" + "resolved" "https://registry.npmjs.org/@types/validator/-/validator-13.6.3.tgz" + "version" "13.6.3" + +"@types/wav@^1.0.1": + "integrity" "sha512-AKJeM5mqO1pdR2/HaTUQzSCm12No36KUM1larivXUmsLx+4JmMuC2Tv0kCdZzTx66h7IH2Xr92DGc9NQsXxa9Q==" + "resolved" "https://registry.npmjs.org/@types/wav/-/wav-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "@types/node" "*" "@types/webpack-sources@*": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" - integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== + "integrity" "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==" + "resolved" "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz" + "version" "3.2.0" dependencies: "@types/node" "*" "@types/source-list-map" "*" - source-map "^0.7.3" + "source-map" "^0.7.3" "@types/webpack@^4.39.2": - version "4.41.31" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.31.tgz#c35f252a3559ddf9c85c0d8b0b42019025e581aa" - integrity sha512-/i0J7sepXFIp1ZT7FjUGi1eXMCg8HCCzLJEQkKsOtbJFontsJLolBcDC+3qxn5pPwiCt1G0ZdRmYRzNBtvpuGQ== + "integrity" "sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==" + "resolved" "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.32.tgz" + "version" "4.41.32" dependencies: "@types/node" "*" "@types/tapable" "^1" "@types/uglify-js" "*" "@types/webpack-sources" "*" - anymatch "^3.0.0" - source-map "^0.6.0" + "anymatch" "^3.0.0" + "source-map" "^0.6.0" -"@types/ws@^8.5.3": - version "8.5.3" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" - integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== +"@types/ws@^8.2.2", "@types/ws@^8.5.1", "@types/ws@^8.5.3": + "integrity" "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==" + "resolved" "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz" + "version" "8.5.3" dependencies: "@types/node" "*" "@types/yargs-parser@*": - version "20.2.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" - integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== + "integrity" "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" + "version" "21.0.0" "@types/yargs@^15.0.0": - version "15.0.14" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" - integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== + "integrity" "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==" + "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz" + "version" "15.0.14" dependencies: "@types/yargs-parser" "*" "@types/yargs@^16.0.0": - version "16.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== + "integrity" "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==" + "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz" + "version" "16.0.4" dependencies: "@types/yargs-parser" "*" +"@types/yauzl@^2.9.1": + "integrity" "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==" + "resolved" "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz" + "version" "2.10.0" + dependencies: + "@types/node" "*" + "@typescript-eslint/eslint-plugin@^4.31.1": - version "4.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.32.0.tgz#46d2370ae9311092f2a6f7246d28357daf2d4e89" - integrity sha512-+OWTuWRSbWI1KDK8iEyG/6uK2rTm3kpS38wuVifGUTDB6kjEuNrzBI1MUtxnkneuWG/23QehABe2zHHrj+4yuA== - dependencies: - "@typescript-eslint/experimental-utils" "4.32.0" - "@typescript-eslint/scope-manager" "4.32.0" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/experimental-utils@4.32.0": - version "4.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.32.0.tgz#53a8267d16ca5a79134739129871966c56a59dc4" - integrity sha512-WLoXcc+cQufxRYjTWr4kFt0DyEv6hDgSaFqYhIzQZ05cF+kXfqXdUh+//kgquPJVUBbL3oQGKQxwPbLxHRqm6A== + "integrity" "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz" + "version" "4.33.0" + dependencies: + "@typescript-eslint/experimental-utils" "4.33.0" + "@typescript-eslint/scope-manager" "4.33.0" + "debug" "^4.3.1" + "functional-red-black-tree" "^1.0.1" + "ignore" "^5.1.8" + "regexpp" "^3.1.0" + "semver" "^7.3.5" + "tsutils" "^3.21.0" + +"@typescript-eslint/eslint-plugin@4.28.1": + "integrity" "sha512-9yfcNpDaNGQ6/LQOX/KhUFTR1sCKH+PBr234k6hI9XJ0VP5UqGxap0AnNwBnWFk1MNyWBylJH9ZkzBXC+5akZQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.1.tgz" + "version" "4.28.1" + dependencies: + "@typescript-eslint/experimental-utils" "4.28.1" + "@typescript-eslint/scope-manager" "4.28.1" + "debug" "^4.3.1" + "functional-red-black-tree" "^1.0.1" + "regexpp" "^3.1.0" + "semver" "^7.3.5" + "tsutils" "^3.21.0" + +"@typescript-eslint/experimental-utils@^4.9.1", "@typescript-eslint/experimental-utils@4.33.0": + "integrity" "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz" + "version" "4.33.0" + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + "eslint-scope" "^5.1.1" + "eslint-utils" "^3.0.0" + +"@typescript-eslint/experimental-utils@1.13.0": + "integrity" "sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz" + "version" "1.13.0" + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "1.13.0" + "eslint-scope" "^4.0.0" + +"@typescript-eslint/experimental-utils@3.10.1": + "integrity" "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz" + "version" "3.10.1" + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" + "eslint-scope" "^5.0.0" + "eslint-utils" "^2.0.0" + +"@typescript-eslint/experimental-utils@4.28.1": + "integrity" "sha512-n8/ggadrZ+uyrfrSEchx3jgODdmcx7MzVM2sI3cTpI/YlfSm0+9HEUaWw3aQn2urL2KYlWYMDgn45iLfjDYB+Q==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.1.tgz" + "version" "4.28.1" dependencies: "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.32.0" - "@typescript-eslint/types" "4.32.0" - "@typescript-eslint/typescript-estree" "4.32.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" + "@typescript-eslint/scope-manager" "4.28.1" + "@typescript-eslint/types" "4.28.1" + "@typescript-eslint/typescript-estree" "4.28.1" + "eslint-scope" "^5.1.1" + "eslint-utils" "^3.0.0" + +"@typescript-eslint/parser@^1.10.2": + "integrity" "sha512-ITMBs52PCPgLb2nGPoeT4iU3HdQZHcPaZVw+7CsFagRJHUhyeTgorEwHXhFf3e7Evzi8oujKNpHc8TONth8AdQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.13.0.tgz" + "version" "1.13.0" + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "1.13.0" + "@typescript-eslint/typescript-estree" "1.13.0" + "eslint-visitor-keys" "^1.0.0" + +"@typescript-eslint/parser@^3.0.0": + "integrity" "sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz" + "version" "3.10.1" + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "3.10.1" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" + "eslint-visitor-keys" "^1.1.0" "@typescript-eslint/parser@^4.31.1": - version "4.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.32.0.tgz#751ecca0e2fecd3d44484a9b3049ffc1871616e5" - integrity sha512-lhtYqQ2iEPV5JqV7K+uOVlPePjClj4dOw7K4/Z1F2yvjIUvyr13yJnDzkK6uon4BjHYuHy3EG0c2Z9jEhFk56w== - dependencies: - "@typescript-eslint/scope-manager" "4.32.0" - "@typescript-eslint/types" "4.32.0" - "@typescript-eslint/typescript-estree" "4.32.0" - debug "^4.3.1" - -"@typescript-eslint/scope-manager@4.32.0": - version "4.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.32.0.tgz#e03c8668f8b954072b3f944d5b799c0c9225a7d5" - integrity sha512-DK+fMSHdM216C0OM/KR1lHXjP1CNtVIhJ54kQxfOE6x8UGFAjha8cXgDMBEIYS2XCYjjCtvTkjQYwL3uvGOo0w== - dependencies: - "@typescript-eslint/types" "4.32.0" - "@typescript-eslint/visitor-keys" "4.32.0" - -"@typescript-eslint/types@4.32.0": - version "4.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.32.0.tgz#52c633c18da47aee09449144bf59565ab36df00d" - integrity sha512-LE7Z7BAv0E2UvqzogssGf1x7GPpUalgG07nGCBYb1oK4mFsOiFC/VrSMKbZQzFJdN2JL5XYmsx7C7FX9p9ns0w== - -"@typescript-eslint/typescript-estree@4.32.0": - version "4.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.32.0.tgz#db00ccc41ccedc8d7367ea3f50c6994b8efa9f3b" - integrity sha512-tRYCgJ3g1UjMw1cGG8Yn1KzOzNlQ6u1h9AmEtPhb5V5a1TmiHWcRyF/Ic+91M4f43QeChyYlVTcf3DvDTZR9vw== - dependencies: - "@typescript-eslint/types" "4.32.0" - "@typescript-eslint/visitor-keys" "4.32.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/visitor-keys@4.32.0": - version "4.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.32.0.tgz#455ba8b51242f2722a497ffae29313f33b14cb7f" - integrity sha512-e7NE0qz8W+atzv3Cy9qaQ7BTLwWsm084Z0c4nIO2l3Bp6u9WIgdqCgyPyV5oSPDMIW3b20H59OOCmVk3jw3Ptw== - dependencies: - "@typescript-eslint/types" "4.32.0" - eslint-visitor-keys "^2.0.0" + "integrity" "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz" + "version" "4.33.0" + dependencies: + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + "debug" "^4.3.1" + +"@typescript-eslint/parser@4.29.1": + "integrity" "sha512-3fL5iN20hzX3Q4OkG7QEPFjZV2qsVGiDhEwwh+EkmE/w7oteiOvUNzmpu5eSwGJX/anCryONltJ3WDmAzAoCMg==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.29.1.tgz" + "version" "4.29.1" + dependencies: + "@typescript-eslint/scope-manager" "4.29.1" + "@typescript-eslint/types" "4.29.1" + "@typescript-eslint/typescript-estree" "4.29.1" + "debug" "^4.3.1" + +"@typescript-eslint/scope-manager@4.28.1": + "integrity" "sha512-o95bvGKfss6705x7jFGDyS7trAORTy57lwJ+VsYwil/lOUxKQ9tA7Suuq+ciMhJc/1qPwB3XE2DKh9wubW8YYA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.28.1.tgz" + "version" "4.28.1" + dependencies: + "@typescript-eslint/types" "4.28.1" + "@typescript-eslint/visitor-keys" "4.28.1" + +"@typescript-eslint/scope-manager@4.29.1": + "integrity" "sha512-Hzv/uZOa9zrD/W5mftZa54Jd5Fed3tL6b4HeaOpwVSabJK8CJ+2MkDasnX/XK4rqP5ZTWngK1ZDeCi6EnxPQ7A==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.29.1.tgz" + "version" "4.29.1" + dependencies: + "@typescript-eslint/types" "4.29.1" + "@typescript-eslint/visitor-keys" "4.29.1" + +"@typescript-eslint/scope-manager@4.33.0": + "integrity" "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz" + "version" "4.33.0" + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + +"@typescript-eslint/types@3.10.1": + "integrity" "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz" + "version" "3.10.1" + +"@typescript-eslint/types@4.28.1": + "integrity" "sha512-4z+knEihcyX7blAGi7O3Fm3O6YRCP+r56NJFMNGsmtdw+NCdpG5SgNz427LS9nQkRVTswZLhz484hakQwB8RRg==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.28.1.tgz" + "version" "4.28.1" + +"@typescript-eslint/types@4.29.1": + "integrity" "sha512-Jj2yu78IRfw4nlaLtKjVaGaxh/6FhofmQ/j8v3NXmAiKafbIqtAPnKYrf0sbGjKdj0hS316J8WhnGnErbJ4RCA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.29.1.tgz" + "version" "4.29.1" + +"@typescript-eslint/types@4.33.0": + "integrity" "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz" + "version" "4.33.0" + +"@typescript-eslint/typescript-estree@1.13.0": + "integrity" "sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz" + "version" "1.13.0" + dependencies: + "lodash.unescape" "4.0.1" + "semver" "5.5.0" + +"@typescript-eslint/typescript-estree@3.10.1": + "integrity" "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz" + "version" "3.10.1" + dependencies: + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/visitor-keys" "3.10.1" + "debug" "^4.1.1" + "glob" "^7.1.6" + "is-glob" "^4.0.1" + "lodash" "^4.17.15" + "semver" "^7.3.2" + "tsutils" "^3.17.1" + +"@typescript-eslint/typescript-estree@4.28.1": + "integrity" "sha512-GhKxmC4sHXxHGJv8e8egAZeTZ6HI4mLU6S7FUzvFOtsk7ZIDN1ksA9r9DyOgNqowA9yAtZXV0Uiap61bIO81FQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.1.tgz" + "version" "4.28.1" + dependencies: + "@typescript-eslint/types" "4.28.1" + "@typescript-eslint/visitor-keys" "4.28.1" + "debug" "^4.3.1" + "globby" "^11.0.3" + "is-glob" "^4.0.1" + "semver" "^7.3.5" + "tsutils" "^3.21.0" + +"@typescript-eslint/typescript-estree@4.29.1": + "integrity" "sha512-lIkkrR9E4lwZkzPiRDNq0xdC3f2iVCUjw/7WPJ4S2Sl6C3nRWkeE1YXCQ0+KsiaQRbpY16jNaokdWnm9aUIsfw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.29.1.tgz" + "version" "4.29.1" + dependencies: + "@typescript-eslint/types" "4.29.1" + "@typescript-eslint/visitor-keys" "4.29.1" + "debug" "^4.3.1" + "globby" "^11.0.3" + "is-glob" "^4.0.1" + "semver" "^7.3.5" + "tsutils" "^3.21.0" + +"@typescript-eslint/typescript-estree@4.33.0": + "integrity" "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz" + "version" "4.33.0" + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + "debug" "^4.3.1" + "globby" "^11.0.3" + "is-glob" "^4.0.1" + "semver" "^7.3.5" + "tsutils" "^3.21.0" + +"@typescript-eslint/visitor-keys@3.10.1": + "integrity" "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz" + "version" "3.10.1" + dependencies: + "eslint-visitor-keys" "^1.1.0" + +"@typescript-eslint/visitor-keys@4.28.1": + "integrity" "sha512-K4HMrdFqr9PFquPu178SaSb92CaWe2yErXyPumc8cYWxFmhgJsNY9eSePmO05j0JhBvf2Cdhptd6E6Yv9HVHcg==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.1.tgz" + "version" "4.28.1" + dependencies: + "@typescript-eslint/types" "4.28.1" + "eslint-visitor-keys" "^2.0.0" + +"@typescript-eslint/visitor-keys@4.29.1": + "integrity" "sha512-zLqtjMoXvgdZY/PG6gqA73V8BjqPs4af1v2kiiETBObp+uC6gRYnJLmJHxC0QyUrrHDLJPIWNYxoBV3wbcRlag==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.29.1.tgz" + "version" "4.29.1" + dependencies: + "@typescript-eslint/types" "4.29.1" + "eslint-visitor-keys" "^2.0.0" + +"@typescript-eslint/visitor-keys@4.33.0": + "integrity" "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz" + "version" "4.33.0" + dependencies: + "@typescript-eslint/types" "4.33.0" + "eslint-visitor-keys" "^2.0.0" + +"@videojs/vhs-utils@^3.0.5": + "integrity" "sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==" + "resolved" "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz" + "version" "3.0.5" + dependencies: + "@babel/runtime" "^7.12.5" + "global" "^4.4.0" + "url-toolkit" "^2.2.1" "@webassemblyjs/ast@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" - integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== + "integrity" "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz" + "version" "1.11.1" dependencies: "@webassemblyjs/helper-numbers" "1.11.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.1" "@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + "integrity" "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz" + "version" "1.9.0" dependencies: "@webassemblyjs/helper-module-context" "1.9.0" "@webassemblyjs/helper-wasm-bytecode" "1.9.0" "@webassemblyjs/wast-parser" "1.9.0" "@webassemblyjs/floating-point-hex-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" - integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== + "integrity" "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz" + "version" "1.11.1" "@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + "integrity" "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz" + "version" "1.9.0" "@webassemblyjs/helper-api-error@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" - integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + "integrity" "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz" + "version" "1.11.1" "@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + "integrity" "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz" + "version" "1.9.0" "@webassemblyjs/helper-buffer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" - integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + "integrity" "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz" + "version" "1.11.1" "@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + "integrity" "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz" + "version" "1.9.0" "@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + "integrity" "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz" + "version" "1.9.0" dependencies: "@webassemblyjs/wast-printer" "1.9.0" "@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + "integrity" "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz" + "version" "1.9.0" "@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + "integrity" "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz" + "version" "1.9.0" dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-numbers@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" - integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== + "integrity" "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz" + "version" "1.11.1" dependencies: "@webassemblyjs/floating-point-hex-parser" "1.11.1" "@webassemblyjs/helper-api-error" "1.11.1" "@xtuc/long" "4.2.2" "@webassemblyjs/helper-wasm-bytecode@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" - integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + "integrity" "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz" + "version" "1.11.1" "@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + "integrity" "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz" + "version" "1.9.0" "@webassemblyjs/helper-wasm-section@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" - integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== + "integrity" "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz" + "version" "1.11.1" dependencies: "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/helper-buffer" "1.11.1" @@ -3359,9 +4856,9 @@ "@webassemblyjs/wasm-gen" "1.11.1" "@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + "integrity" "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz" + "version" "1.9.0" dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" @@ -3369,47 +4866,47 @@ "@webassemblyjs/wasm-gen" "1.9.0" "@webassemblyjs/ieee754@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" - integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== + "integrity" "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz" + "version" "1.11.1" dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + "integrity" "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz" + "version" "1.9.0" dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" - integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== + "integrity" "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz" + "version" "1.11.1" dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + "integrity" "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz" + "version" "1.9.0" dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/utf8@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" - integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + "integrity" "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz" + "version" "1.11.1" "@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + "integrity" "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz" + "version" "1.9.0" "@webassemblyjs/wasm-edit@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" - integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + "integrity" "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz" + "version" "1.11.1" dependencies: "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/helper-buffer" "1.11.1" @@ -3421,9 +4918,9 @@ "@webassemblyjs/wast-printer" "1.11.1" "@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + "integrity" "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz" + "version" "1.9.0" dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" @@ -3435,9 +4932,9 @@ "@webassemblyjs/wast-printer" "1.9.0" "@webassemblyjs/wasm-gen@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" - integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + "integrity" "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz" + "version" "1.11.1" dependencies: "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.1" @@ -3446,9 +4943,9 @@ "@webassemblyjs/utf8" "1.11.1" "@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + "integrity" "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz" + "version" "1.9.0" dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-wasm-bytecode" "1.9.0" @@ -3457,9 +4954,9 @@ "@webassemblyjs/utf8" "1.9.0" "@webassemblyjs/wasm-opt@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" - integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + "integrity" "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz" + "version" "1.11.1" dependencies: "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/helper-buffer" "1.11.1" @@ -3467,9 +4964,9 @@ "@webassemblyjs/wasm-parser" "1.11.1" "@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + "integrity" "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz" + "version" "1.9.0" dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" @@ -3477,9 +4974,9 @@ "@webassemblyjs/wasm-parser" "1.9.0" "@webassemblyjs/wasm-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" - integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + "integrity" "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz" + "version" "1.11.1" dependencies: "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/helper-api-error" "1.11.1" @@ -3489,9 +4986,9 @@ "@webassemblyjs/utf8" "1.11.1" "@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + "integrity" "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz" + "version" "1.9.0" dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-api-error" "1.9.0" @@ -3501,9 +4998,9 @@ "@webassemblyjs/utf8" "1.9.0" "@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + "integrity" "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz" + "version" "1.9.0" dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/floating-point-hex-parser" "1.9.0" @@ -3513,714 +5010,1020 @@ "@xtuc/long" "4.2.2" "@webassemblyjs/wast-printer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" - integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + "integrity" "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz" + "version" "1.11.1" dependencies: "@webassemblyjs/ast" "1.11.1" "@xtuc/long" "4.2.2" "@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + "integrity" "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz" + "version" "1.9.0" dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" -"@webpack-cli/configtest@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.4.tgz#f03ce6311c0883a83d04569e2c03c6238316d2aa" - integrity sha512-cs3XLy+UcxiP6bj0A6u7MLLuwdXJ1c3Dtc0RkKg+wiI1g/Ti1om8+/2hc2A2B60NbBNAbMgyBMHvyymWm/j4wQ== +"@webpack-cli/configtest@^1.1.1": + "integrity" "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==" + "resolved" "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz" + "version" "1.1.1" -"@webpack-cli/info@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.3.0.tgz#9d78a31101a960997a4acd41ffd9b9300627fe2b" - integrity sha512-ASiVB3t9LOKHs5DyVUcxpraBXDOKubYu/ihHhU+t1UPpxsivg6Od2E2qU4gJCekfEddzRBzHhzA/Acyw/mlK/w== +"@webpack-cli/info@^1.4.1": + "integrity" "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==" + "resolved" "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz" + "version" "1.4.1" dependencies: - envinfo "^7.7.3" + "envinfo" "^7.7.3" -"@webpack-cli/serve@^1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.5.2.tgz#ea584b637ff63c5a477f6f21604b5a205b72c9ec" - integrity sha512-vgJ5OLWadI8aKjDlOH3rb+dYyPd2GTZuQC/Tihjct6F9GpXGZINo3Y/IVuZVTM1eDQB+/AOsjPUWH/WySDaXvw== +"@webpack-cli/serve@^1.6.1": + "integrity" "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==" + "resolved" "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz" + "version" "1.6.1" "@welldone-software/why-did-you-render@^6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@welldone-software/why-did-you-render/-/why-did-you-render-6.2.1.tgz#6a87926cc8386b748dc07341cf495caa5be1db28" - integrity sha512-eIVKeK6ueS3tuzCqMVTaaNrPYvb9cA8NHiNgLA7Op8SD4TiT31zqNjxmhzLEK+y3sBxcwr6YhsiQGX9EThrvaw== + "integrity" "sha512-FQgi90jvC9uw2aALlonJfqaWOvU5UUBBVvdAnS2iryXwCc4YJkKsPJY5Y/LzaND3OIyk8XGUn1vTRn6hcem28Q==" + "resolved" "https://registry.npmjs.org/@welldone-software/why-did-you-render/-/why-did-you-render-6.2.3.tgz" + "version" "6.2.3" dependencies: - lodash "^4" + "lodash" "^4" "@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + "integrity" "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "resolved" "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + "version" "1.2.0" "@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -JSONStream@^1.0.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-import-assertions@^1.7.6: - version "1.7.6" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz#580e3ffcae6770eebeec76c3b9723201e9d01f78" - integrity sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA== - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn-walk@^8.0.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^6.4.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.0.4, acorn@^8.2.4, acorn@^8.4.1: - version "8.5.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" - integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== - -add-px-to-style@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/add-px-to-style/-/add-px-to-style-1.0.0.tgz#d0c135441fa8014a8137904531096f67f28f263a" - integrity sha1-0ME1RB+oAUqBN5BFMQlvZ/KPJjo= - -add-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" - integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo= - -add@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/add/-/add-2.0.6.tgz#248f0a9f6e5a528ef2295dbeec30532130ae2235" - integrity sha1-JI8Kn25aUo7yKV2+7DBTITCuIjU= - -agent-base@6, agent-base@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -agentkeepalive@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.1.4.tgz#d928028a4862cb11718e55227872e842a44c945b" - integrity sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ== - dependencies: - debug "^4.1.0" - depd "^1.1.2" - humanize-ms "^1.2.1" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -airbnb-prop-types@^2.16.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2" - integrity sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg== - dependencies: - array.prototype.find "^2.1.1" - function.prototype.name "^1.1.2" - is-regex "^1.1.0" - object-is "^1.1.2" - object.assign "^4.1.0" - object.entries "^1.1.2" - prop-types "^15.7.2" - prop-types-exact "^1.2.0" - react-is "^16.13.1" - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-align@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== - dependencies: - string-width "^4.1.0" - -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-html-community@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^5.0.0, ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.0.3, aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -aproba@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + "integrity" "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "resolved" "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + "version" "4.2.2" + +"abab@^2.0.3", "abab@^2.0.5", "abab@^2.0.6": + "integrity" "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + "resolved" "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" + "version" "2.0.6" + +"abbrev@1": + "integrity" "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "resolved" "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" + "version" "1.1.1" + +"abort-controller@^3.0.0": + "integrity" "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==" + "resolved" "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "event-target-shim" "^5.0.0" + +"accepts@^1.3.5", "accepts@~1.3.4", "accepts@~1.3.5", "accepts@~1.3.8": + "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" + "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + "version" "1.3.8" + dependencies: + "mime-types" "~2.1.34" + "negotiator" "0.6.3" + +"acorn-globals@^6.0.0": + "integrity" "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==" + "resolved" "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "acorn" "^7.1.1" + "acorn-walk" "^7.1.1" + +"acorn-import-assertions@^1.7.6": + "integrity" "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==" + "resolved" "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz" + "version" "1.8.0" + +"acorn-jsx@^3.0.0": + "integrity" "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=" + "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "acorn" "^3.0.4" + +"acorn-jsx@^5.0.0", "acorn-jsx@^5.2.0", "acorn-jsx@^5.3.1": + "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + "version" "5.3.2" + +"acorn-walk@^7.1.1": + "integrity" "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" + "version" "7.2.0" + +"acorn-walk@^8.0.0": + "integrity" "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + "version" "8.2.0" + +"acorn-walk@^8.1.1": + "integrity" "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + "version" "8.2.0" + +"acorn-walk@^8.2.0": + "integrity" "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + "version" "8.2.0" + +"acorn@^3.0.4": + "integrity" "sha1-ReN/s56No/JbruP/U2niu18iAXo=" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz" + "version" "3.3.0" + +"acorn@^5.5.0": + "integrity" "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz" + "version" "5.7.4" + +"acorn@^6.0.7": + "integrity" "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" + "version" "6.4.2" + +"acorn@^6.4.1": + "integrity" "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" + "version" "6.4.2" + +"acorn@^7.1.1", "acorn@^7.4.0": + "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" + "version" "7.4.1" + +"acorn@^8.0.4": + "integrity" "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz" + "version" "8.7.1" + +"acorn@^8.2.4": + "integrity" "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz" + "version" "8.7.1" + +"acorn@^8.4.1": + "integrity" "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz" + "version" "8.7.1" + +"acorn@^8.5.0": + "integrity" "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz" + "version" "8.7.1" + +"acorn@^8.7.0": + "integrity" "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz" + "version" "8.7.1" + +"add-px-to-style@1.0.0": + "integrity" "sha1-0ME1RB+oAUqBN5BFMQlvZ/KPJjo=" + "resolved" "https://registry.npmjs.org/add-px-to-style/-/add-px-to-style-1.0.0.tgz" + "version" "1.0.0" + +"add-stream@^1.0.0": + "integrity" "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=" + "resolved" "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz" + "version" "1.0.0" + +"add@^2.0.6": + "integrity" "sha1-JI8Kn25aUo7yKV2+7DBTITCuIjU=" + "resolved" "https://registry.npmjs.org/add/-/add-2.0.6.tgz" + "version" "2.0.6" + +"afinn-165@^1.0.2": + "integrity" "sha512-7+Wlx3BImrK0HiG6y3lU4xX7SpBPSSu8T9iguPMlaueRFxjbYwAQrp9lqZUuFikqKbd/en8lVREILvP2J80uJA==" + "resolved" "https://registry.npmjs.org/afinn-165/-/afinn-165-1.0.4.tgz" + "version" "1.0.4" + +"agent-base@^4.3.0": + "integrity" "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==" + "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "es6-promisify" "^5.0.0" + +"agent-base@^6.0.0", "agent-base@^6.0.2", "agent-base@6": + "integrity" "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" + "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "debug" "4" + +"agentkeepalive@^4.1.3": + "integrity" "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==" + "resolved" "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz" + "version" "4.2.1" + dependencies: + "debug" "^4.1.0" + "depd" "^1.1.2" + "humanize-ms" "^1.2.1" + +"aggregate-error@^3.0.0": + "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" + "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "clean-stack" "^2.0.0" + "indent-string" "^4.0.0" + +"airbnb-prop-types@^2.16.0": + "integrity" "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==" + "resolved" "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz" + "version" "2.16.0" + dependencies: + "array.prototype.find" "^2.1.1" + "function.prototype.name" "^1.1.2" + "is-regex" "^1.1.0" + "object-is" "^1.1.2" + "object.assign" "^4.1.0" + "object.entries" "^1.1.2" + "prop-types" "^15.7.2" + "prop-types-exact" "^1.2.0" + "react-is" "^16.13.1" + +"ajv-errors@^1.0.0": + "integrity" "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + "resolved" "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz" + "version" "1.0.1" + +"ajv-formats@^2.1.1": + "integrity" "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==" + "resolved" "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "ajv" "^8.0.0" + +"ajv-keywords@^3.1.0", "ajv-keywords@^3.4.1", "ajv-keywords@^3.5.2": + "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + "version" "3.5.2" + +"ajv-keywords@^5.0.0": + "integrity" "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==" + "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "fast-deep-equal" "^3.1.3" + +"ajv@^6.1.0", "ajv@^6.10.0", "ajv@^6.10.2", "ajv@^6.12.3", "ajv@^6.12.4", "ajv@^6.12.5", "ajv@^6.9.1": + "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + "version" "6.12.6" + dependencies: + "fast-deep-equal" "^3.1.1" + "fast-json-stable-stringify" "^2.0.0" + "json-schema-traverse" "^0.4.1" + "uri-js" "^4.2.2" + +"ajv@^8.0.0": + "integrity" "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" + "version" "8.11.0" + dependencies: + "fast-deep-equal" "^3.1.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + "uri-js" "^4.2.2" + +"ajv@^8.0.1": + "integrity" "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" + "version" "8.11.0" + dependencies: + "fast-deep-equal" "^3.1.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + "uri-js" "^4.2.2" + +"ajv@^8.8.0": + "integrity" "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" + "version" "8.11.0" + dependencies: + "fast-deep-equal" "^3.1.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + "uri-js" "^4.2.2" + +"amp-message@~0.1.1": + "integrity" "sha1-p48cmJlQh602GSpBKY5NtJ49/EU=" + "resolved" "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz" + "version" "0.1.2" + dependencies: + "amp" "0.3.1" + +"amp@~0.3.1", "amp@0.3.1": + "integrity" "sha1-at+NWKdPNh6CwfqNOJwHnhOfxH0=" + "resolved" "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz" + "version" "0.3.1" + +"ansi-align@^3.0.0": + "integrity" "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==" + "resolved" "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "string-width" "^4.1.0" + +"ansi-colors@^4.1.1": + "integrity" "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" + "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" + "version" "4.1.1" + +"ansi-escapes@^3.2.0": + "integrity" "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" + "version" "3.2.0" + +"ansi-escapes@^4.2.1", "ansi-escapes@^4.3.0": + "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" + "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + "version" "4.3.2" + dependencies: + "type-fest" "^0.21.3" + +"ansi-html-community@^0.0.8": + "integrity" "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" + "resolved" "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" + "version" "0.0.8" + +"ansi-regex@^2.0.0": + "integrity" "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + "version" "2.1.1" + +"ansi-regex@^3.0.0": + "integrity" "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz" + "version" "3.0.1" + +"ansi-regex@^4.1.0": + "integrity" "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" + "version" "4.1.1" + +"ansi-regex@^5.0.0", "ansi-regex@^5.0.1": + "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + "version" "5.0.1" + +"ansi-regex@^6.0.1": + "integrity" "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + "version" "6.0.1" + +"ansi-styles@^2.2.1": + "integrity" "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + "version" "2.2.1" + +"ansi-styles@^3.2.0", "ansi-styles@^3.2.1": + "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "color-convert" "^1.9.0" + +"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": + "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "color-convert" "^2.0.1" + +"ansi-styles@^5.0.0": + "integrity" "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + "version" "5.2.0" + +"ansi-styles@^6.0.0": + "integrity" "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz" + "version" "6.1.0" + +"anymatch@^2.0.0": + "integrity" "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==" + "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "micromatch" "^3.1.4" + "normalize-path" "^2.1.1" + +"anymatch@^3.0.0", "anymatch@^3.0.3", "anymatch@~3.1.2": + "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" + "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "normalize-path" "^3.0.0" + "picomatch" "^2.0.4" + +"anymatch@~3.1.1": + "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" + "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "normalize-path" "^3.0.0" + "picomatch" "^2.0.4" + +"apparatus@^0.0.10": + "integrity" "sha512-KLy/ugo33KZA7nugtQ7O0E1c8kQ52N3IvD/XgIh4w/Nr28ypfkwDfA67F1ev4N1m5D+BOk1+b2dEJDfpj/VvZg==" + "resolved" "https://registry.npmjs.org/apparatus/-/apparatus-0.0.10.tgz" + "version" "0.0.10" + dependencies: + "sylvester" ">= 0.0.8" + +"aproba@^1.0.3 || ^2.0.0", "aproba@^2.0.0": + "integrity" "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + "resolved" "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" + "version" "2.0.0" + +"aproba@^1.0.3": + "integrity" "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "resolved" "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" + "version" "1.2.0" + +"aproba@^1.1.1": + "integrity" "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "resolved" "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" + "version" "1.2.0" + +"are-we-there-yet@^2.0.0": + "integrity" "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==" + "resolved" "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "delegates" "^1.0.0" + "readable-stream" "^3.6.0" + +"are-we-there-yet@~1.1.2": + "integrity" "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==" + "resolved" "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz" + "version" "1.1.7" + dependencies: + "delegates" "^1.0.0" + "readable-stream" "^2.0.6" + +"arg@^4.1.0": + "integrity" "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + "resolved" "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + "version" "4.1.3" + +"argparse@^1.0.7": + "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "sprintf-js" "~1.0.2" + +"argparse@^2.0.1": + "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + "version" "2.0.1" + +"aria-query@^4.2.2": + "integrity" "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==" + "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz" + "version" "4.2.2" dependencies: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -array-differ@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" - integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= - -array-includes@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" - integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - get-intrinsic "^1.1.1" - is-string "^1.0.5" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -array.prototype.filter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array.prototype.filter/-/array.prototype.filter-1.0.0.tgz#24d63e38983cdc6bf023a3c574b2f2a3f384c301" - integrity sha512-TfO1gz+tLm+Bswq0FBOXPqAchtCr2Rn48T8dLJoRFl8NoEosjZmzptmuo1X8aZBzZcqsR1W8U761tjACJtngTQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.5" - -array.prototype.find@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.1.tgz#3baca26108ca7affb08db06bf0be6cb3115a969c" - integrity sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.4" - -array.prototype.flat@^1.2.3, array.prototype.flat@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" - integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - -arraydiff@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/arraydiff/-/arraydiff-0.1.3.tgz#86a5436d7b72f1bdda5fd6d74e8724e42f83ce4d" - integrity sha1-hqVDbXty8b3aX9bXTock5C+Dzk0= - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -asap@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async@^2.6.2, async@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -author-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/author-regex/-/author-regex-1.0.0.tgz#d08885be6b9bbf9439fe087c76287245f0a81450" - integrity sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA= - -auto@^10.32.0: - version "10.32.0" - resolved "https://registry.yarnpkg.com/auto/-/auto-10.32.0.tgz#0b6465d75119b9b64b313ce3e1ebb9cdd52ccc9a" - integrity sha512-3vvekuxeV1YGCsu/kl/hVS8GE+6M6K7Twjx8RpTAowHg6f81Mhj7/YVc9NGzTQE7OQVeMv9F7zOVIhys5+RKww== - dependencies: - "@auto-it/core" "10.32.0" - "@auto-it/npm" "10.32.0" - "@auto-it/released" "10.32.0" - await-to-js "^3.0.0" - chalk "^4.0.0" - command-line-application "^0.10.1" - endent "^2.0.1" - module-alias "^2.2.2" - signale "^1.4.0" - terminal-link "^2.1.1" - tslib "2.1.0" - -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - -await-to-js@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/await-to-js/-/await-to-js-3.0.0.tgz#70929994185616f4675a91af6167eb61cc92868f" - integrity sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-jest@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.2.3.tgz#f48599a507cd33c10f58058149eb3079198d0ed7" - integrity sha512-lXslrpae1L9cXnB5F8vvD/Yj70g47sG7CGSxT+qqveK/To72X3nuCtDux0s3HN7X351IbwYoYyfDxQ7CqVbkNw== - dependencies: - "@jest/transform" "^27.2.3" - "@jest/types" "^27.2.3" +"aria-query@^5.0.0": + "integrity" "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==" + "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz" + "version" "5.0.0" + +"arr-diff@^4.0.0": + "integrity" "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "resolved" "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" + "version" "4.0.0" + +"arr-flatten@^1.1.0": + "integrity" "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + "resolved" "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" + "version" "1.1.0" + +"arr-union@^3.1.0": + "integrity" "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + "resolved" "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" + "version" "3.1.0" + +"array-back@^3.0.1", "array-back@^3.1.0": + "integrity" "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==" + "resolved" "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz" + "version" "3.1.0" + +"array-back@^4.0.1": + "integrity" "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==" + "resolved" "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" + "version" "4.0.2" + +"array-back@^4.0.2": + "integrity" "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==" + "resolved" "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" + "version" "4.0.2" + +"array-differ@^3.0.0": + "integrity" "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==" + "resolved" "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz" + "version" "3.0.0" + +"array-flatten@^2.1.2": + "integrity" "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" + "version" "2.1.2" + +"array-flatten@1.1.1": + "integrity" "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + "version" "1.1.1" + +"array-ify@^1.0.0": + "integrity" "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=" + "resolved" "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz" + "version" "1.0.0" + +"array-includes@^3.1.3", "array-includes@^3.1.4": + "integrity" "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==" + "resolved" "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz" + "version" "3.1.4" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.1" + "get-intrinsic" "^1.1.1" + "is-string" "^1.0.7" + +"array-union@^1.0.1": + "integrity" "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=" + "resolved" "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "array-uniq" "^1.0.1" + +"array-union@^2.1.0": + "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + "version" "2.1.0" + +"array-uniq@^1.0.1": + "integrity" "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + "resolved" "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + "version" "1.0.3" + +"array-unique@^0.3.2": + "integrity" "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "resolved" "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" + "version" "0.3.2" + +"array.prototype.filter@^1.0.0": + "integrity" "sha512-Dk3Ty7N42Odk7PjU/Ci3zT4pLj20YvuVnneG/58ICM6bt4Ij5kZaJTVQ9TSaWaIECX2sFyz4KItkVZqHNnciqw==" + "resolved" "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.0" + "es-array-method-boxes-properly" "^1.0.0" + "is-string" "^1.0.7" + +"array.prototype.find@^2.1.1": + "integrity" "sha512-sn40qmUiLYAcRb/1HsIQjTTZ1kCy8II8VtZJpMn2Aoen9twULhbWXisfh3HimGqMlHGUul0/TfKCnXg42LuPpQ==" + "resolved" "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.4" + "es-shim-unscopables" "^1.0.0" + +"array.prototype.findindex@^2.0.2": + "integrity" "sha512-z5Q/aHCBv0xdHV/8ObdpPNWNFNepIojIfwc5Z4Um3S9IdzT7MRnOKDZE6CFLf5lyWeCxzRiEMoz1vHgbumygRQ==" + "resolved" "https://registry.npmjs.org/array.prototype.findindex/-/array.prototype.findindex-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.4" + "es-shim-unscopables" "^1.0.0" + +"array.prototype.flat@^1.2.3", "array.prototype.flat@^1.2.4", "array.prototype.flat@^1.2.5": + "integrity" "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==" + "resolved" "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.2" + "es-shim-unscopables" "^1.0.0" + +"array.prototype.flatmap@^1.2.4": + "integrity" "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==" + "resolved" "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.2" + "es-shim-unscopables" "^1.0.0" + +"arraydiff@^0.1.1": + "integrity" "sha1-hqVDbXty8b3aX9bXTock5C+Dzk0=" + "resolved" "https://registry.npmjs.org/arraydiff/-/arraydiff-0.1.3.tgz" + "version" "0.1.3" + +"arrify@^1.0.1": + "integrity" "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + "resolved" "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" + "version" "1.0.1" + +"arrify@^2.0.0", "arrify@^2.0.1": + "integrity" "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" + "resolved" "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" + "version" "2.0.1" + +"asap@^2.0.0": + "integrity" "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + "resolved" "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + "version" "2.0.6" + +"asn1.js@^5.2.0": + "integrity" "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==" + "resolved" "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" + "version" "5.4.1" + dependencies: + "bn.js" "^4.0.0" + "inherits" "^2.0.1" + "minimalistic-assert" "^1.0.0" + "safer-buffer" "^2.1.0" + +"asn1@~0.2.3": + "integrity" "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==" + "resolved" "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" + "version" "0.2.6" + dependencies: + "safer-buffer" "~2.1.0" + +"assert-plus@^1.0.0", "assert-plus@1.0.0": + "integrity" "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + "version" "1.0.0" + +"assert@^1.1.1": + "integrity" "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==" + "resolved" "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz" + "version" "1.5.0" + dependencies: + "object-assign" "^4.1.1" + "util" "0.10.3" + +"assign-symbols@^1.0.0": + "integrity" "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + "resolved" "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" + "version" "1.0.0" + +"ast-types@^0.13.2": + "integrity" "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==" + "resolved" "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz" + "version" "0.13.4" + dependencies: + "tslib" "^2.0.1" + +"astral-regex@^1.0.0": + "integrity" "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" + "version" "1.0.0" + +"astral-regex@^2.0.0": + "integrity" "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + "version" "2.0.0" + +"async-each@^1.0.1": + "integrity" "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + "resolved" "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz" + "version" "1.0.3" + +"async-limiter@~1.0.0": + "integrity" "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + "resolved" "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + "version" "1.0.1" + +"async-listener@^0.6.0": + "integrity" "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==" + "resolved" "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz" + "version" "0.6.10" + dependencies: + "semver" "^5.3.0" + "shimmer" "^1.1.0" + +"async@^2.6.2": + "integrity" "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==" + "resolved" "https://registry.npmjs.org/async/-/async-2.6.4.tgz" + "version" "2.6.4" + dependencies: + "lodash" "^4.17.14" + +"async@^2.6.3": + "integrity" "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==" + "resolved" "https://registry.npmjs.org/async/-/async-2.6.4.tgz" + "version" "2.6.4" + dependencies: + "lodash" "^4.17.14" + +"async@^3.2.0", "async@>=0.2.9", "async@~3.2.0": + "integrity" "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" + "resolved" "https://registry.npmjs.org/async/-/async-3.2.3.tgz" + "version" "3.2.3" + +"async@~2.6.1": + "integrity" "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==" + "resolved" "https://registry.npmjs.org/async/-/async-2.6.4.tgz" + "version" "2.6.4" + dependencies: + "lodash" "^4.17.14" + +"asynckit@^0.4.0": + "integrity" "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + "version" "0.4.0" + +"at-least-node@^1.0.0": + "integrity" "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + "resolved" "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" + "version" "1.0.0" + +"atob@^2.1.2": + "integrity" "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + "resolved" "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" + "version" "2.1.2" + +"author-regex@^1.0.0": + "integrity" "sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA=" + "resolved" "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz" + "version" "1.0.0" + +"auto@^10.32.0": + "integrity" "sha512-BKH2Vetv3Kkrd1COPnpvfm93+p5XlGjmg+EnBYyha6+bpXKUu1rwd3emr+5VLD32jkwoh5UnPJ0/PiMNGVB7vQ==" + "resolved" "https://registry.npmjs.org/auto/-/auto-10.36.5.tgz" + "version" "10.36.5" + dependencies: + "@auto-it/core" "10.36.5" + "@auto-it/npm" "10.36.5" + "@auto-it/released" "10.36.5" + "await-to-js" "^3.0.0" + "chalk" "^4.0.0" + "command-line-application" "^0.10.1" + "endent" "^2.1.0" + "module-alias" "^2.2.2" + "signale" "^1.4.0" + "terminal-link" "^2.1.1" + "tslib" "2.1.0" + +"available-typed-arrays@^1.0.5": + "integrity" "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" + "version" "1.0.5" + +"await-to-js@^3.0.0": + "integrity" "sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==" + "resolved" "https://registry.npmjs.org/await-to-js/-/await-to-js-3.0.0.tgz" + "version" "3.0.0" + +"aws-sdk@*", "aws-sdk@^2.1027.0": + "integrity" "sha512-yvPDpuzgz8a3YV99hJ0ChLWpbLxNuCiR8+0Fd4w/AoIf08OBZvTN0MAG/XnPVgTLya5qW8YZtghFTrodzwhYwg==" + "resolved" "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1123.0.tgz" + "version" "2.1123.0" + dependencies: + "buffer" "4.9.2" + "events" "1.1.1" + "ieee754" "1.1.13" + "jmespath" "0.16.0" + "querystring" "0.2.0" + "sax" "1.2.1" + "url" "0.10.3" + "uuid" "3.3.2" + "xml2js" "0.4.19" + +"aws-sign2@~0.7.0": + "integrity" "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "resolved" "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" + "version" "0.7.0" + +"aws4@^1.8.0": + "integrity" "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "resolved" "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" + "version" "1.11.0" + +"axios@*", "axios@0.24.0": + "integrity" "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==" + "resolved" "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz" + "version" "0.24.0" + dependencies: + "follow-redirects" "^1.14.4" + +"axios@^0.21.0": + "integrity" "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==" + "resolved" "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" + "version" "0.21.4" + dependencies: + "follow-redirects" "^1.14.0" + +"axios@^0.21.1": + "integrity" "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==" + "resolved" "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" + "version" "0.21.4" + dependencies: + "follow-redirects" "^1.14.0" + +"axios@^0.21.4": + "integrity" "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==" + "resolved" "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" + "version" "0.21.4" + dependencies: + "follow-redirects" "^1.14.0" + +"axios@0.21.2": + "integrity" "sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg==" + "resolved" "https://registry.npmjs.org/axios/-/axios-0.21.2.tgz" + "version" "0.21.2" + dependencies: + "follow-redirects" "^1.14.0" + +"babel-code-frame@^6.26.0": + "integrity" "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=" + "resolved" "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz" + "version" "6.26.0" + dependencies: + "chalk" "^1.1.3" + "esutils" "^2.0.2" + "js-tokens" "^3.0.2" + +"babel-helper-function-name@^6.24.1": + "integrity" "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=" + "resolved" "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz" + "version" "6.24.1" + dependencies: + "babel-helper-get-function-arity" "^6.24.1" + "babel-runtime" "^6.22.0" + "babel-template" "^6.24.1" + "babel-traverse" "^6.24.1" + "babel-types" "^6.24.1" + +"babel-helper-get-function-arity@^6.24.1": + "integrity" "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=" + "resolved" "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz" + "version" "6.24.1" + dependencies: + "babel-runtime" "^6.22.0" + "babel-types" "^6.24.1" + +"babel-jest@^27.5.1": + "integrity" "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==" + "resolved" "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^27.2.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - slash "^3.0.0" + "babel-plugin-istanbul" "^6.1.1" + "babel-preset-jest" "^27.5.1" + "chalk" "^4.0.0" + "graceful-fs" "^4.2.9" + "slash" "^3.0.0" -babel-loader@^8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" - integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== +"babel-loader@^8.2.2": + "integrity" "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==" + "resolved" "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz" + "version" "8.2.5" dependencies: - find-cache-dir "^3.3.1" - loader-utils "^1.4.0" - make-dir "^3.1.0" - schema-utils "^2.6.5" + "find-cache-dir" "^3.3.1" + "loader-utils" "^2.0.0" + "make-dir" "^3.1.0" + "schema-utils" "^2.6.5" -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= +"babel-messages@^6.23.0": + "integrity" "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=" + "resolved" "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz" + "version" "6.23.0" dependencies: - babel-runtime "^6.22.0" + "babel-runtime" "^6.22.0" -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== +"babel-plugin-dynamic-import-node@^2.3.3": + "integrity" "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==" + "resolved" "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz" + "version" "2.3.3" dependencies: - object.assign "^4.1.0" + "object.assign" "^4.1.0" -babel-plugin-emotion@^10.0.27: - version "10.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz#a1fe3503cff80abfd0bdda14abd2e8e57a79d17d" - integrity sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA== +"babel-plugin-emotion@^10.0.27": + "integrity" "sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==" + "resolved" "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz" + "version" "10.2.2" dependencies: "@babel/helper-module-imports" "^7.0.0" "@emotion/hash" "0.8.0" "@emotion/memoize" "0.7.4" "@emotion/serialize" "^0.11.16" - babel-plugin-macros "^2.0.0" - babel-plugin-syntax-jsx "^6.18.0" - convert-source-map "^1.5.0" - escape-string-regexp "^1.0.5" - find-root "^1.1.0" - source-map "^0.5.7" - -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + "babel-plugin-macros" "^2.0.0" + "babel-plugin-syntax-jsx" "^6.18.0" + "convert-source-map" "^1.5.0" + "escape-string-regexp" "^1.0.5" + "find-root" "^1.1.0" + "source-map" "^0.5.7" + +"babel-plugin-istanbul@^6.1.1": + "integrity" "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==" + "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" + "version" "6.1.1" dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" - test-exclude "^6.0.0" + "istanbul-lib-instrument" "^5.0.4" + "test-exclude" "^6.0.0" -babel-plugin-jest-hoist@^27.2.0: - version "27.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz#79f37d43f7e5c4fdc4b2ca3e10cc6cf545626277" - integrity sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw== +"babel-plugin-jest-hoist@^27.5.1": + "integrity" "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==" + "resolved" "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz" + "version" "27.5.1" dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.6.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== +"babel-plugin-macros@^2.0.0", "babel-plugin-macros@^2.6.1": + "integrity" "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==" + "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz" + "version" "2.8.0" dependencies: "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" + "cosmiconfig" "^6.0.0" + "resolve" "^1.12.0" -babel-plugin-polyfill-corejs2@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" - integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== +"babel-plugin-polyfill-corejs2@^0.3.0": + "integrity" "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz" + "version" "0.3.1" dependencies: "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.2" - semver "^6.1.1" + "@babel/helper-define-polyfill-provider" "^0.3.1" + "semver" "^6.1.1" -babel-plugin-polyfill-corejs3@^0.2.2: - version "0.2.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz#2779846a16a1652244ae268b1e906ada107faf92" - integrity sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw== +"babel-plugin-polyfill-corejs3@^0.5.0": + "integrity" "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz" + "version" "0.5.2" dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - core-js-compat "^3.16.2" + "@babel/helper-define-polyfill-provider" "^0.3.1" + "core-js-compat" "^3.21.0" -babel-plugin-polyfill-regenerator@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" - integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== +"babel-plugin-polyfill-regenerator@^0.3.0": + "integrity" "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz" + "version" "0.3.1" dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - -babel-plugin-syntax-class-properties@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" - integrity sha1-1+sjt5oxf4VDlixQW4J8fWysJ94= + "@babel/helper-define-polyfill-provider" "^0.3.1" -babel-plugin-syntax-jsx@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= - -babel-plugin-transform-class-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" - integrity sha1-anl2PqYdM9NvN7YRqp3vgagbRqw= +"babel-plugin-styled-components@>= 1.12.0": + "integrity" "sha512-FEiD7l5ZABdJPpLssKXjBUJMYqzbcNzBowfXDCdJhOpbhWiewapUaY+LZGT8R4Jg2TwOjGjG4RKeyrO5p9sBkA==" + "resolved" "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.12.0.tgz" + "version" "1.12.0" dependencies: - babel-helper-function-name "^6.24.1" - babel-plugin-syntax-class-properties "^6.8.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-module-imports" "^7.0.0" + "babel-plugin-syntax-jsx" "^6.18.0" + "lodash" "^4.17.11" + +"babel-plugin-syntax-class-properties@^6.8.0": + "integrity" "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=" + "resolved" "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz" + "version" "6.13.0" + +"babel-plugin-syntax-jsx@^6.18.0": + "integrity" "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + "resolved" "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" + "version" "6.18.0" + +"babel-plugin-transform-class-properties@^6.24.1": + "integrity" "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=" + "resolved" "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz" + "version" "6.24.1" + dependencies: + "babel-helper-function-name" "^6.24.1" + "babel-plugin-syntax-class-properties" "^6.8.0" + "babel-runtime" "^6.22.0" + "babel-template" "^6.24.1" + +"babel-preset-current-node-syntax@^1.0.0": + "integrity" "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==" + "resolved" "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" + "version" "1.0.1" dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -4235,5064 +6038,7017 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^27.2.0: - version "27.2.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz#556bbbf340608fed5670ab0ea0c8ef2449fba885" - integrity sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg== - dependencies: - babel-plugin-jest-hoist "^27.2.0" - babel-preset-current-node-syntax "^1.0.0" - -babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.0.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -before-after-hook@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" - integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -body-parser@1.19.2: - version "1.19.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" - integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.8.1" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.9.7" - raw-body "2.4.3" - type-is "~1.6.18" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -bottleneck@^2.15.3: - version "2.19.5" - resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91" - integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw== - -boxen@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" - integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^6.2.0" - chalk "^4.1.0" - cli-boxes "^2.2.1" - string-width "^4.2.2" - type-fest "^0.20.2" - widest-line "^3.1.0" - wrap-ansi "^7.0.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - 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" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.1.tgz#a98d104f54af441290b7d592626dd541fa642eb9" - integrity sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ== - dependencies: - caniuse-lite "^1.0.30001259" - electron-to-chromium "^1.3.846" - escalade "^3.1.1" - nanocolors "^0.1.5" - node-releases "^1.1.76" - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= - -byline@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" - integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= - -byte-size@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3" - integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^15.0.5, cacache@^15.2.0: - version "15.3.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" - integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== +"babel-preset-jest@^27.5.1": + "integrity" "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==" + "resolved" "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "babel-plugin-jest-hoist" "^27.5.1" + "babel-preset-current-node-syntax" "^1.0.0" + +"babel-runtime@^6.22.0", "babel-runtime@^6.26.0": + "integrity" "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=" + "resolved" "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" + "version" "6.26.0" + dependencies: + "core-js" "^2.4.0" + "regenerator-runtime" "^0.11.0" + +"babel-template@^6.24.1": + "integrity" "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=" + "resolved" "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz" + "version" "6.26.0" + dependencies: + "babel-runtime" "^6.26.0" + "babel-traverse" "^6.26.0" + "babel-types" "^6.26.0" + "babylon" "^6.18.0" + "lodash" "^4.17.4" + +"babel-traverse@^6.24.1", "babel-traverse@^6.26.0": + "integrity" "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=" + "resolved" "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz" + "version" "6.26.0" + dependencies: + "babel-code-frame" "^6.26.0" + "babel-messages" "^6.23.0" + "babel-runtime" "^6.26.0" + "babel-types" "^6.26.0" + "babylon" "^6.18.0" + "debug" "^2.6.8" + "globals" "^9.18.0" + "invariant" "^2.2.2" + "lodash" "^4.17.4" + +"babel-types@^6.24.1", "babel-types@^6.26.0": + "integrity" "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=" + "resolved" "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz" + "version" "6.26.0" + dependencies: + "babel-runtime" "^6.26.0" + "esutils" "^2.0.2" + "lodash" "^4.17.4" + "to-fast-properties" "^1.0.3" + +"babylon@^6.18.0": + "integrity" "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + "resolved" "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz" + "version" "6.18.0" + +"balanced-match@^1.0.0": + "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + "version" "1.0.2" + +"base@^0.11.1": + "integrity" "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==" + "resolved" "https://registry.npmjs.org/base/-/base-0.11.2.tgz" + "version" "0.11.2" + dependencies: + "cache-base" "^1.0.1" + "class-utils" "^0.3.5" + "component-emitter" "^1.2.1" + "define-property" "^1.0.0" + "isobject" "^3.0.1" + "mixin-deep" "^1.2.0" + "pascalcase" "^0.1.1" + +"base64-js@^1.0.2", "base64-js@^1.3.0", "base64-js@^1.3.1": + "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + "version" "1.5.1" + +"base64id@~2.0.0", "base64id@2.0.0": + "integrity" "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" + "resolved" "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz" + "version" "2.0.0" + +"batch@0.6.1": + "integrity" "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + "resolved" "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" + "version" "0.6.1" + +"bcrypt-pbkdf@^1.0.0": + "integrity" "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=" + "resolved" "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "tweetnacl" "^0.14.3" + +"bcrypt@^5.0.1": + "integrity" "sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==" + "resolved" "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "@mapbox/node-pre-gyp" "^1.0.0" + "node-addon-api" "^3.1.0" + +"before-after-hook@^2.2.0": + "integrity" "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==" + "resolved" "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz" + "version" "2.2.2" + +"better-react-spinkit@^2.0.4": + "integrity" "sha512-akLI2a7zoKPMkk2A/H/OGslsy6OHBjRnIefhJu6w2jeelP8qVQ7Zqpfb0/2OHdQsIaoMFL07CoLvBj9Qgm7CGQ==" + "resolved" "https://registry.npmjs.org/better-react-spinkit/-/better-react-spinkit-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "inline-style-prefixer" "^3.0.3" + "minify-css-string" "^1.0.0" + +"big.js@^5.2.2": + "integrity" "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + "resolved" "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" + "version" "5.2.2" + +"bignumber.js@^9.0.0": + "integrity" "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==" + "resolved" "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz" + "version" "9.0.2" + +"binary-extensions@^1.0.0": + "integrity" "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" + "version" "1.13.1" + +"binary-extensions@^2.0.0": + "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + "version" "2.2.0" + +"binary@^0.3.0": + "integrity" "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=" + "resolved" "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz" + "version" "0.3.0" + dependencies: + "buffers" "~0.1.1" + "chainsaw" "~0.1.0" + +"bl@^1.2.3": + "integrity" "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==" + "resolved" "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz" + "version" "1.2.3" + dependencies: + "readable-stream" "^2.3.5" + "safe-buffer" "^5.1.1" + +"bl@^4.0.3": + "integrity" "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==" + "resolved" "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "buffer" "^5.5.0" + "inherits" "^2.0.4" + "readable-stream" "^3.4.0" + +"bl@^4.1.0": + "integrity" "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==" + "resolved" "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "buffer" "^5.5.0" + "inherits" "^2.0.4" + "readable-stream" "^3.4.0" + +"blessed@0.1.81": + "integrity" "sha1-+WLWh+wsNpVwrnGvhDJW5tDKESk=" + "resolved" "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz" + "version" "0.1.81" + +"bluebird@^3.1.5", "bluebird@^3.5.0", "bluebird@^3.5.1", "bluebird@^3.5.5", "bluebird@^3.7.1", "bluebird@^3.7.2": + "integrity" "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + "version" "3.7.2" + +"bn.js@^4.0.0": + "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + "version" "4.12.0" + +"bn.js@^4.1.0": + "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + "version" "4.12.0" + +"bn.js@^4.11.9": + "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + "version" "4.12.0" + +"bn.js@^5.0.0", "bn.js@^5.1.1": + "integrity" "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" + "version" "5.2.0" + +"bodec@^0.1.0": + "integrity" "sha1-vIUVVUMPI8n3ZQp172TGqUw0GMw=" + "resolved" "https://registry.npmjs.org/bodec/-/bodec-0.1.0.tgz" + "version" "0.1.0" + +"body-parser@^1.18.2", "body-parser@1.20.0": + "integrity" "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==" + "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz" + "version" "1.20.0" + dependencies: + "bytes" "3.1.2" + "content-type" "~1.0.4" + "debug" "2.6.9" + "depd" "2.0.0" + "destroy" "1.2.0" + "http-errors" "2.0.0" + "iconv-lite" "0.4.24" + "on-finished" "2.4.1" + "qs" "6.10.3" + "raw-body" "2.5.1" + "type-is" "~1.6.18" + "unpipe" "1.0.0" + +"bonjour-service@^1.0.11": + "integrity" "sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw==" + "resolved" "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.12.tgz" + "version" "1.0.12" + dependencies: + "array-flatten" "^2.1.2" + "dns-equal" "^1.0.0" + "fast-deep-equal" "^3.1.3" + "multicast-dns" "^7.2.4" + +"boolbase@^1.0.0": + "integrity" "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + "version" "1.0.0" + +"boolify@^1.0.0": + "integrity" "sha1-tcCeF8rNET0Rt7s+04TMASmU2Gs=" + "resolved" "https://registry.npmjs.org/boolify/-/boolify-1.0.1.tgz" + "version" "1.0.1" + +"bottleneck@^2.15.3": + "integrity" "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" + "resolved" "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz" + "version" "2.19.5" + +"bowser@^1.7.3": + "integrity" "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" + "resolved" "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz" + "version" "1.9.4" + +"boxen@^5.0.0": + "integrity" "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==" + "resolved" "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "ansi-align" "^3.0.0" + "camelcase" "^6.2.0" + "chalk" "^4.1.0" + "cli-boxes" "^2.2.1" + "string-width" "^4.2.2" + "type-fest" "^0.20.2" + "widest-line" "^3.1.0" + "wrap-ansi" "^7.0.0" + +"brace-expansion@^1.1.7": + "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + "version" "1.1.11" + dependencies: + "balanced-match" "^1.0.0" + "concat-map" "0.0.1" + +"braces@^2.3.1", "braces@^2.3.2": + "integrity" "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==" + "resolved" "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" + "version" "2.3.2" + dependencies: + "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" + +"braces@^3.0.2", "braces@~3.0.2": + "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" + "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "fill-range" "^7.0.1" + +"brorand@^1.0.1", "brorand@^1.1.0": + "integrity" "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + "version" "1.1.0" + +"browser-process-hrtime@^1.0.0": + "integrity" "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + "resolved" "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" + "version" "1.0.0" + +"browserify-aes@^1.0.0", "browserify-aes@^1.0.4": + "integrity" "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==" + "resolved" "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "buffer-xor" "^1.0.3" + "cipher-base" "^1.0.0" + "create-hash" "^1.1.0" + "evp_bytestokey" "^1.0.3" + "inherits" "^2.0.1" + "safe-buffer" "^5.0.1" + +"browserify-cipher@^1.0.0": + "integrity" "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==" + "resolved" "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "browserify-aes" "^1.0.4" + "browserify-des" "^1.0.0" + "evp_bytestokey" "^1.0.0" + +"browserify-des@^1.0.0": + "integrity" "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==" + "resolved" "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "cipher-base" "^1.0.1" + "des.js" "^1.0.0" + "inherits" "^2.0.1" + "safe-buffer" "^5.1.2" + +"browserify-rsa@^4.0.0", "browserify-rsa@^4.0.1": + "integrity" "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==" + "resolved" "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "bn.js" "^5.0.0" + "randombytes" "^2.0.1" + +"browserify-sign@^4.0.0": + "integrity" "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==" + "resolved" "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" + "version" "4.2.1" + dependencies: + "bn.js" "^5.1.1" + "browserify-rsa" "^4.0.1" + "create-hash" "^1.2.0" + "create-hmac" "^1.1.7" + "elliptic" "^6.5.3" + "inherits" "^2.0.4" + "parse-asn1" "^5.1.5" + "readable-stream" "^3.6.0" + "safe-buffer" "^5.2.0" + +"browserify-zlib@^0.2.0": + "integrity" "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==" + "resolved" "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" + "version" "0.2.0" + dependencies: + "pako" "~1.0.5" + +"browserslist@^4.14.5", "browserslist@^4.17.5", "browserslist@^4.20.3": + "integrity" "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==" + "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz" + "version" "4.20.3" + dependencies: + "caniuse-lite" "^1.0.30001332" + "electron-to-chromium" "^1.4.118" + "escalade" "^3.1.1" + "node-releases" "^2.0.3" + "picocolors" "^1.0.0" + +"bs-logger@0.x": + "integrity" "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==" + "resolved" "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" + "version" "0.2.6" + dependencies: + "fast-json-stable-stringify" "2.x" + +"bser@2.1.1": + "integrity" "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==" + "resolved" "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "node-int64" "^0.4.0" + +"buffer-alloc-unsafe@^1.1.0": + "integrity" "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + "resolved" "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz" + "version" "1.1.0" + +"buffer-alloc@^1.1.0": + "integrity" "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==" + "resolved" "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "buffer-alloc-unsafe" "^1.1.0" + "buffer-fill" "^1.0.0" + +"buffer-crc32@~0.2.3": + "integrity" "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + "resolved" "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" + "version" "0.2.13" + +"buffer-equal-constant-time@1.0.1": + "integrity" "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + "resolved" "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" + "version" "1.0.1" + +"buffer-fill@^1.0.0": + "integrity" "sha1-+PeLdniYiO858gXNY39o5wISKyw=" + "resolved" "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz" + "version" "1.0.0" + +"buffer-from@^1.0.0", "buffer-from@1.x": + "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + "version" "1.1.2" + +"buffer-writer@2.0.0": + "integrity" "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" + "resolved" "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz" + "version" "2.0.0" + +"buffer-xor@^1.0.3": + "integrity" "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + "resolved" "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" + "version" "1.0.3" + +"buffer@^4.3.0", "buffer@4.9.2": + "integrity" "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" + "version" "4.9.2" + dependencies: + "base64-js" "^1.0.2" + "ieee754" "^1.1.4" + "isarray" "^1.0.0" + +"buffer@^5.2.1": + "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + "version" "5.7.1" + dependencies: + "base64-js" "^1.3.1" + "ieee754" "^1.1.13" + +"buffer@^5.5.0": + "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + "version" "5.7.1" + dependencies: + "base64-js" "^1.3.1" + "ieee754" "^1.1.13" + +"buffers@~0.1.1": + "integrity" "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" + "resolved" "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz" + "version" "0.1.1" + +"builtin-status-codes@^3.0.0": + "integrity" "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + "resolved" "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" + "version" "3.0.0" + +"builtins@^1.0.3": + "integrity" "sha1-y5T662HIaWRR2zZTThQi+U8K7og=" + "resolved" "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz" + "version" "1.0.3" + +"byline@^5.0.0": + "integrity" "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=" + "resolved" "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz" + "version" "5.0.0" + +"byte-size@^7.0.0": + "integrity" "sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==" + "resolved" "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz" + "version" "7.0.1" + +"bytes@3.0.0": + "integrity" "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + "version" "3.0.0" + +"bytes@3.1.2": + "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + "version" "3.1.2" + +"cacache@^12.0.2": + "integrity" "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==" + "resolved" "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz" + "version" "12.0.4" + dependencies: + "bluebird" "^3.5.5" + "chownr" "^1.1.1" + "figgy-pudding" "^3.5.1" + "glob" "^7.1.4" + "graceful-fs" "^4.1.15" + "infer-owner" "^1.0.3" + "lru-cache" "^5.1.1" + "mississippi" "^3.0.0" + "mkdirp" "^0.5.1" + "move-concurrently" "^1.0.1" + "promise-inflight" "^1.0.1" + "rimraf" "^2.6.3" + "ssri" "^6.0.1" + "unique-filename" "^1.1.1" + "y18n" "^4.0.0" + +"cacache@^15.0.5", "cacache@^15.2.0": + "integrity" "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==" + "resolved" "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz" + "version" "15.3.0" dependencies: "@npmcli/fs" "^1.0.0" "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.0.2" - unique-filename "^1.1.1" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== - -caniuse-lite@^1.0.30001259: - version "1.0.30001260" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001260.tgz#e3be3f34ddad735ca4a2736fa9e768ef34316270" - integrity sha512-Fhjc/k8725ItmrvW5QomzxLeojewxvqiYCKeFcfFEhut28IVLdpHU19dneOmltZQIE5HNbawj1HYD+1f2bM1Dg== - dependencies: - nanocolors "^0.1.0" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -cheerio-select@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823" - integrity sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg== - dependencies: - css-select "^4.1.3" - css-what "^5.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - domutils "^2.7.0" - -cheerio@^1.0.0-rc.3: - version "1.0.0-rc.10" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e" - integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw== - dependencies: - cheerio-select "^1.5.0" - dom-serializer "^1.3.2" - domhandler "^4.2.0" - htmlparser2 "^6.1.0" - parse5 "^6.0.1" - parse5-htmlparser2-tree-adapter "^6.0.1" - tslib "^2.2.0" - -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" + "chownr" "^2.0.0" + "fs-minipass" "^2.0.0" + "glob" "^7.1.4" + "infer-owner" "^1.0.4" + "lru-cache" "^6.0.0" + "minipass" "^3.1.1" + "minipass-collect" "^1.0.2" + "minipass-flush" "^1.0.5" + "minipass-pipeline" "^1.2.2" + "mkdirp" "^1.0.3" + "p-map" "^4.0.0" + "promise-inflight" "^1.0.1" + "rimraf" "^3.0.2" + "ssri" "^8.0.1" + "tar" "^6.0.2" + "unique-filename" "^1.1.1" + +"cache-base@^1.0.1": + "integrity" "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==" + "resolved" "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "collection-visit" "^1.0.0" + "component-emitter" "^1.2.1" + "get-value" "^2.0.6" + "has-value" "^1.0.0" + "isobject" "^3.0.1" + "set-value" "^2.0.0" + "to-object-path" "^0.3.0" + "union-value" "^1.0.0" + "unset-value" "^1.0.0" + +"cache-content-type@^1.0.0": + "integrity" "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==" + "resolved" "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "mime-types" "^2.1.18" + "ylru" "^1.2.0" + +"cacheable-request@^6.0.0": + "integrity" "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==" + "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "clone-response" "^1.0.2" + "get-stream" "^5.1.0" + "http-cache-semantics" "^4.0.0" + "keyv" "^3.0.0" + "lowercase-keys" "^2.0.0" + "normalize-url" "^4.1.0" + "responselike" "^1.0.2" + +"call-bind@^1.0.0", "call-bind@^1.0.2": + "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" + "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "function-bind" "^1.1.1" + "get-intrinsic" "^1.0.2" + +"call-me-maybe@^1.0.1": + "integrity" "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + "resolved" "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz" + "version" "1.0.1" + +"callsites@^3.0.0": + "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + "version" "3.1.0" + +"camel-case@^4.1.2": + "integrity" "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==" + "resolved" "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "pascal-case" "^3.1.2" + "tslib" "^2.0.3" + +"camelcase-keys@^6.0.0", "camelcase-keys@^6.2.2": + "integrity" "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==" + "resolved" "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz" + "version" "6.2.2" + dependencies: + "camelcase" "^5.3.1" + "map-obj" "^4.0.0" + "quick-lru" "^4.0.1" + +"camelcase@^4.1.0": + "integrity" "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz" + "version" "4.1.0" + +"camelcase@^5.0.0", "camelcase@^5.3.1": + "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + "version" "5.3.1" + +"camelcase@^6.2.0": + "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + "version" "6.3.0" + +"camelize@^1.0.0": + "integrity" "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" + "resolved" "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz" + "version" "1.0.0" + +"caniuse-lite@^1.0.30001332": + "integrity" "sha512-kbaCEBRRVSoeNs74sCuq92MJyGrMtjWVfhltoHUCW4t4pXFvGjUBrfo47weBRViHkiV3eBYyIsfl956NtHGazw==" + "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001334.tgz" + "version" "1.0.30001334" + +"caseless@^0.12.0", "caseless@~0.12.0": + "integrity" "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "resolved" "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + "version" "0.12.0" + +"chainsaw@~0.1.0": + "integrity" "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=" + "resolved" "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz" + "version" "0.1.0" + dependencies: + "traverse" ">=0.3.0 <0.4" + +"chalk@^1.1.3": + "integrity" "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "ansi-styles" "^2.2.1" + "escape-string-regexp" "^1.0.2" + "has-ansi" "^2.0.0" + "strip-ansi" "^3.0.0" + "supports-color" "^2.0.0" + +"chalk@^2.0.0": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"chalk@^2.1.0", "chalk@^2.4.2": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"chalk@^2.3.2": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"chalk@^2.4.1": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"chalk@^3.0.0": + "integrity" "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chalk@^4.0.0", "chalk@^4.1.0", "chalk@^4.1.1": + "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chalk@~3.0.0": + "integrity" "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chalk@3.0.0": + "integrity" "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chance@^1.0.18": + "integrity" "sha512-v7fi5Hj2VbR6dJEGRWLmJBA83LJMS47pkAbmROFxHWd9qmE1esHRZW8Clf1Fhzr3rjxnNZVCjOEv/ivFxeIMtg==" + "resolved" "https://registry.npmjs.org/chance/-/chance-1.1.8.tgz" + "version" "1.1.8" + +"char-regex@^1.0.2": + "integrity" "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" + "resolved" "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + "version" "1.0.2" + +"chardet@^0.7.0": + "integrity" "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + "resolved" "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" + "version" "0.7.0" + +"charenc@0.0.2": + "integrity" "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" + "resolved" "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" + "version" "0.0.2" + +"charm@~0.1.1": + "integrity" "sha1-BsIe7RobBq62dVPNxT4jJ0usIpY=" + "resolved" "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz" + "version" "0.1.2" + +"cheerio-select@^1.5.0": + "integrity" "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==" + "resolved" "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz" + "version" "1.6.0" + dependencies: + "css-select" "^4.3.0" + "css-what" "^6.0.1" + "domelementtype" "^2.2.0" + "domhandler" "^4.3.1" + "domutils" "^2.8.0" + +"cheerio@^1.0.0-rc.3": + "integrity" "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==" + "resolved" "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz" + "version" "1.0.0-rc.10" + dependencies: + "cheerio-select" "^1.5.0" + "dom-serializer" "^1.3.2" + "domhandler" "^4.2.0" + "htmlparser2" "^6.1.0" + "parse5" "^6.0.1" + "parse5-htmlparser2-tree-adapter" "^6.0.1" + "tslib" "^2.2.0" + +"chokidar@*": + "integrity" "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==" + "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz" + "version" "3.5.1" + dependencies: + "anymatch" "~3.1.1" + "braces" "~3.0.2" + "glob-parent" "~5.1.0" + "is-binary-path" "~2.1.0" + "is-glob" "~4.0.1" + "normalize-path" "~3.0.0" + "readdirp" "~3.5.0" optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.4.1, chokidar@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== - dependencies: - anymatch "~3.1.2" - braces "~3.0.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" + "fsevents" "~2.3.1" + +"chokidar@^2.1.8": + "integrity" "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==" + "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz" + "version" "2.1.8" + dependencies: + "anymatch" "^2.0.0" + "async-each" "^1.0.1" + "braces" "^2.3.2" + "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" optionalDependencies: - fsevents "~2.3.2" - -chokidar@^3.5.2: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.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" + "fsevents" "^1.2.7" + +"chokidar@^3.4.1", "chokidar@^3.5.1", "chokidar@^3.5.2", "chokidar@^3.5.3": + "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" + "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + "version" "3.5.3" + dependencies: + "anymatch" "~3.1.2" + "braces" "~3.0.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" optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.1, chownr@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" - integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -cjs-module-lexer@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" - integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -classnames@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" - integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== - -clean-css@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -clsx@^1.1.0, clsx@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" - integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== - -cmd-shim@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-4.1.0.tgz#b3a904a6743e9fede4148c6f3800bf2a08135bdd" - integrity sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw== - dependencies: - mkdirp-infer-owner "^2.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" - integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== - -colorette@^2.0.10: - version "2.0.12" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.12.tgz#7938ab254e7bb1bba29b0fd1b4cc168889ca4d74" - integrity sha512-lHID0PU+NtFzeNCwTL6JzUKdb6kDpyEjrwTD1H0cDZswTbsjLh2wTV2Eo2sNZLc0oSg0a5W1AI4Nj7bX4iIdjA== - -columnify@^1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" - integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= - dependencies: - strip-ansi "^3.0.0" - wcwidth "^1.0.0" - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-line-application@^0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/command-line-application/-/command-line-application-0.10.1.tgz#9ee0db7e41fe69f532eef0747e9ae958c0d348ae" - integrity sha512-PWZ4nRkz09MbBRocqEe/Fil3RjTaMNqw0didl1n/i3flDcw/vecVfvsw3r+ZHhGs4BOuW7sk3cEYSdfM3Wv5/Q== + "fsevents" "~2.3.2" + +"chownr@^1.1.1": + "integrity" "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "resolved" "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + "version" "1.1.4" + +"chownr@^1.1.4": + "integrity" "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "resolved" "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + "version" "1.1.4" + +"chownr@^2.0.0": + "integrity" "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + "resolved" "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" + "version" "2.0.0" + +"chrome-trace-event@^1.0.2": + "integrity" "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + "resolved" "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" + "version" "1.0.3" + +"ci-info@^2.0.0": + "integrity" "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + "version" "2.0.0" + +"ci-info@^3.2.0": + "integrity" "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==" + "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz" + "version" "3.3.0" + +"cipher-base@^1.0.0", "cipher-base@^1.0.1", "cipher-base@^1.0.3": + "integrity" "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==" + "resolved" "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "inherits" "^2.0.1" + "safe-buffer" "^5.0.1" + +"cjs-module-lexer@^1.0.0": + "integrity" "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==" + "resolved" "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz" + "version" "1.2.2" + +"class-transformer@^0.3.1": + "integrity" "sha512-cKFwohpJbuMovS8xVLmn8N2AUbAuc8pVo4zEfsUVo8qgECOogns1WVk/FkOZoxhOPTyTYFckuoH+13FO+MQ8GA==" + "resolved" "https://registry.npmjs.org/class-transformer/-/class-transformer-0.3.1.tgz" + "version" "0.3.1" + +"class-utils@^0.3.5": + "integrity" "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==" + "resolved" "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" + "version" "0.3.6" + dependencies: + "arr-union" "^3.1.0" + "define-property" "^0.2.5" + "isobject" "^3.0.0" + "static-extend" "^0.1.1" + +"classnames@^2.3.1", "classnames@2.3.1": + "integrity" "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz" + "version" "2.3.1" + +"clean-css@^5.2.2": + "integrity" "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==" + "resolved" "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz" + "version" "5.3.0" + dependencies: + "source-map" "~0.6.0" + +"clean-stack@^2.0.0": + "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + "version" "2.2.0" + +"cli-boxes@^2.2.1": + "integrity" "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + "resolved" "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" + "version" "2.2.1" + +"cli-color@^2.0.1": + "integrity" "sha512-g4JYjrTW9MGtCziFNjkqp3IMpGhnJyeB0lOtRPjQkYhXzKYr6tYnXKyEVnMzITxhpbahsEW9KsxOYIDKwcsIBw==" + "resolved" "https://registry.npmjs.org/cli-color/-/cli-color-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "d" "^1.0.1" + "es5-ext" "^0.10.59" + "es6-iterator" "^2.0.3" + "memoizee" "^0.4.15" + "timers-ext" "^0.1.7" + +"cli-cursor@^2.1.0": + "integrity" "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=" + "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "restore-cursor" "^2.0.0" + +"cli-cursor@^3.1.0": + "integrity" "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==" + "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "restore-cursor" "^3.1.0" + +"cli-spinners@^2.5.0": + "integrity" "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" + "resolved" "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz" + "version" "2.6.1" + +"cli-tableau@^2.0.0": + "integrity" "sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ==" + "resolved" "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "chalk" "3.0.0" + +"cli-truncate@^2.1.0": + "integrity" "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==" + "resolved" "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "slice-ansi" "^3.0.0" + "string-width" "^4.2.0" + +"cli-truncate@^3.1.0": + "integrity" "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==" + "resolved" "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "slice-ansi" "^5.0.0" + "string-width" "^5.0.0" + +"cli-width@^2.0.0": + "integrity" "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" + "resolved" "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz" + "version" "2.2.1" + +"cli-width@^3.0.0": + "integrity" "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" + "resolved" "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" + "version" "3.0.0" + +"cliui@^5.0.0": + "integrity" "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==" + "resolved" "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "string-width" "^3.1.0" + "strip-ansi" "^5.2.0" + "wrap-ansi" "^5.1.0" + +"cliui@^6.0.0": + "integrity" "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==" + "resolved" "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "string-width" "^4.2.0" + "strip-ansi" "^6.0.0" + "wrap-ansi" "^6.2.0" + +"cliui@^7.0.2": + "integrity" "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==" + "resolved" "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + "version" "7.0.4" + dependencies: + "string-width" "^4.2.0" + "strip-ansi" "^6.0.0" + "wrap-ansi" "^7.0.0" + +"clone-deep@^0.2.4": + "integrity" "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=" + "resolved" "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz" + "version" "0.2.4" + dependencies: + "for-own" "^0.1.3" + "is-plain-object" "^2.0.1" + "kind-of" "^3.0.2" + "lazy-cache" "^1.0.3" + "shallow-clone" "^0.1.2" + +"clone-deep@^4.0.1": + "integrity" "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==" + "resolved" "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "is-plain-object" "^2.0.4" + "kind-of" "^6.0.2" + "shallow-clone" "^3.0.0" + +"clone-response@^1.0.2": + "integrity" "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=" + "resolved" "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "mimic-response" "^1.0.0" + +"clone@^1.0.2": + "integrity" "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + "resolved" "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + "version" "1.0.4" + +"clsx@^1.0.4", "clsx@^1.1.0", "clsx@^1.1.1": + "integrity" "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" + "resolved" "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz" + "version" "1.1.1" + +"cluster-key-slot@1.1.0": + "integrity" "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==" + "resolved" "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz" + "version" "1.1.0" + +"cmd-shim@^4.1.0": + "integrity" "sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==" + "resolved" "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "mkdirp-infer-owner" "^2.0.0" + +"co-body@^5.1.1": + "integrity" "sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ==" + "resolved" "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "inflation" "^2.0.0" + "qs" "^6.4.0" + "raw-body" "^2.2.0" + "type-is" "^1.6.14" + +"co@^4.6.0": + "integrity" "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + "version" "4.6.0" + +"code-point-at@^1.0.0": + "integrity" "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "resolved" "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" + "version" "1.1.0" + +"collect-v8-coverage@^1.0.0": + "integrity" "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==" + "resolved" "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" + "version" "1.0.1" + +"collection-visit@^1.0.0": + "integrity" "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=" + "resolved" "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "map-visit" "^1.0.0" + "object-visit" "^1.0.0" + +"color-convert@^1.9.0": + "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + "version" "1.9.3" + dependencies: + "color-name" "1.1.3" + +"color-convert@^2.0.1": + "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "color-name" "~1.1.4" + +"color-name@~1.1.4": + "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + "version" "1.1.4" + +"color-name@1.1.3": + "integrity" "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + "version" "1.1.3" + +"color-support@^1.1.2": + "integrity" "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + "resolved" "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" + "version" "1.1.3" + +"colorette@^1.2.0": + "integrity" "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==" + "resolved" "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz" + "version" "1.2.2" + +"colorette@^2.0.10", "colorette@^2.0.14", "colorette@^2.0.16": + "integrity" "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" + "resolved" "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz" + "version" "2.0.16" + +"columnify@^1.5.4": + "integrity" "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==" + "resolved" "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz" + "version" "1.6.0" + dependencies: + "strip-ansi" "^6.0.1" + "wcwidth" "^1.0.0" + +"combined-stream@^1.0.6", "combined-stream@^1.0.8", "combined-stream@~1.0.6": + "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" + "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + "version" "1.0.8" + dependencies: + "delayed-stream" "~1.0.0" + +"command-line-application@^0.10.1": + "integrity" "sha512-PWZ4nRkz09MbBRocqEe/Fil3RjTaMNqw0didl1n/i3flDcw/vecVfvsw3r+ZHhGs4BOuW7sk3cEYSdfM3Wv5/Q==" + "resolved" "https://registry.npmjs.org/command-line-application/-/command-line-application-0.10.1.tgz" + "version" "0.10.1" dependencies: "@types/command-line-args" "^5.0.0" "@types/command-line-usage" "^5.0.1" - chalk "^2.4.1" - command-line-args "^5.1.1" - command-line-usage "^6.0.0" - meant "^1.0.1" - remove-markdown "^0.3.0" - tslib "1.10.0" - -command-line-args@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.0.tgz#087b02748272169741f1fd7c785b295df079b9be" - integrity sha512-4zqtU1hYsSJzcJBOcNZIbW5Fbk9BkjCp1pZVhQKoRaWL5J7N4XphDLwo8aWwdQpTugxwu+jf9u2ZhkXiqp5Z6A== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-usage@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.1.tgz#c908e28686108917758a49f45efb4f02f76bc03f" - integrity sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA== - dependencies: - array-back "^4.0.1" - chalk "^2.4.2" - table-layout "^1.0.1" - typical "^5.2.0" - -commander@^2.19.0, commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -commander@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" - integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== - -commander@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -compare-func@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" - integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== - dependencies: - array-ify "^1.0.0" - dot-prop "^5.1.0" - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression-webpack-plugin@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-9.0.0.tgz#38b4e18313f5d704c453ab5645e38a5805ba5889" - integrity sha512-V2KmQqaUkErPT+ZcUGHa8zWpIw1oTYaC7wjGewJm053GWAoY04GfU5B/NZ/JSz1eFp9MggMdLQpEHe1TJAQY1A== - dependencies: - schema-utils "^3.1.0" - serialize-javascript "^6.0.0" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -concat-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" - integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.0.2" - typedarray "^0.0.6" - -config-chain@^1.1.12: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== - dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" - -confusing-browser-globals@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" - integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -conventional-changelog-angular@^5.0.12: - version "5.0.13" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" - integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== - dependencies: - compare-func "^2.0.0" - q "^1.5.1" - -conventional-changelog-core@^4.2.2: - version "4.2.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" - integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== - dependencies: - add-stream "^1.0.0" - conventional-changelog-writer "^5.0.0" - conventional-commits-parser "^3.2.0" - dateformat "^3.0.0" - get-pkg-repo "^4.0.0" - git-raw-commits "^2.0.8" - git-remote-origin-url "^2.0.0" - git-semver-tags "^4.1.1" - lodash "^4.17.15" - normalize-package-data "^3.0.0" - q "^1.5.1" - read-pkg "^3.0.0" - read-pkg-up "^3.0.0" - through2 "^4.0.0" - -conventional-changelog-preset-loader@^2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" - integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== - -conventional-changelog-writer@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.0.tgz#c4042f3f1542f2f41d7d2e0d6cad23aba8df8eec" - integrity sha512-HnDh9QHLNWfL6E1uHz6krZEQOgm8hN7z/m7tT16xwd802fwgMN0Wqd7AQYVkhpsjDUx/99oo+nGgvKF657XP5g== - dependencies: - conventional-commits-filter "^2.0.7" - dateformat "^3.0.0" - handlebars "^4.7.6" - json-stringify-safe "^5.0.1" - lodash "^4.17.15" - meow "^8.0.0" - semver "^6.0.0" - split "^1.0.0" - through2 "^4.0.0" - -conventional-commits-filter@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" - integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== - dependencies: - lodash.ismatch "^4.4.0" - modify-values "^1.0.0" - -conventional-commits-parser@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.2.tgz#190fb9900c6e02be0c0bca9b03d57e24982639fd" - integrity sha512-Jr9KAKgqAkwXMRHjxDwO/zOCDKod1XdAESHAGuJX38iZ7ZzVti/tvVoysO0suMsdAObp9NQ2rHSsSbnAqZ5f5g== - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" - -conventional-recommended-bump@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" - integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== - dependencies: - concat-stream "^2.0.0" - conventional-changelog-preset-loader "^2.3.4" - conventional-commits-filter "^2.0.7" - conventional-commits-parser "^3.2.0" - git-raw-commits "^2.0.8" - git-semver-tags "^4.1.1" - meow "^8.0.0" - q "^1.5.1" - -convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -cookie@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -copy-webpack-plugin@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz#b71d21991599f61a4ee00ba79087b8ba279bbb59" - integrity sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw== - dependencies: - fast-glob "^3.2.5" - glob-parent "^6.0.0" - globby "^11.0.3" - normalize-path "^3.0.0" - p-limit "^3.1.0" - schema-utils "^3.0.0" - serialize-javascript "^6.0.0" - -copyfiles@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.1.tgz#d2dcff60aaad1015f09d0b66e7f0f1c5cd3c5da5" - integrity sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg== - dependencies: - glob "^7.0.5" - minimatch "^3.0.3" - mkdirp "^1.0.4" - noms "0.0.0" - through2 "^2.0.1" - untildify "^4.0.0" - yargs "^16.1.0" - -core-js-compat@^3.16.0, core-js-compat@^3.16.2: - version "3.18.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.18.1.tgz#01942a0877caf9c6e5007c027183cf0bdae6a191" - integrity sha512-XJMYx58zo4W0kLPmIingVZA10+7TuKrMLPt83+EzDmxFJQUMcTVVmQ+n5JP4r6Z14qSzhQBRi3NSWoeVyKKXUg== - dependencies: - browserslist "^4.17.1" - semver "7.0.0" - -core-js-pure@^3.16.0: - version "3.18.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.18.1.tgz#097d34d24484be45cea700a448d1e74622646c80" - integrity sha512-kmW/k8MaSuqpvA1xm2l3TVlBuvW+XBkcaOroFUpO3D4lsTGQWBTb/tBDCf/PNkkPLrwgrkQRIYNPB0CeqGJWGQ== - -core-js@^2.4.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" - integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + "chalk" "^2.4.1" + "command-line-args" "^5.1.1" + "command-line-usage" "^6.0.0" + "meant" "^1.0.1" + "remove-markdown" "^0.3.0" + "tslib" "1.10.0" + +"command-line-args@^5.1.1": + "integrity" "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==" + "resolved" "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz" + "version" "5.2.1" + dependencies: + "array-back" "^3.1.0" + "find-replace" "^3.0.0" + "lodash.camelcase" "^4.3.0" + "typical" "^4.0.0" + +"command-line-usage@^6.0.0": + "integrity" "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==" + "resolved" "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz" + "version" "6.1.3" + dependencies: + "array-back" "^4.0.2" + "chalk" "^2.4.2" + "table-layout" "^1.0.2" + "typical" "^5.2.0" + +"commander@^2.19.0": + "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + "version" "2.20.3" + +"commander@^2.20.0": + "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + "version" "2.20.3" + +"commander@^2.20.3": + "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + "version" "2.20.3" + +"commander@^7.0.0": + "integrity" "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + "version" "7.2.0" + +"commander@^7.2.0": + "integrity" "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + "version" "7.2.0" + +"commander@^8.3.0": + "integrity" "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + "resolved" "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + "version" "8.3.0" + +"commander@2.15.1": + "integrity" "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + "resolved" "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz" + "version" "2.15.1" + +"common-tags@^1.4.0", "common-tags@^1.8.0": + "integrity" "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" + "resolved" "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" + "version" "1.8.2" + +"commondir@^1.0.1": + "integrity" "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + "resolved" "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + "version" "1.0.1" + +"compare-func@^2.0.0": + "integrity" "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==" + "resolved" "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "array-ify" "^1.0.0" + "dot-prop" "^5.1.0" + +"component-emitter@^1.2.1", "component-emitter@^1.3.0", "component-emitter@~1.3.0": + "integrity" "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + "resolved" "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" + "version" "1.3.0" + +"compressible@~2.0.16": + "integrity" "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==" + "resolved" "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + "version" "2.0.18" + dependencies: + "mime-db" ">= 1.43.0 < 2" + +"compression-webpack-plugin@^9.0.0": + "integrity" "sha512-R/Oi+2+UHotGfu72fJiRoVpuRifZT0tTC6UqFD/DUo+mv8dbOow9rVOuTvDv5nPPm3GZhHL/fKkwxwIHnJ8Nyw==" + "resolved" "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-9.2.0.tgz" + "version" "9.2.0" + dependencies: + "schema-utils" "^4.0.0" + "serialize-javascript" "^6.0.0" + +"compression@^1.7.4": + "integrity" "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==" + "resolved" "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + "version" "1.7.4" + dependencies: + "accepts" "~1.3.5" + "bytes" "3.0.0" + "compressible" "~2.0.16" + "debug" "2.6.9" + "on-headers" "~1.0.2" + "safe-buffer" "5.1.2" + "vary" "~1.1.2" + +"compromise@^14.0.0": + "integrity" "sha512-GGoe+dUqnTfVvvY+UMI6cfdT/kAbX+HNcJlNYSY5tO/dxVUlJFdWYTiIDbxVu5AFOdP6NhQ1xo21xubgwllo4g==" + "resolved" "https://registry.npmjs.org/compromise/-/compromise-14.1.2.tgz" + "version" "14.1.2" + dependencies: + "efrt" "2.6.0" + "grad-school" "0.0.4" + "suffix-thumb" "4.0.2" + +"concat-map@0.0.1": + "integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "version" "0.0.1" + +"concat-stream@^1.5.0", "concat-stream@^1.6.2": + "integrity" "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==" + "resolved" "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" + "version" "1.6.2" + dependencies: + "buffer-from" "^1.0.0" + "inherits" "^2.0.3" + "readable-stream" "^2.2.2" + "typedarray" "^0.0.6" + +"concat-stream@^2.0.0": + "integrity" "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==" + "resolved" "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "buffer-from" "^1.0.0" + "inherits" "^2.0.3" + "readable-stream" "^3.0.2" + "typedarray" "^0.0.6" + +"concurrently@^7.1.0": + "integrity" "sha512-Bz0tMlYKZRUDqJlNiF/OImojMB9ruKUz6GCfmhFnSapXgPe+3xzY4byqoKG9tUZ7L2PGEUjfLPOLfIX3labnmw==" + "resolved" "https://registry.npmjs.org/concurrently/-/concurrently-7.1.0.tgz" + "version" "7.1.0" + dependencies: + "chalk" "^4.1.0" + "date-fns" "^2.16.1" + "lodash" "^4.17.21" + "rxjs" "^6.6.3" + "spawn-command" "^0.0.2-1" + "supports-color" "^8.1.0" + "tree-kill" "^1.2.2" + "yargs" "^16.2.0" + +"config-chain@^1.1.12", "config-chain@^1.1.13": + "integrity" "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==" + "resolved" "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz" + "version" "1.1.13" + dependencies: + "ini" "^1.3.4" + "proto-list" "~1.2.1" + +"configstore@^5.0.1": + "integrity" "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==" + "resolved" "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "dot-prop" "^5.2.0" + "graceful-fs" "^4.1.2" + "make-dir" "^3.0.0" + "unique-string" "^2.0.0" + "write-file-atomic" "^3.0.0" + "xdg-basedir" "^4.0.0" + +"confusing-browser-globals@^1.0.10": + "integrity" "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" + "resolved" "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" + "version" "1.0.11" + +"connect-history-api-fallback@^1.6.0": + "integrity" "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" + "resolved" "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz" + "version" "1.6.0" + +"console-browserify@^1.1.0": + "integrity" "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + "resolved" "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" + "version" "1.2.0" + +"console-control-strings@^1.0.0", "console-control-strings@^1.1.0", "console-control-strings@~1.1.0": + "integrity" "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + "resolved" "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + "version" "1.1.0" + +"constants-browserify@^1.0.0": + "integrity" "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + "resolved" "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" + "version" "1.0.0" + +"content-disposition@~0.5.2", "content-disposition@0.5.4": + "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" + "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + "version" "0.5.4" + dependencies: + "safe-buffer" "5.2.1" + +"content-type@^1.0.4", "content-type@~1.0.4": + "integrity" "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" + "version" "1.0.4" + +"continuation-local-storage@^3.2.1": + "integrity" "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==" + "resolved" "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "async-listener" "^0.6.0" + "emitter-listener" "^1.1.1" + +"conventional-changelog-angular@^5.0.12": + "integrity" "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==" + "resolved" "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz" + "version" "5.0.13" + dependencies: + "compare-func" "^2.0.0" + "q" "^1.5.1" + +"conventional-changelog-core@^4.2.2": + "integrity" "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==" + "resolved" "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz" + "version" "4.2.4" + dependencies: + "add-stream" "^1.0.0" + "conventional-changelog-writer" "^5.0.0" + "conventional-commits-parser" "^3.2.0" + "dateformat" "^3.0.0" + "get-pkg-repo" "^4.0.0" + "git-raw-commits" "^2.0.8" + "git-remote-origin-url" "^2.0.0" + "git-semver-tags" "^4.1.1" + "lodash" "^4.17.15" + "normalize-package-data" "^3.0.0" + "q" "^1.5.1" + "read-pkg" "^3.0.0" + "read-pkg-up" "^3.0.0" + "through2" "^4.0.0" + +"conventional-changelog-preset-loader@^2.3.4": + "integrity" "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==" + "resolved" "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz" + "version" "2.3.4" + +"conventional-changelog-writer@^5.0.0": + "integrity" "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==" + "resolved" "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "conventional-commits-filter" "^2.0.7" + "dateformat" "^3.0.0" + "handlebars" "^4.7.7" + "json-stringify-safe" "^5.0.1" + "lodash" "^4.17.15" + "meow" "^8.0.0" + "semver" "^6.0.0" + "split" "^1.0.0" + "through2" "^4.0.0" + +"conventional-commits-filter@^2.0.7": + "integrity" "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==" + "resolved" "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz" + "version" "2.0.7" + dependencies: + "lodash.ismatch" "^4.4.0" + "modify-values" "^1.0.0" + +"conventional-commits-parser@^3.2.0": + "integrity" "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==" + "resolved" "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz" + "version" "3.2.4" + dependencies: + "is-text-path" "^1.0.1" + "JSONStream" "^1.0.4" + "lodash" "^4.17.15" + "meow" "^8.0.0" + "split2" "^3.0.0" + "through2" "^4.0.0" + +"conventional-recommended-bump@^6.1.0": + "integrity" "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==" + "resolved" "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "concat-stream" "^2.0.0" + "conventional-changelog-preset-loader" "^2.3.4" + "conventional-commits-filter" "^2.0.7" + "conventional-commits-parser" "^3.2.0" + "git-raw-commits" "^2.0.8" + "git-semver-tags" "^4.1.1" + "meow" "^8.0.0" + "q" "^1.5.1" + +"convert-source-map@^1.4.0", "convert-source-map@^1.5.0", "convert-source-map@^1.6.0", "convert-source-map@^1.7.0": + "integrity" "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==" + "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" + "version" "1.8.0" + dependencies: + "safe-buffer" "~5.1.1" + +"cookie-signature@1.0.6": + "integrity" "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "version" "1.0.6" + +"cookie@~0.4.1": + "integrity" "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" + "version" "0.4.2" + +"cookie@0.5.0": + "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + "version" "0.5.0" + +"cookiejar@^2.1.2": + "integrity" "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" + "resolved" "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz" + "version" "2.1.3" + +"cookies@~0.8.0": + "integrity" "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==" + "resolved" "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz" + "version" "0.8.0" + dependencies: + "depd" "~2.0.0" + "keygrip" "~1.1.0" + +"copy-concurrently@^1.0.0": + "integrity" "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==" + "resolved" "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "aproba" "^1.1.1" + "fs-write-stream-atomic" "^1.0.8" + "iferr" "^0.1.5" + "mkdirp" "^0.5.1" + "rimraf" "^2.5.4" + "run-queue" "^1.0.0" + +"copy-descriptor@^0.1.0": + "integrity" "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + "resolved" "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" + "version" "0.1.1" + +"copy-webpack-plugin@^9.0.1": + "integrity" "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==" + "resolved" "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz" + "version" "9.1.0" + dependencies: + "fast-glob" "^3.2.7" + "glob-parent" "^6.0.1" + "globby" "^11.0.3" + "normalize-path" "^3.0.0" + "schema-utils" "^3.1.1" + "serialize-javascript" "^6.0.0" + +"copyfiles@^2.4.1", "copyfiles@2.4.1": + "integrity" "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==" + "resolved" "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz" + "version" "2.4.1" + dependencies: + "glob" "^7.0.5" + "minimatch" "^3.0.3" + "mkdirp" "^1.0.4" + "noms" "0.0.0" + "through2" "^2.0.1" + "untildify" "^4.0.0" + "yargs" "^16.1.0" + +"core-js-compat@^3.20.2", "core-js-compat@^3.21.0": + "integrity" "sha512-wliMbvPI2idgFWpFe7UEyHMvu6HWgW8WA+HnDRtgzoSDYvXFMpoGX1H3tPDDXrcfUSyXafCLDd7hOeMQHEZxGw==" + "resolved" "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.3.tgz" + "version" "3.22.3" + dependencies: + "browserslist" "^4.20.3" + "semver" "7.0.0" + +"core-js-pure@^3.20.2": + "integrity" "sha512-oN88zz7nmKROMy8GOjs+LN+0LedIvbMdnB5XsTlhcOg1WGARt9l0LFg0zohdoFmCsEZ1h2ZbSQ6azj3M+vhzwQ==" + "resolved" "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.3.tgz" + "version" "3.22.3" + +"core-js@^2.4.0": + "integrity" "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + "resolved" "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" + "version" "2.6.12" + +"core-js@^3.1.4": + "integrity" "sha512-1t+2a/d2lppW1gkLXx3pKPVGbBdxXAkqztvWb1EJ8oF8O2gIGiytzflNiFEehYwVK/t2ryUsGBoOFFvNx95mbg==" + "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.22.3.tgz" + "version" "3.22.3" + +"core-js@3.18.3": + "integrity" "sha512-tReEhtMReZaPFVw7dajMx0vlsz3oOb8ajgPoHVYGxr8ErnZ6PcYEvvmjGmXlfpnxpkYSdOQttjB+MvVbCGfvLw==" + "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.18.3.tgz" + "version" "3.18.3" + +"core-util-is@~1.0.0", "core-util-is@1.0.2": + "integrity" "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "version" "1.0.2" + +"cors-anywhere@^0.4.4": + "integrity" "sha512-8OBFwnzMgR4mNrAeAyOLB2EruS2z7u02of2bOu7i9kKYlZG+niS7CTHLPgEXKWW2NAOJWRry9RRCaL9lJRjNqg==" + "resolved" "https://registry.npmjs.org/cors-anywhere/-/cors-anywhere-0.4.4.tgz" + "version" "0.4.4" + dependencies: + "http-proxy" "1.11.1" + "proxy-from-env" "0.0.1" + +"cors@~2.8.5": + "integrity" "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==" + "resolved" "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" + "version" "2.8.5" + dependencies: + "object-assign" "^4" + "vary" "^1" + +"cosmiconfig@^6.0.0": + "integrity" "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" + "version" "6.0.0" dependencies: "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" + "import-fresh" "^3.1.0" + "parse-json" "^5.0.0" + "path-type" "^4.0.0" + "yaml" "^1.7.2" -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== +"cosmiconfig@^7.0.0", "cosmiconfig@7.0.0": + "integrity" "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz" + "version" "7.0.0" dependencies: "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" + "import-fresh" "^3.2.1" + "parse-json" "^5.0.0" + "path-type" "^4.0.0" + "yaml" "^1.10.0" -cosmiconfig@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -craco@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/craco/-/craco-0.0.3.tgz#1e464b0ae5d9176570382d3a3fcdbf3599577012" - integrity sha512-eeibbwJm1CTf/j3xvNgNmsRS7abegp4Cfm5qtn5nE9/0JjZRas+FHj8IlT8FMFWR0XOyZFGcWZgzaTU19DNGoQ== +"craco@^0.0.3": + "integrity" "sha512-eeibbwJm1CTf/j3xvNgNmsRS7abegp4Cfm5qtn5nE9/0JjZRas+FHj8IlT8FMFWR0XOyZFGcWZgzaTU19DNGoQ==" + "resolved" "https://registry.npmjs.org/craco/-/craco-0.0.3.tgz" + "version" "0.0.3" dependencies: "@babel/core" "^7.6.0" "@craco/craco" "^5.5.0" "@types/babel__core" "^7.1.3" "@types/webpack" "^4.39.2" - webpack "^4.41.0" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@^3.11.0, crypto-browserify@^3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -css-loader@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.3.0.tgz#334d3500ff0a0c14cfbd4b0670088dbb5b5c1530" - integrity sha512-9NGvHOR+L6ps13Ilw/b216++Q8q+5RpJcVufCdW9S/9iCzs4KBDNa8qnA/n3FK/sSfWmH35PAIK/cfPi7LOSUg== - dependencies: - icss-utils "^5.1.0" - postcss "^8.2.15" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.1.0" - semver "^7.3.5" - -css-modules-typescript-loader@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-modules-typescript-loader/-/css-modules-typescript-loader-4.0.1.tgz#0b818cf647fefd8f9fb3d4469374e69ab1e72742" - integrity sha512-vXrUAwPGcRaopnGdg7I5oqv/NSSKQRN5L80m3f49uSGinenU5DTNsMFHS+2roh5tXqpY5+yAAKAl7A2HDvumzg== - dependencies: - line-diff "^2.0.1" - loader-utils "^1.2.3" - -css-select@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" - integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== - dependencies: - boolbase "^1.0.0" - css-what "^5.0.0" - domhandler "^4.2.0" - domutils "^2.6.0" - nth-check "^2.0.0" - -css-vendor@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.8.tgz#e47f91d3bd3117d49180a3c935e62e3d9f7f449d" - integrity sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ== + "webpack" "^4.41.0" + +"create-ecdh@^4.0.0": + "integrity" "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==" + "resolved" "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" + "version" "4.0.4" + dependencies: + "bn.js" "^4.1.0" + "elliptic" "^6.5.3" + +"create-hash@^1.1.0", "create-hash@^1.1.2", "create-hash@^1.2.0": + "integrity" "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==" + "resolved" "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "cipher-base" "^1.0.1" + "inherits" "^2.0.1" + "md5.js" "^1.3.4" + "ripemd160" "^2.0.1" + "sha.js" "^2.4.0" + +"create-hmac@^1.1.0", "create-hmac@^1.1.4", "create-hmac@^1.1.7": + "integrity" "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==" + "resolved" "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" + "version" "1.1.7" + dependencies: + "cipher-base" "^1.0.3" + "create-hash" "^1.1.0" + "inherits" "^2.0.1" + "ripemd160" "^2.0.0" + "safe-buffer" "^5.0.1" + "sha.js" "^2.4.8" + +"create-require@^1.1.0": + "integrity" "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + "resolved" "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + "version" "1.1.1" + +"croner@~4.1.92": + "integrity" "sha512-/f6gpQuxDaqXu+1kwQYSckUglPaOrHdbIlBAu0YuW8/Cdb45XwXYNUBXg3r/9Mo6n540Kn/smKcZWko5x99KrQ==" + "resolved" "https://registry.npmjs.org/croner/-/croner-4.1.97.tgz" + "version" "4.1.97" + +"cross-env@^7.0.3": + "integrity" "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==" + "resolved" "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" + "version" "7.0.3" + dependencies: + "cross-spawn" "^7.0.1" + +"cross-spawn@^6.0.5": + "integrity" "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==" + "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" + "version" "6.0.5" + dependencies: + "nice-try" "^1.0.4" + "path-key" "^2.0.1" + "semver" "^5.5.0" + "shebang-command" "^1.2.0" + "which" "^1.2.9" + +"cross-spawn@^7.0.0", "cross-spawn@^7.0.1", "cross-spawn@^7.0.2", "cross-spawn@^7.0.3": + "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" + "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + "version" "7.0.3" + dependencies: + "path-key" "^3.1.0" + "shebang-command" "^2.0.0" + "which" "^2.0.1" + +"crypt@0.0.2": + "integrity" "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" + "resolved" "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" + "version" "0.0.2" + +"crypto-browserify@^3.11.0", "crypto-browserify@^3.12.0": + "integrity" "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==" + "resolved" "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" + "version" "3.12.0" + dependencies: + "browserify-cipher" "^1.0.0" + "browserify-sign" "^4.0.0" + "create-ecdh" "^4.0.0" + "create-hash" "^1.1.0" + "create-hmac" "^1.1.0" + "diffie-hellman" "^5.0.0" + "inherits" "^2.0.1" + "pbkdf2" "^3.0.3" + "public-encrypt" "^4.0.0" + "randombytes" "^2.0.0" + "randomfill" "^1.0.3" + +"crypto-js@^4.0.0": + "integrity" "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + "resolved" "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz" + "version" "4.1.1" + +"crypto-random-string@^2.0.0": + "integrity" "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + "resolved" "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" + "version" "2.0.0" + +"css-color-keywords@^1.0.0": + "integrity" "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" + "resolved" "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz" + "version" "1.0.0" + +"css-in-js-utils@^2.0.0": + "integrity" "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==" + "resolved" "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "hyphenate-style-name" "^1.0.2" + "isobject" "^3.0.1" + +"css-loader@^6.3.0": + "integrity" "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==" + "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz" + "version" "6.7.1" + dependencies: + "icss-utils" "^5.1.0" + "postcss" "^8.4.7" + "postcss-modules-extract-imports" "^3.0.0" + "postcss-modules-local-by-default" "^4.0.0" + "postcss-modules-scope" "^3.0.0" + "postcss-modules-values" "^4.0.0" + "postcss-value-parser" "^4.2.0" + "semver" "^7.3.5" + +"css-modules-typescript-loader@^4.0.1": + "integrity" "sha512-vXrUAwPGcRaopnGdg7I5oqv/NSSKQRN5L80m3f49uSGinenU5DTNsMFHS+2roh5tXqpY5+yAAKAl7A2HDvumzg==" + "resolved" "https://registry.npmjs.org/css-modules-typescript-loader/-/css-modules-typescript-loader-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "line-diff" "^2.0.1" + "loader-utils" "^1.2.3" + +"css-select@^4.1.3", "css-select@^4.3.0": + "integrity" "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==" + "resolved" "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "boolbase" "^1.0.0" + "css-what" "^6.0.1" + "domhandler" "^4.3.1" + "domutils" "^2.8.0" + "nth-check" "^2.0.1" + +"css-to-react-native@^3.0.0": + "integrity" "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==" + "resolved" "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "camelize" "^1.0.0" + "css-color-keywords" "^1.0.0" + "postcss-value-parser" "^4.0.2" + +"css-vendor@^2.0.8": + "integrity" "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==" + "resolved" "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz" + "version" "2.0.8" dependencies: "@babel/runtime" "^7.8.3" - is-in-browser "^1.0.2" - -css-what@^5.0.0, css-what@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" - integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg== - -css.escape@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" - integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= - -css@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" - integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== - dependencies: - inherits "^2.0.4" - source-map "^0.6.1" - source-map-resolve "^0.6.0" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" - integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -csstype@^2.5.7: - version "2.6.18" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.18.tgz#980a8b53085f34af313410af064f2bd241784218" - integrity sha512-RSU6Hyeg14am3Ah4VZEmeX8H7kLwEEirXe6aU2IPfKNvhXwTflK5HQRDNI0ypQXoqmm+QPyG2IaPuQE5zMwSIQ== - -csstype@^3.0.11: - version "3.0.11" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" - integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== - -csstype@^3.0.2: - version "3.0.9" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.9.tgz#6410af31b26bd0520933d02cbc64fce9ce3fbf0b" - integrity sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw== - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -d3-path@1: - version "1.0.9" - resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" - integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== - -d3-shape@^1.3.5: - version "1.3.7" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" - integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== - dependencies: - d3-path "1" - -dargs@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" - integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -data-urls@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.1.tgz#597fc2ae30f8bc4dbcf731fcd1b1954353afc6f8" - integrity sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^3.0.0" - whatwg-url "^10.0.0" - -dateformat@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" - integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== - dependencies: - ms "2.1.2" - -debug@^3.1.1, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= - -decamelize-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decimal.js@^10.2.1, decimal.js@^10.3.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= - -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-equal@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.5.tgz#55cd2fe326d83f9cbf7261ef0e060b3f724c5cb9" - integrity sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw== - dependencies: - call-bind "^1.0.0" - es-get-iterator "^1.1.1" - get-intrinsic "^1.0.1" - is-arguments "^1.0.4" - is-date-object "^1.0.2" - is-regex "^1.1.1" - isarray "^2.0.5" - object-is "^1.1.4" - object-keys "^1.1.1" - object.assign "^4.1.2" - regexp.prototype.flags "^1.3.0" - side-channel "^1.0.3" - which-boxed-primitive "^1.0.1" - which-collection "^1.0.1" - which-typed-array "^1.1.2" - -deep-extend@^0.6.0, deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.0.0, deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -default-gateway@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== - dependencies: - execa "^5.0.0" - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" - integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ== - dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" - rimraf "^3.0.2" - slash "^3.0.0" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -depd@^1.1.2, depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -deprecation@^2.0.0, deprecation@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= - -detect-indent@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" - integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -dezalgo@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" - integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= - dependencies: - asap "^2.0.0" - wrappy "1" - -diff-match-patch@^1.0.4, diff-match-patch@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" - integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== - -diff-sequences@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" - integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== - -diff-sequences@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723" - integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -discontinuous-range@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" - integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" - integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -dom-accessibility-api@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.7.tgz#8c2aa6325968f2933160a0b7dbb380893ddf3e7d" - integrity sha512-ml3lJIq9YjUfM9TUnEPvEYWFSwivwIGBPKpewX7tii7fwCazA8yCioGdqQcNsItPpfFvSJ3VIdMQPj60LJhcQA== - -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" + "is-in-browser" "^1.0.2" + +"css-what@^6.0.1": + "integrity" "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + "resolved" "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" + "version" "6.1.0" + +"css.escape@^1.5.1": + "integrity" "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" + "resolved" "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" + "version" "1.5.1" + +"css@^3.0.0": + "integrity" "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==" + "resolved" "https://registry.npmjs.org/css/-/css-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "inherits" "^2.0.4" + "source-map" "^0.6.1" + "source-map-resolve" "^0.6.0" + +"cssesc@^3.0.0": + "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + "version" "3.0.0" + +"cssom@^0.4.4": + "integrity" "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz" + "version" "0.4.4" + +"cssom@^0.5.0": + "integrity" "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" + "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz" + "version" "0.5.0" + +"cssom@~0.3.6": + "integrity" "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" + "version" "0.3.8" + +"cssstyle@^2.3.0": + "integrity" "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==" + "resolved" "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "cssom" "~0.3.6" + +"csstype@^2.5.2": + "integrity" "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" + "resolved" "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz" + "version" "2.6.20" + +"csstype@^2.5.7": + "integrity" "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" + "resolved" "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz" + "version" "2.6.20" + +"csstype@^3.0.11", "csstype@^3.0.2": + "integrity" "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" + "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz" + "version" "3.0.11" + +"culvert@^0.1.2": + "integrity" "sha1-lQL18BVKLVoioCPnn3HMk2+m728=" + "resolved" "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz" + "version" "0.1.2" + +"cyclist@^1.0.1": + "integrity" "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + "resolved" "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz" + "version" "1.0.1" + +"d@^1.0.1", "d@1": + "integrity" "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==" + "resolved" "https://registry.npmjs.org/d/-/d-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "es5-ext" "^0.10.50" + "type" "^1.0.1" + +"d3-path@1": + "integrity" "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + "resolved" "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz" + "version" "1.0.9" + +"d3-shape@^1.3.5": + "integrity" "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==" + "resolved" "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz" + "version" "1.3.7" + dependencies: + "d3-path" "1" + +"dargs@^7.0.0": + "integrity" "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==" + "resolved" "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz" + "version" "7.0.0" + +"dashdash@^1.12.0": + "integrity" "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=" + "resolved" "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" + "version" "1.14.1" + dependencies: + "assert-plus" "^1.0.0" + +"data-uri-to-buffer@3": + "integrity" "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==" + "resolved" "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz" + "version" "3.0.1" + +"data-urls@^2.0.0": + "integrity" "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==" + "resolved" "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "abab" "^2.0.3" + "whatwg-mimetype" "^2.3.0" + "whatwg-url" "^8.0.0" + +"data-urls@^3.0.0": + "integrity" "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==" + "resolved" "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "abab" "^2.0.6" + "whatwg-mimetype" "^3.0.0" + "whatwg-url" "^11.0.0" + +"date-fns@^2.16.1": + "integrity" "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==" + "resolved" "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz" + "version" "2.28.0" + +"dateformat@^3.0.0": + "integrity" "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" + "resolved" "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz" + "version" "3.0.3" -dom-css@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/dom-css/-/dom-css-2.1.0.tgz#fdbc2d5a015d0a3e1872e11472bbd0e7b9e6a202" - integrity sha1-/bwtWgFdCj4YcuEUcrvQ57nmogI= +"dayjs@^1.8.29", "dayjs@~1.8.24", "dayjs@~1.8.25": + "integrity" "sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==" + "resolved" "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz" + "version" "1.8.36" + +"debug@^2.2.0": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" dependencies: - add-px-to-style "1.0.0" - prefix-style "2.0.1" - to-camel-case "1.0.0" + "ms" "2.0.0" -dom-helpers@^5.0.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" - integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== +"debug@^2.3.3": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" dependencies: - "@babel/runtime" "^7.8.7" - csstype "^3.0.2" + "ms" "2.0.0" -dom-serializer@^1.0.1, dom-serializer@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== +"debug@^2.6.8": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" + "ms" "2.0.0" + +"debug@^2.6.9": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" + dependencies: + "ms" "2.0.0" -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -domhandler@^4.0.0, domhandler@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" - integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== - dependencies: - domelementtype "^2.2.0" - -domutils@^2.5.2, domutils@^2.6.0, domutils@^2.7.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@^5.1.0, dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== - dependencies: - is-obj "^2.0.0" - -dotenv-defaults@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz#6b3ec2e4319aafb70940abda72d3856770ee77ac" - integrity sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg== - dependencies: - dotenv "^8.2.0" - -dotenv-webpack@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-7.0.3.tgz#f50ec3c7083a69ec6076e110566720003b7b107b" - integrity sha512-O0O9pOEwrk+n1zzR3T2uuXRlw64QxHSPeNN1GaiNBloQFNaCUL9V8jxSVz4jlXXFP/CIqK8YecWf8BAvsSgMjw== - dependencies: - dotenv-defaults "^2.0.2" - -dotenv@^8.0.0, dotenv@^8.2.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" - integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - -duplexer@^0.1.1, duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -electron-to-chromium@^1.3.846: - version "1.3.850" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.850.tgz#c56c72abfeab051b4b328beb894461c5912d0456" - integrity sha512-ZzkDcdzePeF4dhoGZQT77V2CyJOpwfTZEOg4h0x6R/jQhGt/rIRpbRyVreWLtD7B/WsVxo91URm2WxMKR9JQZA== - -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -encoding@^0.1.12: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -endent@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/endent/-/endent-2.1.0.tgz#5aaba698fb569e5e18e69e1ff7a28ff35373cd88" - integrity sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w== - dependencies: - dedent "^0.7.0" - fast-json-parse "^1.0.3" - objectorarray "^1.0.5" - -enhanced-resolve@^4.0.0, enhanced-resolve@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -enhanced-resolve@^5.0.0, enhanced-resolve@^5.8.3: - version "5.8.3" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" - integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@^2.3.4: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -env-ci@^5.0.1: - version "5.0.2" - resolved "https://registry.yarnpkg.com/env-ci/-/env-ci-5.0.2.tgz#48b6687f8af8cdf5e31b8fcf2987553d085249d9" - integrity sha512-Xc41mKvjouTXD3Oy9AqySz1IeyvJvHZ20Twf5ZLYbNpPPIuCnL/qHCmNlD01LoNy0JTunw9HPYVptD19Ac7Mbw== - dependencies: - execa "^4.0.0" - java-properties "^1.0.0" - -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -envinfo@^7.7.3, envinfo@^7.7.4: - version "7.8.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== - -enzyme-adapter-react-16@^1.15.6: - version "1.15.6" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz#fd677a658d62661ac5afd7f7f541f141f8085901" - integrity sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g== - dependencies: - enzyme-adapter-utils "^1.14.0" - enzyme-shallow-equal "^1.0.4" - has "^1.0.3" - object.assign "^4.1.2" - object.values "^1.1.2" - prop-types "^15.7.2" - react-is "^16.13.1" - react-test-renderer "^16.0.0-0" - semver "^5.7.0" - -enzyme-adapter-utils@^1.14.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz#afbb0485e8033aa50c744efb5f5711e64fbf1ad0" - integrity sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg== - dependencies: - airbnb-prop-types "^2.16.0" - function.prototype.name "^1.1.3" - has "^1.0.3" - object.assign "^4.1.2" - object.fromentries "^2.0.3" - prop-types "^15.7.2" - semver "^5.7.1" - -enzyme-shallow-equal@^1.0.1, enzyme-shallow-equal@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz#b9256cb25a5f430f9bfe073a84808c1d74fced2e" - integrity sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q== - dependencies: - has "^1.0.3" - object-is "^1.1.2" - -enzyme-to-json@^3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/enzyme-to-json/-/enzyme-to-json-3.6.2.tgz#94f85c413bcae8ab67be53b0a94b69a560e27823" - integrity sha512-Ynm6Z6R6iwQ0g2g1YToz6DWhxVnt8Dy1ijR2zynRKxTyBGA8rCDXU3rs2Qc4OKvUvc2Qoe1bcFK6bnPs20TrTg== +"debug@^3.1.0": + "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + "version" "3.2.7" dependencies: - "@types/cheerio" "^0.22.22" - lodash "^4.17.21" - react-is "^16.12.0" - -enzyme@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.11.0.tgz#71d680c580fe9349f6f5ac6c775bc3e6b7a79c28" - integrity sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw== - dependencies: - array.prototype.flat "^1.2.3" - cheerio "^1.0.0-rc.3" - enzyme-shallow-equal "^1.0.1" - function.prototype.name "^1.1.2" - has "^1.0.3" - html-element-map "^1.2.0" - is-boolean-object "^1.0.1" - is-callable "^1.1.5" - is-number-object "^1.0.4" - is-regex "^1.0.5" - is-string "^1.0.5" - is-subset "^0.1.1" - lodash.escape "^4.0.1" - lodash.isequal "^4.5.0" - object-inspect "^1.7.0" - object-is "^1.0.2" - object.assign "^4.1.0" - object.entries "^1.1.1" - object.values "^1.1.1" - raf "^3.4.1" - rst-selector-parser "^2.2.3" - string.prototype.trim "^1.2.1" - -err-code@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - -errno@^0.1.3, errno@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.17.4, es-abstract@^1.18.0, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2, es-abstract@^1.18.5: - version "1.18.6" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.6.tgz#2c44e3ea7a6255039164d26559777a6d978cb456" - integrity sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" - is-regex "^1.1.4" - is-string "^1.0.7" - object-inspect "^1.11.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" - is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-array-method-boxes-properly@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== - -es-get-iterator@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7" - integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.0" - has-symbols "^1.0.1" - is-arguments "^1.1.0" - is-map "^2.0.2" - is-set "^2.0.2" - is-string "^1.0.5" - isarray "^2.0.5" - -es-module-lexer@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.0.tgz#fe4c4621977bc668e285c5f1f70ca3b451095fda" - integrity sha512-qU2eN/XHsrl3E4y7mK1wdWnyy5c8gXtCbfP6Xcsemm7fPUR1PIV1JhZfP7ojcN0Fzp69CfrS3u76h2tusvfKiQ== - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" - integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== - -eslint-config-react-app@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e" - integrity sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A== - dependencies: - confusing-browser-globals "^1.0.10" - -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-module-utils@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz#94e5540dd15fe1522e8ffa3ec8db3b7fa7e7a534" - integrity sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q== - dependencies: - debug "^3.2.7" - pkg-dir "^2.0.0" - -eslint-plugin-import@^2.24.2: - version "2.24.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz#2c8cd2e341f3885918ee27d18479910ade7bb4da" - integrity sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q== - dependencies: - array-includes "^3.1.3" - array.prototype.flat "^1.2.4" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.6.2" - find-up "^2.0.0" - has "^1.0.3" - is-core-module "^2.6.0" - minimatch "^3.0.4" - object.values "^1.1.4" - pkg-up "^2.0.0" - read-pkg-up "^3.0.0" - resolve "^1.20.0" - tsconfig-paths "^3.11.0" - -eslint-plugin-prettier@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz#8b99d1e4b8b24a762472b4567992023619cb98e0" - integrity sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-scope@5.1.1, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esrecurse@^4.1.0, esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eventemitter3@^4.0.0, eventemitter3@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.0.0, events@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -exec-sh@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" - integrity sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw== - dependencies: - merge "^1.2.0" - -execa@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expect@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.2.3.tgz#9ce766b50c6a5f22edd07ca5510845ac8bcb0b10" - integrity sha512-qT+ItBIdpS2QkRzZNGFmqpV2xTjK20gftUnJ4CLmpjdGzpoEtjxb43Y80GraXLtwB+wt5kRmXURINeM3s2fQtQ== - dependencies: - "@jest/types" "^27.2.3" - ansi-styles "^5.0.0" - jest-get-type "^27.0.6" - jest-matcher-utils "^27.2.3" - jest-message-util "^27.2.3" - jest-regex-util "^27.0.6" - -express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -express@^4.17.3: - version "4.17.3" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" - integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.19.2" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.4.2" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.9.7" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.17.2" - serve-static "1.14.2" - setprototypeof "1.2.0" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-glob@^3.1.1, fast-glob@^3.2.5: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== + "ms" "^2.1.1" + +"debug@^3.1.1": + "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + "version" "3.2.7" dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-parse@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" - integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== - -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fastest-levenshtein@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" - integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-loader@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" - integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs= - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -flexlayout-react@^0.5.12: - version "0.5.14" - resolved "https://registry.yarnpkg.com/flexlayout-react/-/flexlayout-react-0.5.14.tgz#d4dcbcf3a152020abb403426298c38bcc64f4111" - integrity sha512-blgap+7MxTr0PkANV/ya/RvCcmcGeqOA5N2bRpAsX4plexqsFN2RSbvdQlqt+z7uqJ7fmHLby6U2Md97DZPRww== - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@^1.0.0: - version "1.14.4" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379" - integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fp-ts@^2.5.3: - version "2.11.4" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.11.4.tgz#ad78a0d8eafb0dcfc835a0fb200f6da6422c27f0" - integrity sha512-lhV7tGEbs2qoVw4vmqOovChS7CAoIYU0gdiPEF8Vc4bLZct+PAMMeXrCqRyBNEo33XOvwvAmFDEDIrHPWH2/fg== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fromentries@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" - integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== - -fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-minipass@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - -fs-minipass@^2.0.0, fs-minipass@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-monkey@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" - integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function.prototype.name@^1.1.2, function.prototype.name@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.4.tgz#e4ea839b9d3672ae99d0efd9f38d9191c5eaac83" - integrity sha512-iqy1pIotY/RmhdFZygSSlW0wko2yxkSCKqsuv4pr8QESohpYyG/Z7B/XXvPRKTJS//960rgguE5mSRUsDdaJrQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - functions-have-names "^1.2.2" - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -functions-have-names@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.2.tgz#98d93991c39da9361f8e50b337c4f6e41f120e21" - integrity sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA== - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.1, get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-monorepo-packages@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-monorepo-packages/-/get-monorepo-packages-1.2.0.tgz#3eee88d30b11a5f65955dec6ae331958b2a168e4" - integrity sha512-aDP6tH+eM3EuVSp3YyCutOcFS4Y9AhRRH9FAd+cjtR/g63Hx+DCXdKoP1ViRPUJz5wm+BOEXB4FhoffGHxJ7jQ== - dependencies: - globby "^7.1.1" - load-json-file "^4.0.0" - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-pkg-repo@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" - integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== + "ms" "^2.1.1" + +"debug@^3.2.6": + "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + "version" "3.2.7" dependencies: - "@hutson/parse-repository-url" "^3.0.0" - hosted-git-info "^4.0.0" - through2 "^2.0.0" - yargs "^16.2.0" - -get-port@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" - integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== - -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + "ms" "^2.1.1" + +"debug@^3.2.7": + "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + "version" "3.2.7" dependencies: - pump "^3.0.0" - -get-stream@^5.0.0, get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + "ms" "^2.1.1" + +"debug@^4.0.1", "debug@^4.1.0", "debug@^4.1.1", "debug@^4.3.1", "debug@^4.3.2", "debug@^4.3.3", "debug@^4.3.4", "debug@~4.3.1", "debug@~4.3.2", "debug@4": + "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + "version" "4.3.4" + dependencies: + "ms" "2.1.2" + +"debug@2.6.9": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" + dependencies: + "ms" "2.0.0" + +"debug@2": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" + dependencies: + "ms" "2.0.0" + +"debug@4.3.2": + "integrity" "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz" + "version" "4.3.2" + dependencies: + "ms" "2.1.2" + +"debuglog@^1.0.1": + "integrity" "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=" + "resolved" "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz" + "version" "1.0.1" + +"decamelize-keys@^1.1.0": + "integrity" "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=" + "resolved" "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "decamelize" "^1.1.0" + "map-obj" "^1.0.0" + +"decamelize@^1.1.0", "decamelize@^1.2.0": + "integrity" "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + "version" "1.2.0" + +"decimal.js@^10.2.1", "decimal.js@^10.3.1": + "integrity" "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + "resolved" "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz" + "version" "10.3.1" + +"decko@^1.2.0": + "integrity" "sha1-/UPHNelnuAEzBohKVvvmZZlraBc=" + "resolved" "https://registry.npmjs.org/decko/-/decko-1.2.0.tgz" + "version" "1.2.0" + +"decode-uri-component@^0.2.0": + "integrity" "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + "resolved" "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" + "version" "0.2.0" + +"decompress-response@^3.3.0": + "integrity" "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=" + "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "mimic-response" "^1.0.0" + +"decompress-response@^4.2.0": + "integrity" "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==" + "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz" + "version" "4.2.1" + dependencies: + "mimic-response" "^2.0.0" + +"decompress-zip@^0.3.2": + "integrity" "sha512-/fy1L4s+4jujqj3kNptWjilFw3E6De8U6XUFvqmh4npN3Vsypm3oT2V0bXcmbBWS+5j5tr4okYaFrOmyZkszEg==" + "resolved" "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.3.tgz" + "version" "0.3.3" + dependencies: + "binary" "^0.3.0" + "graceful-fs" "^4.1.3" + "mkpath" "^0.1.0" + "nopt" "^3.0.1" + "q" "^1.1.2" + "readable-stream" "^1.1.8" + "touch" "0.0.3" + +"dedent@^0.7.0": + "integrity" "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" + "resolved" "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" + "version" "0.7.0" + +"deep-equal@^1.0.1": + "integrity" "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==" + "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "is-arguments" "^1.0.4" + "is-date-object" "^1.0.1" + "is-regex" "^1.0.4" + "object-is" "^1.0.1" + "object-keys" "^1.1.1" + "regexp.prototype.flags" "^1.2.0" + +"deep-equal@^2.0.5": + "integrity" "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==" + "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz" + "version" "2.0.5" + dependencies: + "call-bind" "^1.0.0" + "es-get-iterator" "^1.1.1" + "get-intrinsic" "^1.0.1" + "is-arguments" "^1.0.4" + "is-date-object" "^1.0.2" + "is-regex" "^1.1.1" + "isarray" "^2.0.5" + "object-is" "^1.1.4" + "object-keys" "^1.1.1" + "object.assign" "^4.1.2" + "regexp.prototype.flags" "^1.3.0" + "side-channel" "^1.0.3" + "which-boxed-primitive" "^1.0.1" + "which-collection" "^1.0.1" + "which-typed-array" "^1.1.2" + +"deep-equal@~1.0.1": + "integrity" "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz" + "version" "1.0.1" + +"deep-extend@^0.6.0", "deep-extend@~0.6.0": + "integrity" "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + "resolved" "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + "version" "0.6.0" + +"deep-is@^0.1.3", "deep-is@~0.1.3": + "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + "version" "0.1.4" + +"deepmerge@^4.0.0", "deepmerge@^4.2.2": + "integrity" "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" + "version" "4.2.2" + +"default-gateway@^6.0.3": + "integrity" "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==" + "resolved" "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" + "version" "6.0.3" + dependencies: + "execa" "^5.0.0" + +"defaults@^1.0.3": + "integrity" "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=" + "resolved" "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "clone" "^1.0.2" + +"defer-to-connect@^1.0.1": + "integrity" "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" + "version" "1.1.3" + +"define-lazy-prop@^2.0.0": + "integrity" "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + "resolved" "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" + "version" "2.0.0" + +"define-properties@^1.1.3", "define-properties@^1.1.4": + "integrity" "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==" + "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" + "version" "1.1.4" + dependencies: + "has-property-descriptors" "^1.0.0" + "object-keys" "^1.1.1" + +"define-property@^0.2.5": + "integrity" "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=" + "resolved" "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" + "version" "0.2.5" + dependencies: + "is-descriptor" "^0.1.0" + +"define-property@^1.0.0": + "integrity" "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=" + "resolved" "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "is-descriptor" "^1.0.0" + +"define-property@^2.0.2": + "integrity" "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==" + "resolved" "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "is-descriptor" "^1.0.2" + "isobject" "^3.0.1" + +"degenerator@^3.0.1": + "integrity" "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==" + "resolved" "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "ast-types" "^0.13.2" + "escodegen" "^1.8.1" + "esprima" "^4.0.0" + "vm2" "^3.9.8" + +"delayed-stream@~1.0.0": + "integrity" "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + "version" "1.0.0" + +"delegates@^1.0.0": + "integrity" "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "resolved" "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + "version" "1.0.0" + +"depd@^1.1.1", "depd@^1.1.2", "depd@~1.1.2": + "integrity" "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + "version" "1.1.2" + +"depd@^2.0.0": + "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + "version" "2.0.0" + +"depd@~2.0.0": + "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + "version" "2.0.0" + +"depd@2.0.0": + "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + "version" "2.0.0" + +"deprecation@^2.0.0", "deprecation@^2.3.1": + "integrity" "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + "resolved" "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz" + "version" "2.3.1" + +"des.js@^1.0.0": + "integrity" "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==" + "resolved" "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "inherits" "^2.0.1" + "minimalistic-assert" "^1.0.0" + +"destroy@^1.0.4", "destroy@1.2.0": + "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + "version" "1.2.0" + +"detect-indent@^5.0.0": + "integrity" "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=" + "resolved" "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz" + "version" "5.0.0" + +"detect-indent@^6.0.0": + "integrity" "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==" + "resolved" "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz" + "version" "6.1.0" + +"detect-libc@^1.0.3": + "integrity" "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + "resolved" "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz" + "version" "1.0.3" + +"detect-libc@^2.0.0": + "integrity" "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" + "resolved" "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz" + "version" "2.0.1" + +"detect-newline@^3.0.0": + "integrity" "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" + "resolved" "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + "version" "3.1.0" + +"detect-node@^2.0.4": + "integrity" "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + "resolved" "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" + "version" "2.1.0" + +"devtools-protocol@0.0.847576": + "integrity" "sha512-0M8kobnSQE0Jmly7Mhbeq0W/PpZfnuK+WjN2ZRVPbGqYwCHCioAVp84H0TcLimgECcN5H976y5QiXMGBC9JKmg==" + "resolved" "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.847576.tgz" + "version" "0.0.847576" + +"devtools-protocol@0.0.937139": + "integrity" "sha512-daj+rzR3QSxsPRy5vjjthn58axO8c11j58uY0lG5vvlJk/EiOdCWOptGdkXDjtuRHr78emKq0udHCXM4trhoDQ==" + "resolved" "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.937139.tgz" + "version" "0.0.937139" + +"dezalgo@^1.0.0": + "integrity" "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==" + "resolved" "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "asap" "^2.0.0" + "wrappy" "1" + +"diff-match-patch@^1.0.4", "diff-match-patch@^1.0.5": + "integrity" "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==" + "resolved" "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz" + "version" "1.0.5" + +"diff-sequences@^26.6.2": + "integrity" "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==" + "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz" + "version" "26.6.2" + +"diff-sequences@^27.5.1": + "integrity" "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==" + "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" + "version" "27.5.1" + +"diff@^4.0.1": + "integrity" "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + "resolved" "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + "version" "4.0.2" + +"diffie-hellman@^5.0.0": + "integrity" "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==" + "resolved" "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" + "version" "5.0.3" + dependencies: + "bn.js" "^4.1.0" + "miller-rabin" "^4.0.0" + "randombytes" "^2.0.0" + +"dir-glob@^2.0.0": + "integrity" "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==" + "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz" + "version" "2.2.2" + dependencies: + "path-type" "^3.0.0" + +"dir-glob@^3.0.1": + "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" + "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "path-type" "^4.0.0" + +"discontinuous-range@1.0.0": + "integrity" "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=" + "resolved" "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz" + "version" "1.0.0" + +"discord-api-types@^0.26.0": + "integrity" "sha512-T5PdMQ+Y1MEECYMV5wmyi9VEYPagEDEi4S0amgsszpWY0VB9JJ/hEvM6BgLhbdnKky4gfmZEXtEEtojN8ZKJQQ==" + "resolved" "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.26.1.tgz" + "version" "0.26.1" + +"discord-api-types@^0.29.0": + "integrity" "sha512-Ekq1ICNpOTVajXKZguNFrsDeTmam+ZeA38txsNLZnANdXUjU6QBPIZLUQTC6MzigFGb0Tt8vk4xLnXmzv0shNg==" + "resolved" "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.29.0.tgz" + "version" "0.29.0" + +"discord.js@^13.6.0": + "integrity" "sha512-tXNR8zgsEPxPBvGk3AQjJ9ljIIC6/LOPjzKwpwz8Y1Q2X66Vi3ZqFgRHYwnHKC0jC0F+l4LzxlhmOJsBZDNg9g==" + "resolved" "https://registry.npmjs.org/discord.js/-/discord.js-13.6.0.tgz" + "version" "13.6.0" + dependencies: + "@discordjs/builders" "^0.11.0" + "@discordjs/collection" "^0.4.0" + "@sapphire/async-queue" "^1.1.9" + "@types/node-fetch" "^2.5.12" + "@types/ws" "^8.2.2" + "discord-api-types" "^0.26.0" + "form-data" "^4.0.0" + "node-fetch" "^2.6.1" + "ws" "^8.4.0" + +"dlv@^1.1.0": + "integrity" "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + "resolved" "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" + "version" "1.1.3" + +"dns-equal@^1.0.0": + "integrity" "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + "resolved" "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" + "version" "1.0.0" + +"dns-packet@^5.2.2": + "integrity" "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==" + "resolved" "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz" + "version" "5.3.1" + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +"doctrine@^2.1.0": + "integrity" "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==" + "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "esutils" "^2.0.2" + +"doctrine@^3.0.0": + "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" + "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "esutils" "^2.0.2" + +"dom-accessibility-api@^0.5.6": + "integrity" "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==" + "resolved" "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz" + "version" "0.5.14" + +"dom-converter@^0.2.0": + "integrity" "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==" + "resolved" "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" + "version" "0.2.0" + dependencies: + "utila" "~0.4" + +"dom-css@^2.0.0": + "integrity" "sha1-/bwtWgFdCj4YcuEUcrvQ57nmogI=" + "resolved" "https://registry.npmjs.org/dom-css/-/dom-css-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "add-px-to-style" "1.0.0" + "prefix-style" "2.0.1" + "to-camel-case" "1.0.0" + +"dom-helpers@^5.0.1": + "integrity" "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==" + "resolved" "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz" + "version" "5.2.1" dependencies: - pump "^3.0.0" + "@babel/runtime" "^7.8.7" + "csstype" "^3.0.2" -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +"dom-serializer@^1.0.1", "dom-serializer@^1.3.2": + "integrity" "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==" + "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" + "version" "1.4.1" + dependencies: + "domelementtype" "^2.0.1" + "domhandler" "^4.2.0" + "entities" "^2.0.0" -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== +"dom-walk@^0.1.0": + "integrity" "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + "resolved" "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" + "version" "0.1.2" + +"domain-browser@^1.1.1": + "integrity" "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + "resolved" "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" + "version" "1.2.0" + +"domelementtype@^2.0.1", "domelementtype@^2.2.0": + "integrity" "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + "version" "2.3.0" + +"domexception@^2.0.1": + "integrity" "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==" + "resolved" "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "webidl-conversions" "^5.0.0" + +"domhandler@^4.0.0", "domhandler@^4.2.0", "domhandler@^4.3.1": + "integrity" "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==" + "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" + "version" "4.3.1" + dependencies: + "domelementtype" "^2.2.0" + +"dompurify@^2.2.8": + "integrity" "sha512-+9MqacuigMIZ+1+EwoEltogyWGFTJZWU3258Rupxs+2CGs4H914G9er6pZbsme/bvb5L67o2rade9n21e4RW/w==" + "resolved" "https://registry.npmjs.org/dompurify/-/dompurify-2.2.9.tgz" + "version" "2.2.9" + +"domutils@^2.5.2", "domutils@^2.8.0": + "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==" + "resolved" "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" + "version" "2.8.0" + dependencies: + "dom-serializer" "^1.0.1" + "domelementtype" "^2.2.0" + "domhandler" "^4.2.0" + +"dot-case@^3.0.4": + "integrity" "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==" + "resolved" "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "no-case" "^3.0.4" + "tslib" "^2.0.3" + +"dot-prop@^5.1.0": + "integrity" "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==" + "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" + "version" "5.3.0" + dependencies: + "is-obj" "^2.0.0" + +"dot-prop@^5.2.0": + "integrity" "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==" + "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" + "version" "5.3.0" + dependencies: + "is-obj" "^2.0.0" + +"dot-prop@^6.0.1": + "integrity" "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==" + "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "is-obj" "^2.0.0" + +"dotenv-flow-webpack@^1.1.0": + "integrity" "sha512-U6klxT4Tjeka7RoEr//8b4fBm+LupsWgiHOoAE/vSfKzx4g8xpRh4dn59QyyTczbLS7SjKSHchlAHzhSu2ER3Q==" + "resolved" "https://registry.npmjs.org/dotenv-flow-webpack/-/dotenv-flow-webpack-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "dotenv-flow" "^3.2.0" + +"dotenv-flow@^3.1.0", "dotenv-flow@^3.2.0", "dotenv-flow@3.2.0": + "integrity" "sha512-GEB6RrR4AbqDJvNSFrYHqZ33IKKbzkvLYiD5eo4+9aFXr4Y4G+QaFrB/fNp0y6McWBmvaPn3ZNjIufnj8irCtg==" + "resolved" "https://registry.npmjs.org/dotenv-flow/-/dotenv-flow-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "dotenv" "^8.0.0" + +"dotenv@^8.0.0", "dotenv@^8.2.0": + "integrity" "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" + "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz" + "version" "8.6.0" + +"dottie@^2.0.2": + "integrity" "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" + "resolved" "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz" + "version" "2.0.2" + +"duplexer@^0.1.1", "duplexer@^0.1.2": + "integrity" "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + "resolved" "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" + "version" "0.1.2" + +"duplexer3@^0.1.4": + "integrity" "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + "resolved" "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz" + "version" "0.1.4" + +"duplexify@^3.4.2", "duplexify@^3.6.0": + "integrity" "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==" + "resolved" "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz" + "version" "3.7.1" + dependencies: + "end-of-stream" "^1.0.0" + "inherits" "^2.0.1" + "readable-stream" "^2.0.0" + "stream-shift" "^1.0.0" + +"duplexify@^4.0.0", "duplexify@^4.1.1": + "integrity" "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==" + "resolved" "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "end-of-stream" "^1.4.1" + "inherits" "^2.0.3" + "readable-stream" "^3.1.1" + "stream-shift" "^1.0.0" + +"eastasianwidth@^0.2.0": + "integrity" "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "resolved" "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + "version" "0.2.0" + +"ecc-jsbn@~0.1.1": + "integrity" "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=" + "resolved" "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" + "version" "0.1.2" + dependencies: + "jsbn" "~0.1.0" + "safer-buffer" "^2.1.0" + +"ecdsa-sig-formatter@^1.0.11", "ecdsa-sig-formatter@1.0.11": + "integrity" "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==" + "resolved" "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" + "version" "1.0.11" + dependencies: + "safe-buffer" "^5.0.1" + +"editorconfig@^0.15.3": + "integrity" "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==" + "resolved" "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz" + "version" "0.15.3" + dependencies: + "commander" "^2.19.0" + "lru-cache" "^4.1.5" + "semver" "^5.6.0" + "sigmund" "^1.0.1" + +"ee-first@1.1.1": + "integrity" "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + "version" "1.1.1" + +"efrt@2.6.0": + "integrity" "sha512-uVeV82e9c/n/8/QyWVbbt4jvvbVOvgYwnKE59KpwJ1DD7AGXWytU9v32v5SuvxKNl9V9JaudsMPtztJNY+Batg==" + "resolved" "https://registry.npmjs.org/efrt/-/efrt-2.6.0.tgz" + "version" "2.6.0" + +"electron-to-chromium@^1.4.118": + "integrity" "sha512-VhaE9VUYU6d2eIb+4xf83CATD+T+3bTzvxvlADkQE+c2hisiw3sZmvEDtsW704+Zky9WZGhBuQXijDVqSriQLA==" + "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.124.tgz" + "version" "1.4.124" + +"elliptic@^6.5.3": + "integrity" "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==" + "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "bn.js" "^4.11.9" + "brorand" "^1.1.0" + "hash.js" "^1.0.0" + "hmac-drbg" "^1.0.1" + "inherits" "^2.0.4" + "minimalistic-assert" "^1.0.1" + "minimalistic-crypto-utils" "^1.0.1" + +"email-validator@^2.0.4": + "integrity" "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==" + "resolved" "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz" + "version" "2.0.4" + +"emitter-listener@^1.1.1": + "integrity" "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==" + "resolved" "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "shimmer" "^1.2.0" + +"emittery@^0.8.1": + "integrity" "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==" + "resolved" "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz" + "version" "0.8.1" + +"emoji-chars@^1.0.0": + "integrity" "sha512-1t7WbkKzQ1hV4dHWM4u8g0SFHSAbxx+8o/lvXisDLTesljSFaxl2wLgMtx4wH922sNcIuLbFty/AuqUDJORd1A==" + "resolved" "https://registry.npmjs.org/emoji-chars/-/emoji-chars-1.0.12.tgz" + "version" "1.0.12" + dependencies: + "emoji-unicode-map" "^1.0.0" + +"emoji-dictionary@1.0.11": + "integrity" "sha512-pVTiN0StAU2nYy+BtcX/88DavMDjUcONIA6Qsg7/IyDq8xOsRFuC49F7XLUPr7Shlz4bt0/RAqPjuqjpsj3vbA==" + "resolved" "https://registry.npmjs.org/emoji-dictionary/-/emoji-dictionary-1.0.11.tgz" + "version" "1.0.11" + dependencies: + "emoji-chars" "^1.0.0" + "emoji-name-map" "^1.0.0" + "emoji-names" "^1.0.1" + "emoji-unicode-map" "^1.0.0" + "emojilib" "^2.0.2" + +"emoji-name-map@^1.0.0", "emoji-name-map@^1.1.0": + "integrity" "sha512-MSM8y6koSqh/2uEMI2VoKA+Ac0qL5RkgFGP/pzL6n5FOrOJ7FOZFxgs7+uNpqA+AT+WmdbMPXkd3HnFXXdz4AA==" + "resolved" "https://registry.npmjs.org/emoji-name-map/-/emoji-name-map-1.2.9.tgz" + "version" "1.2.9" + dependencies: + "emojilib" "^2.0.2" + "iterate-object" "^1.3.1" + "map-o" "^2.0.1" + +"emoji-names@^1.0.1": + "integrity" "sha512-ABXVMPYU9h1/0lNNE9VaT9OxxWXXAv/By8gVMzQYIx7jrhWjyLFVyC34CAN+EP/1e+5WZCklvClo5KSklPCAeg==" + "resolved" "https://registry.npmjs.org/emoji-names/-/emoji-names-1.0.12.tgz" + "version" "1.0.12" + dependencies: + "emoji-name-map" "^1.0.0" + +"emoji-regex@^7.0.1": + "integrity" "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" + "version" "7.0.3" + +"emoji-regex@^8.0.0": + "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + "version" "8.0.0" + +"emoji-regex@^9.2.2": + "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + "version" "9.2.2" + +"emoji-regex@10.0.0": + "integrity" "sha512-KmJa8l6uHi1HrBI34udwlzZY1jOEuID/ft4d8BSSEdRyap7PwBEt910453PJa5MuGvxkLqlt4Uvhu7tttFHViw==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.0.0.tgz" + "version" "10.0.0" + +"emoji-unicode-map@^1.0.0": + "integrity" "sha512-GWcWILFyDfR8AU7FRLhKk0lnvcljoEIXejg+XY3Ogz6/ELaQLMo0m4d9R3i79ikIULVEysHBGPsOEcjcFxtN+w==" + "resolved" "https://registry.npmjs.org/emoji-unicode-map/-/emoji-unicode-map-1.1.11.tgz" + "version" "1.1.11" + dependencies: + "emoji-name-map" "^1.1.0" + "iterate-object" "^1.3.1" + +"emojilib@^2.0.2": + "integrity" "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==" + "resolved" "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz" + "version" "2.4.0" + +"emojis-list@^3.0.0": + "integrity" "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" + "version" "3.0.0" + +"encodeurl@^1.0.2", "encodeurl@~1.0.2": + "integrity" "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + "version" "1.0.2" + +"encoding@^0.1.11", "encoding@^0.1.12": + "integrity" "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==" + "resolved" "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" + "version" "0.1.13" + dependencies: + "iconv-lite" "^0.6.2" + +"end-of-stream@^1.0.0", "end-of-stream@^1.1.0", "end-of-stream@^1.4.1": + "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" + "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + "version" "1.4.4" + dependencies: + "once" "^1.4.0" + +"endent@^2.1.0": + "integrity" "sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==" + "resolved" "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "dedent" "^0.7.0" + "fast-json-parse" "^1.0.3" + "objectorarray" "^1.0.5" + +"engine.io-client@~6.2.1": + "integrity" "sha512-5cu7xubVxEwoB6O9hJ6Zfu990yBVjXfyMlE1ZvfO5L8if3Kvc9bgDNEapV0C5pMp+5Om1UZFnljxoOuFm6dBKA==" + "resolved" "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.1.tgz" + "version" "6.2.1" + dependencies: + "@socket.io/component-emitter" "~3.1.0" + "debug" "~4.3.1" + "engine.io-parser" "~5.0.3" + "ws" "~8.2.3" + "xmlhttprequest-ssl" "~2.0.0" + +"engine.io-parser@~5.0.3": + "integrity" "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==" + "resolved" "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz" + "version" "5.0.3" + dependencies: + "@socket.io/base64-arraybuffer" "~1.0.2" + +"engine.io@~6.2.0": + "integrity" "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==" + "resolved" "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "@types/cookie" "^0.4.1" + "@types/cors" "^2.8.12" + "@types/node" ">=10.0.0" + "accepts" "~1.3.4" + "base64id" "2.0.0" + "cookie" "~0.4.1" + "cors" "~2.8.5" + "debug" "~4.3.1" + "engine.io-parser" "~5.0.3" + "ws" "~8.2.3" + +"english-anagrams@^1.0.0": + "integrity" "sha512-P3qd3zamxb+CwGghkpJ3rKRrWT/PFDzgkH2wXlMzcrYnEjPs+BFnm97KlCJ89gifFeXjDNQWTNTegXE9utUohw==" + "resolved" "https://registry.npmjs.org/english-anagrams/-/english-anagrams-1.0.0.tgz" + "version" "1.0.0" + +"enhanced-resolve@^4.0.0": + "integrity" "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==" + "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz" + "version" "4.5.0" + dependencies: + "graceful-fs" "^4.1.2" + "memory-fs" "^0.5.0" + "tapable" "^1.0.0" + +"enhanced-resolve@^4.5.0": + "integrity" "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==" + "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz" + "version" "4.5.0" + dependencies: + "graceful-fs" "^4.1.2" + "memory-fs" "^0.5.0" + "tapable" "^1.0.0" + +"enhanced-resolve@^5.0.0", "enhanced-resolve@^5.9.2": + "integrity" "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==" + "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz" + "version" "5.9.3" + dependencies: + "graceful-fs" "^4.2.4" + "tapable" "^2.2.0" + +"enquirer@^2.3.4", "enquirer@^2.3.5", "enquirer@2.3.6": + "integrity" "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==" + "resolved" "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" + "version" "2.3.6" + dependencies: + "ansi-colors" "^4.1.1" + +"ent@^2.2.0": + "integrity" "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" + "resolved" "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz" + "version" "2.2.0" + +"entities@^2.0.0": + "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + "version" "2.2.0" + +"env-ci@^5.0.1": + "integrity" "sha512-o0JdWIbOLP+WJKIUt36hz1ImQQFuN92nhsfTkHHap+J8CiI8WgGpH/a9jEGHh4/TU5BUUGjlnKXNoDb57+ne+A==" + "resolved" "https://registry.npmjs.org/env-ci/-/env-ci-5.5.0.tgz" + "version" "5.5.0" + dependencies: + "execa" "^5.0.0" + "fromentries" "^1.3.2" + "java-properties" "^1.0.0" + +"env-paths@^2.2.0": + "integrity" "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + "resolved" "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" + "version" "2.2.1" + +"envinfo@^7.7.3", "envinfo@^7.7.4": + "integrity" "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==" + "resolved" "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" + "version" "7.8.1" + +"enzyme-adapter-react-16@^1.15.6": + "integrity" "sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g==" + "resolved" "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz" + "version" "1.15.6" + dependencies: + "enzyme-adapter-utils" "^1.14.0" + "enzyme-shallow-equal" "^1.0.4" + "has" "^1.0.3" + "object.assign" "^4.1.2" + "object.values" "^1.1.2" + "prop-types" "^15.7.2" + "react-is" "^16.13.1" + "react-test-renderer" "^16.0.0-0" + "semver" "^5.7.0" + +"enzyme-adapter-utils@^1.14.0": + "integrity" "sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg==" + "resolved" "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz" + "version" "1.14.0" + dependencies: + "airbnb-prop-types" "^2.16.0" + "function.prototype.name" "^1.1.3" + "has" "^1.0.3" + "object.assign" "^4.1.2" + "object.fromentries" "^2.0.3" + "prop-types" "^15.7.2" + "semver" "^5.7.1" + +"enzyme-shallow-equal@^1.0.1", "enzyme-shallow-equal@^1.0.4": + "integrity" "sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q==" + "resolved" "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "has" "^1.0.3" + "object-is" "^1.1.2" + +"enzyme-to-json@^3.6.2": + "integrity" "sha512-Ynm6Z6R6iwQ0g2g1YToz6DWhxVnt8Dy1ijR2zynRKxTyBGA8rCDXU3rs2Qc4OKvUvc2Qoe1bcFK6bnPs20TrTg==" + "resolved" "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.6.2.tgz" + "version" "3.6.2" dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -git-raw-commits@^2.0.8: - version "2.0.10" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1" - integrity sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ== - dependencies: - dargs "^7.0.0" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" - -git-remote-origin-url@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" - integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8= - dependencies: - gitconfiglocal "^1.0.0" - pify "^2.3.0" - -git-semver-tags@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" - integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== - dependencies: - meow "^8.0.0" - semver "^6.0.0" - -git-up@^4.0.0: - version "4.0.5" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.5.tgz#e7bb70981a37ea2fb8fe049669800a1f9a01d759" - integrity sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA== - dependencies: - is-ssh "^1.3.0" - parse-url "^6.0.0" - -git-url-parse@^11.4.4: - version "11.6.0" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.6.0.tgz#c634b8de7faa66498a2b88932df31702c67df605" - integrity sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g== - dependencies: - git-up "^4.0.0" - -gitconfiglocal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" - integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s= - dependencies: - ini "^1.3.2" - -gitlog@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/gitlog/-/gitlog-4.0.4.tgz#8da6c08748dc290eb6c2fc11e3c505fb73715564" - integrity sha512-jeY2kO7CVyTa6cUM7ZD2ZxIyBkna1xvW2esV/3o8tbhiUneX1UBQCH4D9aMrHgGiohBjyXbuZogyjKXslnY5Yg== - dependencies: - debug "^4.1.1" - tslib "^1.14.1" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.1.tgz#42054f685eb6a44e7a7d189a96efa40a54971aa7" - integrity sha512-kEVjS71mQazDBHKcsq4E9u/vUzaLcw1A8EtUeydawvIWQCJM0qQ08G1H7/XTjFUulla6XQiDOG6MXSaG0HDKog== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-dirs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" - integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== - dependencies: - ini "2.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - -globby@^11.0.1, globby@^11.0.2, globby@^11.0.3: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" - integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= - dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + "@types/cheerio" "^0.22.22" + "lodash" "^4.17.21" + "react-is" "^16.12.0" + +"enzyme@^3.11.0": + "integrity" "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==" + "resolved" "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz" + "version" "3.11.0" + dependencies: + "array.prototype.flat" "^1.2.3" + "cheerio" "^1.0.0-rc.3" + "enzyme-shallow-equal" "^1.0.1" + "function.prototype.name" "^1.1.2" + "has" "^1.0.3" + "html-element-map" "^1.2.0" + "is-boolean-object" "^1.0.1" + "is-callable" "^1.1.5" + "is-number-object" "^1.0.4" + "is-regex" "^1.0.5" + "is-string" "^1.0.5" + "is-subset" "^0.1.1" + "lodash.escape" "^4.0.1" + "lodash.isequal" "^4.5.0" + "object-inspect" "^1.7.0" + "object-is" "^1.0.2" + "object.assign" "^4.1.0" + "object.entries" "^1.1.1" + "object.values" "^1.1.1" + "raf" "^3.4.1" + "rst-selector-parser" "^2.2.3" + "string.prototype.trim" "^1.2.1" + +"err-code@^2.0.2": + "integrity" "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + "resolved" "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" + "version" "2.0.3" + +"errno@^0.1.3", "errno@~0.1.7": + "integrity" "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==" + "resolved" "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" + "version" "0.1.8" + dependencies: + "prr" "~1.0.1" + +"error-ex@^1.3.1": + "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" + "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "is-arrayish" "^0.2.1" + +"es-abstract@^1.18.5", "es-abstract@^1.19.0", "es-abstract@^1.19.1", "es-abstract@^1.19.2", "es-abstract@^1.19.4", "es-abstract@^1.19.5": + "integrity" "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==" + "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz" + "version" "1.19.5" + dependencies: + "call-bind" "^1.0.2" + "es-to-primitive" "^1.2.1" + "function-bind" "^1.1.1" + "get-intrinsic" "^1.1.1" + "get-symbol-description" "^1.0.0" + "has" "^1.0.3" + "has-symbols" "^1.0.3" + "internal-slot" "^1.0.3" + "is-callable" "^1.2.4" + "is-negative-zero" "^2.0.2" + "is-regex" "^1.1.4" + "is-shared-array-buffer" "^1.0.2" + "is-string" "^1.0.7" + "is-weakref" "^1.0.2" + "object-inspect" "^1.12.0" + "object-keys" "^1.1.1" + "object.assign" "^4.1.2" + "string.prototype.trimend" "^1.0.4" + "string.prototype.trimstart" "^1.0.4" + "unbox-primitive" "^1.0.1" + +"es-array-method-boxes-properly@^1.0.0": + "integrity" "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + "resolved" "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" + "version" "1.0.0" + +"es-get-iterator@^1.1.1": + "integrity" "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==" + "resolved" "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.0" + "has-symbols" "^1.0.1" + "is-arguments" "^1.1.0" + "is-map" "^2.0.2" + "is-set" "^2.0.2" + "is-string" "^1.0.5" + "isarray" "^2.0.5" + +"es-module-lexer@^0.9.0": + "integrity" "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + "resolved" "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz" + "version" "0.9.3" + +"es-shim-unscopables@^1.0.0": + "integrity" "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==" + "resolved" "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "has" "^1.0.3" + +"es-to-primitive@^1.2.1": + "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" + "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "is-callable" "^1.1.4" + "is-date-object" "^1.0.1" + "is-symbol" "^1.0.2" + +"es5-ext@^0.10.35", "es5-ext@^0.10.46", "es5-ext@^0.10.50", "es5-ext@^0.10.53", "es5-ext@^0.10.59", "es5-ext@~0.10.14", "es5-ext@~0.10.2", "es5-ext@~0.10.46": + "integrity" "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==" + "resolved" "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz" + "version" "0.10.61" + dependencies: + "es6-iterator" "^2.0.3" + "es6-symbol" "^3.1.3" + "next-tick" "^1.1.0" + +"es6-iterator@^2.0.3": + "integrity" "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=" + "resolved" "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "d" "1" + "es5-ext" "^0.10.35" + "es6-symbol" "^3.1.1" + +"es6-promise@^3.2.1": + "integrity" "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" + "resolved" "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz" + "version" "3.3.1" + +"es6-promise@^4.0.3": + "integrity" "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + "resolved" "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" + "version" "4.2.8" + +"es6-promisify@^5.0.0": + "integrity" "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=" + "resolved" "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "es6-promise" "^4.0.3" + +"es6-symbol@^3.1.1", "es6-symbol@^3.1.3": + "integrity" "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==" + "resolved" "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" + "version" "3.1.3" + dependencies: + "d" "^1.0.1" + "ext" "^1.1.2" + +"es6-weak-map@^2.0.3": + "integrity" "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==" + "resolved" "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "d" "1" + "es5-ext" "^0.10.46" + "es6-iterator" "^2.0.3" + "es6-symbol" "^3.1.1" + +"escalade@^3.1.1": + "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + "version" "3.1.1" + +"escape-goat@^2.0.0": + "integrity" "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" + "resolved" "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz" + "version" "2.1.1" + +"escape-html@^1.0.3", "escape-html@~1.0.3": + "integrity" "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + "version" "1.0.3" + +"escape-string-regexp@^1.0.2": + "integrity" "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "version" "1.0.5" + +"escape-string-regexp@^1.0.5": + "integrity" "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "version" "1.0.5" + +"escape-string-regexp@^2.0.0": + "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + "version" "2.0.0" + +"escape-string-regexp@^4.0.0": + "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + "version" "4.0.0" + +"escodegen@^1.8.1": + "integrity" "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==" + "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz" + "version" "1.14.3" + dependencies: + "esprima" "^4.0.1" + "estraverse" "^4.2.0" + "esutils" "^2.0.2" + "optionator" "^0.8.1" + optionalDependencies: + "source-map" "~0.6.1" + +"escodegen@^2.0.0": + "integrity" "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==" + "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz" + "version" "2.0.0" dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== - -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -handlebars@^4.7.6, handlebars@^4.7.7: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" + "esprima" "^4.0.1" + "estraverse" "^5.2.0" + "esutils" "^2.0.2" + "optionator" "^0.8.1" optionalDependencies: - uglify-js "^3.1.4" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-unicode@^2.0.0, has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hat@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/hat/-/hat-0.0.3.tgz#bb014a9e64b3788aed8005917413d4ff3d502d8a" - integrity sha1-uwFKnmSzeIrtgAWRdBPU/z1QLYo= - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -history@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/history/-/history-5.0.1.tgz#de35025ed08bce0db62364b47ebbf9d97b5eb06a" - integrity sha512-5qC/tFUKfVci5kzgRxZxN5Mf1CV8NmJx9ByaPX0YTLx5Vz3Svh7NYp6eA4CpDq4iA9D0C1t8BNIfvQIrUI3mVw== + "source-map" "~0.6.1" + +"eslint-config-prettier@^8.3.0": + "integrity" "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==" + "resolved" "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz" + "version" "8.5.0" + +"eslint-config-react-app@^6.0.0": + "integrity" "sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A==" + "resolved" "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "confusing-browser-globals" "^1.0.10" + +"eslint-import-resolver-node@^0.3.4", "eslint-import-resolver-node@^0.3.6": + "integrity" "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==" + "resolved" "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" + "version" "0.3.6" + dependencies: + "debug" "^3.2.7" + "resolve" "^1.20.0" + +"eslint-module-utils@^2.6.1", "eslint-module-utils@^2.7.3": + "integrity" "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==" + "resolved" "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz" + "version" "2.7.3" + dependencies: + "debug" "^3.2.7" + "find-up" "^2.1.0" + +"eslint-plugin-functional@3.2.1": + "integrity" "sha512-uJ8W0FznWsKp4exxO79b0xSc1WNROzDiVNGgSFOwdZCBeUHQf89BqwqlshNW9aSz/kg2gVGs+Ue6AeTpNSFM/g==" + "resolved" "https://registry.npmjs.org/eslint-plugin-functional/-/eslint-plugin-functional-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "@typescript-eslint/experimental-utils" "^4.9.1" + "array.prototype.flatmap" "^1.2.4" + "deepmerge" "^4.2.2" + "escape-string-regexp" "^4.0.0" + "object.fromentries" "^2.0.3" + +"eslint-plugin-import@^2.24.2": + "integrity" "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==" + "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" + "version" "2.26.0" + dependencies: + "array-includes" "^3.1.4" + "array.prototype.flat" "^1.2.5" + "debug" "^2.6.9" + "doctrine" "^2.1.0" + "eslint-import-resolver-node" "^0.3.6" + "eslint-module-utils" "^2.7.3" + "has" "^1.0.3" + "is-core-module" "^2.8.1" + "is-glob" "^4.0.3" + "minimatch" "^3.1.2" + "object.values" "^1.1.5" + "resolve" "^1.22.0" + "tsconfig-paths" "^3.14.1" + +"eslint-plugin-import@2.23.4": + "integrity" "sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ==" + "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz" + "version" "2.23.4" + dependencies: + "array-includes" "^3.1.3" + "array.prototype.flat" "^1.2.4" + "debug" "^2.6.9" + "doctrine" "^2.1.0" + "eslint-import-resolver-node" "^0.3.4" + "eslint-module-utils" "^2.6.1" + "find-up" "^2.0.0" + "has" "^1.0.3" + "is-core-module" "^2.4.0" + "minimatch" "^3.0.4" + "object.values" "^1.1.3" + "pkg-up" "^2.0.0" + "read-pkg-up" "^3.0.0" + "resolve" "^1.20.0" + "tsconfig-paths" "^3.9.0" + +"eslint-plugin-no-autofix@1.1.2": + "integrity" "sha512-8QBNR2gqciZuoa7x0Xr1ZUK8z8kuNYSgpGIrNnoiSlgT3KxaUeDjx5zxaEAm0F0V+6iqDFdqU/X8pCxgADS5Yg==" + "resolved" "https://registry.npmjs.org/eslint-plugin-no-autofix/-/eslint-plugin-no-autofix-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "eslint-rule-composer" "^0.3.0" + "find-up" "^5.0.0" + +"eslint-plugin-prettier@^4.0.0": + "integrity" "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==" + "resolved" "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "prettier-linter-helpers" "^1.0.0" + +"eslint-rule-composer@^0.3.0": + "integrity" "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==" + "resolved" "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz" + "version" "0.3.0" + +"eslint-scope@^3.7.1": + "integrity" "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz" + "version" "3.7.3" + dependencies: + "esrecurse" "^4.1.0" + "estraverse" "^4.1.1" + +"eslint-scope@^4.0.0", "eslint-scope@^4.0.3": + "integrity" "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "esrecurse" "^4.1.0" + "estraverse" "^4.1.1" + +"eslint-scope@^5.0.0", "eslint-scope@^5.1.1", "eslint-scope@5.1.1": + "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^4.1.1" + +"eslint-utils@^1.3.1": + "integrity" "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==" + "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz" + "version" "1.4.3" + dependencies: + "eslint-visitor-keys" "^1.1.0" + +"eslint-utils@^2.0.0": + "integrity" "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==" + "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "eslint-visitor-keys" "^1.1.0" + +"eslint-utils@^2.1.0": + "integrity" "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==" + "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "eslint-visitor-keys" "^1.1.0" + +"eslint-utils@^3.0.0": + "integrity" "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==" + "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "eslint-visitor-keys" "^2.0.0" + +"eslint-visitor-keys@^1.0.0", "eslint-visitor-keys@^1.1.0": + "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" + "version" "1.3.0" + +"eslint-visitor-keys@^1.3.0": + "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" + "version" "1.3.0" + +"eslint-visitor-keys@^2.0.0": + "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + "version" "2.1.0" + +"eslint@^5.0.0": + "integrity" "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==" + "resolved" "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz" + "version" "5.16.0" dependencies: - "@babel/runtime" "^7.7.6" + "@babel/code-frame" "^7.0.0" + "ajv" "^6.9.1" + "chalk" "^2.1.0" + "cross-spawn" "^6.0.5" + "debug" "^4.0.1" + "doctrine" "^3.0.0" + "eslint-scope" "^4.0.3" + "eslint-utils" "^1.3.1" + "eslint-visitor-keys" "^1.0.0" + "espree" "^5.0.1" + "esquery" "^1.0.1" + "esutils" "^2.0.2" + "file-entry-cache" "^5.0.1" + "functional-red-black-tree" "^1.0.1" + "glob" "^7.1.2" + "globals" "^11.7.0" + "ignore" "^4.0.6" + "import-fresh" "^3.0.0" + "imurmurhash" "^0.1.4" + "inquirer" "^6.2.2" + "js-yaml" "^3.13.0" + "json-stable-stringify-without-jsonify" "^1.0.1" + "levn" "^0.3.0" + "lodash" "^4.17.11" + "minimatch" "^3.0.4" + "mkdirp" "^0.5.1" + "natural-compare" "^1.4.0" + "optionator" "^0.8.2" + "path-is-inside" "^1.0.2" + "progress" "^2.0.0" + "regexpp" "^2.0.1" + "semver" "^5.5.1" + "strip-ansi" "^4.0.0" + "strip-json-comments" "^2.0.1" + "table" "^5.2.3" + "text-table" "^0.2.0" + +"eslint@^7.9.0", "eslint@7.29.0": + "integrity" "sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA==" + "resolved" "https://registry.npmjs.org/eslint/-/eslint-7.29.0.tgz" + "version" "7.29.0" + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.2" + "ajv" "^6.10.0" + "chalk" "^4.0.0" + "cross-spawn" "^7.0.2" + "debug" "^4.0.1" + "doctrine" "^3.0.0" + "enquirer" "^2.3.5" + "escape-string-regexp" "^4.0.0" + "eslint-scope" "^5.1.1" + "eslint-utils" "^2.1.0" + "eslint-visitor-keys" "^2.0.0" + "espree" "^7.3.1" + "esquery" "^1.4.0" + "esutils" "^2.0.2" + "fast-deep-equal" "^3.1.3" + "file-entry-cache" "^6.0.1" + "functional-red-black-tree" "^1.0.1" + "glob-parent" "^5.1.2" + "globals" "^13.6.0" + "ignore" "^4.0.6" + "import-fresh" "^3.0.0" + "imurmurhash" "^0.1.4" + "is-glob" "^4.0.0" + "js-yaml" "^3.13.1" + "json-stable-stringify-without-jsonify" "^1.0.1" + "levn" "^0.4.1" + "lodash.merge" "^4.6.2" + "minimatch" "^3.0.4" + "natural-compare" "^1.4.0" + "optionator" "^0.9.1" + "progress" "^2.0.0" + "regexpp" "^3.1.0" + "semver" "^7.2.1" + "strip-ansi" "^6.0.0" + "strip-json-comments" "^3.1.0" + "table" "^6.0.9" + "text-table" "^0.2.0" + "v8-compile-cache" "^2.0.3" + +"espree@^3.5.2": + "integrity" "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==" + "resolved" "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz" + "version" "3.5.4" + dependencies: + "acorn" "^5.5.0" + "acorn-jsx" "^3.0.0" + +"espree@^5.0.1": + "integrity" "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==" + "resolved" "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "acorn" "^6.0.7" + "acorn-jsx" "^5.0.0" + "eslint-visitor-keys" "^1.0.0" + +"espree@^6.2.1": + "integrity" "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==" + "resolved" "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz" + "version" "6.2.1" + dependencies: + "acorn" "^7.1.1" + "acorn-jsx" "^5.2.0" + "eslint-visitor-keys" "^1.1.0" + +"espree@^7.3.0", "espree@^7.3.1": + "integrity" "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==" + "resolved" "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" + "version" "7.3.1" + dependencies: + "acorn" "^7.4.0" + "acorn-jsx" "^5.3.1" + "eslint-visitor-keys" "^1.3.0" + +"esprima@^4.0.0", "esprima@^4.0.1": + "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + "version" "4.0.1" + +"esquery@^1.0.0", "esquery@^1.0.1", "esquery@^1.4.0": + "integrity" "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==" + "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "estraverse" "^5.1.0" + +"esrecurse@^4.1.0", "esrecurse@^4.3.0": + "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" + "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "estraverse" "^5.2.0" + +"estraverse@^4.1.1", "estraverse@^4.2.0": + "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + "version" "4.3.0" + +"estraverse@^5.1.0": + "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + "version" "5.3.0" + +"estraverse@^5.2.0": + "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + "version" "5.3.0" + +"estree-walker@^1.0.1": + "integrity" "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" + "resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz" + "version" "1.0.1" + +"esutils@^2.0.2": + "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + "version" "2.0.3" + +"etag@~1.8.1": + "integrity" "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + "version" "1.8.1" + +"event-emitter@^0.3.5": + "integrity" "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=" + "resolved" "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz" + "version" "0.3.5" + dependencies: + "d" "1" + "es5-ext" "~0.10.14" + +"event-target-shim@^5.0.0": + "integrity" "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + "resolved" "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + "version" "5.0.1" + +"eventemitter2@^6.3.1": + "integrity" "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==" + "resolved" "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz" + "version" "6.4.5" + +"eventemitter2@~0.4.14": + "integrity" "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=" + "resolved" "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" + "version" "0.4.14" + +"eventemitter2@~5.0.1", "eventemitter2@5.0.1": + "integrity" "sha1-YZegldX7a1folC9v1+qtY6CclFI=" + "resolved" "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz" + "version" "5.0.1" + +"eventemitter3@^3.0.0": + "integrity" "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz" + "version" "3.1.2" + +"eventemitter3@^4.0.0": + "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + "version" "4.0.7" + +"eventemitter3@^4.0.4": + "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + "version" "4.0.7" + +"eventemitter3@^4.0.7": + "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + "version" "4.0.7" + +"eventemitter3@1.x.x": + "integrity" "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=" + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz" + "version" "1.2.0" + +"events@^3.0.0": + "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + "version" "3.3.0" + +"events@^3.2.0": + "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + "version" "3.3.0" + +"events@1.1.1": + "integrity" "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + "resolved" "https://registry.npmjs.org/events/-/events-1.1.1.tgz" + "version" "1.1.1" + +"evp_bytestokey@^1.0.0", "evp_bytestokey@^1.0.3": + "integrity" "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==" + "resolved" "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "md5.js" "^1.3.4" + "safe-buffer" "^5.1.1" + +"exec-sh@^0.2.0": + "integrity" "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==" + "resolved" "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz" + "version" "0.2.2" + dependencies: + "merge" "^1.2.0" + +"execa@^5.0.0", "execa@^5.1.1": + "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" + "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "cross-spawn" "^7.0.3" + "get-stream" "^6.0.0" + "human-signals" "^2.1.0" + "is-stream" "^2.0.0" + "merge-stream" "^2.0.0" + "npm-run-path" "^4.0.1" + "onetime" "^5.1.2" + "signal-exit" "^3.0.3" + "strip-final-newline" "^2.0.0" + +"exit@^0.1.2": + "integrity" "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + "resolved" "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + "version" "0.1.2" + +"expand-brackets@^2.1.4": + "integrity" "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=" + "resolved" "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" + "version" "2.1.4" + dependencies: + "debug" "^2.3.3" + "define-property" "^0.2.5" + "extend-shallow" "^2.0.1" + "posix-character-classes" "^0.1.0" + "regex-not" "^1.0.0" + "snapdragon" "^0.8.1" + "to-regex" "^3.0.1" + +"expect@^27.5.1": + "integrity" "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==" + "resolved" "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/types" "^27.5.1" + "jest-get-type" "^27.5.1" + "jest-matcher-utils" "^27.5.1" + "jest-message-util" "^27.5.1" + +"express@^4.16.2", "express@^4.17.3": + "integrity" "sha512-EJEXxiTQJS3lIPrU1AE2vRuT7X7E+0KBbpm5GSoK524yl0K8X+er8zS2P14E64eqsVNoWbMCT7MpmQ+ErAhgRg==" + "resolved" "https://registry.npmjs.org/express/-/express-4.18.0.tgz" + "version" "4.18.0" + dependencies: + "accepts" "~1.3.8" + "array-flatten" "1.1.1" + "body-parser" "1.20.0" + "content-disposition" "0.5.4" + "content-type" "~1.0.4" + "cookie" "0.5.0" + "cookie-signature" "1.0.6" + "debug" "2.6.9" + "depd" "2.0.0" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "etag" "~1.8.1" + "finalhandler" "1.2.0" + "fresh" "0.5.2" + "http-errors" "2.0.0" + "merge-descriptors" "1.0.1" + "methods" "~1.1.2" + "on-finished" "2.4.1" + "parseurl" "~1.3.3" + "path-to-regexp" "0.1.7" + "proxy-addr" "~2.0.7" + "qs" "6.10.3" + "range-parser" "~1.2.1" + "safe-buffer" "5.2.1" + "send" "0.18.0" + "serve-static" "1.15.0" + "setprototypeof" "1.2.0" + "statuses" "2.0.1" + "type-is" "~1.6.18" + "utils-merge" "1.0.1" + "vary" "~1.1.2" + +"ext@^1.1.2": + "integrity" "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==" + "resolved" "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz" + "version" "1.6.0" + dependencies: + "type" "^2.5.0" + +"extend-shallow@^2.0.1": + "integrity" "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=" + "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "is-extendable" "^0.1.0" + +"extend-shallow@^3.0.0", "extend-shallow@^3.0.2": + "integrity" "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=" + "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "assign-symbols" "^1.0.0" + "is-extendable" "^1.0.1" + +"extend@^3.0.2", "extend@~3.0.2": + "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + "version" "3.0.2" + +"external-editor@^3.0.3": + "integrity" "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==" + "resolved" "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "chardet" "^0.7.0" + "iconv-lite" "^0.4.24" + "tmp" "^0.0.33" + +"extglob@^2.0.4": + "integrity" "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==" + "resolved" "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "array-unique" "^0.3.2" + "define-property" "^1.0.0" + "expand-brackets" "^2.1.4" + "extend-shallow" "^2.0.1" + "fragment-cache" "^0.2.1" + "regex-not" "^1.0.0" + "snapdragon" "^0.8.1" + "to-regex" "^3.0.1" + +"extract-zip@^2.0.0", "extract-zip@2.0.1": + "integrity" "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==" + "resolved" "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "debug" "^4.1.1" + "get-stream" "^5.1.0" + "yauzl" "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" -history@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b" - integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ== - dependencies: - "@babel/runtime" "^7.7.6" +"extsprintf@^1.2.0", "extsprintf@1.3.0": + "integrity" "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + "version" "1.3.0" -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" - integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== - dependencies: - lru-cache "^6.0.0" - -hotkeys-js@3.8.7: - version "3.8.7" - resolved "https://registry.yarnpkg.com/hotkeys-js/-/hotkeys-js-3.8.7.tgz#c16cab978b53d7242f860ca3932e976b92399981" - integrity sha512-ckAx3EkUr5XjDwjEHDorHxRO2Kb7z6Z2Sxul4MbBkN8Nho7XDslQsgMJT+CiJ5Z4TgRxxvKHEpuLE3imzqy4Lg== - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-element-map@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.3.1.tgz#44b2cbcfa7be7aa4ff59779e47e51012e1c73c08" - integrity sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg== - dependencies: - array.prototype.filter "^1.0.0" - call-bind "^1.0.2" - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-entities@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" - integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-minifier-terser@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" - integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== - dependencies: - camel-case "^4.1.1" - clean-css "^4.2.3" - commander "^4.1.1" - he "^1.2.0" - param-case "^3.0.3" - relateurl "^0.2.7" - terser "^4.6.3" - -html-webpack-plugin@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.3.2.tgz#7b04bf80b1f6fe84a6d3f66c8b79d64739321b08" - integrity sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ== - dependencies: - "@types/html-minifier-terser" "^5.0.0" - html-minifier-terser "^5.0.1" - lodash "^4.17.21" - pretty-error "^3.0.4" - tapable "^2.0.0" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.1" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== - -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -http-proxy-middleware@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz#7ef3417a479fb7666a571e09966c66a39bd2c15f" - integrity sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg== - dependencies: - "@types/http-proxy" "^1.17.5" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= - dependencies: - ms "^2.0.0" - -hyphenate-style-name@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" - integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== - -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= - -ignore-walk@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== - dependencies: - minimatch "^3.0.4" - -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^5.1.4, ignore@^5.1.8: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - -immer@^9.0.6: - version "9.0.6" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.6.tgz#7a96bf2674d06c8143e327cbf73539388ddf1a73" - integrity sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ== - -import-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" - integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== - dependencies: - import-from "^3.0.0" - -import-fresh@^3.1.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" - integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== - dependencies: - resolve-from "^5.0.0" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -infer-owner@^1.0.3, infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - -ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -init-package-json@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-2.0.5.tgz#78b85f3c36014db42d8f32117252504f68022646" - integrity sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA== - dependencies: - npm-package-arg "^8.1.5" - promzard "^0.3.0" - read "~1.0.1" - read-package-json "^4.1.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^3.0.0" - -inquirer@^7.3.3: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -internal-ip@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-6.2.0.tgz#d5541e79716e406b74ac6b07b856ef18dc1621c1" - integrity sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg== - dependencies: - default-gateway "^6.0.0" - ipaddr.js "^1.9.1" - is-ip "^3.1.0" - p-event "^4.2.0" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -interpret@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== - -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -io-ts@^2.1.2: - version "2.2.16" - resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.2.16.tgz#597dffa03db1913fc318c9c6df6931cb4ed808b2" - integrity sha512-y5TTSa6VP6le0hhmIyN0dqEXkrZeJLeC5KApJq6VLci3UEKF80lZ+KuoUs02RhBxNWlrqSNxzfI7otLX1Euv8Q== - -ip-regex@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" - integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.1, ipaddr.js@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -ipaddr.js@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" - integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4, is-arguments@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" +"fast-deep-equal@^2.0.1": + "integrity" "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz" + "version" "2.0.1" + +"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": + "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + "version" "3.1.3" -is-boolean-object@^1.0.1, is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== +"fast-diff@^1.1.2": + "integrity" "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==" + "resolved" "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" + "version" "1.2.0" + +"fast-glob@^3.1.1", "fast-glob@^3.2.7", "fast-glob@^3.2.9": + "integrity" "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==" + "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz" + "version" "3.2.11" dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + "glob-parent" "^5.1.2" + "merge2" "^1.3.0" + "micromatch" "^4.0.4" + +"fast-json-parse@^1.0.3": + "integrity" "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==" + "resolved" "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz" + "version" "1.0.3" + +"fast-json-patch@^3.0.0-1": + "integrity" "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==" + "resolved" "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz" + "version" "3.1.1" + +"fast-json-stable-stringify@^2.0.0", "fast-json-stable-stringify@2.x": + "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + "version" "2.1.0" + +"fast-levenshtein@^2.0.6", "fast-levenshtein@~2.0.6": + "integrity" "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + "version" "2.0.6" + +"fast-safe-stringify@^2.0.7": + "integrity" "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + "resolved" "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" + "version" "2.1.1" + +"fast-text-encoding@^1.0.0", "fast-text-encoding@^1.0.3": + "integrity" "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==" + "resolved" "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz" + "version" "1.0.3" + +"fastest-levenshtein@^1.0.12": + "integrity" "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==" + "resolved" "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz" + "version" "1.0.12" + +"fastq@^1.6.0": + "integrity" "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==" + "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" + "version" "1.13.0" + dependencies: + "reusify" "^1.0.4" + +"faye-websocket@^0.11.3": + "integrity" "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==" + "resolved" "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" + "version" "0.11.4" + dependencies: + "websocket-driver" ">=0.5.1" + +"fb-watchman@^2.0.0": + "integrity" "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==" + "resolved" "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "bser" "2.1.1" + +"fclone@~1.0.11", "fclone@1.0.11": + "integrity" "sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA=" + "resolved" "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz" + "version" "1.0.11" + +"fd-slicer@~1.1.0": + "integrity" "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=" + "resolved" "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "pend" "~1.2.0" + +"ffmpeg-static@^5.0.0": + "integrity" "sha512-z96jGVa8uCVMnyrTvbDZe0d5zbvIVQnfBN+vKDZoVK+ssYpfUJGEmo2DkuY43CA9Ytlsk+5ZVTFTqzvKw1gSaA==" + "resolved" "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "@derhuerst/http-basic" "^8.2.0" + "env-paths" "^2.2.0" + "https-proxy-agent" "^5.0.0" + "progress" "^2.0.3" + +"figgy-pudding@^3.5.1": + "integrity" "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + "resolved" "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz" + "version" "3.5.2" + +"figures@^2.0.0": + "integrity" "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=" + "resolved" "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "escape-string-regexp" "^1.0.5" + +"figures@^3.0.0": + "integrity" "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==" + "resolved" "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "escape-string-regexp" "^1.0.5" + +"file-entry-cache@^5.0.1": + "integrity" "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==" + "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "flat-cache" "^2.0.1" + +"file-entry-cache@^6.0.1": + "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" + "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "flat-cache" "^3.0.4" + +"file-loader@^6.2.0": + "integrity" "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==" + "resolved" "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "loader-utils" "^2.0.0" + "schema-utils" "^3.0.0" + +"file-type@^3.9.0": + "integrity" "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" + "resolved" "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz" + "version" "3.9.0" + +"file-uri-to-path@2": + "integrity" "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==" + "resolved" "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz" + "version" "2.0.0" + +"fill-range@^4.0.0": + "integrity" "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=" + "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "extend-shallow" "^2.0.1" + "is-number" "^3.0.0" + "repeat-string" "^1.6.1" + "to-regex-range" "^2.1.0" + +"fill-range@^7.0.1": + "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" + "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "to-regex-range" "^5.0.1" + +"filter-obj@^1.1.0": + "integrity" "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=" + "resolved" "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz" + "version" "1.1.0" + +"finalhandler@1.2.0": + "integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==" + "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "debug" "2.6.9" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "on-finished" "2.4.1" + "parseurl" "~1.3.3" + "statuses" "2.0.1" + "unpipe" "~1.0.0" + +"find-cache-dir@^2.1.0": + "integrity" "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==" + "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "commondir" "^1.0.1" + "make-dir" "^2.0.0" + "pkg-dir" "^3.0.0" + +"find-cache-dir@^3.3.1": + "integrity" "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==" + "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "commondir" "^1.0.1" + "make-dir" "^3.0.2" + "pkg-dir" "^4.1.0" + +"find-replace@^3.0.0": + "integrity" "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==" + "resolved" "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "array-back" "^3.0.1" + +"find-root@^1.1.0": + "integrity" "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + "resolved" "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" + "version" "1.1.0" + +"find-up@^2.0.0": + "integrity" "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "locate-path" "^2.0.0" + +"find-up@^2.1.0": + "integrity" "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "locate-path" "^2.0.0" + +"find-up@^3.0.0": + "integrity" "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "locate-path" "^3.0.0" + +"find-up@^4.0.0", "find-up@^4.1.0": + "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "locate-path" "^5.0.0" + "path-exists" "^4.0.0" + +"find-up@^5.0.0": + "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "locate-path" "^6.0.0" + "path-exists" "^4.0.0" + +"flat-cache@^2.0.1": + "integrity" "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==" + "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "flatted" "^2.0.0" + "rimraf" "2.6.3" + "write" "1.0.3" + +"flat-cache@^3.0.4": + "integrity" "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" + "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "flatted" "^3.1.0" + "rimraf" "^3.0.2" + +"flatted@^2.0.0": + "integrity" "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" + "resolved" "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz" + "version" "2.0.2" + +"flatted@^3.1.0": + "integrity" "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==" + "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz" + "version" "3.2.5" + +"flexlayout-react@^0.5.12": + "integrity" "sha512-H42iOL9IxidgWP8T1eQLPTzYrBXMFSDitV+yowVPr1inKB7XTb+fm3yZXR/Qt2BZiZF0/BMI+lpjXFtgFLvfJg==" + "resolved" "https://registry.npmjs.org/flexlayout-react/-/flexlayout-react-0.5.21.tgz" + "version" "0.5.21" + dependencies: + "uuid" "^8.3.2" + +"fluent-ffmpeg@^2.1.2": + "integrity" "sha1-yVLeIkD4EuvaCqgAbXd27irPfXQ=" + "resolved" "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz" + "version" "2.1.2" + dependencies: + "async" ">=0.2.9" + "which" "^1.1.1" + +"flush-write-stream@^1.0.0": + "integrity" "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==" + "resolved" "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "inherits" "^2.0.3" + "readable-stream" "^2.3.6" + +"follow-redirects@^1.0.0", "follow-redirects@^1.14.0", "follow-redirects@^1.14.4": + "integrity" "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" + "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz" + "version" "1.14.9" + +"for-in@^0.1.3": + "integrity" "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" + "resolved" "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz" + "version" "0.1.8" + +"for-in@^1.0.1", "for-in@^1.0.2": + "integrity" "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "resolved" "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" + "version" "1.0.2" + +"for-own@^0.1.3": + "integrity" "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=" + "resolved" "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz" + "version" "0.1.5" + dependencies: + "for-in" "^1.0.1" + +"foreach@^2.0.4": + "integrity" "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + "resolved" "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz" + "version" "2.0.5" + +"foreach@^2.0.5": + "integrity" "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + "resolved" "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz" + "version" "2.0.5" + +"forever-agent@~0.6.1": + "integrity" "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "resolved" "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + "version" "0.6.1" + +"form-data@^2.5.0": + "integrity" "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==" + "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz" + "version" "2.5.1" + dependencies: + "asynckit" "^0.4.0" + "combined-stream" "^1.0.6" + "mime-types" "^2.1.12" + +"form-data@^3.0.0": + "integrity" "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==" + "resolved" "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "asynckit" "^0.4.0" + "combined-stream" "^1.0.8" + "mime-types" "^2.1.12" + +"form-data@^4.0.0": + "integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==" + "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "asynckit" "^0.4.0" + "combined-stream" "^1.0.8" + "mime-types" "^2.1.12" + +"form-data@~2.3.2": + "integrity" "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==" + "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" + "version" "2.3.3" + dependencies: + "asynckit" "^0.4.0" + "combined-stream" "^1.0.6" + "mime-types" "^2.1.12" + +"formidable@^1.1.1", "formidable@^1.2.2": + "integrity" "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==" + "resolved" "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz" + "version" "1.2.6" + +"forwarded@0.2.0": + "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + "version" "0.2.0" + +"fp-ts@^2.5.3": + "integrity" "sha512-oxvgqUYR6O9VkKXrxkJ0NOyU0FrE705MeqgBUMEPWyTu6Pwn768cJbHChw2XOBlgFLKfIHxjr2OOBFpv2mUGZw==" + "resolved" "https://registry.npmjs.org/fp-ts/-/fp-ts-2.12.1.tgz" + "version" "2.12.1" + +"fragment-cache@^0.2.1": + "integrity" "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=" + "resolved" "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" + "version" "0.2.1" + dependencies: + "map-cache" "^0.2.2" + +"fresh@~0.5.2", "fresh@0.5.2": + "integrity" "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + "version" "0.5.2" + +"from2@^2.1.0": + "integrity" "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=" + "resolved" "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "inherits" "^2.0.1" + "readable-stream" "^2.0.0" + +"fromentries@^1.2.0", "fromentries@^1.3.2": + "integrity" "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==" + "resolved" "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz" + "version" "1.3.2" + +"fs-constants@^1.0.0": + "integrity" "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + "resolved" "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" + "version" "1.0.0" + +"fs-extra@^10.0.0": + "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + "version" "10.1.0" + dependencies: + "graceful-fs" "^4.2.0" + "jsonfile" "^6.0.1" + "universalify" "^2.0.0" + +"fs-extra@^8.1.0": + "integrity" "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + "version" "8.1.0" + dependencies: + "graceful-fs" "^4.2.0" + "jsonfile" "^4.0.0" + "universalify" "^0.1.0" + +"fs-extra@^9.1.0": + "integrity" "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + "version" "9.1.0" + dependencies: + "at-least-node" "^1.0.0" + "graceful-fs" "^4.2.0" + "jsonfile" "^6.0.1" + "universalify" "^2.0.0" + +"fs-minipass@^1.2.7": + "integrity" "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==" + "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz" + "version" "1.2.7" + dependencies: + "minipass" "^2.6.0" + +"fs-minipass@^2.0.0", "fs-minipass@^2.1.0": + "integrity" "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==" + "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "minipass" "^3.0.0" + +"fs-monkey@1.0.3": + "integrity" "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" + "resolved" "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz" + "version" "1.0.3" + +"fs-write-stream-atomic@^1.0.8": + "integrity" "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=" + "resolved" "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "graceful-fs" "^4.1.2" + "iferr" "^0.1.5" + "imurmurhash" "^0.1.4" + "readable-stream" "1 || 2" + +"fs.realpath@^1.0.0": + "integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "version" "1.0.0" + +"fs@0.0.1-security": + "integrity" "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=" + "resolved" "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz" + "version" "0.0.1-security" + +"ftp@^0.3.10": + "integrity" "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=" + "resolved" "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz" + "version" "0.3.10" + dependencies: + "readable-stream" "1.1.x" + "xregexp" "2.0.0" + +"function-bind@^1.1.1": + "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + "version" "1.1.1" + +"function.prototype.name@^1.1.2", "function.prototype.name@^1.1.3": + "integrity" "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==" + "resolved" "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" + "version" "1.1.5" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.0" + "functions-have-names" "^1.2.2" + +"functional-red-black-tree@^1.0.1": + "integrity" "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + "resolved" "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" + "version" "1.0.1" + +"functions-have-names@^1.2.2": + "integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + "resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + "version" "1.2.3" + +"gauge@^3.0.0": + "integrity" "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==" + "resolved" "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "aproba" "^1.0.3 || ^2.0.0" + "color-support" "^1.1.2" + "console-control-strings" "^1.0.0" + "has-unicode" "^2.0.1" + "object-assign" "^4.1.1" + "signal-exit" "^3.0.0" + "string-width" "^4.2.3" + "strip-ansi" "^6.0.1" + "wide-align" "^1.1.2" + +"gauge@~2.7.3": + "integrity" "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=" + "resolved" "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz" + "version" "2.7.4" + dependencies: + "aproba" "^1.0.3" + "console-control-strings" "^1.0.0" + "has-unicode" "^2.0.0" + "object-assign" "^4.1.0" + "signal-exit" "^3.0.0" + "string-width" "^1.0.1" + "strip-ansi" "^3.0.1" + "wide-align" "^1.1.0" + +"gaxios@^1.0.2", "gaxios@^1.0.4", "gaxios@^1.2.1", "gaxios@^1.2.2": + "integrity" "sha512-BoENMnu1Gav18HcpV9IleMPZ9exM+AvUjrAOV4Mzs/vfz2Lu/ABv451iEXByKiMPn2M140uul1txXCg83sAENw==" + "resolved" "https://registry.npmjs.org/gaxios/-/gaxios-1.8.4.tgz" + "version" "1.8.4" + dependencies: + "abort-controller" "^3.0.0" + "extend" "^3.0.2" + "https-proxy-agent" "^2.2.1" + "node-fetch" "^2.3.0" + +"gaxios@^4.0.0": + "integrity" "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==" + "resolved" "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz" + "version" "4.3.3" + dependencies: + "abort-controller" "^3.0.0" + "extend" "^3.0.2" + "https-proxy-agent" "^5.0.0" + "is-stream" "^2.0.0" + "node-fetch" "^2.6.7" + +"gcp-metadata@^1.0.0": + "integrity" "sha512-Q6HrgfrCQeEircnNP3rCcEgiDv7eF9+1B+1MMgpE190+/+0mjQR8PxeOaRgxZWmdDAF9EIryHB9g1moPiw1SbQ==" + "resolved" "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "gaxios" "^1.0.2" + "json-bigint" "^0.3.0" + +"gcp-metadata@^4.2.0": + "integrity" "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==" + "resolved" "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz" + "version" "4.3.1" + dependencies: + "gaxios" "^4.0.0" + "json-bigint" "^1.0.0" + +"generic-pool@3.8.2": + "integrity" "sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==" + "resolved" "https://registry.npmjs.org/generic-pool/-/generic-pool-3.8.2.tgz" + "version" "3.8.2" + +"gensync@^1.0.0-beta.2": + "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + "version" "1.0.0-beta.2" + +"get-caller-file@^2.0.1", "get-caller-file@^2.0.5": + "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + "version" "2.0.5" + +"get-intrinsic@^1.0.1", "get-intrinsic@^1.0.2", "get-intrinsic@^1.1.0", "get-intrinsic@^1.1.1": + "integrity" "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==" + "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "function-bind" "^1.1.1" + "has" "^1.0.3" + "has-symbols" "^1.0.1" + +"get-monorepo-packages@^1.1.0": + "integrity" "sha512-aDP6tH+eM3EuVSp3YyCutOcFS4Y9AhRRH9FAd+cjtR/g63Hx+DCXdKoP1ViRPUJz5wm+BOEXB4FhoffGHxJ7jQ==" + "resolved" "https://registry.npmjs.org/get-monorepo-packages/-/get-monorepo-packages-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "globby" "^7.1.1" + "load-json-file" "^4.0.0" + +"get-package-type@^0.1.0": + "integrity" "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" + "resolved" "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + "version" "0.1.0" + +"get-pkg-repo@^4.0.0": + "integrity" "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==" + "resolved" "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz" + "version" "4.2.1" + dependencies: + "@hutson/parse-repository-url" "^3.0.0" + "hosted-git-info" "^4.0.0" + "through2" "^2.0.0" + "yargs" "^16.2.0" -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +"get-port@^5.1.1": + "integrity" "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==" + "resolved" "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz" + "version" "5.1.1" -is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== +"get-stdin@^7.0.0": + "integrity" "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==" + "resolved" "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz" + "version" "7.0.0" -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== +"get-stream@^4.1.0": + "integrity" "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + "version" "4.1.0" dependencies: - ci-info "^2.0.0" + "pump" "^3.0.0" -is-ci@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" - integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== +"get-stream@^5.1.0": + "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + "version" "5.2.0" dependencies: - ci-info "^3.1.1" + "pump" "^3.0.0" -is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.6.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.7.0.tgz#3c0ef7d31b4acfc574f80c58409d568a836848e3" - integrity sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ== +"get-stream@^6.0.0": + "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + "version" "6.0.1" + +"get-symbol-description@^1.0.0": + "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" + "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + "version" "1.0.0" dependencies: - has "^1.0.3" + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.1" -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= +"get-uri@3": + "integrity" "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==" + "resolved" "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz" + "version" "3.0.2" dependencies: - kind-of "^3.0.2" + "@tootallnate/once" "1" + "data-uri-to-buffer" "3" + "debug" "4" + "file-uri-to-path" "2" + "fs-extra" "^8.1.0" + "ftp" "^0.3.10" + +"get-value@^2.0.3", "get-value@^2.0.6": + "integrity" "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + "resolved" "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" + "version" "2.0.6" + +"getpass@^0.1.1": + "integrity" "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=" + "resolved" "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" + "version" "0.1.7" + dependencies: + "assert-plus" "^1.0.0" + +"git-node-fs@^1.0.0": + "integrity" "sha1-SbIV4kLr5Dqkx1Ybu6SZUhdSCA8=" + "resolved" "https://registry.npmjs.org/git-node-fs/-/git-node-fs-1.0.0.tgz" + "version" "1.0.0" -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== +"git-raw-commits@^2.0.8": + "integrity" "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==" + "resolved" "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz" + "version" "2.0.11" dependencies: - kind-of "^6.0.0" + "dargs" "^7.0.0" + "lodash" "^4.17.15" + "meow" "^8.0.0" + "split2" "^3.0.0" + "through2" "^4.0.0" -is-date-object@^1.0.1, is-date-object@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== +"git-remote-origin-url@^2.0.0": + "integrity" "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=" + "resolved" "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "gitconfiglocal" "^1.0.0" + "pify" "^2.3.0" + +"git-semver-tags@^4.1.1": + "integrity" "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==" + "resolved" "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz" + "version" "4.1.1" + dependencies: + "meow" "^8.0.0" + "semver" "^6.0.0" + +"git-sha1@^0.1.2": + "integrity" "sha1-WZrBkrcYdYJeE6RF86bgURjC90U=" + "resolved" "https://registry.npmjs.org/git-sha1/-/git-sha1-0.1.2.tgz" + "version" "0.1.2" + +"git-up@^4.0.0": + "integrity" "sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==" + "resolved" "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz" + "version" "4.0.5" + dependencies: + "is-ssh" "^1.3.0" + "parse-url" "^6.0.0" + +"git-url-parse@^11.4.4": + "integrity" "sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==" + "resolved" "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.6.0.tgz" + "version" "11.6.0" + dependencies: + "git-up" "^4.0.0" + +"gitconfiglocal@^1.0.0": + "integrity" "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=" + "resolved" "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "ini" "^1.3.2" + +"gitlog@^4.0.3": + "integrity" "sha512-jeY2kO7CVyTa6cUM7ZD2ZxIyBkna1xvW2esV/3o8tbhiUneX1UBQCH4D9aMrHgGiohBjyXbuZogyjKXslnY5Yg==" + "resolved" "https://registry.npmjs.org/gitlog/-/gitlog-4.0.4.tgz" + "version" "4.0.4" + dependencies: + "debug" "^4.1.1" + "tslib" "^1.14.1" + +"glob-parent@^3.1.0": + "integrity" "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "is-glob" "^3.1.0" + "path-dirname" "^1.0.0" + +"glob-parent@^5.1.1": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "is-glob" "^4.0.1" + +"glob-parent@^5.1.2": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "is-glob" "^4.0.1" + +"glob-parent@^6.0.1": + "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "is-glob" "^4.0.3" + +"glob-parent@~5.1.0": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "is-glob" "^4.0.1" + +"glob-parent@~5.1.2": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "is-glob" "^4.0.1" + +"glob-to-regexp@^0.4.1": + "integrity" "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + "version" "0.4.1" + +"glob@^7.0.5", "glob@^7.1.1", "glob@^7.1.2", "glob@^7.1.3", "glob@^7.1.4", "glob@^7.1.6", "glob@^7.2.0": + "integrity" "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^3.0.4" + "once" "^1.3.0" + "path-is-absolute" "^1.0.0" + +"global-dirs@^3.0.0": + "integrity" "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==" + "resolved" "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ini" "2.0.0" + +"global@^4.4.0": + "integrity" "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==" + "resolved" "https://registry.npmjs.org/global/-/global-4.4.0.tgz" + "version" "4.4.0" + dependencies: + "min-document" "^2.19.0" + "process" "^0.11.10" + +"globals@^11.1.0", "globals@^11.7.0": + "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + "version" "11.12.0" + +"globals@^13.6.0": + "integrity" "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==" + "resolved" "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz" + "version" "13.13.0" + dependencies: + "type-fest" "^0.20.2" + +"globals@^13.9.0": + "integrity" "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==" + "resolved" "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz" + "version" "13.13.0" + dependencies: + "type-fest" "^0.20.2" + +"globals@^9.18.0": + "integrity" "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + "resolved" "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz" + "version" "9.18.0" + +"globby@^11.0.2", "globby@^11.0.3": + "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" + "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + "version" "11.1.0" + dependencies: + "array-union" "^2.1.0" + "dir-glob" "^3.0.1" + "fast-glob" "^3.2.9" + "ignore" "^5.2.0" + "merge2" "^1.4.1" + "slash" "^3.0.0" + +"globby@^7.1.1": + "integrity" "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=" + "resolved" "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz" + "version" "7.1.1" + dependencies: + "array-union" "^1.0.1" + "dir-glob" "^2.0.0" + "glob" "^7.1.2" + "ignore" "^3.3.5" + "pify" "^3.0.0" + "slash" "^1.0.0" + +"google-auth-library@^3.0.0": + "integrity" "sha512-cDQMzTotwyWMrg5jRO7q0A4TL/3GWBgO7I7q5xGKNiiFf9SmGY/OJ1YsLMgI2MVHHsEGyrqYnbnmV1AE+Z6DnQ==" + "resolved" "https://registry.npmjs.org/google-auth-library/-/google-auth-library-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "base64-js" "^1.3.0" + "fast-text-encoding" "^1.0.0" + "gaxios" "^1.2.1" + "gcp-metadata" "^1.0.0" + "gtoken" "^2.3.2" + "https-proxy-agent" "^2.2.1" + "jws" "^3.1.5" + "lru-cache" "^5.0.0" + "semver" "^5.5.0" + +"google-auth-library@^7.14.0": + "integrity" "sha512-5Rk7iLNDFhFeBYc3s8l1CqzbEBcdhwR193RlD4vSNFajIcINKI8W8P0JLmBpwymHqqWbX34pJDQu39cSy/6RsA==" + "resolved" "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.14.1.tgz" + "version" "7.14.1" + dependencies: + "arrify" "^2.0.0" + "base64-js" "^1.3.0" + "ecdsa-sig-formatter" "^1.0.11" + "fast-text-encoding" "^1.0.0" + "gaxios" "^4.0.0" + "gcp-metadata" "^4.2.0" + "gtoken" "^5.0.4" + "jws" "^4.0.0" + "lru-cache" "^6.0.0" + +"google-gax@^2.24.1", "google-gax@^2.30.1": + "integrity" "sha512-BCNCT26kb0iC52zj2SosyOZMhI5sVfXuul1h0Aw5uT9nGAbmS5eOvQ49ft53ft6XotDj11sUSDV6XESEiQqCqg==" + "resolved" "https://registry.npmjs.org/google-gax/-/google-gax-2.30.2.tgz" + "version" "2.30.2" + dependencies: + "@grpc/grpc-js" "~1.6.0" + "@grpc/proto-loader" "^0.6.1" + "@types/long" "^4.0.0" + "abort-controller" "^3.0.0" + "duplexify" "^4.0.0" + "fast-text-encoding" "^1.0.3" + "google-auth-library" "^7.14.0" + "is-stream-ended" "^0.1.4" + "node-fetch" "^2.6.1" + "object-hash" "^3.0.0" + "proto3-json-serializer" "^0.1.8" + "protobufjs" "6.11.2" + "retry-request" "^4.0.0" + +"google-p12-pem@^1.0.0": + "integrity" "sha512-50rTrqYPTPPwlu9TNl/HkJbBENEpbRzTOVLFJ4YWM86njZgXHFy+FP+tLRSd9m132Li9Dqi27Z3KIWDEv5y+EA==" + "resolved" "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "node-forge" "^0.10.0" + "pify" "^4.0.0" + +"google-p12-pem@^3.1.3": + "integrity" "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==" + "resolved" "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz" + "version" "3.1.4" + dependencies: + "node-forge" "^1.3.1" + +"googleapis-common@^0.7.0": + "integrity" "sha512-9DEJIiO4nS7nw0VE1YVkEfXEj8x8MxsuB+yZIpOBULFSN9OIKcUU8UuKgSZFU4lJmRioMfngktrbkMwWJcUhQg==" + "resolved" "https://registry.npmjs.org/googleapis-common/-/googleapis-common-0.7.2.tgz" + "version" "0.7.2" + dependencies: + "gaxios" "^1.2.2" + "google-auth-library" "^3.0.0" + "pify" "^4.0.0" + "qs" "^6.5.2" + "url-template" "^2.0.8" + "uuid" "^3.2.1" + +"googleapis@^39.2.0": + "integrity" "sha512-66X8TG1B33zAt177sG1CoKoYHPP/B66tEpnnSANGCqotMuY5gqSQO8G/0gqHZR2jRgc5CHSSNOJCnpI0SuDxMQ==" + "resolved" "https://registry.npmjs.org/googleapis/-/googleapis-39.2.0.tgz" + "version" "39.2.0" + dependencies: + "google-auth-library" "^3.0.0" + "googleapis-common" "^0.7.0" + +"got@^9.6.0": + "integrity" "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==" + "resolved" "https://registry.npmjs.org/got/-/got-9.6.0.tgz" + "version" "9.6.0" + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + "cacheable-request" "^6.0.0" + "decompress-response" "^3.3.0" + "duplexer3" "^0.1.4" + "get-stream" "^4.1.0" + "lowercase-keys" "^1.0.1" + "mimic-response" "^1.0.1" + "p-cancelable" "^1.0.0" + "to-readable-stream" "^1.0.0" + "url-parse-lax" "^3.0.0" + +"gpt-3-encoder@^1.1.3": + "integrity" "sha512-Ep1+I5hQ5VcLF5qKc2FyqvSj2T0Al9LNC0uXNq6Cx0Twl6Gq2RWG7Q5Mo/9Of30xcAegsgemNtuulPEiwanUww==" + "resolved" "https://registry.npmjs.org/gpt-3-encoder/-/gpt-3-encoder-1.1.3.tgz" + "version" "1.1.3" + +"graceful-fs@^4.1.11", "graceful-fs@^4.1.15", "graceful-fs@^4.1.2", "graceful-fs@^4.1.3", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.2", "graceful-fs@^4.2.3", "graceful-fs@^4.2.4", "graceful-fs@^4.2.6", "graceful-fs@^4.2.9": + "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" + "version" "4.2.10" + +"grad-school@0.0.4": + "integrity" "sha512-wIaLSmqqMNiNJGMUq45jokvb+pTW0xe52k1+iY5aQgGNVM9xf1OpWuIDqHxxSqlRf/nqt0D/NIpj61+2z87q+g==" + "resolved" "https://registry.npmjs.org/grad-school/-/grad-school-0.0.4.tgz" + "version" "0.0.4" + +"graphql-client@^2.0.1": + "integrity" "sha512-XXdjUD3mwsBDcUB7g+iXQeRt+3gmIbvA/Yx1nE5aq2RQmaJwiH4hEoYw27AW8cDR90pCrPlHJAb1jJq3zUMbZA==" + "resolved" "https://registry.npmjs.org/graphql-client/-/graphql-client-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "isomorphic-fetch" "^2.2.1" + +"grawlix-racism@^1.0.2": + "integrity" "sha1-oSsykVxfwwl5lYHgVeMKYJ6dizw=" + "resolved" "https://registry.npmjs.org/grawlix-racism/-/grawlix-racism-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "grawlix" "^1.0.6" + "underscore" "^1.8.3" + +"grawlix@^1.0.6": + "integrity" "sha1-xteMefmTQR47UdA/oRyn/HfahPQ=" + "resolved" "https://registry.npmjs.org/grawlix/-/grawlix-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "underscore" "^1.8.3" + +"gtoken@^2.3.2": + "integrity" "sha512-EaB49bu/TCoNeQjhCYKI/CurooBKkGxIqFHsWABW0b25fobBYVTMe84A8EBVVZhl8emiUdNypil9huMOTmyAnw==" + "resolved" "https://registry.npmjs.org/gtoken/-/gtoken-2.3.3.tgz" + "version" "2.3.3" + dependencies: + "gaxios" "^1.0.4" + "google-p12-pem" "^1.0.0" + "jws" "^3.1.5" + "mime" "^2.2.0" + "pify" "^4.0.0" + +"gtoken@^5.0.4": + "integrity" "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==" + "resolved" "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz" + "version" "5.3.2" + dependencies: + "gaxios" "^4.0.0" + "google-p12-pem" "^3.1.3" + "jws" "^4.0.0" + +"gzip-size@^6.0.0": + "integrity" "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==" + "resolved" "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "duplexer" "^0.1.2" + +"handle-thing@^2.0.0": + "integrity" "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + "resolved" "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" + "version" "2.0.1" + +"handlebars@*", "handlebars@^4.7.7": + "integrity" "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==" + "resolved" "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" + "version" "4.7.7" + dependencies: + "minimist" "^1.2.5" + "neo-async" "^2.6.0" + "source-map" "^0.6.1" + "wordwrap" "^1.0.0" + optionalDependencies: + "uglify-js" "^3.1.4" + +"har-schema@^2.0.0": + "integrity" "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "resolved" "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" + "version" "2.0.0" + +"har-validator@~5.1.3": + "integrity" "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==" + "resolved" "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" + "version" "5.1.5" + dependencies: + "ajv" "^6.12.3" + "har-schema" "^2.0.0" + +"hard-rejection@^2.1.0": + "integrity" "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" + "resolved" "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz" + "version" "2.1.0" + +"harmony-reflect@^1.4.3": + "integrity" "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==" + "resolved" "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" + "version" "1.6.2" + +"has-ansi@^2.0.0": + "integrity" "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=" + "resolved" "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "ansi-regex" "^2.0.0" + +"has-bigints@^1.0.1", "has-bigints@^1.0.2": + "integrity" "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + "version" "1.0.2" + +"has-flag@^3.0.0": + "integrity" "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + "version" "3.0.0" + +"has-flag@^4.0.0": + "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + "version" "4.0.0" + +"has-property-descriptors@^1.0.0": + "integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==" + "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "get-intrinsic" "^1.1.1" + +"has-symbols@^1.0.1", "has-symbols@^1.0.2", "has-symbols@^1.0.3": + "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + "version" "1.0.3" + +"has-tostringtag@^1.0.0": + "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" + "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "has-symbols" "^1.0.2" + +"has-unicode@^2.0.0", "has-unicode@^2.0.1": + "integrity" "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "resolved" "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + "version" "2.0.1" + +"has-value@^0.3.1": + "integrity" "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=" + "resolved" "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" + "version" "0.3.1" + dependencies: + "get-value" "^2.0.3" + "has-values" "^0.1.4" + "isobject" "^2.0.0" + +"has-value@^1.0.0": + "integrity" "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=" + "resolved" "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "get-value" "^2.0.6" + "has-values" "^1.0.0" + "isobject" "^3.0.0" + +"has-values@^0.1.4": + "integrity" "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + "resolved" "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" + "version" "0.1.4" + +"has-values@^1.0.0": + "integrity" "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=" + "resolved" "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "is-number" "^3.0.0" + "kind-of" "^4.0.0" + +"has-yarn@^2.1.0": + "integrity" "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + "resolved" "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz" + "version" "2.1.0" + +"has@^1.0.3": + "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" + "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "function-bind" "^1.1.1" + +"hash-base@^3.0.0": + "integrity" "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==" + "resolved" "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "inherits" "^2.0.4" + "readable-stream" "^3.6.0" + "safe-buffer" "^5.2.0" + +"hash.js@^1.0.0", "hash.js@^1.0.3": + "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" + "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + "version" "1.1.7" + dependencies: + "inherits" "^2.0.3" + "minimalistic-assert" "^1.0.1" + +"hat@0.0.3": + "integrity" "sha1-uwFKnmSzeIrtgAWRdBPU/z1QLYo=" + "resolved" "https://registry.npmjs.org/hat/-/hat-0.0.3.tgz" + "version" "0.0.3" + +"he@^1.2.0": + "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + "version" "1.2.0" + +"history@^5.0.1", "history@^5.2.0": + "integrity" "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==" + "resolved" "https://registry.npmjs.org/history/-/history-5.3.0.tgz" + "version" "5.3.0" dependencies: - has-tostringtag "^1.0.0" + "@babel/runtime" "^7.7.6" -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== +"hmac-drbg@^1.0.1": + "integrity" "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=" + "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "hash.js" "^1.0.3" + "minimalistic-assert" "^1.0.0" + "minimalistic-crypto-utils" "^1.0.1" + +"hoist-non-react-statics@^3.0.0": + "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==" + "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "react-is" "^16.7.0" + +"hoist-non-react-statics@^3.3.0", "hoist-non-react-statics@^3.3.1", "hoist-non-react-statics@^3.3.2": + "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==" + "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "react-is" "^16.7.0" + +"hosted-git-info@^2.1.4": + "integrity" "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" + "version" "2.8.9" + +"hosted-git-info@^4.0.0", "hosted-git-info@^4.0.1": + "integrity" "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==" + "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "lru-cache" "^6.0.0" + +"hotkeys-js@3.8.7": + "integrity" "sha512-ckAx3EkUr5XjDwjEHDorHxRO2Kb7z6Z2Sxul4MbBkN8Nho7XDslQsgMJT+CiJ5Z4TgRxxvKHEpuLE3imzqy4Lg==" + "resolved" "https://registry.npmjs.org/hotkeys-js/-/hotkeys-js-3.8.7.tgz" + "version" "3.8.7" + +"hpack.js@^2.1.6": + "integrity" "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=" + "resolved" "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" + "version" "2.1.6" + dependencies: + "inherits" "^2.0.1" + "obuf" "^1.0.0" + "readable-stream" "^2.0.1" + "wbuf" "^1.1.0" + +"html-element-map@^1.2.0": + "integrity" "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==" + "resolved" "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz" + "version" "1.3.1" + dependencies: + "array.prototype.filter" "^1.0.0" + "call-bind" "^1.0.2" + +"html-encoding-sniffer@^2.0.1": + "integrity" "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==" + "resolved" "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "whatwg-encoding" "^1.0.5" + +"html-entities@^2.3.2": + "integrity" "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" + "resolved" "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz" + "version" "2.3.3" + +"html-escaper@^2.0.0": + "integrity" "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + "resolved" "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + "version" "2.0.2" + +"html-minifier-terser@^6.0.2": + "integrity" "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==" + "resolved" "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "camel-case" "^4.1.2" + "clean-css" "^5.2.2" + "commander" "^8.3.0" + "he" "^1.2.0" + "param-case" "^3.0.4" + "relateurl" "^0.2.7" + "terser" "^5.10.0" + +"html-webpack-plugin@^5.3.2": + "integrity" "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==" + "resolved" "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz" + "version" "5.5.0" + dependencies: + "@types/html-minifier-terser" "^6.0.0" + "html-minifier-terser" "^6.0.2" + "lodash" "^4.17.21" + "pretty-error" "^4.0.0" + "tapable" "^2.0.0" + +"htmlparser2@^6.1.0": + "integrity" "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==" + "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "domelementtype" "^2.0.1" + "domhandler" "^4.0.0" + "domutils" "^2.5.2" + "entities" "^2.0.0" + +"http-assert@^1.3.0": + "integrity" "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==" + "resolved" "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz" + "version" "1.5.0" + dependencies: + "deep-equal" "~1.0.1" + "http-errors" "~1.8.0" + +"http-cache-semantics@^4.0.0", "http-cache-semantics@^4.1.0": + "integrity" "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" + "version" "4.1.0" + +"http-deceiver@^1.2.7": + "integrity" "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + "resolved" "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" + "version" "1.2.7" + +"http-errors@^1.6.3", "http-errors@^1.7.3", "http-errors@~1.8.0": + "integrity" "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==" + "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz" + "version" "1.8.1" + dependencies: + "depd" "~1.1.2" + "inherits" "2.0.4" + "setprototypeof" "1.2.0" + "statuses" ">= 1.5.0 < 2" + "toidentifier" "1.0.1" + +"http-errors@~1.6.2": + "integrity" "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=" + "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + "version" "1.6.3" + dependencies: + "depd" "~1.1.2" + "inherits" "2.0.3" + "setprototypeof" "1.1.0" + "statuses" ">= 1.4.0 < 2" + +"http-errors@2.0.0": + "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" + "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "depd" "2.0.0" + "inherits" "2.0.4" + "setprototypeof" "1.2.0" + "statuses" "2.0.1" + "toidentifier" "1.0.1" + +"http-parser-js@>=0.5.1": + "integrity" "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==" + "resolved" "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz" + "version" "0.5.6" + +"http-proxy-agent@^4.0.0", "http-proxy-agent@^4.0.1": + "integrity" "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==" + "resolved" "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" + "version" "4.0.1" dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" + "@tootallnate/once" "1" + "agent-base" "6" + "debug" "4" + +"http-proxy-agent@^5.0.0": + "integrity" "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==" + "resolved" "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "@tootallnate/once" "2" + "agent-base" "6" + "debug" "4" + +"http-proxy-middleware@^2.0.3": + "integrity" "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==" + "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" + "version" "2.0.6" + dependencies: + "@types/http-proxy" "^1.17.8" + "http-proxy" "^1.18.1" + "is-glob" "^4.0.1" + "is-plain-obj" "^3.0.0" + "micromatch" "^4.0.2" + +"http-proxy@^1.18.1": + "integrity" "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==" + "resolved" "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" + "version" "1.18.1" + dependencies: + "eventemitter3" "^4.0.0" + "follow-redirects" "^1.0.0" + "requires-port" "^1.0.0" + +"http-proxy@1.11.1": + "integrity" "sha1-cd9VdX6ALVjqgQ3yJEAZ3aBa6F0=" + "resolved" "https://registry.npmjs.org/http-proxy/-/http-proxy-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "eventemitter3" "1.x.x" + "requires-port" "0.x.x" + +"http-response-object@^3.0.1": + "integrity" "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==" + "resolved" "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "@types/node" "^10.0.3" + +"http-signature@~1.2.0": + "integrity" "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=" + "resolved" "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "assert-plus" "^1.0.0" + "jsprim" "^1.2.2" + "sshpk" "^1.7.0" + +"http-status-codes@^2.1.4": + "integrity" "sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==" + "resolved" "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.2.0.tgz" + "version" "2.2.0" + +"http2-client@^1.2.5": + "integrity" "sha512-nUxLymWQ9pzkzTmir24p2RtsgruLmhje7lH3hLX1IpwvyTg77fW+1brenPPP3USAR+rQ36p5sTA/x7sjCJVkAA==" + "resolved" "https://registry.npmjs.org/http2-client/-/http2-client-1.3.3.tgz" + "version" "1.3.3" + +"https-browserify@^1.0.0": + "integrity" "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + "resolved" "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" + "version" "1.0.0" + +"https-proxy-agent@^2.2.1": + "integrity" "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==" + "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz" + "version" "2.2.4" + dependencies: + "agent-base" "^4.3.0" + "debug" "^3.1.0" + +"https-proxy-agent@^5.0.0", "https-proxy-agent@5": + "integrity" "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==" + "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "agent-base" "6" + "debug" "4" + +"https-proxy-agent@5.0.0": + "integrity" "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==" + "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "agent-base" "6" + "debug" "4" + +"human-signals@^2.1.0": + "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + "version" "2.1.0" + +"humanize-ms@^1.2.1": + "integrity" "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=" + "resolved" "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "ms" "^2.0.0" + +"hyphenate-style-name@^1.0.2", "hyphenate-style-name@^1.0.3": + "integrity" "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" + "resolved" "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz" + "version" "1.0.4" + +"iconv-lite@^0.4.24", "iconv-lite@^0.4.4", "iconv-lite@0.4.24": + "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + "version" "0.4.24" + dependencies: + "safer-buffer" ">= 2.1.2 < 3" + +"iconv-lite@^0.6.2": + "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + "version" "0.6.3" + dependencies: + "safer-buffer" ">= 2.1.2 < 3.0.0" + +"iconv-lite@^0.6.3": + "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + "version" "0.6.3" + dependencies: + "safer-buffer" ">= 2.1.2 < 3.0.0" + +"icss-utils@^5.0.0", "icss-utils@^5.1.0": + "integrity" "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" + "resolved" "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" + "version" "5.1.0" + +"ieee754@^1.1.13", "ieee754@^1.1.4", "ieee754@1.1.13": + "integrity" "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz" + "version" "1.1.13" + +"iferr@^0.1.5": + "integrity" "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + "resolved" "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz" + "version" "0.1.5" + +"ignore-by-default@^1.0.1": + "integrity" "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" + "resolved" "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz" + "version" "1.0.1" + +"ignore-walk@^3.0.3": + "integrity" "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==" + "resolved" "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "minimatch" "^3.0.4" + +"ignore@^3.3.5": + "integrity" "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz" + "version" "3.3.10" + +"ignore@^4.0.6": + "integrity" "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" + "version" "4.0.6" + +"ignore@^5.1.2", "ignore@^5.1.8", "ignore@^5.2.0": + "integrity" "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" + "version" "5.2.0" + +"image-size@^0.7.3": + "integrity" "sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g==" + "resolved" "https://registry.npmjs.org/image-size/-/image-size-0.7.5.tgz" + "version" "0.7.5" + +"immer@^9.0.7": + "integrity" "sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==" + "resolved" "https://registry.npmjs.org/immer/-/immer-9.0.12.tgz" + "version" "9.0.12" + +"import-cwd@^3.0.0": + "integrity" "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==" + "resolved" "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "import-from" "^3.0.0" + +"import-fresh@^3.0.0", "import-fresh@^3.1.0", "import-fresh@^3.2.1": + "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" + "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "parent-module" "^1.0.0" + "resolve-from" "^4.0.0" + +"import-from@^3.0.0": + "integrity" "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==" + "resolved" "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "resolve-from" "^5.0.0" + +"import-lazy@^2.1.0": + "integrity" "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + "resolved" "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz" + "version" "2.1.0" + +"import-local@^3.0.2": + "integrity" "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==" + "resolved" "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "pkg-dir" "^4.2.0" + "resolve-cwd" "^3.0.0" + +"imurmurhash@^0.1.4": + "integrity" "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + "version" "0.1.4" + +"indent-string@^4.0.0": + "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + "version" "4.0.0" + +"infer-owner@^1.0.3", "infer-owner@^1.0.4": + "integrity" "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + "resolved" "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" + "version" "1.0.4" + +"inflation@^2.0.0": + "integrity" "sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8=" + "resolved" "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz" + "version" "2.0.0" + +"inflection@^1.13.2": + "integrity" "sha512-cmZlljCRTBFouT8UzMzrGcVEvkv6D/wBdcdKG7J1QH5cXjtU75Dm+P27v9EKu/Y43UYyCJd1WC4zLebRrC8NBw==" + "resolved" "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz" + "version" "1.13.2" + +"inflight@^1.0.4": + "integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "once" "^1.3.0" + "wrappy" "1" + +"infobox-parser@^3.4.1": + "integrity" "sha512-lasdwvbtjCtDDO6mArAs/ueFEnBJRyo2UbZPAkd5rEG5NVJ3XFCOvbMwNTT/rJlFv1+ORw8D3UvZV4brpgATCg==" + "resolved" "https://registry.npmjs.org/infobox-parser/-/infobox-parser-3.6.2.tgz" + "version" "3.6.2" + dependencies: + "camelcase" "^4.1.0" + +"inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.1", "inherits@~2.0.3", "inherits@~2.0.4", "inherits@2", "inherits@2.0.4": + "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + "version" "2.0.4" + +"inherits@2.0.1": + "integrity" "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version" "2.0.1" + +"inherits@2.0.3": + "integrity" "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + "version" "2.0.3" + +"ini@^1.3.2", "ini@^1.3.4", "ini@^1.3.5", "ini@~1.3.0": + "integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + "version" "1.3.8" + +"ini@2.0.0": + "integrity" "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" + "resolved" "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" + "version" "2.0.0" + +"init-package-json@^2.0.2": + "integrity" "sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA==" + "resolved" "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.5.tgz" + "version" "2.0.5" + dependencies: + "npm-package-arg" "^8.1.5" + "promzard" "^0.3.0" + "read" "~1.0.1" + "read-package-json" "^4.1.1" + "semver" "^7.3.5" + "validate-npm-package-license" "^3.0.4" + "validate-npm-package-name" "^3.0.0" + +"inline-style-prefixer@^3.0.3": + "integrity" "sha1-hVG45bTVcyROZqNLBPfTIHaitTQ=" + "resolved" "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz" + "version" "3.0.8" + dependencies: + "bowser" "^1.7.3" + "css-in-js-utils" "^2.0.0" + +"inquirer@^6.2.2": + "integrity" "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==" + "resolved" "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz" + "version" "6.5.2" + dependencies: + "ansi-escapes" "^3.2.0" + "chalk" "^2.4.2" + "cli-cursor" "^2.1.0" + "cli-width" "^2.0.0" + "external-editor" "^3.0.3" + "figures" "^2.0.0" + "lodash" "^4.17.12" + "mute-stream" "0.0.7" + "run-async" "^2.2.0" + "rxjs" "^6.4.0" + "string-width" "^2.1.0" + "strip-ansi" "^5.1.0" + "through" "^2.3.6" + +"inquirer@^7.3.3": + "integrity" "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==" + "resolved" "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz" + "version" "7.3.3" + dependencies: + "ansi-escapes" "^4.2.1" + "chalk" "^4.1.0" + "cli-cursor" "^3.1.0" + "cli-width" "^3.0.0" + "external-editor" "^3.0.3" + "figures" "^3.0.0" + "lodash" "^4.17.19" + "mute-stream" "0.0.8" + "run-async" "^2.4.0" + "rxjs" "^6.6.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + "through" "^2.3.6" + +"inquirer@^8.2.0": + "integrity" "sha512-jmoBlmWUChXgVi1wGDZsD7pWCaibJKmL+8+E2jaiWiRj8OlJLwQdQQS2CIjgvdg8UUHX+oyagQKicVVcqwxi9Q==" + "resolved" "https://registry.npmjs.org/inquirer/-/inquirer-8.2.3.tgz" + "version" "8.2.3" + dependencies: + "ansi-escapes" "^4.2.1" + "chalk" "^4.1.1" + "cli-cursor" "^3.1.0" + "cli-width" "^3.0.0" + "external-editor" "^3.0.3" + "figures" "^3.0.0" + "lodash" "^4.17.21" + "mute-stream" "0.0.8" + "ora" "^5.4.1" + "run-async" "^2.4.0" + "rxjs" "^7.5.5" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + "through" "^2.3.6" + "wrap-ansi" "^7.0.0" + +"instagram-private-api@1.45.3": + "integrity" "sha512-IybVclR0Ahh01rn/4r9sxRn4vkfbfMXAXFVljsGk51mfL/EyyP6Yn+aWIxbG/JboArR1POJzaFI5bQOR99R3xA==" + "resolved" "https://registry.npmjs.org/instagram-private-api/-/instagram-private-api-1.45.3.tgz" + "version" "1.45.3" + dependencies: + "@lifeomic/attempt" "^3.0.0" + "@types/chance" "^1.0.2" + "@types/request-promise" "^4.1.43" + "bluebird" "^3.7.1" + "chance" "^1.0.18" + "class-transformer" "^0.3.1" + "debug" "^4.1.1" + "image-size" "^0.7.3" + "json-bigint" "^1.0.0" + "lodash" "^4.17.20" + "luxon" "^1.12.1" + "reflect-metadata" "^0.1.13" + "request" "^2.88.0" + "request-promise" "^4.2.4" + "rxjs" "^6.5.2" + "snakecase-keys" "^3.1.0" + "tough-cookie" "^2.5.0" + "ts-custom-error" "^2.2.2" + "ts-xor" "^1.0.6" + "url-regex-safe" "^3.0.0" + "utility-types" "^3.10.0" + +"internal-slot@^1.0.3": + "integrity" "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==" + "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "get-intrinsic" "^1.1.0" + "has" "^1.0.3" + "side-channel" "^1.0.4" + +"interpret@^2.2.0": + "integrity" "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" + "resolved" "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz" + "version" "2.2.0" + +"invariant@^2.2.2": + "integrity" "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==" + "resolved" "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + "version" "2.2.4" + dependencies: + "loose-envify" "^1.0.0" + +"io-ts@^2.1.2": + "integrity" "sha512-y5TTSa6VP6le0hhmIyN0dqEXkrZeJLeC5KApJq6VLci3UEKF80lZ+KuoUs02RhBxNWlrqSNxzfI7otLX1Euv8Q==" + "resolved" "https://registry.npmjs.org/io-ts/-/io-ts-2.2.16.tgz" + "version" "2.2.16" + +"ip-regex@4.3.0": + "integrity" "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==" + "resolved" "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz" + "version" "4.3.0" + +"ip@^1.1.5": + "integrity" "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + "resolved" "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz" + "version" "1.1.5" + +"ipaddr.js@^2.0.1": + "integrity" "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" + "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" + "version" "2.0.1" + +"ipaddr.js@1.9.1": + "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + "version" "1.9.1" + +"is-accessor-descriptor@^0.1.6": + "integrity" "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=" + "resolved" "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" + "version" "0.1.6" + dependencies: + "kind-of" "^3.0.2" + +"is-accessor-descriptor@^1.0.0": + "integrity" "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==" + "resolved" "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "kind-of" "^6.0.0" + +"is-arguments@^1.0.4", "is-arguments@^1.1.0": + "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==" + "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "call-bind" "^1.0.2" + "has-tostringtag" "^1.0.0" + +"is-arrayish@^0.2.1": + "integrity" "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + "version" "0.2.1" + +"is-bigint@^1.0.1": + "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" + "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "has-bigints" "^1.0.1" + +"is-binary-path@^1.0.0": + "integrity" "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=" + "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "binary-extensions" "^1.0.0" + +"is-binary-path@~2.1.0": + "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" + "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "binary-extensions" "^2.0.0" + +"is-boolean-object@^1.0.1", "is-boolean-object@^1.1.0": + "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" + "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "call-bind" "^1.0.2" + "has-tostringtag" "^1.0.0" + +"is-buffer@^1.0.2", "is-buffer@^1.1.5", "is-buffer@~1.1.6": + "integrity" "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" + "version" "1.1.6" + +"is-callable@^1.1.4", "is-callable@^1.1.5", "is-callable@^1.2.4": + "integrity" "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz" + "version" "1.2.4" + +"is-ci@^2.0.0": + "integrity" "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==" + "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "ci-info" "^2.0.0" + +"is-core-module@^2.4.0", "is-core-module@^2.5.0", "is-core-module@^2.8.1": + "integrity" "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==" + "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz" + "version" "2.9.0" + dependencies: + "has" "^1.0.3" -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== +"is-data-descriptor@^0.1.4": + "integrity" "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=" + "resolved" "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" + "version" "0.1.4" dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" + "kind-of" "^3.0.2" -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== +"is-data-descriptor@^1.0.0": + "integrity" "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==" + "resolved" "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "kind-of" "^6.0.0" -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= +"is-date-object@^1.0.1", "is-date-object@^1.0.2": + "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" + "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "has-tostringtag" "^1.0.0" -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== +"is-descriptor@^0.1.0": + "integrity" "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==" + "resolved" "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" + "version" "0.1.6" dependencies: - is-plain-object "^2.0.4" + "is-accessor-descriptor" "^0.1.6" + "is-data-descriptor" "^0.1.4" + "kind-of" "^5.0.0" + +"is-descriptor@^1.0.0", "is-descriptor@^1.0.2": + "integrity" "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==" + "resolved" "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "is-accessor-descriptor" "^1.0.0" + "is-data-descriptor" "^1.0.0" + "kind-of" "^6.0.2" -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +"is-docker@^2.0.0", "is-docker@^2.1.1": + "integrity" "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + "version" "2.2.1" + +"is-extendable@^0.1.0", "is-extendable@^0.1.1": + "integrity" "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" + "version" "0.1.1" + +"is-extendable@^1.0.1": + "integrity" "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==" + "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "is-plain-object" "^2.0.4" + +"is-extglob@^2.1.0", "is-extglob@^2.1.1": + "integrity" "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + "version" "2.1.1" -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= +"is-fullwidth-code-point@^1.0.0": + "integrity" "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" + "version" "1.0.0" dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.2.tgz#859fc2e731e58c902f99fcabccb75a7dd07d29d8" - integrity sha512-ZZTOjRcDjuAAAv2cTBQP/lL59ZTArx77+7UzHdWW/XB1mrfp7DEaVpKmZ0XIzx+M7AxfhKcqV+nMetUQmFifwg== - dependencies: - is-extglob "^2.1.1" - -is-in-browser@^1.0.2, is-in-browser@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" - integrity sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU= - -is-installed-globally@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" - integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== - dependencies: - global-dirs "^3.0.0" - is-path-inside "^3.0.2" - -is-ip@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" - integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== - dependencies: - ip-regex "^4.0.0" - -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= - -is-map@^2.0.1, is-map@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" - integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-npm@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" - integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== - -is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-inside@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-obj@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-regex@^1.0.4, is-regex@^1.0.5, is-regex@^1.1.0, is-regex@^1.1.1, is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-set@^2.0.1, is-set@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" - integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== - -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== - -is-ssh@^1.3.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.3.tgz#7f133285ccd7f2c2c7fc897b771b53d95a2b2c7e" - integrity sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ== - dependencies: - protocols "^1.1.0" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-subset@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" - integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY= - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-text-path@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" - integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= - dependencies: - text-extensions "^1.0.0" - -is-typed-array@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79" - integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-abstract "^1.18.5" - foreach "^2.0.5" - has-tostringtag "^1.0.0" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-weakmap@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" - integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== - -is-weakref@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-weakset@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" - integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.1.tgz#e8900b3ed6069759229cf30f7067388d148aeb5e" - integrity sha512-GvCYYTxaCPqwMjobtVcVKvSHtAGe48MNhGjpK8LtVF8K0ISX7hCKl85LgtuaSneWVyQmaGcW3iXVV3GaZSLpmQ== - -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" + "number-is-nan" "^1.0.0" + +"is-fullwidth-code-point@^2.0.0": + "integrity" "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + "version" "2.0.0" + +"is-fullwidth-code-point@^3.0.0": + "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + "version" "3.0.0" + +"is-fullwidth-code-point@^4.0.0": + "integrity" "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" + "version" "4.0.0" + +"is-generator-fn@^2.0.0": + "integrity" "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" + "resolved" "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + "version" "2.1.0" + +"is-generator-function@^1.0.7": + "integrity" "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==" + "resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-glob@^3.1.0": + "integrity" "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=" + "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "is-extglob" "^2.1.0" + +"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1": + "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" + "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "is-extglob" "^2.1.1" + +"is-in-browser@^1.0.2", "is-in-browser@^1.1.3": + "integrity" "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=" + "resolved" "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz" + "version" "1.1.3" + +"is-installed-globally@^0.4.0": + "integrity" "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==" + "resolved" "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" + "version" "0.4.0" + dependencies: + "global-dirs" "^3.0.0" + "is-path-inside" "^3.0.2" + +"is-interactive@^1.0.0": + "integrity" "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" + "resolved" "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + "version" "1.0.0" + +"is-lambda@^1.0.1": + "integrity" "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=" + "resolved" "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" + "version" "1.0.1" + +"is-map@^2.0.1", "is-map@^2.0.2": + "integrity" "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" + "resolved" "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" + "version" "2.0.2" + +"is-negative-zero@^2.0.2": + "integrity" "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" + "version" "2.0.2" + +"is-npm@^5.0.0": + "integrity" "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" + "resolved" "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz" + "version" "5.0.0" + +"is-number-object@^1.0.4": + "integrity" "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==" + "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-number@^3.0.0": + "integrity" "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=" + "resolved" "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "kind-of" "^3.0.2" + +"is-number@^7.0.0": + "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + "version" "7.0.0" + +"is-obj@^2.0.0": + "integrity" "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" + "version" "2.0.0" + +"is-path-inside@^3.0.2": + "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + "version" "3.0.3" + +"is-plain-obj@^1.0.0", "is-plain-obj@^1.1.0": + "integrity" "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" + "version" "1.1.0" + +"is-plain-obj@^2.0.0": + "integrity" "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" + "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" + "version" "2.1.0" + +"is-plain-obj@^3.0.0": + "integrity" "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" + "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" + "version" "3.0.0" + +"is-plain-object@^2.0.1": + "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" + "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "isobject" "^3.0.1" + +"is-plain-object@^2.0.3": + "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" + "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "isobject" "^3.0.1" + +"is-plain-object@^2.0.4": + "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" + "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "isobject" "^3.0.1" + +"is-plain-object@^5.0.0": + "integrity" "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" + "version" "5.0.0" + +"is-potential-custom-element-name@^1.0.1": + "integrity" "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + "resolved" "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" + "version" "1.0.1" + +"is-promise@^2.2.2": + "integrity" "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + "resolved" "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz" + "version" "2.2.2" + +"is-regex@^1.0.4", "is-regex@^1.0.5", "is-regex@^1.1.0", "is-regex@^1.1.1", "is-regex@^1.1.4": + "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" + "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + "version" "1.1.4" + dependencies: + "call-bind" "^1.0.2" + "has-tostringtag" "^1.0.0" + +"is-set@^2.0.1", "is-set@^2.0.2": + "integrity" "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" + "resolved" "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" + "version" "2.0.2" + +"is-shared-array-buffer@^1.0.2": + "integrity" "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==" + "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.2" + +"is-ssh@^1.3.0": + "integrity" "sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ==" + "resolved" "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.3.tgz" + "version" "1.3.3" + dependencies: + "protocols" "^1.1.0" + +"is-stream-ended@^0.1.4": + "integrity" "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" + "resolved" "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz" + "version" "0.1.4" + +"is-stream@^1.0.1": + "integrity" "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + "version" "1.1.0" + +"is-stream@^2.0.0": + "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + "version" "2.0.1" + +"is-string@^1.0.5", "is-string@^1.0.7": + "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" + "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-subset@^0.1.1": + "integrity" "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=" + "resolved" "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz" + "version" "0.1.1" + +"is-symbol@^1.0.2", "is-symbol@^1.0.3": + "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" + "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "has-symbols" "^1.0.2" + +"is-text-path@^1.0.1": + "integrity" "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=" + "resolved" "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "text-extensions" "^1.0.0" + +"is-typed-array@^1.1.7": + "integrity" "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==" + "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz" + "version" "1.1.8" + dependencies: + "available-typed-arrays" "^1.0.5" + "call-bind" "^1.0.2" + "es-abstract" "^1.18.5" + "foreach" "^2.0.5" + "has-tostringtag" "^1.0.0" + +"is-typedarray@^1.0.0", "is-typedarray@~1.0.0": + "integrity" "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + "version" "1.0.0" + +"is-unicode-supported@^0.1.0": + "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + "version" "0.1.0" + +"is-weakmap@^2.0.1": + "integrity" "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" + "resolved" "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" + "version" "2.0.1" + +"is-weakref@^1.0.2": + "integrity" "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==" + "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.2" + +"is-weakset@^2.0.1": + "integrity" "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==" + "resolved" "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.1" + +"is-windows@^1.0.2": + "integrity" "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + "resolved" "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" + "version" "1.0.2" + +"is-wsl@^1.1.0": + "integrity" "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" + "version" "1.1.0" + +"is-wsl@^2.2.0": + "integrity" "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==" + "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "is-docker" "^2.0.0" + +"is-yarn-global@^0.3.0": + "integrity" "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + "resolved" "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" + "version" "0.3.0" + +"isarray@^1.0.0", "isarray@~1.0.0", "isarray@1.0.0": + "integrity" "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "version" "1.0.0" + +"isarray@^2.0.5": + "integrity" "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" + "version" "2.0.5" + +"isarray@0.0.1": + "integrity" "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "version" "0.0.1" + +"isexe@^2.0.0": + "integrity" "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + "version" "2.0.0" + +"isobject@^2.0.0": + "integrity" "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=" + "resolved" "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "isarray" "1.0.0" + +"isobject@^3.0.0", "isobject@^3.0.1": + "integrity" "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + "version" "3.0.1" + +"isomorphic-fetch@^2.2.1": + "integrity" "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=" + "resolved" "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz" + "version" "2.2.1" + dependencies: + "node-fetch" "^1.0.1" + "whatwg-fetch" ">=0.10.0" + +"isstream@~0.1.2": + "integrity" "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "resolved" "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + "version" "0.1.2" + +"istanbul-lib-coverage@^3.0.0", "istanbul-lib-coverage@^3.2.0": + "integrity" "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" + "version" "3.2.0" + +"istanbul-lib-instrument@^5.0.4", "istanbul-lib-instrument@^5.1.0": + "integrity" "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==" + "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -java-properties@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/java-properties/-/java-properties-1.0.2.tgz#ccd1fa73907438a5b5c38982269d0e771fe78211" - integrity sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ== - -jest-changed-files@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.2.3.tgz#83c42171d87c26d5a72e8464412cc4e239c01dda" - integrity sha512-UiT98eMtPySry7E0RmkDTL/GyoZBvJVWZBlHpHYc3ilRLxHBUxPkbMK/bcImDJKqyKbj83EaeIpeaMXPlPQ72A== - dependencies: - "@jest/types" "^27.2.3" - execa "^5.0.0" - throat "^6.0.1" - -jest-circus@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.2.3.tgz#e46ed567b316323f0b7c12dc72cd12fe46656356" - integrity sha512-msCZkvudSDhUtCCEU/Dsnp5DRzX5MQGwfuRjDwhxJxjSJ0g4c3Qwhk5Q2AjFjZS9EVm4qs9fGCf+W3BU69h3pw== - dependencies: - "@jest/environment" "^27.2.3" - "@jest/test-result" "^27.2.3" - "@jest/types" "^27.2.3" + "istanbul-lib-coverage" "^3.2.0" + "semver" "^6.3.0" + +"istanbul-lib-report@^3.0.0": + "integrity" "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "istanbul-lib-coverage" "^3.0.0" + "make-dir" "^3.0.0" + "supports-color" "^7.1.0" + +"istanbul-lib-source-maps@^4.0.0": + "integrity" "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "debug" "^4.1.1" + "istanbul-lib-coverage" "^3.0.0" + "source-map" "^0.6.1" + +"istanbul-reports@^3.1.3": + "integrity" "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==" + "resolved" "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz" + "version" "3.1.4" + dependencies: + "html-escaper" "^2.0.0" + "istanbul-lib-report" "^3.0.0" + +"iterate-object@^1.3.0", "iterate-object@^1.3.1": + "integrity" "sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==" + "resolved" "https://registry.npmjs.org/iterate-object/-/iterate-object-1.3.4.tgz" + "version" "1.3.4" + +"jasmine-check@^1.0.0-rc.0": + "integrity" "sha1-EXcowVAHjs8hGYbF8WQnW3HpN6Q=" + "resolved" "https://registry.npmjs.org/jasmine-check/-/jasmine-check-1.0.0-rc.0.tgz" + "version" "1.0.0-rc.0" + dependencies: + "testcheck" "^1.0.0-rc" + +"java-properties@^1.0.0": + "integrity" "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==" + "resolved" "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz" + "version" "1.0.2" + +"jest-changed-files@^27.5.1": + "integrity" "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==" + "resolved" "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/types" "^27.5.1" + "execa" "^5.0.0" + "throat" "^6.0.1" + +"jest-circus@^27.5.1": + "integrity" "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==" + "resolved" "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - expect "^27.2.3" - is-generator-fn "^2.0.0" - jest-each "^27.2.3" - jest-matcher-utils "^27.2.3" - jest-message-util "^27.2.3" - jest-runtime "^27.2.3" - jest-snapshot "^27.2.3" - jest-util "^27.2.3" - pretty-format "^27.2.3" - slash "^3.0.0" - stack-utils "^2.0.3" - throat "^6.0.1" - -jest-cli@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.2.3.tgz#68add5b1626bd5502df6c7a4a4d574ebf797221a" - integrity sha512-QHXxxqE1zxMlti6wIHSbkl4Brg5Dnc0xzAVqRlVa6y2Ygv2X4ejhfMjl4VB5gWeHNsVA9C+KOm8TawpjZX8d3g== - dependencies: - "@jest/core" "^27.2.3" - "@jest/test-result" "^27.2.3" - "@jest/types" "^27.2.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - import-local "^3.0.2" - jest-config "^27.2.3" - jest-util "^27.2.3" - jest-validate "^27.2.3" - prompts "^2.0.1" - yargs "^16.0.3" - -jest-config@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.2.3.tgz#64606cd1f194fb9527cbbc3e4ff23b324653b992" - integrity sha512-15fKPBZ+eiDUj02bENeBNL6IrH9ZQg7mcOlJ+SG8HwEkjpy0K+NHAREFIJbPFBaq75syWk9SYkB77fH0XtoZOQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^27.2.3" - "@jest/types" "^27.2.3" - babel-jest "^27.2.3" - chalk "^4.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - is-ci "^3.0.0" - jest-circus "^27.2.3" - jest-environment-jsdom "^27.2.3" - jest-environment-node "^27.2.3" - jest-get-type "^27.0.6" - jest-jasmine2 "^27.2.3" - jest-regex-util "^27.0.6" - jest-resolve "^27.2.3" - jest-runner "^27.2.3" - jest-util "^27.2.3" - jest-validate "^27.2.3" - micromatch "^4.0.4" - pretty-format "^27.2.3" - -jest-diff@^26.0.0: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" - integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-diff@^27.0.0: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.2.2.tgz#3992fe5f55f209676c5d3fd956e3f3d4145f76b8" - integrity sha512-o3LaDbQDSaMJif4yztJAULI4xVatxbBasbKLbEw3K8CiRdDdbxMrLArS9EKDHQFYh6Tgfrm1PC2mIYR1xhu0hQ== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.0.6" - jest-get-type "^27.0.6" - pretty-format "^27.2.2" - -jest-diff@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.2.3.tgz#4298ecc53f7476571d0625e8fda3ade13607a864" - integrity sha512-ihRKT1mbm/Lw+vaB1un4BEof3WdfYIXT0VLvEyLUTU3XbIUgyiljis3YzFf2RFn+ECFAeyilqJa35DeeRV2NeQ== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.0.6" - jest-get-type "^27.0.6" - pretty-format "^27.2.3" - -jest-docblock@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.6.tgz#cc78266acf7fe693ca462cbbda0ea4e639e4e5f3" - integrity sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA== - dependencies: - detect-newline "^3.0.0" - -jest-each@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.2.3.tgz#7eaf7c7b362019f23c5a7998b57d82e78e6f6672" - integrity sha512-Aza5Lr+tml8x+rBGsi3A8VLqhYN1UBa2M7FLtgkUvVFQBORlV9irLl/ZE0tvk4hRqp4jW7nbGDrRo2Ey8Wl9rg== - dependencies: - "@jest/types" "^27.2.3" - chalk "^4.0.0" - jest-get-type "^27.0.6" - jest-util "^27.2.3" - pretty-format "^27.2.3" - -jest-environment-jsdom@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.2.3.tgz#36ad673f93f1948dd5daa6dcb1c9b1ad09d60165" - integrity sha512-QEcgd5bloEfugjvYFACFtFkn5sW9fGYS/vJaTQZ2kj8/q1semDYWssbUWeT8Lmm/4utv9G50+bTq/vGP/LZwvQ== - dependencies: - "@jest/environment" "^27.2.3" - "@jest/fake-timers" "^27.2.3" - "@jest/types" "^27.2.3" + "chalk" "^4.0.0" + "co" "^4.6.0" + "dedent" "^0.7.0" + "expect" "^27.5.1" + "is-generator-fn" "^2.0.0" + "jest-each" "^27.5.1" + "jest-matcher-utils" "^27.5.1" + "jest-message-util" "^27.5.1" + "jest-runtime" "^27.5.1" + "jest-snapshot" "^27.5.1" + "jest-util" "^27.5.1" + "pretty-format" "^27.5.1" + "slash" "^3.0.0" + "stack-utils" "^2.0.3" + "throat" "^6.0.1" + +"jest-cli@^27.0.6", "jest-cli@^27.5.1": + "integrity" "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==" + "resolved" "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/core" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "chalk" "^4.0.0" + "exit" "^0.1.2" + "graceful-fs" "^4.2.9" + "import-local" "^3.0.2" + "jest-config" "^27.5.1" + "jest-util" "^27.5.1" + "jest-validate" "^27.5.1" + "prompts" "^2.0.1" + "yargs" "^16.2.0" + +"jest-config@^27.5.1": + "integrity" "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==" + "resolved" "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@babel/core" "^7.8.0" + "@jest/test-sequencer" "^27.5.1" + "@jest/types" "^27.5.1" + "babel-jest" "^27.5.1" + "chalk" "^4.0.0" + "ci-info" "^3.2.0" + "deepmerge" "^4.2.2" + "glob" "^7.1.1" + "graceful-fs" "^4.2.9" + "jest-circus" "^27.5.1" + "jest-environment-jsdom" "^27.5.1" + "jest-environment-node" "^27.5.1" + "jest-get-type" "^27.5.1" + "jest-jasmine2" "^27.5.1" + "jest-regex-util" "^27.5.1" + "jest-resolve" "^27.5.1" + "jest-runner" "^27.5.1" + "jest-util" "^27.5.1" + "jest-validate" "^27.5.1" + "micromatch" "^4.0.4" + "parse-json" "^5.2.0" + "pretty-format" "^27.5.1" + "slash" "^3.0.0" + "strip-json-comments" "^3.1.1" + +"jest-diff@^26.0.0": + "integrity" "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==" + "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz" + "version" "26.6.2" + dependencies: + "chalk" "^4.0.0" + "diff-sequences" "^26.6.2" + "jest-get-type" "^26.3.0" + "pretty-format" "^26.6.2" + +"jest-diff@^27.5.1": + "integrity" "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==" + "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "chalk" "^4.0.0" + "diff-sequences" "^27.5.1" + "jest-get-type" "^27.5.1" + "pretty-format" "^27.5.1" + +"jest-docblock@^27.5.1": + "integrity" "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==" + "resolved" "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "detect-newline" "^3.0.0" + +"jest-each@^27.5.1": + "integrity" "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==" + "resolved" "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/types" "^27.5.1" + "chalk" "^4.0.0" + "jest-get-type" "^27.5.1" + "jest-util" "^27.5.1" + "pretty-format" "^27.5.1" + +"jest-environment-jsdom@^27.5.1": + "integrity" "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==" + "resolved" "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^27.2.3" - jest-util "^27.2.3" - jsdom "^16.6.0" - -jest-environment-node@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.2.3.tgz#651b15f52310b12660a5fd53812b8b2e696ee9b9" - integrity sha512-OmxFyQ81n1pQ+WJW7tOkGPQL/nt0+UeubHlZJEdAzuOvYAA8zleamw0BpK7QsITdJ5euSI6t/HW3a5ihqMB4yQ== - dependencies: - "@jest/environment" "^27.2.3" - "@jest/fake-timers" "^27.2.3" - "@jest/types" "^27.2.3" + "jest-mock" "^27.5.1" + "jest-util" "^27.5.1" + "jsdom" "^16.6.0" + +"jest-environment-node@^27.5.1": + "integrity" "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==" + "resolved" "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^27.2.3" - jest-util "^27.2.3" + "jest-mock" "^27.5.1" + "jest-util" "^27.5.1" -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== +"jest-get-type@^26.3.0": + "integrity" "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz" + "version" "26.3.0" -jest-get-type@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe" - integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg== +"jest-get-type@^27.5.1": + "integrity" "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" + "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" + "version" "27.5.1" -jest-haste-map@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.2.3.tgz#cec807c59c312872f0ea4cc1b6b5ca7b46131705" - integrity sha512-5KE0vRSGv1Ymhd6s1t6xhTm/77otdkzqJl+9pSIYfKKCKJ7cniyE2zVC/Xj2HKuMX++aJYzQvQCIS0kqIFukAw== +"jest-haste-map@^27.5.1": + "integrity" "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==" + "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz" + "version" "27.5.1" dependencies: - "@jest/types" "^27.2.3" + "@jest/types" "^27.5.1" "@types/graceful-fs" "^4.1.2" "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^27.0.6" - jest-serializer "^27.0.6" - jest-util "^27.2.3" - jest-worker "^27.2.3" - micromatch "^4.0.4" - walker "^1.0.7" + "anymatch" "^3.0.3" + "fb-watchman" "^2.0.0" + "graceful-fs" "^4.2.9" + "jest-regex-util" "^27.5.1" + "jest-serializer" "^27.5.1" + "jest-util" "^27.5.1" + "jest-worker" "^27.5.1" + "micromatch" "^4.0.4" + "walker" "^1.0.7" optionalDependencies: - fsevents "^2.3.2" - -jest-jasmine2@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.2.3.tgz#19fe549b7e86128cd7d0d1668ebf4377dd3981f9" - integrity sha512-pjgANGYj1l6qxBkSPEYuxGvqVVf20uJ26XpNnYV/URC7ayt+UdRavUhEwzDboiewq/lCgNFCDBEqd6eeQVEs8w== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^27.2.3" - "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.2.3" - "@jest/types" "^27.2.3" + "fsevents" "^2.3.2" + +"jest-jasmine2@^27.5.1": + "integrity" "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==" + "resolved" "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/environment" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.2.3" - is-generator-fn "^2.0.0" - jest-each "^27.2.3" - jest-matcher-utils "^27.2.3" - jest-message-util "^27.2.3" - jest-runtime "^27.2.3" - jest-snapshot "^27.2.3" - jest-util "^27.2.3" - pretty-format "^27.2.3" - throat "^6.0.1" - -jest-leak-detector@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.2.3.tgz#6c60a795fe9b07442c604140373571559d4d467d" - integrity sha512-hoV8d7eJvayIaPrISBoLaMN0DE+GRSR2/vbAcOONffO+RYzbuW3klsOievx+pCShYKxSKlhxxO90zWice+LLew== - dependencies: - jest-get-type "^27.0.6" - pretty-format "^27.2.3" - -jest-matcher-utils@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.2.3.tgz#db7f992f3921f5004f4de36aafa0c03f2565122a" - integrity sha512-8n2/iAEOtNoDxVtUuaGtQdbSVYtZn6saT+PyV8UIf9fJErzDdozjB4fUxJm7TX1DzhhoAKFpIFH8UNvG4942PA== - dependencies: - chalk "^4.0.0" - jest-diff "^27.2.3" - jest-get-type "^27.0.6" - pretty-format "^27.2.3" - -jest-message-util@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.2.3.tgz#cd1091a3f0f3ff919756b15cfccc0ba43eeeeff0" - integrity sha512-yjVqTQ2Ds1WCGXsTuW0m1uK8RXOE44SJDw7tWUrhn6ZttWDbPmLhH8npDsGGfAmSayKFSo2C0NX0tP2qblc3Gw== + "chalk" "^4.0.0" + "co" "^4.6.0" + "expect" "^27.5.1" + "is-generator-fn" "^2.0.0" + "jest-each" "^27.5.1" + "jest-matcher-utils" "^27.5.1" + "jest-message-util" "^27.5.1" + "jest-runtime" "^27.5.1" + "jest-snapshot" "^27.5.1" + "jest-util" "^27.5.1" + "pretty-format" "^27.5.1" + "throat" "^6.0.1" + +"jest-leak-detector@^27.5.1": + "integrity" "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==" + "resolved" "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "jest-get-type" "^27.5.1" + "pretty-format" "^27.5.1" + +"jest-matcher-utils@^27.5.1": + "integrity" "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==" + "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "chalk" "^4.0.0" + "jest-diff" "^27.5.1" + "jest-get-type" "^27.5.1" + "pretty-format" "^27.5.1" + +"jest-message-util@^27.5.1": + "integrity" "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==" + "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz" + "version" "27.5.1" dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.2.3" + "@jest/types" "^27.5.1" "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.4" - pretty-format "^27.2.3" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.2.3.tgz#f532d2c8c158e8b899f2a0a5bd3077af37619c29" - integrity sha512-IvgCdUQBU/XDJl9/NLYtKG9o2XlJOQ8hFYDiX7QmNv2195Y1nNGM7hw1H58wT01zz7bohfhJplqwFfULZlrXjg== - dependencies: - "@jest/types" "^27.2.3" + "chalk" "^4.0.0" + "graceful-fs" "^4.2.9" + "micromatch" "^4.0.4" + "pretty-format" "^27.5.1" + "slash" "^3.0.0" + "stack-utils" "^2.0.3" + +"jest-mock-extended@1.0.16": + "integrity" "sha512-W1lI7cO0ZYmTQUBZH11nSDKyU36SxAyzBjZNxBWcpFnCKHGNWIPdFA8RJMhmobLQ8WLI4y9AMIbYzMN9q/GiRQ==" + "resolved" "https://registry.npmjs.org/jest-mock-extended/-/jest-mock-extended-1.0.16.tgz" + "version" "1.0.16" + dependencies: + "ts-essentials" "^4.0.0" + +"jest-mock@^27.5.1": + "integrity" "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==" + "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/types" "^27.5.1" "@types/node" "*" -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.6.tgz#02e112082935ae949ce5d13b2675db3d8c87d9c5" - integrity sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ== - -jest-resolve-dependencies@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.3.tgz#fcb620684108fe7a099185052434d26f17de98e6" - integrity sha512-H03NyzmKfYHCciaYBJqbJOrWCVCdwdt32xZDPFP5dBbe39wsfz41aOkhw8FUZ6qVYVO6rz0nLZ3G7wgbsQQsYQ== - dependencies: - "@jest/types" "^27.2.3" - jest-regex-util "^27.0.6" - jest-snapshot "^27.2.3" - -jest-resolve@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.2.3.tgz#868911cf705c537f433befcfc65e6ddc70c9d7f9" - integrity sha512-+tbm53gKpwuRsqCV+zhhjq/6NxMs/I9zECEMzu0LtmbYD5Gusj+rU497f6lkl5LG/GndvfTjJlysYrnSCcZUJA== - dependencies: - "@jest/types" "^27.2.3" - chalk "^4.0.0" - escalade "^3.1.1" - graceful-fs "^4.2.4" - jest-haste-map "^27.2.3" - jest-pnp-resolver "^1.2.2" - jest-util "^27.2.3" - jest-validate "^27.2.3" - resolve "^1.20.0" - slash "^3.0.0" - -jest-runner@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.2.3.tgz#22f6ef7bd4140fec74cec18eef29c24d07cb6ad5" - integrity sha512-bvGlIh3wR/LGjSHPW/IpQU6K2atO45U5p7UDqWThPKT622Wm/ZJ2DNbgNzb4P9ZO/UxB22jXoKJPsMAdWGEdmA== - dependencies: - "@jest/console" "^27.2.3" - "@jest/environment" "^27.2.3" - "@jest/test-result" "^27.2.3" - "@jest/transform" "^27.2.3" - "@jest/types" "^27.2.3" +"jest-pnp-resolver@^1.2.2": + "integrity" "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==" + "resolved" "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz" + "version" "1.2.2" + +"jest-regex-util@^27.5.1": + "integrity" "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==" + "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" + "version" "27.5.1" + +"jest-resolve-dependencies@^27.5.1": + "integrity" "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==" + "resolved" "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/types" "^27.5.1" + "jest-regex-util" "^27.5.1" + "jest-snapshot" "^27.5.1" + +"jest-resolve@^27.5.1": + "integrity" "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==" + "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/types" "^27.5.1" + "chalk" "^4.0.0" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^27.5.1" + "jest-pnp-resolver" "^1.2.2" + "jest-util" "^27.5.1" + "jest-validate" "^27.5.1" + "resolve" "^1.20.0" + "resolve.exports" "^1.1.0" + "slash" "^3.0.0" + +"jest-runner@^27.5.1": + "integrity" "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==" + "resolved" "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/console" "^27.5.1" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-docblock "^27.0.6" - jest-environment-jsdom "^27.2.3" - jest-environment-node "^27.2.3" - jest-haste-map "^27.2.3" - jest-leak-detector "^27.2.3" - jest-message-util "^27.2.3" - jest-resolve "^27.2.3" - jest-runtime "^27.2.3" - jest-util "^27.2.3" - jest-worker "^27.2.3" - source-map-support "^0.5.6" - throat "^6.0.1" - -jest-runtime@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.2.3.tgz#e6fc25bbbc63b19fae50c3994060efb1b2922b7e" - integrity sha512-8WPgxENQchmUM0jpDjK1IxacseK9vDDz6T471xs5pNIQrj8typeT0coRigRCb1sPYeXQ66SqVERMgPj6SEeblQ== - dependencies: - "@jest/console" "^27.2.3" - "@jest/environment" "^27.2.3" - "@jest/fake-timers" "^27.2.3" - "@jest/globals" "^27.2.3" - "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.2.3" - "@jest/transform" "^27.2.3" - "@jest/types" "^27.2.3" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - execa "^5.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.4" - jest-haste-map "^27.2.3" - jest-message-util "^27.2.3" - jest-mock "^27.2.3" - jest-regex-util "^27.0.6" - jest-resolve "^27.2.3" - jest-snapshot "^27.2.3" - jest-util "^27.2.3" - jest-validate "^27.2.3" - slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^16.0.3" - -jest-serializer@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.0.6.tgz#93a6c74e0132b81a2d54623251c46c498bb5bec1" - integrity sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA== + "chalk" "^4.0.0" + "emittery" "^0.8.1" + "graceful-fs" "^4.2.9" + "jest-docblock" "^27.5.1" + "jest-environment-jsdom" "^27.5.1" + "jest-environment-node" "^27.5.1" + "jest-haste-map" "^27.5.1" + "jest-leak-detector" "^27.5.1" + "jest-message-util" "^27.5.1" + "jest-resolve" "^27.5.1" + "jest-runtime" "^27.5.1" + "jest-util" "^27.5.1" + "jest-worker" "^27.5.1" + "source-map-support" "^0.5.6" + "throat" "^6.0.1" + +"jest-runtime@^27.5.1": + "integrity" "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==" + "resolved" "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/globals" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "chalk" "^4.0.0" + "cjs-module-lexer" "^1.0.0" + "collect-v8-coverage" "^1.0.0" + "execa" "^5.0.0" + "glob" "^7.1.3" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^27.5.1" + "jest-message-util" "^27.5.1" + "jest-mock" "^27.5.1" + "jest-regex-util" "^27.5.1" + "jest-resolve" "^27.5.1" + "jest-snapshot" "^27.5.1" + "jest-util" "^27.5.1" + "slash" "^3.0.0" + "strip-bom" "^4.0.0" + +"jest-serializer@^27.5.1": + "integrity" "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==" + "resolved" "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz" + "version" "27.5.1" dependencies: "@types/node" "*" - graceful-fs "^4.2.4" + "graceful-fs" "^4.2.9" -jest-snapshot@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.2.3.tgz#e3f39e1708a4d93dfa1297e73b5d2feec44f6d0c" - integrity sha512-NJz+PNvTNTxVfNdLXccKUMeVH5O7jZ+9dNXH5TP2WtkLR+CiPRiPveWDgM8o3aaxB6R0Mm8vsD7ieEkEh6ZBBQ== +"jest-snapshot@^27.5.1": + "integrity" "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==" + "resolved" "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz" + "version" "27.5.1" dependencies: "@babel/core" "^7.7.2" "@babel/generator" "^7.7.2" - "@babel/parser" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.0.0" - "@jest/transform" "^27.2.3" - "@jest/types" "^27.2.3" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/babel__traverse" "^7.0.4" "@types/prettier" "^2.1.5" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^27.2.3" - graceful-fs "^4.2.4" - jest-diff "^27.2.3" - jest-get-type "^27.0.6" - jest-haste-map "^27.2.3" - jest-matcher-utils "^27.2.3" - jest-message-util "^27.2.3" - jest-resolve "^27.2.3" - jest-util "^27.2.3" - natural-compare "^1.4.0" - pretty-format "^27.2.3" - semver "^7.3.2" - -jest-util@^27.0.0, jest-util@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.2.3.tgz#f766354b7c489c1f9ea88cd1d96d044fbd2b5d4d" - integrity sha512-78BEka2+77lqD7LN4mSzUdZMngHZtVAsmZ5B8+qOWfN4bCYNUmi/eGNLm91jA77gG1QZJSXsDOCWB0qbXDT1Fw== - dependencies: - "@jest/types" "^27.2.3" + "babel-preset-current-node-syntax" "^1.0.0" + "chalk" "^4.0.0" + "expect" "^27.5.1" + "graceful-fs" "^4.2.9" + "jest-diff" "^27.5.1" + "jest-get-type" "^27.5.1" + "jest-haste-map" "^27.5.1" + "jest-matcher-utils" "^27.5.1" + "jest-message-util" "^27.5.1" + "jest-util" "^27.5.1" + "natural-compare" "^1.4.0" + "pretty-format" "^27.5.1" + "semver" "^7.3.2" + +"jest-util@^27.0.0", "jest-util@^27.5.1": + "integrity" "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==" + "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/types" "^27.5.1" "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^3.0.0" - picomatch "^2.2.3" - -jest-validate@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.2.3.tgz#4fcc49e581f13fbe260a77e711a80f0256138a7a" - integrity sha512-HUfTZ/W87zoxOuEGC01ujXzoLzRpJqvhMdIrRilpXGmso2vJWw3bHpbWKhivYMr0X/BjitLrHywj/+niNfIcEA== - dependencies: - "@jest/types" "^27.2.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^27.0.6" - leven "^3.1.0" - pretty-format "^27.2.3" - -jest-watcher@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.2.3.tgz#2989228bdd05138094f7ec19a23cbb2665f2efb7" - integrity sha512-SvUmnL/QMb55B6iWJ3Jpq6bG2fSRcrMaGakY60i6j8p9+Ct42mpkq90qaYB+rnSLaiW/QQN+lTJZmK+lA6vksA== - dependencies: - "@jest/test-result" "^27.2.3" - "@jest/types" "^27.2.3" + "chalk" "^4.0.0" + "ci-info" "^3.2.0" + "graceful-fs" "^4.2.9" + "picomatch" "^2.2.3" + +"jest-validate@^27.5.1": + "integrity" "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==" + "resolved" "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/types" "^27.5.1" + "camelcase" "^6.2.0" + "chalk" "^4.0.0" + "jest-get-type" "^27.5.1" + "leven" "^3.1.0" + "pretty-format" "^27.5.1" + +"jest-watcher@^27.5.1": + "integrity" "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==" + "resolved" "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^27.2.3" - string-length "^4.0.1" + "ansi-escapes" "^4.2.1" + "chalk" "^4.0.0" + "jest-util" "^27.5.1" + "string-length" "^4.0.1" -jest-worker@^27.0.6: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.2.tgz#636deeae8068abbf2b34b4eb9505f8d4e5bd625c" - integrity sha512-aG1xq9KgWB2CPC8YdMIlI8uZgga2LFNcGbHJxO8ctfXAydSaThR4EewKQGg3tBOC+kS3vhPGgymsBdi9VINjPw== +"jest-worker@^27.4.5", "jest-worker@^27.5.1": + "integrity" "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==" + "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + "version" "27.5.1" dependencies: "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest-worker@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.3.tgz#396e83d04ca575230a9bcb255c2b66aec07cb931" - integrity sha512-ZwOvv4GCIPviL+Ie4pVguz4N5w/6IGbTaHBYOl3ZcsZZktaL7d8JOU0rmovoED7AJZKA8fvmLbBg8yg80u/tGA== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.2.3.tgz#9c2af9ce874a3eb202f83d92fbc1cc61ccc73248" - integrity sha512-r4ggA29J5xUg93DpvbsX+AXlFMWE3hZ5Y6BfgTl8PJvWelVezNPkmrsixuGoDBTHTCwScRSH0O4wsoeUgLie2w== - dependencies: - "@jest/core" "^27.2.3" - import-local "^3.0.2" - jest-cli "^27.2.3" - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^16.6.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" - -jsdom@^17.0.0: - version "17.0.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-17.0.0.tgz#3ec82d1d30030649c8defedc45fff6aa3e5d06ae" - integrity sha512-MUq4XdqwtNurZDVeKScENMPHnkgmdIvMzZ1r1NSwHkDuaqI6BouPjr+17COo4/19oLNnmdpFDPOHVpgIZmZ+VA== - dependencies: - abab "^2.0.5" - acorn "^8.4.1" - acorn-globals "^6.0.0" - cssom "^0.5.0" - cssstyle "^2.3.0" - data-urls "^3.0.0" - decimal.js "^10.3.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^4.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^9.0.0" - ws "^8.0.0" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= - -json-format@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-format/-/json-format-1.0.1.tgz#143f67e62af129d6bffed288a46265ea23d0df0c" - integrity sha1-FD9n5irxKda//tKIpGJl6iPQ3ww= - -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json0-ot-diff@^1.0.5, json0-ot-diff@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/json0-ot-diff/-/json0-ot-diff-1.1.2.tgz#3565b8b016992b750c364558f5b5ffd56a0749c2" - integrity sha512-je6cDbmPc+BkbfyvKo7y1jgQLTrX81L8fkKEIPXRUGFSxK4HTSF6u44ELR35i12tEIWh5+8KfIJH2aJgzKrFww== - dependencies: - deep-equal "^1.0.1" - -json5@2.x, json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" + "merge-stream" "^2.0.0" + "supports-color" "^8.0.0" + +"jest@^27.2.3": + "integrity" "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==" + "resolved" "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/core" "^27.5.1" + "import-local" "^3.0.2" + "jest-cli" "^27.5.1" + +"jest@27.0.6": + "integrity" "sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA==" + "resolved" "https://registry.npmjs.org/jest/-/jest-27.0.6.tgz" + "version" "27.0.6" + dependencies: + "@jest/core" "^27.0.6" + "import-local" "^3.0.2" + "jest-cli" "^27.0.6" + +"jmespath@0.16.0": + "integrity" "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==" + "resolved" "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz" + "version" "0.16.0" + +"jose@^2.0.5": + "integrity" "sha512-BAiDNeDKTMgk4tvD0BbxJ8xHEHBZgpeRZ1zGPPsitSyMgjoMWiLGYAE7H7NpP5h0lPppQajQs871E8NHUrzVPA==" + "resolved" "https://registry.npmjs.org/jose/-/jose-2.0.5.tgz" + "version" "2.0.5" + dependencies: + "@panva/asn1.js" "^1.0.0" + +"js-beautify@^1.14.0": + "integrity" "sha512-f1ra8PHtOEu/70EBnmiUlV8nJePS58y9qKjl4JHfYWlFH6bo7ogZBz//FAZp7jDuXtYnGYKymZPlrg2I/9Zo4g==" + "resolved" "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.3.tgz" + "version" "1.14.3" + dependencies: + "config-chain" "^1.1.13" + "editorconfig" "^0.15.3" + "glob" "^7.1.3" + "nopt" "^5.0.0" + +"js-git@^0.7.8": + "integrity" "sha1-UvplWrYYd9bxB578ZTS1VPMeVEQ=" + "resolved" "https://registry.npmjs.org/js-git/-/js-git-0.7.8.tgz" + "version" "0.7.8" + dependencies: + "bodec" "^0.1.0" + "culvert" "^0.1.2" + "git-sha1" "^0.1.2" + "pako" "^0.2.5" + +"js-levenshtein@^1.1.6": + "integrity" "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==" + "resolved" "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz" + "version" "1.1.6" + +"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": + "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + "version" "4.0.0" + +"js-tokens@^3.0.2": + "integrity" "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" + "version" "3.0.2" + +"js-yaml@^3.13.0", "js-yaml@^3.13.1", "js-yaml@^3.14.0": + "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + "version" "3.14.1" + dependencies: + "argparse" "^1.0.7" + "esprima" "^4.0.0" + +"js-yaml@^3.14.1": + "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + "version" "3.14.1" + dependencies: + "argparse" "^1.0.7" + "esprima" "^4.0.0" + +"js-yaml@^4.1.0": + "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "argparse" "^2.0.1" + +"jsbn@~0.1.0": + "integrity" "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + "version" "0.1.1" + +"jsdom@^16.6.0": + "integrity" "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==" + "resolved" "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" + "version" "16.7.0" + dependencies: + "abab" "^2.0.5" + "acorn" "^8.2.4" + "acorn-globals" "^6.0.0" + "cssom" "^0.4.4" + "cssstyle" "^2.3.0" + "data-urls" "^2.0.0" + "decimal.js" "^10.2.1" + "domexception" "^2.0.1" + "escodegen" "^2.0.0" + "form-data" "^3.0.0" + "html-encoding-sniffer" "^2.0.1" + "http-proxy-agent" "^4.0.1" + "https-proxy-agent" "^5.0.0" + "is-potential-custom-element-name" "^1.0.1" + "nwsapi" "^2.2.0" + "parse5" "6.0.1" + "saxes" "^5.0.1" + "symbol-tree" "^3.2.4" + "tough-cookie" "^4.0.0" + "w3c-hr-time" "^1.0.2" + "w3c-xmlserializer" "^2.0.0" + "webidl-conversions" "^6.1.0" + "whatwg-encoding" "^1.0.5" + "whatwg-mimetype" "^2.3.0" + "whatwg-url" "^8.5.0" + "ws" "^7.4.6" + "xml-name-validator" "^3.0.0" + +"jsdom@^17.0.0": + "integrity" "sha512-MUq4XdqwtNurZDVeKScENMPHnkgmdIvMzZ1r1NSwHkDuaqI6BouPjr+17COo4/19oLNnmdpFDPOHVpgIZmZ+VA==" + "resolved" "https://registry.npmjs.org/jsdom/-/jsdom-17.0.0.tgz" + "version" "17.0.0" + dependencies: + "abab" "^2.0.5" + "acorn" "^8.4.1" + "acorn-globals" "^6.0.0" + "cssom" "^0.5.0" + "cssstyle" "^2.3.0" + "data-urls" "^3.0.0" + "decimal.js" "^10.3.1" + "domexception" "^2.0.1" + "escodegen" "^2.0.0" + "form-data" "^4.0.0" + "html-encoding-sniffer" "^2.0.1" + "http-proxy-agent" "^4.0.1" + "https-proxy-agent" "^5.0.0" + "is-potential-custom-element-name" "^1.0.1" + "nwsapi" "^2.2.0" + "parse5" "6.0.1" + "saxes" "^5.0.1" + "symbol-tree" "^3.2.4" + "tough-cookie" "^4.0.0" + "w3c-hr-time" "^1.0.2" + "w3c-xmlserializer" "^2.0.0" + "webidl-conversions" "^6.1.0" + "whatwg-encoding" "^1.0.5" + "whatwg-mimetype" "^2.3.0" + "whatwg-url" "^9.0.0" + "ws" "^8.0.0" + "xml-name-validator" "^3.0.0" + +"jsesc@^2.5.1": + "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + "version" "2.5.2" + +"jsesc@~0.5.0": + "integrity" "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + "version" "0.5.0" + +"json-bigint@^0.3.0": + "integrity" "sha512-DGWnSzmusIreWlEupsUelHrhwmPPE+FiQvg+drKfk2p+bdEYa5mp4PJ8JsCWqae0M2jQNb0HPvnwvf1qOTThzQ==" + "resolved" "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.1.tgz" + "version" "0.3.1" + dependencies: + "bignumber.js" "^9.0.0" + +"json-bigint@^1.0.0": + "integrity" "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==" + "resolved" "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "bignumber.js" "^9.0.0" + +"json-buffer@3.0.0": + "integrity" "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" + "version" "3.0.0" + +"json-format@^1.0.1": + "integrity" "sha1-FD9n5irxKda//tKIpGJl6iPQ3ww=" + "resolved" "https://registry.npmjs.org/json-format/-/json-format-1.0.1.tgz" + "version" "1.0.1" + +"json-parse-better-errors@^1.0.1", "json-parse-better-errors@^1.0.2": + "integrity" "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + "resolved" "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + "version" "1.0.2" + +"json-parse-even-better-errors@^2.3.0": + "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + "version" "2.3.1" + +"json-pointer@^0.6.1": + "integrity" "sha512-3OvjqKdCBvH41DLpV4iSt6v2XhZXV1bPB4OROuknvUXI7ZQNofieCPkmE26stEJ9zdQuvIxDHCuYhfgxFAAs+Q==" + "resolved" "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.1.tgz" + "version" "0.6.1" + dependencies: + "foreach" "^2.0.4" + +"json-schema-traverse@^0.4.1": + "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + "version" "0.4.1" + +"json-schema-traverse@^1.0.0": + "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + "version" "1.0.0" + +"json-schema@0.4.0": + "integrity" "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + "resolved" "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" + "version" "0.4.0" + +"json-stable-stringify-without-jsonify@^1.0.1": + "integrity" "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + "version" "1.0.1" + +"json-stringify-safe@^5.0.1", "json-stringify-safe@~5.0.1": + "integrity" "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "version" "5.0.1" + +"json0-ot-diff@^1.0.5", "json0-ot-diff@^1.1.2": + "integrity" "sha512-je6cDbmPc+BkbfyvKo7y1jgQLTrX81L8fkKEIPXRUGFSxK4HTSF6u44ELR35i12tEIWh5+8KfIJH2aJgzKrFww==" + "resolved" "https://registry.npmjs.org/json0-ot-diff/-/json0-ot-diff-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "deep-equal" "^1.0.1" + +"json5@^1.0.1": + "integrity" "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==" + "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "minimist" "^1.2.0" + +"json5@^2.1.2", "json5@^2.2.1", "json5@2.x": + "integrity" "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" + "version" "2.2.1" + +"jsonfile@^4.0.0": + "integrity" "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=" + "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + "version" "4.0.0" optionalDependencies: - graceful-fs "^4.1.6" - -jsonparse@^1.2.0, jsonparse@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + "graceful-fs" "^4.1.6" -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= +"jsonfile@^6.0.1": + "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" + "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + "version" "6.1.0" dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -jss-plugin-camel-case@^10.8.2: - version "10.9.0" - resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz#4921b568b38d893f39736ee8c4c5f1c64670aaf7" - integrity sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww== + "universalify" "^2.0.0" + optionalDependencies: + "graceful-fs" "^4.1.6" + +"jsonparse@^1.2.0", "jsonparse@^1.3.1": + "integrity" "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + "resolved" "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" + "version" "1.3.1" + +"JSONStream@^1.0.4": + "integrity" "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==" + "resolved" "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" + "version" "1.3.5" + dependencies: + "jsonparse" "^1.2.0" + "through" ">=2.2.7 <3" + +"jsonwebtoken@^8.5.1": + "integrity" "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==" + "resolved" "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz" + "version" "8.5.1" + dependencies: + "jws" "^3.2.2" + "lodash.includes" "^4.3.0" + "lodash.isboolean" "^3.0.3" + "lodash.isinteger" "^4.0.4" + "lodash.isnumber" "^3.0.3" + "lodash.isplainobject" "^4.0.6" + "lodash.isstring" "^4.0.1" + "lodash.once" "^4.0.0" + "ms" "^2.1.1" + "semver" "^5.6.0" + +"jsprim@^1.2.2": + "integrity" "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==" + "resolved" "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" + "version" "1.4.2" + dependencies: + "assert-plus" "1.0.0" + "extsprintf" "1.3.0" + "json-schema" "0.4.0" + "verror" "1.10.0" + +"jss-plugin-camel-case@^10.5.1", "jss-plugin-camel-case@^10.8.2": + "integrity" "sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww==" + "resolved" "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz" + "version" "10.9.0" dependencies: "@babel/runtime" "^7.3.1" - hyphenate-style-name "^1.0.3" - jss "10.9.0" + "hyphenate-style-name" "^1.0.3" + "jss" "10.9.0" -jss-plugin-default-unit@^10.8.2: - version "10.9.0" - resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz#bb23a48f075bc0ce852b4b4d3f7582bc002df991" - integrity sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w== +"jss-plugin-default-unit@^10.5.1", "jss-plugin-default-unit@^10.8.2": + "integrity" "sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w==" + "resolved" "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz" + "version" "10.9.0" dependencies: "@babel/runtime" "^7.3.1" - jss "10.9.0" + "jss" "10.9.0" -jss-plugin-global@^10.8.2: - version "10.9.0" - resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz#fc07a0086ac97aca174e37edb480b69277f3931f" - integrity sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ== +"jss-plugin-global@^10.5.1", "jss-plugin-global@^10.8.2": + "integrity" "sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ==" + "resolved" "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz" + "version" "10.9.0" dependencies: "@babel/runtime" "^7.3.1" - jss "10.9.0" + "jss" "10.9.0" -jss-plugin-nested@^10.8.2: - version "10.9.0" - resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz#cc1c7d63ad542c3ccc6e2c66c8328c6b6b00f4b3" - integrity sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA== +"jss-plugin-nested@^10.5.1", "jss-plugin-nested@^10.8.2": + "integrity" "sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA==" + "resolved" "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz" + "version" "10.9.0" dependencies: "@babel/runtime" "^7.3.1" - jss "10.9.0" - tiny-warning "^1.0.2" + "jss" "10.9.0" + "tiny-warning" "^1.0.2" -jss-plugin-props-sort@^10.8.2: - version "10.9.0" - resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz#30e9567ef9479043feb6e5e59db09b4de687c47d" - integrity sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw== +"jss-plugin-props-sort@^10.5.1", "jss-plugin-props-sort@^10.8.2": + "integrity" "sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw==" + "resolved" "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz" + "version" "10.9.0" dependencies: "@babel/runtime" "^7.3.1" - jss "10.9.0" + "jss" "10.9.0" -jss-plugin-rule-value-function@^10.8.2: - version "10.9.0" - resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz#379fd2732c0746fe45168011fe25544c1a295d67" - integrity sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg== +"jss-plugin-rule-value-function@^10.5.1", "jss-plugin-rule-value-function@^10.8.2": + "integrity" "sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg==" + "resolved" "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz" + "version" "10.9.0" dependencies: "@babel/runtime" "^7.3.1" - jss "10.9.0" - tiny-warning "^1.0.2" + "jss" "10.9.0" + "tiny-warning" "^1.0.2" -jss-plugin-vendor-prefixer@^10.8.2: - version "10.9.0" - resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz#aa9df98abfb3f75f7ed59a3ec50a5452461a206a" - integrity sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA== +"jss-plugin-vendor-prefixer@^10.5.1", "jss-plugin-vendor-prefixer@^10.8.2": + "integrity" "sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA==" + "resolved" "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz" + "version" "10.9.0" dependencies: "@babel/runtime" "^7.3.1" - css-vendor "^2.0.8" - jss "10.9.0" + "css-vendor" "^2.0.8" + "jss" "10.9.0" -jss@10.9.0, jss@^10.8.2: - version "10.9.0" - resolved "https://registry.yarnpkg.com/jss/-/jss-10.9.0.tgz#7583ee2cdc904a83c872ba695d1baab4b59c141b" - integrity sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw== +"jss@^10.5.1", "jss@^10.8.2", "jss@10.9.0": + "integrity" "sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw==" + "resolved" "https://registry.npmjs.org/jss/-/jss-10.9.0.tgz" + "version" "10.9.0" dependencies: "@babel/runtime" "^7.3.1" - csstype "^3.0.2" - is-in-browser "^1.1.3" - tiny-warning "^1.0.2" + "csstype" "^3.0.2" + "is-in-browser" "^1.1.3" + "tiny-warning" "^1.0.2" -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== +"jwa@^1.4.1": + "integrity" "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==" + "resolved" "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz" + "version" "1.4.1" dependencies: - json-buffer "3.0.0" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -latest-version@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== - dependencies: - package-json "^6.3.0" - -lerna@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-4.0.0.tgz#b139d685d50ea0ca1be87713a7c2f44a5b678e9e" - integrity sha512-DD/i1znurfOmNJb0OBw66NmNqiM8kF6uIrzrJ0wGE3VNdzeOhz9ziWLYiRaZDGGwgbcjOo6eIfcx9O5Qynz+kg== + "buffer-equal-constant-time" "1.0.1" + "ecdsa-sig-formatter" "1.0.11" + "safe-buffer" "^5.0.1" + +"jwa@^2.0.0": + "integrity" "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==" + "resolved" "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "buffer-equal-constant-time" "1.0.1" + "ecdsa-sig-formatter" "1.0.11" + "safe-buffer" "^5.0.1" + +"jwks-rsa@^2.0.2": + "integrity" "sha512-GKOSDBWWBCiQTzawei6mEdRQvji5gecj8F9JwMt0ZOPnBPSmTjo5CKFvvbhE7jGPkU159Cpi0+OTLuABFcNOQQ==" + "resolved" "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "@types/express-jwt" "0.0.42" + "debug" "^4.3.4" + "jose" "^2.0.5" + "limiter" "^1.1.5" + "lru-memoizer" "^2.1.4" + +"jws@^3.1.5": + "integrity" "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==" + "resolved" "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" + "version" "3.2.2" + dependencies: + "jwa" "^1.4.1" + "safe-buffer" "^5.0.1" + +"jws@^3.2.2": + "integrity" "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==" + "resolved" "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" + "version" "3.2.2" + dependencies: + "jwa" "^1.4.1" + "safe-buffer" "^5.0.1" + +"jws@^4.0.0": + "integrity" "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==" + "resolved" "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "jwa" "^2.0.0" + "safe-buffer" "^5.0.1" + +"keygrip@~1.1.0": + "integrity" "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==" + "resolved" "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "tsscmp" "1.0.6" + +"keyv@^3.0.0": + "integrity" "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==" + "resolved" "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "json-buffer" "3.0.0" + +"keyword-extractor@^0.0.20": + "integrity" "sha512-VXMhJkmNqVZ+HbAyQx5rn7ssC8gumfgdFEfO9bYKAT5T8GrZKgtigH8tYT1pti7WuU86FbsCQfsJXI3lfvWsHA==" + "resolved" "https://registry.npmjs.org/keyword-extractor/-/keyword-extractor-0.0.20.tgz" + "version" "0.0.20" + +"kind-of@^2.0.1": + "integrity" "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=" + "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "is-buffer" "^1.0.2" + +"kind-of@^3.0.2", "kind-of@^3.0.3": + "integrity" "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" + "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + "version" "3.2.2" + dependencies: + "is-buffer" "^1.1.5" + +"kind-of@^3.2.0": + "integrity" "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" + "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + "version" "3.2.2" + dependencies: + "is-buffer" "^1.1.5" + +"kind-of@^4.0.0": + "integrity" "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=" + "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "is-buffer" "^1.1.5" + +"kind-of@^5.0.0": + "integrity" "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" + "version" "5.1.0" + +"kind-of@^6.0.0", "kind-of@^6.0.2", "kind-of@^6.0.3": + "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + "version" "6.0.3" + +"kleur@^3.0.3": + "integrity" "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + "resolved" "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + "version" "3.0.3" + +"koa-body@4.2.0": + "integrity" "sha512-wdGu7b9amk4Fnk/ytH8GuWwfs4fsB5iNkY8kZPpgQVb04QZSv85T0M8reb+cJmvLE8cjPYvBzRikD3s6qz8OoA==" + "resolved" "https://registry.npmjs.org/koa-body/-/koa-body-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "@types/formidable" "^1.0.31" + "co-body" "^5.1.1" + "formidable" "^1.1.1" + +"koa-compose@^4.1.0", "koa-compose@4.1.0": + "integrity" "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" + "resolved" "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz" + "version" "4.1.0" + +"koa-convert@^2.0.0": + "integrity" "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==" + "resolved" "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "co" "^4.6.0" + "koa-compose" "^4.1.0" + +"koa@^2.13.1": + "integrity" "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==" + "resolved" "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz" + "version" "2.13.4" + dependencies: + "accepts" "^1.3.5" + "cache-content-type" "^1.0.0" + "content-disposition" "~0.5.2" + "content-type" "^1.0.4" + "cookies" "~0.8.0" + "debug" "^4.3.2" + "delegates" "^1.0.0" + "depd" "^2.0.0" + "destroy" "^1.0.4" + "encodeurl" "^1.0.2" + "escape-html" "^1.0.3" + "fresh" "~0.5.2" + "http-assert" "^1.3.0" + "http-errors" "^1.6.3" + "is-generator-function" "^1.0.7" + "koa-compose" "^4.1.0" + "koa-convert" "^2.0.0" + "on-finished" "^2.3.0" + "only" "~0.0.2" + "parseurl" "^1.3.2" + "statuses" "^1.5.0" + "type-is" "^1.6.16" + "vary" "^1.1.2" + +"latest-version@^5.1.0": + "integrity" "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==" + "resolved" "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "package-json" "^6.3.0" + +"lazy-cache@^0.2.3": + "integrity" "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" + "resolved" "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz" + "version" "0.2.7" + +"lazy-cache@^1.0.3": + "integrity" "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + "resolved" "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" + "version" "1.0.4" + +"lazy@~1.0.11": + "integrity" "sha1-2qBoIGKCVCwIgojpdcKXwa53tpA=" + "resolved" "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz" + "version" "1.0.11" + +"lerna@^4.0.0": + "integrity" "sha512-DD/i1znurfOmNJb0OBw66NmNqiM8kF6uIrzrJ0wGE3VNdzeOhz9ziWLYiRaZDGGwgbcjOo6eIfcx9O5Qynz+kg==" + "resolved" "https://registry.npmjs.org/lerna/-/lerna-4.0.0.tgz" + "version" "4.0.0" dependencies: "@lerna/add" "4.0.0" "@lerna/bootstrap" "4.0.0" @@ -9310,3795 +13066,6004 @@ lerna@^4.0.0: "@lerna/publish" "4.0.0" "@lerna/run" "4.0.0" "@lerna/version" "4.0.0" - import-local "^3.0.2" - npmlog "^4.1.2" - -levdist@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/levdist/-/levdist-1.0.0.tgz#91d7a3044964f2ccc421a0477cac827fe75c5718" - integrity sha1-kdejBElk8szEIaBHfKyCf+dcVxg= - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -libnpmaccess@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-4.0.3.tgz#dfb0e5b0a53c315a2610d300e46b4ddeb66e7eec" - integrity sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ== - dependencies: - aproba "^2.0.0" - minipass "^3.1.1" - npm-package-arg "^8.1.2" - npm-registry-fetch "^11.0.0" - -libnpmpublish@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-4.0.2.tgz#be77e8bf5956131bcb45e3caa6b96a842dec0794" - integrity sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw== - dependencies: - normalize-package-data "^3.0.2" - npm-package-arg "^8.1.2" - npm-registry-fetch "^11.0.0" - semver "^7.1.3" - ssri "^8.0.1" - -license-webpack-plugin@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz#1e18442ed20b754b82f1adeff42249b81d11aec6" - integrity sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw== - dependencies: - webpack-sources "^3.0.0" - -line-diff@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/line-diff/-/line-diff-2.1.1.tgz#a389799b931375a3b1e764964ad0b0b3ce60d6f6" - integrity sha512-vswdynAI5AMPJacOo2o+JJ4caDJbnY2NEqms4MhMW0NJbjh3skP/brpVTAgBxrg55NRZ2Vtw88ef18hnagIpYQ== - dependencies: - levdist "^1.0.0" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -load-json-file@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" - integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== - dependencies: - graceful-fs "^4.1.15" - parse-json "^5.0.0" - strip-bom "^4.0.0" - type-fest "^0.6.0" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-runner@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" - integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== - -loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash-es@^4.17.15: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" - integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.chunk@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc" - integrity sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw= - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -lodash.escape@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" - integrity sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg= - -lodash.flattendeep@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" - integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= - -lodash.get@^4: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= - -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= - -lodash.ismatch@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" - integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= - -lodash.merge@^4.6.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash@4.x, lodash@^4, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -lz-string@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" - integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-error@1.x, make-error@^1, make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -make-fetch-happen@^8.0.9: - version "8.0.14" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz#aaba73ae0ab5586ad8eaa68bd83332669393e222" - integrity sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ== - dependencies: - agentkeepalive "^4.1.3" - cacache "^15.0.5" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - promise-retry "^2.0.1" - socks-proxy-agent "^5.0.0" - ssri "^8.0.0" - -make-fetch-happen@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== - dependencies: - agentkeepalive "^4.1.3" - cacache "^15.2.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.2" - promise-retry "^2.0.1" - socks-proxy-agent "^6.0.0" - ssri "^8.0.0" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - -map-obj@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -meant@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.3.tgz#67769af9de1d158773e928ae82c456114903554c" - integrity sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -memfs@^3.2.2: - version "3.3.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.3.0.tgz#4da2d1fc40a04b170a56622c7164c6be2c4cbef2" - integrity sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg== - dependencies: - fs-monkey "1.0.3" - -memoize-one@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" - integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= - -meow@^8.0.0: - version "8.1.2" - resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" - integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== + "import-local" "^3.0.2" + "npmlog" "^4.1.2" + +"levdist@^1.0.0": + "integrity" "sha1-kdejBElk8szEIaBHfKyCf+dcVxg=" + "resolved" "https://registry.npmjs.org/levdist/-/levdist-1.0.0.tgz" + "version" "1.0.0" + +"leven@^3.1.0": + "integrity" "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + "resolved" "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + "version" "3.1.0" + +"levenshtein-edit-distance@^2.0.0": + "integrity" "sha512-Yuraz7QnMX/JENJU1HA6UtdsbhRzoSFnGpVGVryjQgHtl2s/YmVgmNYkVs5yzVZ9aAvQR9wPBUH3lG755ylxGA==" + "resolved" "https://registry.npmjs.org/levenshtein-edit-distance/-/levenshtein-edit-distance-2.0.5.tgz" + "version" "2.0.5" + +"levn@^0.3.0", "levn@~0.3.0": + "integrity" "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=" + "resolved" "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" + "version" "0.3.0" + dependencies: + "prelude-ls" "~1.1.2" + "type-check" "~0.3.2" + +"levn@^0.4.1": + "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" + "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + "version" "0.4.1" + dependencies: + "prelude-ls" "^1.2.1" + "type-check" "~0.4.0" + +"libnpmaccess@^4.0.1": + "integrity" "sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ==" + "resolved" "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "aproba" "^2.0.0" + "minipass" "^3.1.1" + "npm-package-arg" "^8.1.2" + "npm-registry-fetch" "^11.0.0" + +"libnpmpublish@^4.0.0": + "integrity" "sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw==" + "resolved" "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "normalize-package-data" "^3.0.2" + "npm-package-arg" "^8.1.2" + "npm-registry-fetch" "^11.0.0" + "semver" "^7.1.3" + "ssri" "^8.0.1" + +"libsodium-wrappers@^0.7.10": + "integrity" "sha512-pO3F1Q9NPLB/MWIhehim42b/Fwb30JNScCNh8TcQ/kIc+qGLQch8ag8wb0keK3EP5kbGakk1H8Wwo7v+36rNQg==" + "resolved" "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.10.tgz" + "version" "0.7.10" + dependencies: + "libsodium" "^0.7.0" + +"libsodium@^0.7.0": + "integrity" "sha512-eY+z7hDrDKxkAK+QKZVNv92A5KYkxfvIshtBJkmg5TSiCnYqZP3i9OO9whE79Pwgm4jGaoHgkM4ao/b9Cyu4zQ==" + "resolved" "https://registry.npmjs.org/libsodium/-/libsodium-0.7.10.tgz" + "version" "0.7.10" + +"license-webpack-plugin@^4.0.2": + "integrity" "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==" + "resolved" "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "webpack-sources" "^3.0.0" + +"lilconfig@2.0.4": + "integrity" "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==" + "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz" + "version" "2.0.4" + +"limiter@^1.1.5": + "integrity" "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + "resolved" "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz" + "version" "1.1.5" + +"line-diff@^2.0.1": + "integrity" "sha512-vswdynAI5AMPJacOo2o+JJ4caDJbnY2NEqms4MhMW0NJbjh3skP/brpVTAgBxrg55NRZ2Vtw88ef18hnagIpYQ==" + "resolved" "https://registry.npmjs.org/line-diff/-/line-diff-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "levdist" "^1.0.0" + +"lines-and-columns@^1.1.6": + "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + "version" "1.2.4" + +"lint-staged@>=10": + "integrity" "sha512-PTXgzpflrQ+pODQTG116QNB+Q6uUTDg5B5HqGvNhoQSGt8Qy+MA/6zSnR8n38+sxP5TapzeQGTvoKni0KRS8Vg==" + "resolved" "https://registry.npmjs.org/lint-staged/-/lint-staged-12.4.1.tgz" + "version" "12.4.1" + dependencies: + "cli-truncate" "^3.1.0" + "colorette" "^2.0.16" + "commander" "^8.3.0" + "debug" "^4.3.3" + "execa" "^5.1.1" + "lilconfig" "2.0.4" + "listr2" "^4.0.1" + "micromatch" "^4.0.4" + "normalize-path" "^3.0.0" + "object-inspect" "^1.12.0" + "pidtree" "^0.5.0" + "string-argv" "^0.3.1" + "supports-color" "^9.2.1" + "yaml" "^1.10.2" + +"listr2@^4.0.1": + "integrity" "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==" + "resolved" "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz" + "version" "4.0.5" + dependencies: + "cli-truncate" "^2.1.0" + "colorette" "^2.0.16" + "log-update" "^4.0.0" + "p-map" "^4.0.0" + "rfdc" "^1.3.0" + "rxjs" "^7.5.5" + "through" "^2.3.8" + "wrap-ansi" "^7.0.0" + +"load-json-file@^4.0.0": + "integrity" "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=" + "resolved" "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "graceful-fs" "^4.1.2" + "parse-json" "^4.0.0" + "pify" "^3.0.0" + "strip-bom" "^3.0.0" + +"load-json-file@^6.2.0": + "integrity" "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==" + "resolved" "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "graceful-fs" "^4.1.15" + "parse-json" "^5.0.0" + "strip-bom" "^4.0.0" + "type-fest" "^0.6.0" + +"loader-runner@^2.4.0": + "integrity" "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz" + "version" "2.4.0" + +"loader-runner@^4.2.0": + "integrity" "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" + "version" "4.3.0" + +"loader-utils@^1.2.3": + "integrity" "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==" + "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "big.js" "^5.2.2" + "emojis-list" "^3.0.0" + "json5" "^1.0.1" + +"loader-utils@^2.0.0": + "integrity" "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==" + "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "big.js" "^5.2.2" + "emojis-list" "^3.0.0" + "json5" "^2.1.2" + +"locate-path@^2.0.0": + "integrity" "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "p-locate" "^2.0.0" + "path-exists" "^3.0.0" + +"locate-path@^3.0.0": + "integrity" "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "p-locate" "^3.0.0" + "path-exists" "^3.0.0" + +"locate-path@^5.0.0": + "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-locate" "^4.1.0" + +"locate-path@^6.0.0": + "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "p-locate" "^5.0.0" + +"lodash-es@4.17.15": + "integrity" "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" + "resolved" "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz" + "version" "4.17.15" + +"lodash._reinterpolate@^3.0.0": + "integrity" "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + "resolved" "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz" + "version" "3.0.0" + +"lodash.camelcase@^4.3.0": + "integrity" "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + "resolved" "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" + "version" "4.3.0" + +"lodash.chunk@^4.2.0": + "integrity" "sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw=" + "resolved" "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz" + "version" "4.2.0" + +"lodash.clonedeep@^4.5.0": + "integrity" "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + "resolved" "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz" + "version" "4.5.0" + +"lodash.debounce@^4.0.8": + "integrity" "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + "version" "4.0.8" + +"lodash.escape@^4.0.1": + "integrity" "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=" + "resolved" "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz" + "version" "4.0.1" + +"lodash.flattendeep@^4.4.0": + "integrity" "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" + "resolved" "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz" + "version" "4.4.0" + +"lodash.get@^4", "lodash.get@^4.4.2": + "integrity" "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + "resolved" "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" + "version" "4.4.2" + +"lodash.includes@^4.3.0": + "integrity" "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + "resolved" "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz" + "version" "4.3.0" + +"lodash.isboolean@^3.0.3": + "integrity" "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + "resolved" "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" + "version" "3.0.3" + +"lodash.isequal@^4.5.0": + "integrity" "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + "resolved" "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" + "version" "4.5.0" + +"lodash.isinteger@^4.0.4": + "integrity" "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + "resolved" "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" + "version" "4.0.4" + +"lodash.ismatch@^4.4.0": + "integrity" "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=" + "resolved" "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz" + "version" "4.4.0" + +"lodash.isnumber@^3.0.3": + "integrity" "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + "resolved" "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz" + "version" "3.0.3" + +"lodash.isplainobject@^4.0.6": + "integrity" "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + "resolved" "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" + "version" "4.0.6" + +"lodash.isstring@^4.0.1": + "integrity" "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + "resolved" "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz" + "version" "4.0.1" + +"lodash.memoize@^4.1.2", "lodash.memoize@4.x": + "integrity" "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + "version" "4.1.2" + +"lodash.merge@^4.6.0", "lodash.merge@^4.6.2": + "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + "version" "4.6.2" + +"lodash.once@^4.0.0": + "integrity" "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + "resolved" "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" + "version" "4.1.1" + +"lodash.sortby@^4.7.0": + "integrity" "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + "resolved" "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" + "version" "4.7.0" + +"lodash.template@^4.5.0": + "integrity" "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==" + "resolved" "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz" + "version" "4.5.0" + dependencies: + "lodash._reinterpolate" "^3.0.0" + "lodash.templatesettings" "^4.0.0" + +"lodash.templatesettings@^4.0.0": + "integrity" "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==" + "resolved" "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "lodash._reinterpolate" "^3.0.0" + +"lodash.truncate@^4.4.2": + "integrity" "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=" + "resolved" "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" + "version" "4.4.2" + +"lodash.unescape@4.0.1": + "integrity" "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=" + "resolved" "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz" + "version" "4.0.1" + +"lodash@^4", "lodash@^4.17.11", "lodash@^4.17.12", "lodash@^4.17.13", "lodash@^4.17.14", "lodash@^4.17.15", "lodash@^4.17.19", "lodash@^4.17.20", "lodash@^4.17.21", "lodash@^4.17.4", "lodash@^4.7.0", "lodash@4.x": + "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + "version" "4.17.21" + +"log-driver@^1.2.7": + "integrity" "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==" + "resolved" "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz" + "version" "1.2.7" + +"log-symbols@^4.0.0", "log-symbols@^4.1.0": + "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==" + "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "chalk" "^4.1.0" + "is-unicode-supported" "^0.1.0" + +"log-update@^4.0.0": + "integrity" "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==" + "resolved" "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "ansi-escapes" "^4.3.0" + "cli-cursor" "^3.1.0" + "slice-ansi" "^4.0.0" + "wrap-ansi" "^6.2.0" + +"loglevel-colored-level-prefix@^1.0.0": + "integrity" "sha1-akAhj9x64V/HbD0PPmdsRlOIYD4=" + "resolved" "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "chalk" "^1.1.3" + "loglevel" "^1.4.1" + +"loglevel@^1.4.1": + "integrity" "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==" + "resolved" "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz" + "version" "1.8.0" + +"long@^4.0.0": + "integrity" "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + "resolved" "https://registry.npmjs.org/long/-/long-4.0.0.tgz" + "version" "4.0.0" + +"loose-envify@^1.0.0", "loose-envify@^1.1.0", "loose-envify@^1.4.0": + "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" + "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "js-tokens" "^3.0.0 || ^4.0.0" + +"lower-case@^2.0.2": + "integrity" "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==" + "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "tslib" "^2.0.3" + +"lowercase-keys@^1.0.0", "lowercase-keys@^1.0.1": + "integrity" "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" + "version" "1.0.1" + +"lowercase-keys@^2.0.0": + "integrity" "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" + "version" "2.0.0" + +"lru-cache@^4.1.5": + "integrity" "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz" + "version" "4.1.5" + dependencies: + "pseudomap" "^1.0.2" + "yallist" "^2.1.2" + +"lru-cache@^5.0.0": + "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "yallist" "^3.0.2" + +"lru-cache@^5.1.1": + "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "yallist" "^3.0.2" + +"lru-cache@^6.0.0": + "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "yallist" "^4.0.0" + +"lru-cache@~4.0.0": + "integrity" "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "pseudomap" "^1.0.1" + "yallist" "^2.0.0" + +"lru-memoizer@^2.1.4": + "integrity" "sha512-IXAq50s4qwrOBrXJklY+KhgZF+5y98PDaNo0gi/v2KQBFLyWr+JyFvijZXkGKjQj/h9c0OwoE+JZbwUXce76hQ==" + "resolved" "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.4.tgz" + "version" "2.1.4" + dependencies: + "lodash.clonedeep" "^4.5.0" + "lru-cache" "~4.0.0" + +"lru-queue@^0.1.0": + "integrity" "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=" + "resolved" "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz" + "version" "0.1.0" + dependencies: + "es5-ext" "~0.10.2" + +"lunr@^2.3.9": + "integrity" "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" + "resolved" "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz" + "version" "2.3.9" + +"luxon@^1.12.1": + "integrity" "sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ==" + "resolved" "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz" + "version" "1.28.0" + +"lz-string@^1.4.4": + "integrity" "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=" + "resolved" "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz" + "version" "1.4.4" + +"m3u8_multi_downloader@^1.1.5": + "integrity" "sha512-1x2w4QPcf3mteNj6n5LoF9sM9FTAoGM7gPdrntjbc+yLtBKIOFx0atp3Y1naORSLWep3I8XD5rIIR05/48p6sw==" + "resolved" "https://registry.npmjs.org/m3u8_multi_downloader/-/m3u8_multi_downloader-1.1.5.tgz" + "version" "1.1.5" + dependencies: + "crypto-js" "^4.0.0" + "m3u8-parser" "^4.4.0" + "md5" "^2.2.1" + "request" "^2.88.0" + "url" "^0.11.0" + +"m3u8-parser@^4.4.0": + "integrity" "sha512-pbrQwiMiq+MmI9bl7UjtPT3AK603PV9bogNlr83uC+X9IoxqL5E4k7kU7fMQ0dpRgxgeSMygqUa0IMLQNXLBNA==" + "resolved" "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-4.7.1.tgz" + "version" "4.7.1" + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "^3.0.5" + "global" "^4.4.0" + +"m3u8-to-mp4@^1.0.0": + "integrity" "sha512-TWZgOuOzYFgLxRyl/971nvxZPx6of4hET1y+h/YZPEKIrla18M6cHZZk6pVBH1cZL2aDiCC2TRcS+YTL3blDWA==" + "resolved" "https://registry.npmjs.org/m3u8-to-mp4/-/m3u8-to-mp4-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "fluent-ffmpeg" "^2.1.2" + "fs" "0.0.1-security" + +"make-dir@^2.0.0": + "integrity" "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "pify" "^4.0.1" + "semver" "^5.6.0" + +"make-dir@^2.1.0": + "integrity" "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "pify" "^4.0.1" + "semver" "^5.6.0" + +"make-dir@^3.0.0", "make-dir@^3.0.2", "make-dir@^3.1.0": + "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "semver" "^6.0.0" + +"make-error@^1", "make-error@^1.1.1", "make-error@1.x": + "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + "resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + "version" "1.3.6" + +"make-fetch-happen@^8.0.9": + "integrity" "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==" + "resolved" "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz" + "version" "8.0.14" + dependencies: + "agentkeepalive" "^4.1.3" + "cacache" "^15.0.5" + "http-cache-semantics" "^4.1.0" + "http-proxy-agent" "^4.0.1" + "https-proxy-agent" "^5.0.0" + "is-lambda" "^1.0.1" + "lru-cache" "^6.0.0" + "minipass" "^3.1.3" + "minipass-collect" "^1.0.2" + "minipass-fetch" "^1.3.2" + "minipass-flush" "^1.0.5" + "minipass-pipeline" "^1.2.4" + "promise-retry" "^2.0.1" + "socks-proxy-agent" "^5.0.0" + "ssri" "^8.0.0" + +"make-fetch-happen@^9.0.1": + "integrity" "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==" + "resolved" "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz" + "version" "9.1.0" + dependencies: + "agentkeepalive" "^4.1.3" + "cacache" "^15.2.0" + "http-cache-semantics" "^4.1.0" + "http-proxy-agent" "^4.0.1" + "https-proxy-agent" "^5.0.0" + "is-lambda" "^1.0.1" + "lru-cache" "^6.0.0" + "minipass" "^3.1.3" + "minipass-collect" "^1.0.2" + "minipass-fetch" "^1.3.2" + "minipass-flush" "^1.0.5" + "minipass-pipeline" "^1.2.4" + "negotiator" "^0.6.2" + "promise-retry" "^2.0.1" + "socks-proxy-agent" "^6.0.0" + "ssri" "^8.0.0" + +"make-plural@^4.3.0": + "integrity" "sha512-xTYd4JVHpSCW+aqDof6w/MebaMVNTVYBZhbB/vi513xXdiPT92JMVCo0Jq8W2UZnzYRFeVbQiQ+I25l13JuKvA==" + "resolved" "https://registry.npmjs.org/make-plural/-/make-plural-4.3.0.tgz" + "version" "4.3.0" + optionalDependencies: + "minimist" "^1.2.0" + +"makeerror@1.0.12": + "integrity" "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==" + "resolved" "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + "version" "1.0.12" + dependencies: + "tmpl" "1.0.5" + +"map-cache@^0.2.2": + "integrity" "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + "resolved" "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" + "version" "0.2.2" + +"map-o@^2.0.1": + "integrity" "sha512-BxazE81fVByHWasyXhqKeo2m7bFKYu+ZbEfiuexMOnklXW+tzDvnlTi/JaklEeuuwqcqJzPaf9q+TWptSGXeLg==" + "resolved" "https://registry.npmjs.org/map-o/-/map-o-2.0.10.tgz" + "version" "2.0.10" + dependencies: + "iterate-object" "^1.3.0" + +"map-obj@^1.0.0": + "integrity" "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" + "version" "1.0.1" + +"map-obj@^4.0.0", "map-obj@^4.1.0": + "integrity" "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" + "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" + "version" "4.3.0" + +"map-visit@^1.0.0": + "integrity" "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=" + "resolved" "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "object-visit" "^1.0.0" + +"mark.js@^8.11.1": + "integrity" "sha1-GA8fnr74sOY45BZq1S24eb6y/8U=" + "resolved" "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz" + "version" "8.11.1" + +"marked@^0.7.0": + "integrity" "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==" + "resolved" "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz" + "version" "0.7.0" + +"math-random@2.0.1": + "integrity" "sha512-oIEbWiVDxDpl5tIF4S6zYS9JExhh3bun3uLb3YAinHPTlRtW4g1S66LtJrJ4Npq8dgIa8CLK5iPVah5n4n0s2w==" + "resolved" "https://registry.npmjs.org/math-random/-/math-random-2.0.1.tgz" + "version" "2.0.1" + +"md5.js@^1.3.4": + "integrity" "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==" + "resolved" "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" + "version" "1.3.5" + dependencies: + "hash-base" "^3.0.0" + "inherits" "^2.0.1" + "safe-buffer" "^5.1.2" + +"md5@^2.2.1": + "integrity" "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==" + "resolved" "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "charenc" "0.0.2" + "crypt" "0.0.2" + "is-buffer" "~1.1.6" + +"meant@^1.0.1": + "integrity" "sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw==" + "resolved" "https://registry.npmjs.org/meant/-/meant-1.0.3.tgz" + "version" "1.0.3" + +"media-typer@0.3.0": + "integrity" "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "version" "0.3.0" + +"memfs@^3.4.1": + "integrity" "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==" + "resolved" "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz" + "version" "3.4.1" + dependencies: + "fs-monkey" "1.0.3" + +"memoize-one@^5.0.0": + "integrity" "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + "resolved" "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" + "version" "5.2.1" + +"memoize-one@^5.2.1": + "integrity" "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + "resolved" "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" + "version" "5.2.1" + +"memoizee@^0.4.15": + "integrity" "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==" + "resolved" "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz" + "version" "0.4.15" + dependencies: + "d" "^1.0.1" + "es5-ext" "^0.10.53" + "es6-weak-map" "^2.0.3" + "event-emitter" "^0.3.5" + "is-promise" "^2.2.2" + "lru-queue" "^0.1.0" + "next-tick" "^1.1.0" + "timers-ext" "^0.1.7" + +"memory-fs@^0.4.1": + "integrity" "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=" + "resolved" "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz" + "version" "0.4.1" + dependencies: + "errno" "^0.1.3" + "readable-stream" "^2.0.1" + +"memory-fs@^0.5.0": + "integrity" "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==" + "resolved" "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz" + "version" "0.5.0" + dependencies: + "errno" "^0.1.3" + "readable-stream" "^2.0.1" + +"memorystream@^0.3.1": + "integrity" "sha1-htcJCzDORV1j+64S3aUaR93K+bI=" + "resolved" "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" + "version" "0.3.1" + +"meow@^8.0.0": + "integrity" "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==" + "resolved" "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz" + "version" "8.1.2" dependencies: "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -merge@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" - integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - 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" - -micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.49.0: - version "1.49.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" - integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -"mime-db@>= 1.43.0 < 2": - version "1.50.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f" - integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A== - -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.32" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" - integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== - dependencies: - mime-db "1.49.0" - -mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.3.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.3, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" - integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== - dependencies: - minipass "^3.1.0" - minipass-sized "^1.0.3" - minizlib "^2.0.0" + "camelcase-keys" "^6.2.2" + "decamelize-keys" "^1.1.0" + "hard-rejection" "^2.1.0" + "minimist-options" "4.1.0" + "normalize-package-data" "^3.0.0" + "read-pkg-up" "^7.0.1" + "redent" "^3.0.0" + "trim-newlines" "^3.0.0" + "type-fest" "^0.18.0" + "yargs-parser" "^20.2.3" + +"merge-deep@^3.0.1": + "integrity" "sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==" + "resolved" "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz" + "version" "3.0.3" + dependencies: + "arr-union" "^3.1.0" + "clone-deep" "^0.2.4" + "kind-of" "^3.0.2" + +"merge-descriptors@1.0.1": + "integrity" "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + "version" "1.0.1" + +"merge-stream@^2.0.0": + "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + "version" "2.0.0" + +"merge@^1.2.0": + "integrity" "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==" + "resolved" "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz" + "version" "1.2.1" + +"merge2@^1.3.0", "merge2@^1.4.1": + "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + "version" "1.4.1" + +"messageformat-formatters@^2.0.1": + "integrity" "sha512-E/lQRXhtHwGuiQjI7qxkLp8AHbMD5r2217XNe/SREbBlSawe0lOqsFb7rflZJmlQFSULNLIqlcjjsCPlB3m3Mg==" + "resolved" "https://registry.npmjs.org/messageformat-formatters/-/messageformat-formatters-2.0.1.tgz" + "version" "2.0.1" + +"messageformat-parser@^4.1.2": + "integrity" "sha512-2fU3XDCanRqeOCkn7R5zW5VQHWf+T3hH65SzuqRvjatBK7r4uyFa5mEX+k6F9Bd04LVM5G4/BHBTUJsOdW7uyg==" + "resolved" "https://registry.npmjs.org/messageformat-parser/-/messageformat-parser-4.1.3.tgz" + "version" "4.1.3" + +"messageformat@^2.2.1": + "integrity" "sha512-uTzvsv0lTeQxYI2y1NPa1lItL5VRI8Gb93Y2K2ue5gBPyrbJxfDi/EYWxh2PKv5yO42AJeeqblS9MJSh/IEk4w==" + "resolved" "https://registry.npmjs.org/messageformat/-/messageformat-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "make-plural" "^4.3.0" + "messageformat-formatters" "^2.0.1" + "messageformat-parser" "^4.1.2" + +"methods@^1.1.2", "methods@~1.1.2": + "integrity" "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + "version" "1.1.2" + +"mic@^2.1.2": + "integrity" "sha1-8DQoOBeY/4iakEBaAxgVHbBUpO0=" + "resolved" "https://registry.npmjs.org/mic/-/mic-2.1.2.tgz" + "version" "2.1.2" + +"micromatch@^3.1.10", "micromatch@^3.1.4": + "integrity" "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==" + "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" + "version" "3.1.10" + dependencies: + "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" + +"micromatch@^4.0.0", "micromatch@^4.0.2", "micromatch@^4.0.4": + "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" + "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + "version" "4.0.5" + dependencies: + "braces" "^3.0.2" + "picomatch" "^2.3.1" + +"miller-rabin@^4.0.0": + "integrity" "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==" + "resolved" "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "bn.js" "^4.0.0" + "brorand" "^1.0.1" + +"mime-db@>= 1.43.0 < 2", "mime-db@1.52.0": + "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + "version" "1.52.0" + +"mime-types@^2.1.12", "mime-types@^2.1.18", "mime-types@^2.1.27", "mime-types@^2.1.31", "mime-types@~2.1.17", "mime-types@~2.1.19", "mime-types@~2.1.24", "mime-types@~2.1.34": + "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" + "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + "version" "2.1.35" + dependencies: + "mime-db" "1.52.0" + +"mime@^1.3.4", "mime@^1.6.0", "mime@1.6.0": + "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + "version" "1.6.0" + +"mime@^2.2.0": + "integrity" "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + "resolved" "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + "version" "2.6.0" + +"mime@^2.4.6": + "integrity" "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + "resolved" "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + "version" "2.6.0" + +"mimic-fn@^1.0.0": + "integrity" "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" + "version" "1.2.0" + +"mimic-fn@^2.1.0": + "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + "version" "2.1.0" + +"mimic-response@^1.0.0", "mimic-response@^1.0.1": + "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" + "version" "1.0.1" + +"mimic-response@^2.0.0": + "integrity" "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" + "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz" + "version" "2.1.0" + +"min-document@^2.19.0": + "integrity" "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=" + "resolved" "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" + "version" "2.19.0" + dependencies: + "dom-walk" "^0.1.0" + +"min-indent@^1.0.0": + "integrity" "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + "resolved" "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" + "version" "1.0.1" + +"minify-css-string@^1.0.0": + "integrity" "sha1-IBvZSSceGfbgrwodwMzFg95HxjA=" + "resolved" "https://registry.npmjs.org/minify-css-string/-/minify-css-string-1.0.0.tgz" + "version" "1.0.0" + +"minimalistic-assert@^1.0.0", "minimalistic-assert@^1.0.1": + "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + "version" "1.0.1" + +"minimalistic-crypto-utils@^1.0.1": + "integrity" "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + "resolved" "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + "version" "1.0.1" + +"minimatch@^3.0.3", "minimatch@^3.0.4", "minimatch@^3.1.2": + "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "brace-expansion" "^1.1.7" + +"minimist-options@4.1.0": + "integrity" "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==" + "resolved" "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "arrify" "^1.0.1" + "is-plain-obj" "^1.1.0" + "kind-of" "^6.0.3" + +"minimist@^1.2.0", "minimist@^1.2.5", "minimist@^1.2.6": + "integrity" "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" + "version" "1.2.6" + +"minipass-collect@^1.0.2": + "integrity" "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==" + "resolved" "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "minipass" "^3.0.0" + +"minipass-fetch@^1.3.0", "minipass-fetch@^1.3.2": + "integrity" "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==" + "resolved" "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz" + "version" "1.4.1" + dependencies: + "minipass" "^3.1.0" + "minipass-sized" "^1.0.3" + "minizlib" "^2.0.0" optionalDependencies: - encoding "^0.1.12" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + "encoding" "^0.1.12" + +"minipass-flush@^1.0.5": + "integrity" "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==" + "resolved" "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "minipass" "^3.0.0" + +"minipass-json-stream@^1.0.1": + "integrity" "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==" + "resolved" "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz" + "version" "1.0.1" dependencies: - minipass "^3.0.0" - -minipass-json-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" - integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== - dependencies: - jsonparse "^1.3.1" - minipass "^3.0.0" - -minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - -minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.5.tgz#71f6251b0a33a49c01b3cf97ff77eda030dff732" - integrity sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw== - dependencies: - yallist "^4.0.0" - -minizlib@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -minizlib@^2.0.0, minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp-infer-owner@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" - integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== - dependencies: - chownr "^2.0.0" - infer-owner "^1.0.4" - mkdirp "^1.0.3" - -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -modify-values@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" - integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== - -module-alias@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.2.tgz#151cdcecc24e25739ff0aa6e51e1c5716974c0e0" - integrity sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q== - -moo@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" - integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3, ms@^2.0.0, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -multimatch@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" - integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== + "jsonparse" "^1.3.1" + "minipass" "^3.0.0" + +"minipass-pipeline@^1.2.2", "minipass-pipeline@^1.2.4": + "integrity" "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==" + "resolved" "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" + "version" "1.2.4" + dependencies: + "minipass" "^3.0.0" + +"minipass-sized@^1.0.3": + "integrity" "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==" + "resolved" "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "minipass" "^3.0.0" + +"minipass@^2.6.0", "minipass@^2.9.0": + "integrity" "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz" + "version" "2.9.0" + dependencies: + "safe-buffer" "^5.1.2" + "yallist" "^3.0.0" + +"minipass@^3.0.0", "minipass@^3.1.0", "minipass@^3.1.1", "minipass@^3.1.3": + "integrity" "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz" + "version" "3.1.6" + dependencies: + "yallist" "^4.0.0" + +"minizlib@^1.3.3": + "integrity" "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==" + "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz" + "version" "1.3.3" + dependencies: + "minipass" "^2.9.0" + +"minizlib@^2.0.0", "minizlib@^2.1.1": + "integrity" "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==" + "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" + "version" "2.1.2" + dependencies: + "minipass" "^3.0.0" + "yallist" "^4.0.0" + +"mississippi@^3.0.0": + "integrity" "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==" + "resolved" "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "concat-stream" "^1.5.0" + "duplexify" "^3.4.2" + "end-of-stream" "^1.1.0" + "flush-write-stream" "^1.0.0" + "from2" "^2.1.0" + "parallel-transform" "^1.1.0" + "pump" "^3.0.0" + "pumpify" "^1.3.3" + "stream-each" "^1.1.0" + "through2" "^2.0.0" + +"mixin-deep@^1.2.0": + "integrity" "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==" + "resolved" "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "for-in" "^1.0.2" + "is-extendable" "^1.0.1" + +"mixin-object@^2.0.1": + "integrity" "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=" + "resolved" "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "for-in" "^0.1.3" + "is-extendable" "^0.1.1" + +"mkdirp-classic@^0.5.2": + "integrity" "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + "resolved" "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" + "version" "0.5.3" + +"mkdirp-infer-owner@^2.0.0": + "integrity" "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==" + "resolved" "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "chownr" "^2.0.0" + "infer-owner" "^1.0.4" + "mkdirp" "^1.0.3" + +"mkdirp@^0.5.1", "mkdirp@^0.5.3", "mkdirp@^0.5.5": + "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + "version" "0.5.6" + dependencies: + "minimist" "^1.2.6" + +"mkdirp@^0.5.5": + "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + "version" "0.5.6" + dependencies: + "minimist" "^1.2.6" + +"mkdirp@^1.0.3", "mkdirp@^1.0.4", "mkdirp@1.0.4", "mkdirp@1.x": + "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + "version" "1.0.4" + +"mkpath@^0.1.0": + "integrity" "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=" + "resolved" "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz" + "version" "0.1.0" + +"mobx-react-lite@^3.2.0": + "integrity" "sha512-q5+UHIqYCOpBoFm/PElDuOhbcatvTllgRp3M1s+Hp5j0Z6XNgDbgqxawJ0ZAUEyKM8X1zs70PCuhAIzX1f4Q/g==" + "resolved" "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-3.2.0.tgz" + "version" "3.2.0" + +"mobx-react@^7.2.0": + "integrity" "sha512-KHUjZ3HBmZlNnPd1M82jcdVsQRDlfym38zJhZEs33VxyVQTvL77hODCArq6+C1P1k/6erEeo2R7rpE7ZeOL7dg==" + "resolved" "https://registry.npmjs.org/mobx-react/-/mobx-react-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "mobx-react-lite" "^3.2.0" + +"mobx@^6.3.2": + "integrity" "sha512-xGPM9dIE1qkK9Nrhevp0gzpsmELKU4MFUJRORW/jqxVFIHHWIoQrjDjL8vkwoJYY3C2CeVJqgvl38hgKTalTWg==" + "resolved" "https://registry.npmjs.org/mobx/-/mobx-6.3.2.tgz" + "version" "6.3.2" + +"modify-values@^1.0.0": + "integrity" "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==" + "resolved" "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz" + "version" "1.0.1" + +"module-alias@^2.2.2": + "integrity" "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==" + "resolved" "https://registry.npmjs.org/module-alias/-/module-alias-2.2.2.tgz" + "version" "2.2.2" + +"module-details-from-path@^1.0.3": + "integrity" "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" + "resolved" "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz" + "version" "1.0.3" + +"moment-timezone@^0.5.34": + "integrity" "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==" + "resolved" "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz" + "version" "0.5.34" + dependencies: + "moment" ">= 2.9.0" + +"moment@^2.29.1", "moment@>= 2.9.0": + "integrity" "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==" + "resolved" "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz" + "version" "2.29.3" + +"moo@^0.5.0": + "integrity" "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==" + "resolved" "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz" + "version" "0.5.1" + +"move-concurrently@^1.0.1": + "integrity" "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=" + "resolved" "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "aproba" "^1.1.1" + "copy-concurrently" "^1.0.0" + "fs-write-stream-atomic" "^1.0.8" + "mkdirp" "^0.5.1" + "rimraf" "^2.5.4" + "run-queue" "^1.0.3" + +"mrmime@^1.0.0": + "integrity" "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==" + "resolved" "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz" + "version" "1.0.0" + +"ms@^2.0.0", "ms@^2.1.1", "ms@2.1.2": + "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + "version" "2.1.2" + +"ms@2.0.0": + "integrity" "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + "version" "2.0.0" + +"ms@2.1.3": + "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + "version" "2.1.3" + +"multicast-dns@^7.2.4": + "integrity" "sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw==" + "resolved" "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz" + "version" "7.2.4" + dependencies: + "dns-packet" "^5.2.2" + "thunky" "^1.0.2" + +"multimatch@^5.0.0": + "integrity" "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==" + "resolved" "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz" + "version" "5.0.0" dependencies: "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" - -mute-stream@0.0.8, mute-stream@~0.0.4: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nan@^2.12.1: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== - -nanocolors@^0.1.0, nanocolors@^0.1.5: - version "0.1.12" - resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.12.tgz#8577482c58cbd7b5bb1681db4cf48f11a87fd5f6" - integrity sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ== - -nanocolors@^0.2.2: - version "0.2.11" - resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.2.11.tgz#f2573e6872f1b70067423fc68bbc9d0de2f3bbee" - integrity sha512-83ttyvfJj66dKMadWfBkEUOEDFfRc8FpzTJvh1MySR/pzWFmFikTQZGOV6kHZRz7yR/heiQ1y/MHBBN5P/e7WQ== - -nanoid@^3.1.25: - version "3.1.28" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.28.tgz#3c01bac14cb6c5680569014cc65a2f26424c6bd4" - integrity sha512-gSu9VZ2HtmoKYe/lmyPFES5nknFrHa+/DT9muUFWFMi6Jh9E1I7bkvlQ8xxf1Kos9pi9o8lBnIOkatMhKX/YUw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -nearley@^2.7.10: - version "2.20.1" - resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.20.1.tgz#246cd33eff0d012faf197ff6774d7ac78acdd474" - integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ== - dependencies: - commander "^2.19.0" - moo "^0.5.0" - railroad-diagrams "^1.0.0" - randexp "0.4.6" - -negotiator@0.6.2, negotiator@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -nested-error-stacks@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz#d2cc9fc5235ddb371fc44d506234339c8e4b0a4b" - integrity sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-fetch@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -node-fetch@^2.6.1: - version "2.6.5" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.5.tgz#42735537d7f080a7e5f78b6c549b7146be1742fd" - integrity sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ== - dependencies: - whatwg-url "^5.0.0" - -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== - -node-gyp@^5.0.2: - version "5.1.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e" - integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.1.2" - request "^2.88.0" - rimraf "^2.6.3" - semver "^5.7.1" - tar "^4.4.12" - which "^1.3.1" - -node-gyp@^7.1.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" - integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.3" - nopt "^5.0.0" - npmlog "^4.1.2" - request "^2.88.2" - rimraf "^3.0.2" - semver "^7.3.2" - tar "^6.0.2" - which "^2.0.2" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-releases@^1.1.76: - version "1.1.76" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.76.tgz#df245b062b0cafbd5282ab6792f7dccc2d97f36e" - integrity sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA== - -nodemon@^2.0.15: - version "2.0.15" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.15.tgz#504516ce3b43d9dc9a955ccd9ec57550a31a8d4e" - integrity sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA== - dependencies: - chokidar "^3.5.2" - debug "^3.2.7" - ignore-by-default "^1.0.1" - minimatch "^3.0.4" - pstree.remy "^1.1.8" - semver "^5.7.1" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.5" - update-notifier "^5.1.0" - -noms@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/noms/-/noms-0.0.0.tgz#da8ebd9f3af9d6760919b27d9cdc8092a7332859" - integrity sha1-2o69nzr51nYJGbJ9nNyAkqczKFk= - dependencies: - inherits "^2.0.1" - readable-stream "~1.0.31" - -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= - dependencies: - abbrev "1" - -normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^3.0.0, normalize-package-data@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - -normalize-url@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -notistack@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/notistack/-/notistack-2.0.3.tgz#9007550e5cbc14df84d1d54e7a55ac0948eb59e8" - integrity sha512-krmVFtTO9kEY1Pa4NrbyexrjiRcV6TqBM2xLx8nuDea1g96Z/OZfkvVLmYKkTvoSJ3jyQntWK16z86ssW5kt4A== - dependencies: - clsx "^1.1.0" - hoist-non-react-statics "^3.3.0" - -npm-bundled@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-install-checks@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" - integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== - dependencies: - semver "^7.1.1" - -npm-lifecycle@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309" - integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g== - dependencies: - byline "^5.0.0" - graceful-fs "^4.1.15" - node-gyp "^5.0.2" - resolve-from "^4.0.0" - slide "^1.1.6" - uid-number "0.0.6" - umask "^1.1.0" - which "^1.3.1" - -npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: - version "8.1.5" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" - integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== - dependencies: - hosted-git-info "^4.0.1" - semver "^7.3.4" - validate-npm-package-name "^3.0.0" - -npm-packlist@^2.1.4: - version "2.2.2" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" - integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== - dependencies: - glob "^7.1.6" - ignore-walk "^3.0.3" - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" - -npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" - integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== - dependencies: - npm-install-checks "^4.0.0" - npm-normalize-package-bin "^1.0.1" - npm-package-arg "^8.1.2" - semver "^7.3.4" - -npm-registry-fetch@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" - integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== - dependencies: - make-fetch-happen "^9.0.1" - minipass "^3.1.3" - minipass-fetch "^1.3.0" - minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" - -npm-registry-fetch@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz#86f3feb4ce00313bc0b8f1f8f69daae6face1661" - integrity sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA== + "array-differ" "^3.0.0" + "array-union" "^2.1.0" + "arrify" "^2.0.1" + "minimatch" "^3.0.4" + +"mustache@^4.2.0": + "integrity" "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==" + "resolved" "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz" + "version" "4.2.0" + +"mute-stream@~0.0.4", "mute-stream@0.0.8": + "integrity" "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + "resolved" "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" + "version" "0.0.8" + +"mute-stream@0.0.7": + "integrity" "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + "resolved" "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz" + "version" "0.0.7" + +"nan@^2.13.2": + "integrity" "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" + "resolved" "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz" + "version" "2.15.0" + +"nanoid@^3.3.1": + "integrity" "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==" + "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz" + "version" "3.3.3" + +"nanomatch@^1.2.9": + "integrity" "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==" + "resolved" "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" + "version" "1.2.13" + dependencies: + "arr-diff" "^4.0.0" + "array-unique" "^0.3.2" + "define-property" "^2.0.2" + "extend-shallow" "^3.0.2" + "fragment-cache" "^0.2.1" + "is-windows" "^1.0.2" + "kind-of" "^6.0.2" + "object.pick" "^1.3.0" + "regex-not" "^1.0.0" + "snapdragon" "^0.8.1" + "to-regex" "^3.0.1" + +"natural-compare@^1.4.0": + "integrity" "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + "version" "1.4.0" + +"natural@^5.1.13": + "integrity" "sha512-jbawyC9+efkqdUoqITVlZ+rnhB7Q5631Ta127xVdZxhtvYIg5Qd/KPDq3CqXLPslkNnXA9mm+whkCp0/9nR+ow==" + "resolved" "https://registry.npmjs.org/natural/-/natural-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "afinn-165" "^1.0.2" + "apparatus" "^0.0.10" + "safe-stable-stringify" "^2.2.0" + "sylvester" "^0.0.12" + "underscore" "^1.9.1" + "wordnet-db" "^3.1.11" + +"nearley@^2.7.10": + "integrity" "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==" + "resolved" "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz" + "version" "2.20.1" + dependencies: + "commander" "^2.19.0" + "moo" "^0.5.0" + "railroad-diagrams" "^1.0.0" + "randexp" "0.4.6" + +"needle@^2.3.3", "needle@2.4.0": + "integrity" "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==" + "resolved" "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz" + "version" "2.4.0" + dependencies: + "debug" "^3.2.6" + "iconv-lite" "^0.4.4" + "sax" "^1.2.4" + +"negotiator@^0.6.2", "negotiator@0.6.3": + "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + "version" "0.6.3" + +"neo-async@^2.5.0", "neo-async@^2.6.0", "neo-async@^2.6.1", "neo-async@^2.6.2": + "integrity" "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "resolved" "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + "version" "2.6.2" + +"nested-error-stacks@~2.0.1": + "integrity" "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==" + "resolved" "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz" + "version" "2.0.1" + +"netmask@^2.0.1": + "integrity" "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==" + "resolved" "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz" + "version" "2.0.2" + +"next-tick@^1.1.0", "next-tick@1": + "integrity" "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + "resolved" "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" + "version" "1.1.0" + +"ngrok@^3.2.1": + "integrity" "sha512-OTm6Nmi6JINPbzkZff8ysA2WqMeNDg3sOPMFHW2CpatVD5yJxmX1qdyLq3QYNACTKNB3/K9jTkG4wUVpAFX9Dw==" + "resolved" "https://registry.npmjs.org/ngrok/-/ngrok-3.4.1.tgz" + "version" "3.4.1" + dependencies: + "@types/node" "^8.10.50" + "@types/request" "^2.48.2" + "decompress-zip" "^0.3.2" + "request" "^2.88.0" + "request-promise-native" "^1.0.7" + "uuid" "^3.3.2" + +"nice-try@^1.0.4": + "integrity" "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "resolved" "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" + "version" "1.0.5" + +"no-case@^3.0.4": + "integrity" "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==" + "resolved" "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "lower-case" "^2.0.2" + "tslib" "^2.0.3" + +"nock@^12.0.2": + "integrity" "sha512-QNb/j8kbFnKCiyqi9C5DD0jH/FubFGj5rt9NQFONXwQm3IPB0CULECg/eS3AU1KgZb/6SwUa4/DTRKhVxkGABw==" + "resolved" "https://registry.npmjs.org/nock/-/nock-12.0.3.tgz" + "version" "12.0.3" + dependencies: + "debug" "^4.1.0" + "json-stringify-safe" "^5.0.1" + "lodash" "^4.17.13" + "propagate" "^2.0.0" + +"node-addon-api@*", "node-addon-api@^4.2.0": + "integrity" "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz" + "version" "4.3.0" + +"node-addon-api@^3.1.0": + "integrity" "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz" + "version" "3.2.1" + +"node-fetch-h2@^2.3.0": + "integrity" "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==" + "resolved" "https://registry.npmjs.org/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "http2-client" "^1.2.5" + +"node-fetch@^1.0.1": + "integrity" "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==" + "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz" + "version" "1.7.3" + dependencies: + "encoding" "^0.1.11" + "is-stream" "^1.0.1" + +"node-fetch@^2.2.0", "node-fetch@^2.3.0", "node-fetch@^2.6.1", "node-fetch@^2.6.5", "node-fetch@^2.6.7", "node-fetch@2.6.7": + "integrity" "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==" + "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" + "version" "2.6.7" + dependencies: + "whatwg-url" "^5.0.0" + +"node-fetch@2.6.5": + "integrity" "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==" + "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz" + "version" "2.6.5" + dependencies: + "whatwg-url" "^5.0.0" + +"node-forge@^0.10.0": + "integrity" "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz" + "version" "0.10.0" + +"node-forge@^1", "node-forge@^1.3.1": + "integrity" "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" + "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" + "version" "1.3.1" + +"node-gyp@^5.0.2": + "integrity" "sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw==" + "resolved" "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "env-paths" "^2.2.0" + "glob" "^7.1.4" + "graceful-fs" "^4.2.2" + "mkdirp" "^0.5.1" + "nopt" "^4.0.1" + "npmlog" "^4.1.2" + "request" "^2.88.0" + "rimraf" "^2.6.3" + "semver" "^5.7.1" + "tar" "^4.4.12" + "which" "^1.3.1" + +"node-gyp@^7.1.0": + "integrity" "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==" + "resolved" "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz" + "version" "7.1.2" + dependencies: + "env-paths" "^2.2.0" + "glob" "^7.1.4" + "graceful-fs" "^4.2.3" + "nopt" "^5.0.0" + "npmlog" "^4.1.2" + "request" "^2.88.2" + "rimraf" "^3.0.2" + "semver" "^7.3.2" + "tar" "^6.0.2" + "which" "^2.0.2" + +"node-int64@^0.4.0": + "integrity" "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + "resolved" "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + "version" "0.4.0" + +"node-libs-browser@^2.2.1": + "integrity" "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==" + "resolved" "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz" + "version" "2.2.1" + dependencies: + "assert" "^1.1.1" + "browserify-zlib" "^0.2.0" + "buffer" "^4.3.0" + "console-browserify" "^1.1.0" + "constants-browserify" "^1.0.0" + "crypto-browserify" "^3.11.0" + "domain-browser" "^1.1.1" + "events" "^3.0.0" + "https-browserify" "^1.0.0" + "os-browserify" "^0.3.0" + "path-browserify" "0.0.1" + "process" "^0.11.10" + "punycode" "^1.2.4" + "querystring-es3" "^0.2.0" + "readable-stream" "^2.3.3" + "stream-browserify" "^2.0.1" + "stream-http" "^2.7.2" + "string_decoder" "^1.0.0" + "timers-browserify" "^2.0.4" + "tty-browserify" "0.0.0" + "url" "^0.11.0" + "util" "^0.11.0" + "vm-browserify" "^1.0.1" + +"node-readfiles@^0.2.0": + "integrity" "sha1-271K8SE04uY1wkXvk//Pb2BnOl0=" + "resolved" "https://registry.npmjs.org/node-readfiles/-/node-readfiles-0.2.0.tgz" + "version" "0.2.0" + dependencies: + "es6-promise" "^3.2.1" + +"node-releases@^2.0.3": + "integrity" "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==" + "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz" + "version" "2.0.3" + +"node-telegram-bot-api@0.56.0": + "integrity" "sha512-gKUlH/uUXdSJ++6y1Y16qEThZouecfl4twuPKe6V2BPFDDfom9j2QMlxfslPEjZPH2ZXlA1S/uoRCKtIjzuaLw==" + "resolved" "https://registry.npmjs.org/node-telegram-bot-api/-/node-telegram-bot-api-0.56.0.tgz" + "version" "0.56.0" + dependencies: + "array.prototype.findindex" "^2.0.2" + "bl" "^1.2.3" + "bluebird" "^3.5.1" + "debug" "^3.1.0" + "depd" "^1.1.1" + "eventemitter3" "^3.0.0" + "file-type" "^3.9.0" + "mime" "^1.6.0" + "pump" "^2.0.0" + "request" "^2.83.0" + "request-promise" "^4.2.2" + +"node-wit@^6.2.1": + "integrity" "sha512-ITTguCVmwH7jgEH4pcGH+oJ+ptynbP2DvEwb8X5yzNHAWXE2gyLn5p//4Dnas0C/hdKvn4xciizYcG5pLCKEUQ==" + "resolved" "https://registry.npmjs.org/node-wit/-/node-wit-6.2.1.tgz" + "version" "6.2.1" + dependencies: + "body-parser" "^1.18.2" + "express" "^4.16.2" + "https-proxy-agent" "^5.0.0" + "isomorphic-fetch" "^2.2.1" + "lodash" "^4.17.14" + "mic" "^2.1.2" + "uuid" "^3.0.0" + +"node-witai-speech@^1.0.2": + "integrity" "sha1-mgYo9zQ5itzZ7N3m2IXM1qsoSp8=" + "resolved" "https://registry.npmjs.org/node-witai-speech/-/node-witai-speech-1.0.2.tgz" + "version" "1.0.2" + +"nodemon@^2.0.15", "nodemon@^2.0.7": + "integrity" "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==" + "resolved" "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz" + "version" "2.0.15" + dependencies: + "chokidar" "^3.5.2" + "debug" "^3.2.7" + "ignore-by-default" "^1.0.1" + "minimatch" "^3.0.4" + "pstree.remy" "^1.1.8" + "semver" "^5.7.1" + "supports-color" "^5.5.0" + "touch" "^3.1.0" + "undefsafe" "^2.0.5" + "update-notifier" "^5.1.0" + +"noms@0.0.0": + "integrity" "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=" + "resolved" "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz" + "version" "0.0.0" + dependencies: + "inherits" "^2.0.1" + "readable-stream" "~1.0.31" + +"nopt@^3.0.1": + "integrity" "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=" + "resolved" "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" + "version" "3.0.6" + dependencies: + "abbrev" "1" + +"nopt@^4.0.1": + "integrity" "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==" + "resolved" "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "abbrev" "1" + "osenv" "^0.1.4" + +"nopt@^5.0.0": + "integrity" "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==" + "resolved" "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "abbrev" "1" + +"nopt@~1.0.10": + "integrity" "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=" + "resolved" "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "abbrev" "1" + +"normalize-package-data@^2.0.0": + "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==" + "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + "version" "2.5.0" + dependencies: + "hosted-git-info" "^2.1.4" + "resolve" "^1.10.0" + "semver" "2 || 3 || 4 || 5" + "validate-npm-package-license" "^3.0.1" + +"normalize-package-data@^2.3.2": + "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==" + "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + "version" "2.5.0" + dependencies: + "hosted-git-info" "^2.1.4" + "resolve" "^1.10.0" + "semver" "2 || 3 || 4 || 5" + "validate-npm-package-license" "^3.0.1" + +"normalize-package-data@^2.5.0": + "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==" + "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + "version" "2.5.0" + dependencies: + "hosted-git-info" "^2.1.4" + "resolve" "^1.10.0" + "semver" "2 || 3 || 4 || 5" + "validate-npm-package-license" "^3.0.1" + +"normalize-package-data@^3.0.0", "normalize-package-data@^3.0.2": + "integrity" "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==" + "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz" + "version" "3.0.3" + dependencies: + "hosted-git-info" "^4.0.1" + "is-core-module" "^2.5.0" + "semver" "^7.3.4" + "validate-npm-package-license" "^3.0.1" + +"normalize-path@^2.1.1": + "integrity" "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=" + "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "remove-trailing-separator" "^1.0.1" + +"normalize-path@^3.0.0", "normalize-path@~3.0.0": + "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + "version" "3.0.0" + +"normalize-url@^4.1.0": + "integrity" "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" + "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" + "version" "4.5.1" + +"normalize-url@^6.1.0": + "integrity" "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" + "version" "6.1.0" + +"notistack@^2.0.3": + "integrity" "sha512-kOJmKvTG91ElMzi4aHu82BDe1liQ0zMrBp+TnWJptgowDsTbeTKbZmsRqJNIj145BmlOtZsEE9xjcrN46zVo3w==" + "resolved" "https://registry.npmjs.org/notistack/-/notistack-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "clsx" "^1.1.0" + "hoist-non-react-statics" "^3.3.0" + +"npm-bundled@^1.1.1": + "integrity" "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==" + "resolved" "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "npm-normalize-package-bin" "^1.0.1" + +"npm-install-checks@^4.0.0": + "integrity" "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==" + "resolved" "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "semver" "^7.1.1" + +"npm-lifecycle@^3.1.5": + "integrity" "sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==" + "resolved" "https://registry.npmjs.org/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz" + "version" "3.1.5" + dependencies: + "byline" "^5.0.0" + "graceful-fs" "^4.1.15" + "node-gyp" "^5.0.2" + "resolve-from" "^4.0.0" + "slide" "^1.1.6" + "uid-number" "0.0.6" + "umask" "^1.1.0" + "which" "^1.3.1" + +"npm-normalize-package-bin@^1.0.0", "npm-normalize-package-bin@^1.0.1": + "integrity" "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + "resolved" "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz" + "version" "1.0.1" + +"npm-package-arg@^8.0.0", "npm-package-arg@^8.0.1", "npm-package-arg@^8.1.0", "npm-package-arg@^8.1.2", "npm-package-arg@^8.1.5": + "integrity" "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==" + "resolved" "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz" + "version" "8.1.5" + dependencies: + "hosted-git-info" "^4.0.1" + "semver" "^7.3.4" + "validate-npm-package-name" "^3.0.0" + +"npm-packlist@^2.1.4": + "integrity" "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==" + "resolved" "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz" + "version" "2.2.2" + dependencies: + "glob" "^7.1.6" + "ignore-walk" "^3.0.3" + "npm-bundled" "^1.1.1" + "npm-normalize-package-bin" "^1.0.1" + +"npm-pick-manifest@^6.0.0", "npm-pick-manifest@^6.1.1": + "integrity" "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==" + "resolved" "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz" + "version" "6.1.1" + dependencies: + "npm-install-checks" "^4.0.0" + "npm-normalize-package-bin" "^1.0.1" + "npm-package-arg" "^8.1.2" + "semver" "^7.3.4" + +"npm-registry-fetch@^11.0.0": + "integrity" "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==" + "resolved" "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz" + "version" "11.0.0" + dependencies: + "make-fetch-happen" "^9.0.1" + "minipass" "^3.1.3" + "minipass-fetch" "^1.3.0" + "minipass-json-stream" "^1.0.1" + "minizlib" "^2.0.0" + "npm-package-arg" "^8.0.0" + +"npm-registry-fetch@^9.0.0": + "integrity" "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==" + "resolved" "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz" + "version" "9.0.0" dependencies: "@npmcli/ci-detect" "^1.0.0" - lru-cache "^6.0.0" - make-fetch-happen "^8.0.9" - minipass "^3.1.3" - minipass-fetch "^1.3.0" - minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" - -npm-run-all@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" - integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== - dependencies: - ansi-styles "^3.2.1" - chalk "^2.4.1" - cross-spawn "^6.0.5" - memorystream "^0.3.1" - minimatch "^3.0.4" - pidtree "^0.3.0" - read-pkg "^3.0.0" - shell-quote "^1.6.1" - string.prototype.padend "^3.0.0" - -npm-run-path@^4.0.0, npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -nth-check@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" - integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== - dependencies: - boolbase "^1.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.11.0, object-inspect@^1.7.0, object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== - -object-is@^1.0.1, object-is@^1.0.2, object-is@^1.1.2, object-is@^1.1.4: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.entries@^1.1.1, object.entries@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.4.tgz#43ccf9a50bc5fd5b649d45ab1a579f24e088cafd" - integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - -object.fromentries@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" - integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has "^1.0.3" - -object.getownpropertydescriptors@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" - integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.1, object.values@^1.1.2, object.values@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" - integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - -objectorarray@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/objectorarray/-/objectorarray-1.0.5.tgz#2c05248bbefabd8f43ad13b41085951aac5e68a5" - integrity sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg== - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^8.0.9: - version "8.2.1" - resolved "https://registry.yarnpkg.com/open/-/open-8.2.1.tgz#82de42da0ccbf429bc12d099dad2e0975e14e8af" - integrity sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -opener@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -ot-json0@^1.0.1, ot-json0@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ot-json0/-/ot-json0-1.1.0.tgz#f5edeff162673b62f0f136bb64724c40ac5e590d" - integrity sha512-wf5fci7GGpMYRDnbbdIFQymvhsbFACMHtxjivQo5KgvAHlxekyfJ9aPsRr6YfFQthQkk4bmsl5yESrZwC/oMYQ== - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-each-series@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" - integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== - -p-event@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" - integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== - dependencies: - p-timeout "^3.1.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map-series@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" - integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" + "lru-cache" "^6.0.0" + "make-fetch-happen" "^8.0.9" + "minipass" "^3.1.3" + "minipass-fetch" "^1.3.0" + "minipass-json-stream" "^1.0.1" + "minizlib" "^2.0.0" + "npm-package-arg" "^8.0.0" + +"npm-run-all@^4.1.5": + "integrity" "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==" + "resolved" "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz" + "version" "4.1.5" + dependencies: + "ansi-styles" "^3.2.1" + "chalk" "^2.4.1" + "cross-spawn" "^6.0.5" + "memorystream" "^0.3.1" + "minimatch" "^3.0.4" + "pidtree" "^0.3.0" + "read-pkg" "^3.0.0" + "shell-quote" "^1.6.1" + "string.prototype.padend" "^3.0.0" + +"npm-run-path@^4.0.1": + "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" + "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "path-key" "^3.0.0" + +"npmlog@^4.1.2": + "integrity" "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==" + "resolved" "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "are-we-there-yet" "~1.1.2" + "console-control-strings" "~1.1.0" + "gauge" "~2.7.3" + "set-blocking" "~2.0.0" + +"npmlog@^5.0.1": + "integrity" "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==" + "resolved" "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "are-we-there-yet" "^2.0.0" + "console-control-strings" "^1.1.0" + "gauge" "^3.0.0" + "set-blocking" "^2.0.0" + +"nssocket@0.6.0": + "integrity" "sha1-Wflvb/MhVm8zxw99vu7N/cBxVPo=" + "resolved" "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz" + "version" "0.6.0" + dependencies: + "eventemitter2" "~0.4.14" + "lazy" "~1.0.11" + +"nth-check@^2.0.1": + "integrity" "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==" + "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "boolbase" "^1.0.0" + +"number-is-nan@^1.0.0": + "integrity" "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "resolved" "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + "version" "1.0.1" + +"nwsapi@^2.2.0": + "integrity" "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + "resolved" "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz" + "version" "2.2.0" + +"oas-kit-common@^1.0.8": + "integrity" "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==" + "resolved" "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz" + "version" "1.0.8" + dependencies: + "fast-safe-stringify" "^2.0.7" + +"oas-linter@^3.2.2": + "integrity" "sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==" + "resolved" "https://registry.npmjs.org/oas-linter/-/oas-linter-3.2.2.tgz" + "version" "3.2.2" + dependencies: + "@exodus/schemasafe" "^1.0.0-rc.2" + "should" "^13.2.1" + "yaml" "^1.10.0" + +"oas-resolver@^2.5.5": + "integrity" "sha512-1po1gzIlTXQqyVNtLFWJuzDm4xxhMCJ8QcP3OarKDO8aJ8AmCtQ67XZ1X+nBbHH4CjTcEsIab1qX5+GIU4f2Gg==" + "resolved" "https://registry.npmjs.org/oas-resolver/-/oas-resolver-2.5.5.tgz" + "version" "2.5.5" + dependencies: + "node-fetch-h2" "^2.3.0" + "oas-kit-common" "^1.0.8" + "reftools" "^1.1.8" + "yaml" "^1.10.0" + "yargs" "^17.0.1" + +"oas-schema-walker@^1.1.5": + "integrity" "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==" + "resolved" "https://registry.npmjs.org/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz" + "version" "1.1.5" + +"oas-validator@^5.0.6": + "integrity" "sha512-bI+gyr3MiG/4Q5Ibvg0R77skVWS882gFMkxwB1p6qY7Rc4p7EoDezFVfondjYhJDPDnB1ZD7Aqj7AWROAsMBZg==" + "resolved" "https://registry.npmjs.org/oas-validator/-/oas-validator-5.0.6.tgz" + "version" "5.0.6" + dependencies: + "call-me-maybe" "^1.0.1" + "oas-kit-common" "^1.0.8" + "oas-linter" "^3.2.2" + "oas-resolver" "^2.5.5" + "oas-schema-walker" "^1.1.5" + "reftools" "^1.1.8" + "should" "^13.2.1" + "yaml" "^1.10.0" + +"oauth-sign@~0.9.0": + "integrity" "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "resolved" "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" + "version" "0.9.0" + +"object-assign@^4", "object-assign@^4.1.0", "object-assign@^4.1.1": + "integrity" "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + "version" "4.1.1" + +"object-copy@^0.1.0": + "integrity" "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=" + "resolved" "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" + "version" "0.1.0" + dependencies: + "copy-descriptor" "^0.1.0" + "define-property" "^0.2.5" + "kind-of" "^3.0.3" + +"object-hash@^3.0.0": + "integrity" "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" + "resolved" "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" + "version" "3.0.0" + +"object-inspect@^1.12.0", "object-inspect@^1.7.0", "object-inspect@^1.9.0": + "integrity" "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" + "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz" + "version" "1.12.0" + +"object-is@^1.0.1", "object-is@^1.0.2", "object-is@^1.1.2", "object-is@^1.1.4": + "integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==" + "resolved" "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" + "version" "1.1.5" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + +"object-keys@^1.1.1": + "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + "version" "1.1.1" + +"object-visit@^1.0.0": + "integrity" "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=" + "resolved" "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "isobject" "^3.0.0" + +"object.assign@^4.1.0", "object.assign@^4.1.2": + "integrity" "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==" + "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "call-bind" "^1.0.0" + "define-properties" "^1.1.3" + "has-symbols" "^1.0.1" + "object-keys" "^1.1.1" + +"object.entries@^1.1.1", "object.entries@^1.1.2": + "integrity" "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==" + "resolved" "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz" + "version" "1.1.5" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.1" + +"object.fromentries@^2.0.3": + "integrity" "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==" + "resolved" "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz" + "version" "2.0.5" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.1" + +"object.getownpropertydescriptors@^2.0.3": + "integrity" "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==" + "resolved" "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz" + "version" "2.1.3" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.1" + +"object.pick@^1.3.0": + "integrity" "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=" + "resolved" "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "isobject" "^3.0.1" + +"object.values@^1.1.1", "object.values@^1.1.2", "object.values@^1.1.3", "object.values@^1.1.5": + "integrity" "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==" + "resolved" "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz" + "version" "1.1.5" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.1" + +"objectorarray@^1.0.5": + "integrity" "sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==" + "resolved" "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz" + "version" "1.0.5" + +"obuf@^1.0.0", "obuf@^1.1.2": + "integrity" "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + "resolved" "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" + "version" "1.1.2" + +"on-finished@^2.3.0", "on-finished@2.4.1": + "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" + "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + "version" "2.4.1" + dependencies: + "ee-first" "1.1.1" + +"on-headers@~1.0.2": + "integrity" "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + "resolved" "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + "version" "1.0.2" + +"once@^1.3.0", "once@^1.3.1", "once@^1.4.0": + "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "wrappy" "1" + +"onetime@^2.0.0": + "integrity" "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=" + "resolved" "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "mimic-fn" "^1.0.0" + +"onetime@^5.1.0", "onetime@^5.1.2": + "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" + "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "mimic-fn" "^2.1.0" + +"only@~0.0.2": + "integrity" "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=" + "resolved" "https://registry.npmjs.org/only/-/only-0.0.2.tgz" + "version" "0.0.2" + +"open@^8.0.9": + "integrity" "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==" + "resolved" "https://registry.npmjs.org/open/-/open-8.4.0.tgz" + "version" "8.4.0" + dependencies: + "define-lazy-prop" "^2.0.0" + "is-docker" "^2.1.1" + "is-wsl" "^2.2.0" -p-pipe@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" - integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== - -p-queue@^6.6.2: - version "6.6.2" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" - integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== +"openai-api@^1.2.5": + "integrity" "sha512-wKhm/BZS/PyzQRJTdl6kciwL4LpqqyertLYEbbPYDg7ySk1tEywPSBnMio0xdSQaRmdSYVS8VHzJvnwKb9tqkw==" + "resolved" "https://registry.npmjs.org/openai-api/-/openai-api-1.3.1.tgz" + "version" "1.3.1" dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.2.0" + "axios" "^0.21.1" + "dotenv" "^8.2.0" -p-reduce@^2.0.0, p-reduce@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" - integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== +"openai-api@1.2.6": + "integrity" "sha512-8wZ3ghZQLCaNnbcfkL2E6IRqy4mDyNFSZ7/ChIldBXshtNLLth8cTyqp6qIXT+MiSssE2vXcQn18mFigXCLZBQ==" + "resolved" "https://registry.npmjs.org/openai-api/-/openai-api-1.2.6.tgz" + "version" "1.2.6" + dependencies: + "axios" "^0.21.1" + "dotenv" "^8.2.0" -p-retry@^4.5.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" - integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== +"openapi-sampler@^1.0.1": + "integrity" "sha512-qBjxkSLJV183zTTs4fgxtU/iWSLUUu2aH2+5ddWkNhV7p8CSe/mnAgoLkEbMfHtel6yr9NF+vjUWqfM+iiwORQ==" + "resolved" "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.0.1.tgz" + "version" "1.0.1" dependencies: - "@types/retry" "^0.12.0" - retry "^0.13.1" + "@types/json-schema" "^7.0.7" + "json-pointer" "^0.6.1" + +"opener@^1.5.2": + "integrity" "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" + "resolved" "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" + "version" "1.5.2" + +"optionator@^0.8.1": + "integrity" "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==" + "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" + "version" "0.8.3" + dependencies: + "deep-is" "~0.1.3" + "fast-levenshtein" "~2.0.6" + "levn" "~0.3.0" + "prelude-ls" "~1.1.2" + "type-check" "~0.3.2" + "word-wrap" "~1.2.3" + +"optionator@^0.8.2": + "integrity" "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==" + "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" + "version" "0.8.3" + dependencies: + "deep-is" "~0.1.3" + "fast-levenshtein" "~2.0.6" + "levn" "~0.3.0" + "prelude-ls" "~1.1.2" + "type-check" "~0.3.2" + "word-wrap" "~1.2.3" + +"optionator@^0.9.1": + "integrity" "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==" + "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + "version" "0.9.1" + dependencies: + "deep-is" "^0.1.3" + "fast-levenshtein" "^2.0.6" + "levn" "^0.4.1" + "prelude-ls" "^1.2.1" + "type-check" "^0.4.0" + "word-wrap" "^1.2.3" + +"opusscript@^0.0.8": + "integrity" "sha512-VSTi1aWFuCkRCVq+tx/BQ5q9fMnQ9pVZ3JU4UHKqTkf0ED3fKEPdr+gKAAl3IA2hj9rrP6iyq3hlcJq3HELtNQ==" + "resolved" "https://registry.npmjs.org/opusscript/-/opusscript-0.0.8.tgz" + "version" "0.0.8" + +"ora@^5.4.1": + "integrity" "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==" + "resolved" "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + "version" "5.4.1" + dependencies: + "bl" "^4.1.0" + "chalk" "^4.1.0" + "cli-cursor" "^3.1.0" + "cli-spinners" "^2.5.0" + "is-interactive" "^1.0.0" + "is-unicode-supported" "^0.1.0" + "log-symbols" "^4.1.0" + "strip-ansi" "^6.0.0" + "wcwidth" "^1.0.1" + +"os-browserify@^0.3.0": + "integrity" "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + "resolved" "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" + "version" "0.3.0" + +"os-homedir@^1.0.0": + "integrity" "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + "resolved" "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" + "version" "1.0.2" + +"os-tmpdir@^1.0.0", "os-tmpdir@~1.0.2": + "integrity" "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + "resolved" "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + "version" "1.0.2" + +"osenv@^0.1.4": + "integrity" "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==" + "resolved" "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz" + "version" "0.1.5" + dependencies: + "os-homedir" "^1.0.0" + "os-tmpdir" "^1.0.0" + +"ot-json0@^1.0.1", "ot-json0@^1.1.0": + "integrity" "sha512-wf5fci7GGpMYRDnbbdIFQymvhsbFACMHtxjivQo5KgvAHlxekyfJ9aPsRr6YfFQthQkk4bmsl5yESrZwC/oMYQ==" + "resolved" "https://registry.npmjs.org/ot-json0/-/ot-json0-1.1.0.tgz" + "version" "1.1.0" + +"p-cancelable@^1.0.0": + "integrity" "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" + "version" "1.1.0" + +"p-finally@^1.0.0": + "integrity" "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + "version" "1.0.0" + +"p-limit@^1.1.0": + "integrity" "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "p-try" "^1.0.0" + +"p-limit@^2.0.0", "p-limit@^2.2.0": + "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "p-try" "^2.0.0" + +"p-limit@^3.0.2": + "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "yocto-queue" "^0.1.0" + +"p-locate@^2.0.0": + "integrity" "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "p-limit" "^1.1.0" + +"p-locate@^3.0.0": + "integrity" "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "p-limit" "^2.0.0" + +"p-locate@^4.1.0": + "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "p-limit" "^2.2.0" + +"p-locate@^5.0.0": + "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-limit" "^3.0.2" + +"p-map-series@^2.1.0": + "integrity" "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==" + "resolved" "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz" + "version" "2.1.0" + +"p-map@^4.0.0": + "integrity" "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==" + "resolved" "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "aggregate-error" "^3.0.0" -p-timeout@^3.1.0, p-timeout@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== +"p-pipe@^3.1.0": + "integrity" "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==" + "resolved" "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz" + "version" "3.1.0" + +"p-queue@^6.6.2": + "integrity" "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==" + "resolved" "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz" + "version" "6.6.2" dependencies: - p-finally "^1.0.0" + "eventemitter3" "^4.0.4" + "p-timeout" "^3.2.0" -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= +"p-reduce@^2.0.0", "p-reduce@^2.1.0": + "integrity" "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==" + "resolved" "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz" + "version" "2.1.0" -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +"p-retry@^4.5.0": + "integrity" "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==" + "resolved" "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" + "version" "4.6.2" + dependencies: + "@types/retry" "0.12.0" + "retry" "^0.13.1" -p-waterfall@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" - integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== +"p-timeout@^3.2.0": + "integrity" "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==" + "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" + "version" "3.2.0" dependencies: - p-reduce "^2.0.0" + "p-finally" "^1.0.0" -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== +"p-try@^1.0.0": + "integrity" "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + "resolved" "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" + "version" "1.0.0" + +"p-try@^2.0.0": + "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + "version" "2.2.0" + +"p-waterfall@^2.1.1": + "integrity" "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==" + "resolved" "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz" + "version" "2.1.1" dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" + "p-reduce" "^2.0.0" -pacote@^11.2.6: - version "11.3.5" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" - integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== +"pac-proxy-agent@^5.0.0": + "integrity" "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==" + "resolved" "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "@tootallnate/once" "1" + "agent-base" "6" + "debug" "4" + "get-uri" "3" + "http-proxy-agent" "^4.0.1" + "https-proxy-agent" "5" + "pac-resolver" "^5.0.0" + "raw-body" "^2.2.0" + "socks-proxy-agent" "5" + +"pac-resolver@^5.0.0": + "integrity" "sha512-H+/A6KitiHNNW+bxBKREk2MCGSxljfqRX76NjummWEYIat7ldVXRU3dhRIE3iXZ0nvGBk6smv3nntxKkzRL8NA==" + "resolved" "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "degenerator" "^3.0.1" + "ip" "^1.1.5" + "netmask" "^2.0.1" + +"package-json@^6.3.0": + "integrity" "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==" + "resolved" "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" + "version" "6.5.0" + dependencies: + "got" "^9.6.0" + "registry-auth-token" "^4.0.0" + "registry-url" "^5.0.0" + "semver" "^6.2.0" + +"packet-reader@1.0.0": + "integrity" "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" + "resolved" "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz" + "version" "1.0.0" + +"pacote@^11.2.6": + "integrity" "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==" + "resolved" "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz" + "version" "11.3.5" dependencies: "@npmcli/git" "^2.1.0" "@npmcli/installed-package-contents" "^1.0.6" "@npmcli/promise-spawn" "^1.2.0" "@npmcli/run-script" "^1.8.2" - cacache "^15.0.5" - chownr "^2.0.0" - fs-minipass "^2.1.0" - infer-owner "^1.0.4" - minipass "^3.1.3" - mkdirp "^1.0.3" - npm-package-arg "^8.0.1" - npm-packlist "^2.1.4" - npm-pick-manifest "^6.0.0" - npm-registry-fetch "^11.0.0" - promise-retry "^2.0.1" - read-package-json-fast "^2.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.1.0" - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-author@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/parse-author/-/parse-author-2.0.0.tgz#d3460bf1ddd0dfaeed42da754242e65fb684a81f" - integrity sha1-00YL8d3Q367tQtp1QkLmX7aEqB8= - dependencies: - author-regex "^1.0.0" - -parse-github-url@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" - integrity sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw== - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + "cacache" "^15.0.5" + "chownr" "^2.0.0" + "fs-minipass" "^2.1.0" + "infer-owner" "^1.0.4" + "minipass" "^3.1.3" + "mkdirp" "^1.0.3" + "npm-package-arg" "^8.0.1" + "npm-packlist" "^2.1.4" + "npm-pick-manifest" "^6.0.0" + "npm-registry-fetch" "^11.0.0" + "promise-retry" "^2.0.1" + "read-package-json-fast" "^2.0.1" + "rimraf" "^3.0.2" + "ssri" "^8.0.1" + "tar" "^6.1.0" + +"pako@^0.2.5": + "integrity" "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + "resolved" "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz" + "version" "0.2.9" + +"pako@~1.0.5": + "integrity" "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + "resolved" "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" + "version" "1.0.11" + +"parallel-transform@^1.1.0": + "integrity" "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==" + "resolved" "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "cyclist" "^1.0.1" + "inherits" "^2.0.3" + "readable-stream" "^2.1.5" + +"param-case@^3.0.4": + "integrity" "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==" + "resolved" "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "dot-case" "^3.0.4" + "tslib" "^2.0.3" + +"parent-module@^1.0.0": + "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" + "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "callsites" "^3.0.0" + +"parse-asn1@^5.0.0", "parse-asn1@^5.1.5": + "integrity" "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==" + "resolved" "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" + "version" "5.1.6" + dependencies: + "asn1.js" "^5.2.0" + "browserify-aes" "^1.0.0" + "evp_bytestokey" "^1.0.0" + "pbkdf2" "^3.0.3" + "safe-buffer" "^5.1.1" + +"parse-author@^2.0.0": + "integrity" "sha1-00YL8d3Q367tQtp1QkLmX7aEqB8=" + "resolved" "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "author-regex" "^1.0.0" + +"parse-cache-control@^1.0.1": + "integrity" "sha1-juqz5U+laSD+Fro493+iGqzC104=" + "resolved" "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz" + "version" "1.0.1" + +"parse-github-url@1.0.2": + "integrity" "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==" + "resolved" "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz" + "version" "1.0.2" + +"parse-json@^4.0.0": + "integrity" "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=" + "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "error-ex" "^1.3.1" + "json-parse-better-errors" "^1.0.1" + +"parse-json@^5.0.0", "parse-json@^5.2.0": + "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" + "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + "version" "5.2.0" dependencies: "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse-ms@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" - integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== - -parse-path@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf" - integrity sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA== - dependencies: - is-ssh "^1.3.0" - protocols "^1.4.0" - qs "^6.9.4" - query-string "^6.13.8" - -parse-url@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-6.0.0.tgz#f5dd262a7de9ec00914939220410b66cff09107d" - integrity sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw== - dependencies: - is-ssh "^1.3.0" - normalize-url "^6.1.0" - parse-path "^4.0.0" - protocols "^1.4.0" - -parse5-htmlparser2-tree-adapter@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" - integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== - dependencies: - parse5 "^6.0.1" - -parse5@6.0.1, parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.5, path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -path@^0.12.7: - version "0.12.7" - resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" - integrity sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8= - dependencies: - process "^0.11.1" - util "^0.10.3" - -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -pidtree@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" - integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== - -pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-conf@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" - integrity sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg= - dependencies: - find-up "^2.0.0" - load-json-file "^4.0.0" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - -portfinder@^1.0.28: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - -postcss-modules-local-by-default@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" - integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.6" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" - integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss@^8.2.15: - version "8.3.8" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.8.tgz#9ebe2a127396b4b4570ae9f7770e7fb83db2bac1" - integrity sha512-GT5bTjjZnwDifajzczOC+r3FI3Cu+PgPvrsjhQdRqa2kTJ4968/X9CUce9xttIB0xOs5c6xf0TCWZo/y9lF6bA== - dependencies: - nanocolors "^0.2.2" - nanoid "^3.1.25" - source-map-js "^0.6.2" - -prefix-style@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/prefix-style/-/prefix-style-2.0.1.tgz#66bba9a870cfda308a5dc20e85e9120932c95a06" - integrity sha1-ZrupqHDP2jCKXcIOhekSCTLJWgY= - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" - integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== - -pretty-error@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-3.0.4.tgz#94b1d54f76c1ed95b9c604b9de2194838e5b574e" - integrity sha512-ytLFLfv1So4AO1UkoBF6GXQgJRaKbiSiGFICaOPNwQ3CMvBvXpLRubeQWyPGnsbV/t9ml9qto6IeCsho0aEvwQ== - dependencies: - lodash "^4.17.20" - renderkid "^2.0.6" - -pretty-format@^26.0.0, pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + "error-ex" "^1.3.1" + "json-parse-even-better-errors" "^2.3.0" + "lines-and-columns" "^1.1.6" + +"parse-ms@^2.1.0": + "integrity" "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==" + "resolved" "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz" + "version" "2.1.0" + +"parse-path@^4.0.0": + "integrity" "sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==" + "resolved" "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "is-ssh" "^1.3.0" + "protocols" "^1.4.0" + "qs" "^6.9.4" + "query-string" "^6.13.8" + +"parse-url@^6.0.0": + "integrity" "sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw==" + "resolved" "https://registry.npmjs.org/parse-url/-/parse-url-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "is-ssh" "^1.3.0" + "normalize-url" "^6.1.0" + "parse-path" "^4.0.0" + "protocols" "^1.4.0" + +"parse5-htmlparser2-tree-adapter@^6.0.1": + "integrity" "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==" + "resolved" "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "parse5" "^6.0.1" + +"parse5@^6.0.1", "parse5@6.0.1": + "integrity" "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + "resolved" "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" + "version" "6.0.1" + +"parseurl@^1.3.2", "parseurl@~1.3.2", "parseurl@~1.3.3": + "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + "version" "1.3.3" + +"pascal-case@^3.1.2": + "integrity" "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==" + "resolved" "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "no-case" "^3.0.4" + "tslib" "^2.0.3" + +"pascalcase@^0.1.1": + "integrity" "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + "resolved" "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" + "version" "0.1.1" + +"path-browserify@^1.0.1": + "integrity" "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" + "version" "1.0.1" + +"path-browserify@0.0.1": + "integrity" "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz" + "version" "0.0.1" + +"path-dirname@^1.0.0": + "integrity" "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + "resolved" "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" + "version" "1.0.2" + +"path-exists@^3.0.0": + "integrity" "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + "version" "3.0.0" + +"path-exists@^4.0.0": + "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + "version" "4.0.0" + +"path-is-absolute@^1.0.0": + "integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + "version" "1.0.1" + +"path-is-inside@^1.0.2": + "integrity" "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + "resolved" "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" + "version" "1.0.2" + +"path-key@^2.0.1": + "integrity" "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "resolved" "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + "version" "2.0.1" + +"path-key@^3.0.0", "path-key@^3.1.0": + "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + "version" "3.1.1" + +"path-parse@^1.0.5", "path-parse@^1.0.7": + "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + "version" "1.0.7" + +"path-to-regexp@^6.1.0": + "integrity" "sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==" + "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.0.tgz" + "version" "6.2.0" + +"path-to-regexp@0.1.7": + "integrity" "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + "version" "0.1.7" + +"path-type@^3.0.0": + "integrity" "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==" + "resolved" "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "pify" "^3.0.0" + +"path-type@^4.0.0": + "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + "version" "4.0.0" + +"path@^0.12.7": + "integrity" "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=" + "resolved" "https://registry.npmjs.org/path/-/path-0.12.7.tgz" + "version" "0.12.7" + dependencies: + "process" "^0.11.1" + "util" "^0.10.3" + +"pbkdf2@^3.0.3": + "integrity" "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==" + "resolved" "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "create-hash" "^1.1.2" + "create-hmac" "^1.1.4" + "ripemd160" "^2.0.1" + "safe-buffer" "^5.0.1" + "sha.js" "^2.4.8" + +"pend@~1.2.0": + "integrity" "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + "resolved" "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" + "version" "1.2.0" + +"perfect-scrollbar@^1.5.1": + "integrity" "sha512-MrSImINnIh3Tm1hdPT6bji6fmIeRorVEegQvyUnhqko2hDGTHhmjPefHXfxG/Jb8xVbfCwgmUIlIajERGXjVXQ==" + "resolved" "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.1.tgz" + "version" "1.5.1" + +"performance-now@^2.1.0": + "integrity" "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" + "version" "2.1.0" + +"pg-connection-string@^2.5.0": + "integrity" "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + "resolved" "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz" + "version" "2.5.0" + +"pg-hstore@2.3.4": + "integrity" "sha512-N3SGs/Rf+xA1M2/n0JBiXFDVMzdekwLZLAO0g7mpDY9ouX+fDI7jS6kTq3JujmYbtNSJ53TJ0q4G98KVZSM4EA==" + "resolved" "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.4.tgz" + "version" "2.3.4" + dependencies: + "underscore" "^1.13.1" + +"pg-int8@1.0.1": + "integrity" "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" + "resolved" "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz" + "version" "1.0.1" + +"pg-pool@^3.4.1": + "integrity" "sha512-6iCR0wVrro6OOHFsyavV+i6KYL4lVNyYAB9RD18w66xSzN+d8b66HiwuP30Gp1SH5O9T82fckkzsRjlrhD0ioQ==" + "resolved" "https://registry.npmjs.org/pg-pool/-/pg-pool-3.5.1.tgz" + "version" "3.5.1" + +"pg-protocol@^1.2.0", "pg-protocol@^1.5.0": + "integrity" "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" + "resolved" "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz" + "version" "1.5.0" + +"pg-types@^2.1.0", "pg-types@^2.2.0": + "integrity" "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==" + "resolved" "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "pg-int8" "1.0.1" + "postgres-array" "~2.0.0" + "postgres-bytea" "~1.0.0" + "postgres-date" "~1.0.4" + "postgres-interval" "^1.1.0" + +"pg@8.7.1": + "integrity" "sha512-7bdYcv7V6U3KAtWjpQJJBww0UEsWuh4yQ/EjNf2HeO/NnvKjpvhEIe/A/TleP6wtmSKnUnghs5A9jUoK6iDdkA==" + "resolved" "https://registry.npmjs.org/pg/-/pg-8.7.1.tgz" + "version" "8.7.1" + dependencies: + "buffer-writer" "2.0.0" + "packet-reader" "1.0.0" + "pg-connection-string" "^2.5.0" + "pg-pool" "^3.4.1" + "pg-protocol" "^1.5.0" + "pg-types" "^2.1.0" + "pgpass" "1.x" + +"pgpass@1.x": + "integrity" "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==" + "resolved" "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "split2" "^4.1.0" + +"picocolors@^1.0.0": + "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + "version" "1.0.0" + +"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.2", "picomatch@^2.2.3", "picomatch@^2.3.1": + "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + "version" "2.3.1" + +"pidtree@^0.3.0": + "integrity" "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==" + "resolved" "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz" + "version" "0.3.1" + +"pidtree@^0.5.0": + "integrity" "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==" + "resolved" "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz" + "version" "0.5.0" + +"pidusage@^2.0.21": + "integrity" "sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==" + "resolved" "https://registry.npmjs.org/pidusage/-/pidusage-2.0.21.tgz" + "version" "2.0.21" + dependencies: + "safe-buffer" "^5.2.1" + +"pidusage@~3.0": + "integrity" "sha512-8VJLToXhj+RYZGNVw8oxc7dS54iCQXUJ+MDFHezQ/fwF5B8W4OWodAMboc1wb08S/4LiHwAmkT4ohf/d3YPPsw==" + "resolved" "https://registry.npmjs.org/pidusage/-/pidusage-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "safe-buffer" "^5.2.1" + +"pify@^2.3.0": + "integrity" "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + "version" "2.3.0" + +"pify@^3.0.0": + "integrity" "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + "resolved" "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + "version" "3.0.0" + +"pify@^4.0.0", "pify@^4.0.1": + "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + "resolved" "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + "version" "4.0.1" + +"pify@^5.0.0": + "integrity" "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==" + "resolved" "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz" + "version" "5.0.0" + +"pirates@^4.0.4": + "integrity" "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==" + "resolved" "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" + "version" "4.0.5" + +"pkg-conf@^2.1.0": + "integrity" "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=" + "resolved" "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "find-up" "^2.0.0" + "load-json-file" "^4.0.0" + +"pkg-dir@^3.0.0": + "integrity" "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==" + "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "find-up" "^3.0.0" + +"pkg-dir@^4.1.0", "pkg-dir@^4.2.0", "pkg-dir@4.2.0": + "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" + "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "find-up" "^4.0.0" + +"pkg-up@^2.0.0": + "integrity" "sha1-yBmscoBZpGHKscOImivjxJoATX8=" + "resolved" "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "find-up" "^2.1.0" + +"pm2-axon-rpc@~0.7.0", "pm2-axon-rpc@~0.7.1": + "integrity" "sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw==" + "resolved" "https://registry.npmjs.org/pm2-axon-rpc/-/pm2-axon-rpc-0.7.1.tgz" + "version" "0.7.1" + dependencies: + "debug" "^4.3.1" + +"pm2-axon@~4.0.1": + "integrity" "sha512-kES/PeSLS8orT8dR5jMlNl+Yu4Ty3nbvZRmaAtROuVm9nYYGiaoXqqKQqQYzWQzMYWUKHMQTvBlirjE5GIIxqg==" + "resolved" "https://registry.npmjs.org/pm2-axon/-/pm2-axon-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "amp" "~0.3.1" + "amp-message" "~0.1.1" + "debug" "^4.3.1" + "escape-string-regexp" "^4.0.0" + +"pm2-deploy@~1.0.2": + "integrity" "sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==" + "resolved" "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "run-series" "^1.1.8" + "tv4" "^1.3.0" + +"pm2-multimeter@^0.1.2": + "integrity" "sha1-Gh5VFT1BoFU0zqI8/oYKuqDrSs4=" + "resolved" "https://registry.npmjs.org/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz" + "version" "0.1.2" + dependencies: + "charm" "~0.1.1" + +"pm2-sysmonit@^1.2.8": + "integrity" "sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==" + "resolved" "https://registry.npmjs.org/pm2-sysmonit/-/pm2-sysmonit-1.2.8.tgz" + "version" "1.2.8" + dependencies: + "async" "^3.2.0" + "debug" "^4.3.1" + "pidusage" "^2.0.21" + "systeminformation" "^5.7" + "tx2" "~1.0.4" + +"pm2@^5.0.0": + "integrity" "sha512-PO5hMVhQ85cTszFM++6v07Me9hPJMkFbHjkFigtMMk+La8ty2wCi2dlBTeZYJDhPUSjK8Ccltpq2buNRcyMOTw==" + "resolved" "https://registry.npmjs.org/pm2/-/pm2-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "@pm2/agent" "~2.0.0" + "@pm2/io" "~5.0.0" + "@pm2/js-api" "~0.6.7" + "@pm2/pm2-version-check" "latest" + "async" "~3.2.0" + "blessed" "0.1.81" + "chalk" "3.0.0" + "chokidar" "^3.5.1" + "cli-tableau" "^2.0.0" + "commander" "2.15.1" + "croner" "~4.1.92" + "dayjs" "~1.8.25" + "debug" "^4.3.1" + "enquirer" "2.3.6" + "eventemitter2" "5.0.1" + "fclone" "1.0.11" + "mkdirp" "1.0.4" + "needle" "2.4.0" + "pidusage" "~3.0" + "pm2-axon" "~4.0.1" + "pm2-axon-rpc" "~0.7.1" + "pm2-deploy" "~1.0.2" + "pm2-multimeter" "^0.1.2" + "promptly" "^2" + "semver" "^7.2" + "source-map-support" "0.5.19" + "sprintf-js" "1.1.2" + "vizion" "~2.2.1" + "yamljs" "0.3.0" + optionalDependencies: + "pm2-sysmonit" "^1.2.8" + +"polished@^4.1.3": + "integrity" "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==" + "resolved" "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz" + "version" "4.1.3" + dependencies: + "@babel/runtime" "^7.14.0" + +"pollify@^1.0.0": + "integrity" "sha1-aY9A7cdILNY1kTz/Gh2MgPPhLw4=" + "resolved" "https://registry.npmjs.org/pollify/-/pollify-1.0.2.tgz" + "version" "1.0.2" + +"pop-iterate@^1.0.1": + "integrity" "sha1-zqz9q0q/NT16DyqqLB/Hs/lBO6M=" + "resolved" "https://registry.npmjs.org/pop-iterate/-/pop-iterate-1.0.1.tgz" + "version" "1.0.1" + +"popper.js@1.16.1-lts": + "integrity" "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" + "resolved" "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz" + "version" "1.16.1-lts" + +"portfinder@^1.0.28": + "integrity" "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==" + "resolved" "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz" + "version" "1.0.28" + dependencies: + "async" "^2.6.2" + "debug" "^3.1.1" + "mkdirp" "^0.5.5" + +"posix-character-classes@^0.1.0": + "integrity" "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + "resolved" "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" + "version" "0.1.1" + +"postcss-modules-extract-imports@^3.0.0": + "integrity" "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==" + "resolved" "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" + "version" "3.0.0" + +"postcss-modules-local-by-default@^4.0.0": + "integrity" "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==" + "resolved" "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "icss-utils" "^5.0.0" + "postcss-selector-parser" "^6.0.2" + "postcss-value-parser" "^4.1.0" + +"postcss-modules-scope@^3.0.0": + "integrity" "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==" + "resolved" "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "postcss-selector-parser" "^6.0.4" + +"postcss-modules-values@^4.0.0": + "integrity" "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==" + "resolved" "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "icss-utils" "^5.0.0" + +"postcss-selector-parser@^6.0.2", "postcss-selector-parser@^6.0.4": + "integrity" "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==" + "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" + "version" "6.0.10" + dependencies: + "cssesc" "^3.0.0" + "util-deprecate" "^1.0.2" + +"postcss-value-parser@^4.0.2": + "integrity" "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" + "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz" + "version" "4.1.0" + +"postcss-value-parser@^4.1.0", "postcss-value-parser@^4.2.0": + "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + "version" "4.2.0" + +"postcss@^8.4.7": + "integrity" "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==" + "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz" + "version" "8.4.12" + dependencies: + "nanoid" "^3.3.1" + "picocolors" "^1.0.0" + "source-map-js" "^1.0.2" + +"postgres-array@~2.0.0": + "integrity" "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" + "resolved" "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz" + "version" "2.0.0" + +"postgres-bytea@~1.0.0": + "integrity" "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=" + "resolved" "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz" + "version" "1.0.0" + +"postgres-date@~1.0.4": + "integrity" "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" + "resolved" "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz" + "version" "1.0.7" + +"postgres-interval@^1.1.0": + "integrity" "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==" + "resolved" "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "xtend" "^4.0.0" + +"prefix-style@2.0.1": + "integrity" "sha1-ZrupqHDP2jCKXcIOhekSCTLJWgY=" + "resolved" "https://registry.npmjs.org/prefix-style/-/prefix-style-2.0.1.tgz" + "version" "2.0.1" + +"prelude-ls@^1.2.1": + "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + "version" "1.2.1" + +"prelude-ls@~1.1.2": + "integrity" "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" + "version" "1.1.2" + +"prepend-http@^2.0.0": + "integrity" "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" + "version" "2.0.0" + +"prettier-eslint-cli@5.0.1": + "integrity" "sha512-fzX26Q6654RN3SD4c8XDBiJyNWOFQKsMLsMiXIGgSN2xNQLmiqjXW3wnR33qMVJOo+wq86a+WjA6wov0krTvCA==" + "resolved" "https://registry.npmjs.org/prettier-eslint-cli/-/prettier-eslint-cli-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "arrify" "^2.0.1" + "boolify" "^1.0.0" + "camelcase-keys" "^6.0.0" + "chalk" "^2.4.2" + "common-tags" "^1.8.0" + "core-js" "^3.1.4" + "eslint" "^5.0.0" + "find-up" "^4.1.0" + "get-stdin" "^7.0.0" + "glob" "^7.1.4" + "ignore" "^5.1.2" + "lodash.memoize" "^4.1.2" + "loglevel-colored-level-prefix" "^1.0.0" + "messageformat" "^2.2.1" + "prettier-eslint" "^9.0.0" + "rxjs" "^6.5.2" + "yargs" "^13.2.4" + +"prettier-eslint@^9.0.0": + "integrity" "sha512-u6EQqxUhaGfra9gy9shcR7MT7r/2twwEfRGy1tfzyaJvLQwSg34M9IU5HuF7FsLW2QUgr5VIUc56EPWibw1pdw==" + "resolved" "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-9.0.2.tgz" + "version" "9.0.2" + dependencies: + "@typescript-eslint/parser" "^1.10.2" + "common-tags" "^1.4.0" + "core-js" "^3.1.4" + "dlv" "^1.1.0" + "eslint" "^5.0.0" + "indent-string" "^4.0.0" + "lodash.merge" "^4.6.0" + "loglevel-colored-level-prefix" "^1.0.0" + "prettier" "^1.7.0" + "pretty-format" "^23.0.1" + "require-relative" "^0.8.7" + "typescript" "^3.2.1" + "vue-eslint-parser" "^2.0.2" + +"prettier-eslint@12.0.0": + "integrity" "sha512-N8SGGQwAosISXTNl1E57sBbtnqUGlyRWjcfIUxyD3HF4ynehA9GZ8IfJgiep/OfYvCof/JEpy9ZqSl250Wia7A==" + "resolved" "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-12.0.0.tgz" + "version" "12.0.0" + dependencies: + "@typescript-eslint/parser" "^3.0.0" + "common-tags" "^1.4.0" + "dlv" "^1.1.0" + "eslint" "^7.9.0" + "indent-string" "^4.0.0" + "lodash.merge" "^4.6.0" + "loglevel-colored-level-prefix" "^1.0.0" + "prettier" "^2.0.0" + "pretty-format" "^23.0.1" + "require-relative" "^0.8.7" + "typescript" "^3.9.3" + "vue-eslint-parser" "~7.1.0" + +"prettier-linter-helpers@^1.0.0": + "integrity" "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==" + "resolved" "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "fast-diff" "^1.1.2" + +"prettier@^1.7.0": + "integrity" "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==" + "resolved" "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz" + "version" "1.19.1" + +"prettier@^2.0.0", "prettier@^2.4.1": + "integrity" "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==" + "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz" + "version" "2.6.2" + +"prettier@2.3.2": + "integrity" "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==" + "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz" + "version" "2.3.2" + +"pretty-error@^4.0.0": + "integrity" "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==" + "resolved" "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "lodash" "^4.17.20" + "renderkid" "^3.0.0" + +"pretty-format@^23.0.1": + "integrity" "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==" + "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz" + "version" "23.6.0" + dependencies: + "ansi-regex" "^3.0.0" + "ansi-styles" "^3.2.0" + +"pretty-format@^26.0.0", "pretty-format@^26.6.2": + "integrity" "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==" + "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" + "version" "26.6.2" dependencies: "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -pretty-format@^27.0.0, pretty-format@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.2.2.tgz#c080f1ab7ac64302e4d438f208596fc649dbeeb3" - integrity sha512-+DdLh+rtaElc2SQOE/YPH8k2g3Rf2OXWEpy06p8Szs3hdVSYD87QOOlYRHWAeb/59XTmeVmRKvDD0svHqf6ycA== - dependencies: - "@jest/types" "^27.1.1" - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -pretty-format@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.2.3.tgz#c76710de6ebd8b1b412a5668bacf4a6c2f21a029" - integrity sha512-wvg2HzuGKKEE/nKY4VdQ/LM8w8pRZvp0XpqhwgaZBbjTwd5UdF2I4wvwZjyUwu8G+HI6g4t6u9b2FZlKhlzxcQ== - dependencies: - "@jest/types" "^27.2.3" - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -pretty-ms@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8" - integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q== - dependencies: - parse-ms "^2.1.0" - -prism-themes@^1.7.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/prism-themes/-/prism-themes-1.9.0.tgz#19c034f3205f1e28d75d89728e54ccd745f7e3dd" - integrity sha512-tX2AYsehKDw1EORwBps+WhBFKc2kxfoFpQAjxBndbZKr4fRmMkv47XN0BghC/K1qwodB1otbe4oF23vUTFDokw== - -prismjs@^1.24.0: - version "1.25.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756" - integrity sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.1, process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -promise-retry@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== - dependencies: - err-code "^2.0.2" - retry "^0.12.0" - -prompts@^2.0.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" - integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -promzard@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" - integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= - dependencies: - read "1" - -prop-types-exact@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" - integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== - dependencies: - has "^1.0.3" - object.assign "^4.1.0" - reflect.ownkeys "^0.2.0" - -prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.8.1" - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= - -protocols@^1.1.0, protocols@^1.4.0: - version "1.4.8" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" - integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== - -proxy-addr@~2.0.5, proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -psl@^1.1.28, psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -pstree.remy@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" - integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pubsub-js@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/pubsub-js/-/pubsub-js-1.9.3.tgz#674eea4d568d0402e0527cdb10e2aab7b55621d2" - integrity sha512-FhYYlPNOywTh7zN38u5AlG67emA47w6JZd7YgdQU1w8gQbZhhIGxVM0AQosdaINHb2ALb+fhfnVyBJAt4D4IzA== - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -pupa@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== - dependencies: - escape-goat "^2.0.0" - -q@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -qs@6.9.7: - version "6.9.7" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" - integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== - -qs@^6.9.4: - version "6.10.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" - integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== - dependencies: - side-channel "^1.0.4" - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -query-string@^6.13.8: - version "6.14.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" - integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== - dependencies: - decode-uri-component "^0.2.0" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - -raf@^3.1.0, raf@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" - integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== - dependencies: - performance-now "^2.1.0" - -railroad-diagrams@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" - integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234= - -randexp@0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" - integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ== - dependencies: - discontinuous-range "1.0.0" - ret "~0.1.10" - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -raw-body@2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" - integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== - dependencies: - bytes "3.1.2" - http-errors "1.8.1" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@^1.2.8, rc@~1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-console-emulator@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/react-console-emulator/-/react-console-emulator-5.0.1.tgz#c4fc8b298b6278d4fc4091ee612051ac8a569596" - integrity sha512-BgLkZhyOkx1RQJOzeQtsATFaAzDuBVKwKwrq1fLNcjoUQ5h+et7RmPTopIfpGI8kP9VzhcqawM5cYWDO47QP5w== - dependencies: - defaults "^1.0.3" - prop-types "^15.7.2" - react-fast-compare "^3.2.0" - react-inner-html "^1.0.1" - react-innertext "^1.1.5" - -react-custom-scrollbars-2@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/react-custom-scrollbars-2/-/react-custom-scrollbars-2-4.4.0.tgz#6cc237abc18f5ab32b5392b336e6f072c2b4cfc1" - integrity sha512-I+oxZ9rfHfvYm85jdH2lQqpzwNr/ZAdYB8htm6R/hwRGoIEK31jq+YE6MmFwBzuO7C5zcAtH5HN9vwZxnW61NQ== - dependencies: - dom-css "^2.0.0" - prop-types "^15.5.10" - raf "^3.1.0" - -react-dom@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" - integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" - -react-fast-compare@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" - integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== - -react-hook-form@^7.15.4: - version "7.16.1" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.16.1.tgz#669046df378a71949e5cf8a2398cbe20d5cb27bc" - integrity sha512-kcLDmSmlyLUFx2UU5bG/o4+3NeK753fhKodJa8gkplXohGkpAq0/p+TR24OWjZmkEc3ES7ppC5v5d6KUk+fJTA== - -react-hotkeys-hook@^3.3.2: - version "3.4.3" - resolved "https://registry.yarnpkg.com/react-hotkeys-hook/-/react-hotkeys-hook-3.4.3.tgz#74da79c2a5106f8d203f543794833c1af39030ac" - integrity sha512-rb8wjXItbZ0ItX1lHKd1lVfqoiGhzrnNo+rtqNoTkxMdyUcxI3RIdP8wmAHoK9Z/0F+aHo2yWAeKgv3pUvmGpw== - dependencies: - hotkeys-js "3.8.7" - -react-icons@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.2.0.tgz#6dda80c8a8f338ff96a1851424d63083282630d0" - integrity sha512-rmzEDFt+AVXRzD7zDE21gcxyBizD/3NqjbX6cmViAgdqfJ2UiLer8927/QhhrXQV7dEj/1EGuOTPp7JnLYVJKQ== - -react-inner-html@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/react-inner-html/-/react-inner-html-1.0.1.tgz#23258d44e151d3220f4aebbeb67c14a6b9980abb" - integrity sha512-q8d/OGRhk6gM6cfwzNj8IXwf5MKSDOpYAvpkCY5x/qHUCRmN4jVc4ah041QnsuEGakly4Gw7DhCQTswCf03rqg== - -react-innertext@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/react-innertext/-/react-innertext-1.1.5.tgz#8147ac54db3f7067d95f49e2d2c05a720d27d8d0" - integrity sha512-PWAqdqhxhHIv80dT9znP2KvS+hfkbRovFp4zFYHFFlOoQLRiawIic81gKb3U1wEyJZgMwgs3JoLtwryASRWP3Q== - -react-input-autosize@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-3.0.0.tgz#6b5898c790d4478d69420b55441fcc31d5c50a85" - integrity sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg== - dependencies: - prop-types "^15.5.8" - -react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1, react-is@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -react-redux@^7.2.5: - version "7.2.5" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.5.tgz#213c1b05aa1187d9c940ddfc0b29450957f6a3b8" - integrity sha512-Dt29bNyBsbQaysp6s/dN0gUodcq+dVKKER8Qv82UrpeygwYeX1raTtil7O/fftw/rFqzaf6gJhDZRkkZnn6bjg== - dependencies: - "@babel/runtime" "^7.12.1" - "@types/react-redux" "^7.1.16" - hoist-non-react-statics "^3.3.2" - loose-envify "^1.4.0" - prop-types "^15.7.2" - react-is "^16.13.1" - -react-router-dom@6: - version "6.2.2" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.2.2.tgz#f1a2c88365593c76b9612ae80154a13fcb72e442" - integrity sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ== - dependencies: - history "^5.2.0" - react-router "6.2.2" - -react-router@6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.2.2.tgz#495e683a0c04461eeb3d705fe445d6cf42f0c249" - integrity sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ== - dependencies: - history "^5.2.0" - -react-router@^6.0.0-beta.8: - version "6.0.0-beta.8" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.0.0-beta.8.tgz#99d570b0eaadac9af590e08fd8229d8c3f5558fd" - integrity sha512-pn3j01FA44yWP5gaHvz3CMVjFnmg5NS/BQ5IIalY7jw2yEKgr+OHB1gxTorakpiMaPOXXbfyUt3t4yZ4UBwE5Q== - -react-select@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-4.3.1.tgz#389fc07c9bc7cf7d3c377b7a05ea18cd7399cb81" - integrity sha512-HBBd0dYwkF5aZk1zP81Wx5UsLIIT2lSvAY2JiJo199LjoLHoivjn9//KsmvQMEFGNhe58xyuOITjfxKCcGc62Q== + "ansi-regex" "^5.0.0" + "ansi-styles" "^4.0.0" + "react-is" "^17.0.1" + +"pretty-format@^27.5.1": + "integrity" "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==" + "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "ansi-regex" "^5.0.1" + "ansi-styles" "^5.0.0" + "react-is" "^17.0.1" + +"pretty-ms@^7.0.0": + "integrity" "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==" + "resolved" "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "parse-ms" "^2.1.0" + +"prism-media@^1.3.2": + "integrity" "sha512-L6UsGHcT6i4wrQhFF1aPK+MNYgjRqR2tUoIqEY+CG1NqVkMjPRKzS37j9f8GiYPlD6wG9ruBj+q5Ax+bH8Ik1g==" + "resolved" "https://registry.npmjs.org/prism-media/-/prism-media-1.3.2.tgz" + "version" "1.3.2" + +"prism-themes@^1.7.0": + "integrity" "sha512-tX2AYsehKDw1EORwBps+WhBFKc2kxfoFpQAjxBndbZKr4fRmMkv47XN0BghC/K1qwodB1otbe4oF23vUTFDokw==" + "resolved" "https://registry.npmjs.org/prism-themes/-/prism-themes-1.9.0.tgz" + "version" "1.9.0" + +"prismjs@^1.24.0": + "integrity" "sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==" + "resolved" "https://registry.npmjs.org/prismjs/-/prismjs-1.28.0.tgz" + "version" "1.28.0" + +"prismjs@^1.24.1": + "integrity" "sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow==" + "resolved" "https://registry.npmjs.org/prismjs/-/prismjs-1.24.1.tgz" + "version" "1.24.1" + +"process-nextick-args@~2.0.0": + "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + "version" "2.0.1" + +"process@^0.11.1", "process@^0.11.10": + "integrity" "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + "resolved" "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + "version" "0.11.10" + +"progress@^2.0.0", "progress@^2.0.1", "progress@^2.0.3", "progress@2.0.3": + "integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + "resolved" "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" + "version" "2.0.3" + +"promise-chains@^0.3.11": + "integrity" "sha1-aOY0hMm5YvHW4qtnIyTRT1kJ7iE=" + "resolved" "https://registry.npmjs.org/promise-chains/-/promise-chains-0.3.12.tgz" + "version" "0.3.12" + dependencies: + "harmony-reflect" "^1.4.3" + +"promise-inflight@^1.0.1": + "integrity" "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + "resolved" "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" + "version" "1.0.1" + +"promise-retry@^2.0.1": + "integrity" "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==" + "resolved" "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "err-code" "^2.0.2" + "retry" "^0.12.0" + +"promptly@^2": + "integrity" "sha1-KhP6BjaIoqWYOxYf/wEIoH0m/HQ=" + "resolved" "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "read" "^1.0.4" + +"prompts@^2.0.1": + "integrity" "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==" + "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "kleur" "^3.0.3" + "sisteransi" "^1.0.5" + +"promzard@^0.3.0": + "integrity" "sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=" + "resolved" "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz" + "version" "0.3.0" + dependencies: + "read" "1" + +"prop-types-exact@^1.2.0": + "integrity" "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==" + "resolved" "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "has" "^1.0.3" + "object.assign" "^4.1.0" + "reflect.ownkeys" "^0.2.0" + +"prop-types@^15.5.0": + "integrity" "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==" + "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz" + "version" "15.7.2" + dependencies: + "loose-envify" "^1.4.0" + "object-assign" "^4.1.1" + "react-is" "^16.8.1" + +"prop-types@^15.5.10", "prop-types@^15.5.8", "prop-types@^15.6.0", "prop-types@^15.6.2", "prop-types@^15.7.2": + "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" + "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + "version" "15.8.1" + dependencies: + "loose-envify" "^1.4.0" + "object-assign" "^4.1.1" + "react-is" "^16.13.1" + +"prop-types@15.7.2": + "integrity" "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==" + "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz" + "version" "15.7.2" + dependencies: + "loose-envify" "^1.4.0" + "object-assign" "^4.1.1" + "react-is" "^16.8.1" + +"propagate@^2.0.0": + "integrity" "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==" + "resolved" "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz" + "version" "2.0.1" + +"proto-list@~1.2.1": + "integrity" "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" + "resolved" "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" + "version" "1.2.4" + +"proto3-json-serializer@^0.1.8": + "integrity" "sha512-ACilkB6s1U1gWnl5jtICpnDai4VCxmI9GFxuEaYdxtDG2oVI3sVFIUsvUZcQbJgtPM6p+zqKbjTKQZp6Y4FpQw==" + "resolved" "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-0.1.8.tgz" + "version" "0.1.8" + dependencies: + "protobufjs" "^6.11.2" + +"protobufjs@^6.10.0", "protobufjs@^6.11.2", "protobufjs@^6.8.6", "protobufjs@6.11.2": + "integrity" "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==" + "resolved" "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz" + "version" "6.11.2" + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + "long" "^4.0.0" + +"protocols@^1.1.0", "protocols@^1.4.0": + "integrity" "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==" + "resolved" "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz" + "version" "1.4.8" + +"proxy-addr@~2.0.7": + "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" + "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + "version" "2.0.7" + dependencies: + "forwarded" "0.2.0" + "ipaddr.js" "1.9.1" + +"proxy-agent@~5.0.0": + "integrity" "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==" + "resolved" "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "agent-base" "^6.0.0" + "debug" "4" + "http-proxy-agent" "^4.0.0" + "https-proxy-agent" "^5.0.0" + "lru-cache" "^5.1.1" + "pac-proxy-agent" "^5.0.0" + "proxy-from-env" "^1.0.0" + "socks-proxy-agent" "^5.0.0" + +"proxy-from-env@^1.0.0": + "integrity" "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "resolved" "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + "version" "1.1.0" + +"proxy-from-env@^1.1.0": + "integrity" "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "resolved" "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + "version" "1.1.0" + +"proxy-from-env@0.0.1": + "integrity" "sha1-snxJRunm1dutt1mKZDXTAUxM/Uk=" + "resolved" "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-0.0.1.tgz" + "version" "0.0.1" + +"proxy-from-env@1.1.0": + "integrity" "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "resolved" "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + "version" "1.1.0" + +"prr@~1.0.1": + "integrity" "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + "resolved" "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" + "version" "1.0.1" + +"pseudomap@^1.0.1", "pseudomap@^1.0.2": + "integrity" "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "resolved" "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" + "version" "1.0.2" + +"psl@^1.1.28", "psl@^1.1.33": + "integrity" "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + "resolved" "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" + "version" "1.8.0" + +"pstree.remy@^1.1.8": + "integrity" "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + "resolved" "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz" + "version" "1.1.8" + +"public-encrypt@^4.0.0": + "integrity" "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==" + "resolved" "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "bn.js" "^4.1.0" + "browserify-rsa" "^4.0.0" + "create-hash" "^1.1.0" + "parse-asn1" "^5.0.0" + "randombytes" "^2.0.1" + "safe-buffer" "^5.1.2" + +"pubsub-js@^1.9.3": + "integrity" "sha512-hJYpaDvPH4w8ZX/0Fdf9ma1AwRgU353GfbaVfPjfJQf1KxZ2iHaHl3fAUw1qlJIR5dr4F3RzjGaWohYUEyoh7A==" + "resolved" "https://registry.npmjs.org/pubsub-js/-/pubsub-js-1.9.4.tgz" + "version" "1.9.4" + +"pump@^2.0.0": + "integrity" "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==" + "resolved" "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "end-of-stream" "^1.1.0" + "once" "^1.3.1" + +"pump@^3.0.0": + "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" + "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "end-of-stream" "^1.1.0" + "once" "^1.3.1" + +"pumpify@^1.3.3": + "integrity" "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==" + "resolved" "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz" + "version" "1.5.1" + dependencies: + "duplexify" "^3.6.0" + "inherits" "^2.0.3" + "pump" "^2.0.0" + +"pumpify@^2.0.0": + "integrity" "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==" + "resolved" "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "duplexify" "^4.1.1" + "inherits" "^2.0.3" + "pump" "^3.0.0" + +"punycode@^1.2.4": + "integrity" "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + "version" "1.4.1" + +"punycode@^2.1.0", "punycode@^2.1.1": + "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + "version" "2.1.1" + +"punycode@1.3.2": + "integrity" "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + "version" "1.3.2" + +"pupa@^2.1.1": + "integrity" "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==" + "resolved" "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "escape-goat" "^2.0.0" + +"puppeteer-extra-plugin-stealth@2.9.0": + "integrity" "sha512-erZ9lkIcOkfYmLPP2jv2AiqvNBFhQJinWJhcm40pqSjwJTsZXHsTARUyRCsBYEEBvNIs3Wz3E0zVlTRc4IJ6Hg==" + "resolved" "https://registry.npmjs.org/puppeteer-extra-plugin-stealth/-/puppeteer-extra-plugin-stealth-2.9.0.tgz" + "version" "2.9.0" + dependencies: + "debug" "^4.1.1" + "puppeteer-extra-plugin" "^3.2.0" + "puppeteer-extra-plugin-user-preferences" "^2.3.1" + +"puppeteer-extra-plugin-user-data-dir@^2.3.1": + "integrity" "sha512-yhaYMaNFdfQ1LbA94ZElW1zU8rh+MFmO+GZA0gtQ8BXc+UZ6aRrWS9flIZvlXDzk+ZsXhCbTEohEwZ8lEDLRVA==" + "resolved" "https://registry.npmjs.org/puppeteer-extra-plugin-user-data-dir/-/puppeteer-extra-plugin-user-data-dir-2.3.1.tgz" + "version" "2.3.1" + dependencies: + "debug" "^4.1.1" + "fs-extra" "^10.0.0" + "puppeteer-extra-plugin" "^3.2.0" + +"puppeteer-extra-plugin-user-preferences@^2.3.1": + "integrity" "sha512-t/FyGQj2aqtHOROqL02z+k2kNQe0cjT0Hd9pG5FJ7x0JXx1722PhOuK7FeJLQMJ+BLl2YvCUgaWSC8Zohjts5A==" + "resolved" "https://registry.npmjs.org/puppeteer-extra-plugin-user-preferences/-/puppeteer-extra-plugin-user-preferences-2.3.1.tgz" + "version" "2.3.1" + dependencies: + "debug" "^4.1.1" + "deepmerge" "^4.2.2" + "puppeteer-extra-plugin" "^3.2.0" + "puppeteer-extra-plugin-user-data-dir" "^2.3.1" + +"puppeteer-extra-plugin@^3.2.0": + "integrity" "sha512-wbiw12USE3b+maMk/IMaroYsz7rusVI9G+ml6pCFCnFFh91Z9BAEiVzhCpOHuquVXEiCCsDTWhDUgvdNxQHOyw==" + "resolved" "https://registry.npmjs.org/puppeteer-extra-plugin/-/puppeteer-extra-plugin-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "@types/debug" "^4.1.0" + "debug" "^4.1.1" + "merge-deep" "^3.0.1" + +"puppeteer-extra@3.2.3": + "integrity" "sha512-CnSN9yIedbAbS8WmRybaDHJLf6goRk+VYM/kbH6i/+EMadCaAeh2O+1/mFUMN2LbkbDNAp2Vd/UwrTVCHjTxyg==" + "resolved" "https://registry.npmjs.org/puppeteer-extra/-/puppeteer-extra-3.2.3.tgz" + "version" "3.2.3" + dependencies: + "@types/debug" "^4.1.0" + "@types/puppeteer" "*" + "debug" "^4.1.1" + "deepmerge" "^4.2.2" + +"puppeteer-screen-recorder@^2.0.2": + "integrity" "sha512-lBHnqSG/xozo5e85xMYyfA89mTIi5uKUjWnOD8Fg6AwI2sT56jD6vtD/YPC+Lk7v8jEyIgeqHb/4rjxQr7Guow==" + "resolved" "https://registry.npmjs.org/puppeteer-screen-recorder/-/puppeteer-screen-recorder-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "@ffmpeg-installer/ffmpeg" "^1.0.20" + "fluent-ffmpeg" "^2.1.2" + +"puppeteer-stream@2.0.7": + "integrity" "sha512-txs5EMemb4v8QEub5NdH1nRGDCsD3KiZIyiXrIKTZXQGEFwOFrdWhUndbejiFEz1KuasTVa9oiLbZZ8vH2aHoQ==" + "resolved" "https://registry.npmjs.org/puppeteer-stream/-/puppeteer-stream-2.0.7.tgz" + "version" "2.0.7" + dependencies: + "puppeteer" "^7.1.0" + +"puppeteer@^7.1.0": + "integrity" "sha512-lqOLzqCKdh7yUAHvK6LxgOpQrL8Bv1/jvS8MLDXxcNms2rlM3E8p/Wlwc7efbRZ0twxTzUeqjN5EqrTwxOwc9g==" + "resolved" "https://registry.npmjs.org/puppeteer/-/puppeteer-7.1.0.tgz" + "version" "7.1.0" + dependencies: + "debug" "^4.1.0" + "devtools-protocol" "0.0.847576" + "extract-zip" "^2.0.0" + "https-proxy-agent" "^5.0.0" + "node-fetch" "^2.6.1" + "pkg-dir" "^4.2.0" + "progress" "^2.0.1" + "proxy-from-env" "^1.1.0" + "rimraf" "^3.0.2" + "tar-fs" "^2.0.0" + "unbzip2-stream" "^1.3.3" + "ws" "^7.2.3" + +"puppeteer@13.0.1": + "integrity" "sha512-wqGIx59LzYqWhYcJQphMT+ux0sgatEUbjKG0lbjJxNVqVIT3ZC5m4Bvmq2gHE3qhb63EwS+rNkql08bm4BvO0A==" + "resolved" "https://registry.npmjs.org/puppeteer/-/puppeteer-13.0.1.tgz" + "version" "13.0.1" + dependencies: + "debug" "4.3.2" + "devtools-protocol" "0.0.937139" + "extract-zip" "2.0.1" + "https-proxy-agent" "5.0.0" + "node-fetch" "2.6.5" + "pkg-dir" "4.2.0" + "progress" "2.0.3" + "proxy-from-env" "1.1.0" + "rimraf" "3.0.2" + "tar-fs" "2.1.1" + "unbzip2-stream" "1.4.3" + "ws" "8.2.3" + +"q@^1.1.2", "q@^1.5.1": + "integrity" "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + "resolved" "https://registry.npmjs.org/q/-/q-1.5.1.tgz" + "version" "1.5.1" + +"q@2.0.x": + "integrity" "sha1-dbjbAlWhpa+C9Yw/Oqoe/sfQ0TQ=" + "resolved" "https://registry.npmjs.org/q/-/q-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "asap" "^2.0.0" + "pop-iterate" "^1.0.1" + "weak-map" "^1.0.5" + +"qs@^6.10.3", "qs@^6.4.0", "qs@^6.5.2", "qs@^6.9.4", "qs@6.10.3": + "integrity" "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz" + "version" "6.10.3" + dependencies: + "side-channel" "^1.0.4" + +"qs@~6.5.2": + "integrity" "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" + "version" "6.5.3" + +"query-string@^6.13.8": + "integrity" "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==" + "resolved" "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz" + "version" "6.14.1" + dependencies: + "decode-uri-component" "^0.2.0" + "filter-obj" "^1.1.0" + "split-on-first" "^1.0.0" + "strict-uri-encode" "^2.0.0" + +"querystring-es3@^0.2.0": + "integrity" "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + "resolved" "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" + "version" "0.2.1" + +"querystring@0.2.0": + "integrity" "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + "resolved" "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + "version" "0.2.0" + +"querystringify@^2.1.1": + "integrity" "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + "resolved" "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" + "version" "2.2.0" + +"queue-microtask@^1.2.2": + "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + "version" "1.2.3" + +"quick-lru@^4.0.1": + "integrity" "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" + "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" + "version" "4.0.1" + +"racist@^1.0.6": + "integrity" "sha512-wmQOFWkP8n6c7ZoacmTmgJm7sF5mTaTA312/sSR3E4VoEbwqz6Gft0Xla1lu/ZVCargjLmbG5sKo6HSEWpCUdw==" + "resolved" "https://registry.npmjs.org/racist/-/racist-1.0.6.tgz" + "version" "1.0.6" + +"raf@^3.1.0", "raf@^3.4.1": + "integrity" "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==" + "resolved" "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz" + "version" "3.4.1" + dependencies: + "performance-now" "^2.1.0" + +"railroad-diagrams@^1.0.0": + "integrity" "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=" + "resolved" "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz" + "version" "1.0.0" + +"randexp@0.4.6": + "integrity" "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==" + "resolved" "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz" + "version" "0.4.6" + dependencies: + "discontinuous-range" "1.0.0" + "ret" "~0.1.10" + +"randombytes@^2.0.0", "randombytes@^2.0.1", "randombytes@^2.0.5", "randombytes@^2.1.0": + "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" + "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "safe-buffer" "^5.1.0" + +"randomfill@^1.0.3": + "integrity" "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==" + "resolved" "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "randombytes" "^2.0.5" + "safe-buffer" "^5.1.0" + +"range-parser@^1.2.1", "range-parser@~1.2.1": + "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + "version" "1.2.1" + +"raw-body@^2.2.0", "raw-body@2.5.1": + "integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==" + "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" + "version" "2.5.1" + dependencies: + "bytes" "3.1.2" + "http-errors" "2.0.0" + "iconv-lite" "0.4.24" + "unpipe" "1.0.0" + +"rc@^1.2.8", "rc@~1.2.7": + "integrity" "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==" + "resolved" "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" + "version" "1.2.8" + dependencies: + "deep-extend" "^0.6.0" + "ini" "~1.3.0" + "minimist" "^1.2.0" + "strip-json-comments" "~2.0.1" + +"react-console-emulator@^5.0.1": + "integrity" "sha512-BgLkZhyOkx1RQJOzeQtsATFaAzDuBVKwKwrq1fLNcjoUQ5h+et7RmPTopIfpGI8kP9VzhcqawM5cYWDO47QP5w==" + "resolved" "https://registry.npmjs.org/react-console-emulator/-/react-console-emulator-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "defaults" "^1.0.3" + "prop-types" "^15.7.2" + "react-fast-compare" "^3.2.0" + "react-inner-html" "^1.0.1" + "react-innertext" "^1.1.5" + +"react-csv@^2.2.2": + "integrity" "sha512-RG5hOcZKZFigIGE8LxIEV/OgS1vigFQT4EkaHeKgyuCbUAu9Nbd/1RYq++bJcJJ9VOqO/n9TZRADsXNDR4VEpw==" + "resolved" "https://registry.npmjs.org/react-csv/-/react-csv-2.2.2.tgz" + "version" "2.2.2" + +"react-custom-scrollbars-2@^4.4.0": + "integrity" "sha512-I+oxZ9rfHfvYm85jdH2lQqpzwNr/ZAdYB8htm6R/hwRGoIEK31jq+YE6MmFwBzuO7C5zcAtH5HN9vwZxnW61NQ==" + "resolved" "https://registry.npmjs.org/react-custom-scrollbars-2/-/react-custom-scrollbars-2-4.4.0.tgz" + "version" "4.4.0" + dependencies: + "dom-css" "^2.0.0" + "prop-types" "^15.5.10" + "raf" "^3.1.0" + +"react-custom-scrollbars@^4.2.1": + "integrity" "sha1-gw/ZUCkn6X6KeMIIaBOJmyqLZts=" + "resolved" "https://registry.npmjs.org/react-custom-scrollbars/-/react-custom-scrollbars-4.2.1.tgz" + "version" "4.2.1" + dependencies: + "dom-css" "^2.0.0" + "prop-types" "^15.5.10" + "raf" "^3.1.0" + +"react-dom@^17.0.1": + "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" + "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" + "version" "17.0.2" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + "scheduler" "^0.20.2" + +"react-dom@^18.0.0": + "integrity" "sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==" + "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz" + "version" "18.1.0" + dependencies: + "loose-envify" "^1.1.0" + "scheduler" "^0.22.0" + +"react-fast-compare@^3.2.0": + "integrity" "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + "resolved" "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz" + "version" "3.2.0" + +"react-hook-form@^7.15.4": + "integrity" "sha512-DzjiM6o2vtDGNMB9I4yCqW8J21P314SboNG1O0obROkbg7KVS0I7bMtwSdKyapnCPjHgnxc3L7E5PEdISeEUcQ==" + "resolved" "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.30.0.tgz" + "version" "7.30.0" + +"react-hotkeys-hook@^3.3.2": + "integrity" "sha512-vaORq07rWgmuF3owWRhgFV/3VL8/l2q9lz0WyVEddJnWTtKW+AOgU5YgYKuwN6h6h7bCcLG3MFsJIjCrM/5DvQ==" + "resolved" "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-3.4.4.tgz" + "version" "3.4.4" + dependencies: + "hotkeys-js" "3.8.7" + +"react-icons@^4.2.0": + "integrity" "sha512-cB10MXLTs3gVuXimblAdI71jrJx8njrJZmNMEMC+sQu5B/BIOmlsAjskdqpn81y8UBVEGuHODd7/ci5DvoSzTQ==" + "resolved" "https://registry.npmjs.org/react-icons/-/react-icons-4.3.1.tgz" + "version" "4.3.1" + +"react-inner-html@^1.0.1": + "integrity" "sha512-q8d/OGRhk6gM6cfwzNj8IXwf5MKSDOpYAvpkCY5x/qHUCRmN4jVc4ah041QnsuEGakly4Gw7DhCQTswCf03rqg==" + "resolved" "https://registry.npmjs.org/react-inner-html/-/react-inner-html-1.0.1.tgz" + "version" "1.0.1" + +"react-innertext@^1.1.5": + "integrity" "sha512-PWAqdqhxhHIv80dT9znP2KvS+hfkbRovFp4zFYHFFlOoQLRiawIic81gKb3U1wEyJZgMwgs3JoLtwryASRWP3Q==" + "resolved" "https://registry.npmjs.org/react-innertext/-/react-innertext-1.1.5.tgz" + "version" "1.1.5" + +"react-input-autosize@^3.0.0": + "integrity" "sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==" + "resolved" "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "prop-types" "^15.5.8" + +"react-is@^16.12.0": + "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + "version" "16.13.1" + +"react-is@^16.13.1": + "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + "version" "16.13.1" + +"react-is@^16.7.0": + "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + "version" "16.13.1" + +"react-is@^16.8.0 || ^17.0.0", "react-is@^17.0.1", "react-is@^17.0.2": + "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + "version" "17.0.2" + +"react-is@^16.8.1": + "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + "version" "16.13.1" + +"react-is@^16.8.6": + "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + "version" "16.13.1" + +"react-redux@^7.2.5": + "integrity" "sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==" + "resolved" "https://registry.npmjs.org/react-redux/-/react-redux-7.2.8.tgz" + "version" "7.2.8" + dependencies: + "@babel/runtime" "^7.15.4" + "@types/react-redux" "^7.1.20" + "hoist-non-react-statics" "^3.3.2" + "loose-envify" "^1.4.0" + "prop-types" "^15.7.2" + "react-is" "^17.0.2" + +"react-refresh@^0.8.2": + "integrity" "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==" + "resolved" "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz" + "version" "0.8.3" + +"react-router-dom@^6.0.0": + "integrity" "sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==" + "resolved" "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz" + "version" "6.3.0" + dependencies: + "history" "^5.2.0" + "react-router" "6.3.0" + +"react-router@^6.0.0", "react-router@6.3.0": + "integrity" "sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==" + "resolved" "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz" + "version" "6.3.0" + dependencies: + "history" "^5.2.0" + +"react-scroll-to-bottom@^4.2.0": + "integrity" "sha512-1WweuumQc5JLzeAR81ykRdK/cEv9NlCPEm4vSwOGN1qS2qlpGVTyMgdI8Y7ZmaqRmzYBGV5/xPuJQtekYzQFGg==" + "resolved" "https://registry.npmjs.org/react-scroll-to-bottom/-/react-scroll-to-bottom-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "@babel/runtime-corejs3" "^7.15.4" + "@emotion/css" "11.1.3" + "classnames" "2.3.1" + "core-js" "3.18.3" + "math-random" "2.0.1" + "prop-types" "15.7.2" + "simple-update-in" "2.2.0" + +"react-select@^4.3.1": + "integrity" "sha512-HBBd0dYwkF5aZk1zP81Wx5UsLIIT2lSvAY2JiJo199LjoLHoivjn9//KsmvQMEFGNhe58xyuOITjfxKCcGc62Q==" + "resolved" "https://registry.npmjs.org/react-select/-/react-select-4.3.1.tgz" + "version" "4.3.1" dependencies: "@babel/runtime" "^7.12.0" "@emotion/cache" "^11.4.0" "@emotion/react" "^11.1.1" - memoize-one "^5.0.0" - prop-types "^15.6.0" - react-input-autosize "^3.0.0" - react-transition-group "^4.3.0" - -react-simple-code-editor@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/react-simple-code-editor/-/react-simple-code-editor-0.11.0.tgz#bb57c7c29b570f2ab229872599eac184f5bc673c" - integrity sha512-xGfX7wAzspl113ocfKQAR8lWPhavGWHL3xSzNLeseDRHysT+jzRBi/ExdUqevSMos+7ZtdfeuBOXtgk9HTwsrw== - -react-test-renderer@^16.0.0-0: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" - integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== - dependencies: - object-assign "^4.1.1" - prop-types "^15.6.2" - react-is "^16.8.6" - scheduler "^0.19.1" - -react-transition-group@^4.3.0, react-transition-group@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" - integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== + "memoize-one" "^5.0.0" + "prop-types" "^15.6.0" + "react-input-autosize" "^3.0.0" + "react-transition-group" "^4.3.0" + +"react-simple-code-editor@^0.11.0": + "integrity" "sha512-xGfX7wAzspl113ocfKQAR8lWPhavGWHL3xSzNLeseDRHysT+jzRBi/ExdUqevSMos+7ZtdfeuBOXtgk9HTwsrw==" + "resolved" "https://registry.npmjs.org/react-simple-code-editor/-/react-simple-code-editor-0.11.0.tgz" + "version" "0.11.0" + +"react-table@7.7.0": + "integrity" "sha512-jBlj70iBwOTvvImsU9t01LjFjy4sXEtclBovl3mTiqjz23Reu0DKnRza4zlLtOPACx6j2/7MrQIthIK1Wi+LIA==" + "resolved" "https://registry.npmjs.org/react-table/-/react-table-7.7.0.tgz" + "version" "7.7.0" + +"react-tabs@^3.2.2": + "integrity" "sha512-/o52eGKxFHRa+ssuTEgSM8qORnV4+k7ibW+aNQzKe+5gifeVz8nLxCrsI9xdRhfb0wCLdgIambIpb1qCxaMN+A==" + "resolved" "https://registry.npmjs.org/react-tabs/-/react-tabs-3.2.2.tgz" + "version" "3.2.2" + dependencies: + "clsx" "^1.1.0" + "prop-types" "^15.5.0" + +"react-test-renderer@^16.0.0-0": + "integrity" "sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==" + "resolved" "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz" + "version" "16.14.0" + dependencies: + "object-assign" "^4.1.1" + "prop-types" "^15.6.2" + "react-is" "^16.8.6" + "scheduler" "^0.19.1" + +"react-transition-group@^4.3.0", "react-transition-group@^4.4.0", "react-transition-group@^4.4.2": + "integrity" "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==" + "resolved" "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz" + "version" "4.4.2" dependencies: "@babel/runtime" "^7.5.5" - dom-helpers "^5.0.1" - loose-envify "^1.4.0" - prop-types "^15.6.2" - -react@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -read-cmd-shim@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" - integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw== - -read-package-json-fast@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" - integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== - dependencies: - json-parse-even-better-errors "^2.3.0" - npm-normalize-package-bin "^1.0.1" - -read-package-json@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" - integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== - dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^2.0.0" - npm-normalize-package-bin "^1.0.0" - -read-package-json@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-3.0.1.tgz#c7108f0b9390257b08c21e3004d2404c806744b9" - integrity sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng== - dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^3.0.0" - npm-normalize-package-bin "^1.0.0" - -read-package-json@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-4.1.1.tgz#153be72fce801578c1c86b8ef2b21188df1b9eea" - integrity sha512-P82sbZJ3ldDrWCOSKxJT0r/CXMWR0OR3KRh55SgKo3p91GSIEEC32v3lSHAvO/UcH3/IoL7uqhOFBduAnwdldw== - dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^3.0.0" - npm-normalize-package-bin "^1.0.0" - -read-package-tree@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" - integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== - dependencies: - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - util-promisify "^2.1.0" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + "dom-helpers" "^5.0.1" + "loose-envify" "^1.4.0" + "prop-types" "^15.6.2" + +"react@^17.0.1": + "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" + "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" + "version" "17.0.2" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + +"react@^18.0.0": + "integrity" "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==" + "resolved" "https://registry.npmjs.org/react/-/react-18.1.0.tgz" + "version" "18.1.0" + dependencies: + "loose-envify" "^1.1.0" + +"read-cmd-shim@^2.0.0": + "integrity" "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==" + "resolved" "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz" + "version" "2.0.0" + +"read-package-json-fast@^2.0.1": + "integrity" "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==" + "resolved" "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "json-parse-even-better-errors" "^2.3.0" + "npm-normalize-package-bin" "^1.0.1" + +"read-package-json@^2.0.0": + "integrity" "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==" + "resolved" "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz" + "version" "2.1.2" + dependencies: + "glob" "^7.1.1" + "json-parse-even-better-errors" "^2.3.0" + "normalize-package-data" "^2.0.0" + "npm-normalize-package-bin" "^1.0.0" + +"read-package-json@^3.0.0": + "integrity" "sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng==" + "resolved" "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "glob" "^7.1.1" + "json-parse-even-better-errors" "^2.3.0" + "normalize-package-data" "^3.0.0" + "npm-normalize-package-bin" "^1.0.0" + +"read-package-json@^4.1.1": + "integrity" "sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ==" + "resolved" "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "glob" "^7.1.1" + "json-parse-even-better-errors" "^2.3.0" + "normalize-package-data" "^3.0.0" + "npm-normalize-package-bin" "^1.0.0" + +"read-package-tree@^5.3.1": + "integrity" "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==" + "resolved" "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz" + "version" "5.3.1" + dependencies: + "read-package-json" "^2.0.0" + "readdir-scoped-modules" "^1.0.0" + "util-promisify" "^2.1.0" + +"read-pkg-up@^3.0.0": + "integrity" "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=" + "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "find-up" "^2.0.0" + "read-pkg" "^3.0.0" + +"read-pkg-up@^7.0.1": + "integrity" "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==" + "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "find-up" "^4.1.0" + "read-pkg" "^5.2.0" + "type-fest" "^0.8.1" + +"read-pkg@^3.0.0": + "integrity" "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=" + "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "load-json-file" "^4.0.0" + "normalize-package-data" "^2.3.2" + "path-type" "^3.0.0" + +"read-pkg@^5.2.0": + "integrity" "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==" + "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" + "version" "5.2.0" dependencies: "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -read@1, read@~1.0.1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= - dependencies: - mute-stream "~0.0.4" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - 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" - -readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.5.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@~1.0.31: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readdir-scoped-modules@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" - integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - graceful-fs "^4.1.2" - once "^1.3.0" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -rebass@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/rebass/-/rebass-4.0.7.tgz#0a84e5558750c1f416c3baf41ec4c7fc8d64a98a" - integrity sha512-GJot6j6Qcr7jk1QIgf9qBoud75CGRpN8pGcEo98TSp4KNSWV01ZLvGwFKGI35oEBuNs+lpEd3+pnwkQUTSFytg== - dependencies: - reflexbox "^4.0.6" - -rechoir@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" - integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== - dependencies: - resolve "^1.9.0" - -reconnecting-websocket@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz#3b0e5b96ef119e78a03135865b8bb0af1b948783" - integrity sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng== - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== - -redux-persist@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-6.0.0.tgz#b4d2972f9859597c130d40d4b146fecdab51b3a8" - integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ== - -redux-thunk@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" - integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== - -redux@^4.0.0, redux@^4.1.0, redux@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.1.1.tgz#76f1c439bb42043f985fbd9bf21990e60bd67f47" - integrity sha512-hZQZdDEM25UY2P493kPYuKqviVwZ58lEmGQNeQ+gXa+U0gYPUBf7NKYazbe3m+bs/DzM/ahN12DbF+NG8i0CWw== + "normalize-package-data" "^2.5.0" + "parse-json" "^5.0.0" + "type-fest" "^0.6.0" + +"read@^1.0.4", "read@~1.0.1", "read@1": + "integrity" "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=" + "resolved" "https://registry.npmjs.org/read/-/read-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "mute-stream" "~0.0.4" + +"readable-stream@^1.1.14": + "integrity" "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" + "version" "1.1.14" + dependencies: + "core-util-is" "~1.0.0" + "inherits" "~2.0.1" + "isarray" "0.0.1" + "string_decoder" "~0.10.x" + +"readable-stream@^1.1.8": + "integrity" "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" + "version" "1.1.14" + dependencies: + "core-util-is" "~1.0.0" + "inherits" "~2.0.1" + "isarray" "0.0.1" + "string_decoder" "~0.10.x" + +"readable-stream@^2.0.0": + "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + "version" "2.3.7" + dependencies: + "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" + +"readable-stream@^2.0.1": + "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + "version" "2.3.7" + dependencies: + "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" + +"readable-stream@^2.0.2", "readable-stream@^2.3.3", "readable-stream@^2.3.6": + "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + "version" "2.3.7" + dependencies: + "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" + +"readable-stream@^2.0.6": + "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + "version" "2.3.7" + dependencies: + "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" + +"readable-stream@^2.1.5": + "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + "version" "2.3.7" + dependencies: + "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" + +"readable-stream@^2.2.2": + "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + "version" "2.3.7" + dependencies: + "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" + +"readable-stream@^2.3.5": + "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + "version" "2.3.7" + dependencies: + "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" + +"readable-stream@^3.0.0", "readable-stream@^3.0.2", "readable-stream@^3.0.6", "readable-stream@^3.1.1", "readable-stream@^3.4.0", "readable-stream@^3.5.0", "readable-stream@^3.6.0", "readable-stream@3": + "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "inherits" "^2.0.3" + "string_decoder" "^1.1.1" + "util-deprecate" "^1.0.1" + +"readable-stream@~1.0.31": + "integrity" "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" + "version" "1.0.34" + dependencies: + "core-util-is" "~1.0.0" + "inherits" "~2.0.1" + "isarray" "0.0.1" + "string_decoder" "~0.10.x" + +"readable-stream@~2.3.6": + "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + "version" "2.3.7" + dependencies: + "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" + +"readable-stream@1 || 2": + "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + "version" "2.3.7" + dependencies: + "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" + +"readable-stream@1.1.x": + "integrity" "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" + "version" "1.1.14" + dependencies: + "core-util-is" "~1.0.0" + "inherits" "~2.0.1" + "isarray" "0.0.1" + "string_decoder" "~0.10.x" + +"readdir-scoped-modules@^1.0.0": + "integrity" "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==" + "resolved" "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "debuglog" "^1.0.1" + "dezalgo" "^1.0.0" + "graceful-fs" "^4.1.2" + "once" "^1.3.0" + +"readdirp@^2.2.1": + "integrity" "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==" + "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" + "version" "2.2.1" + dependencies: + "graceful-fs" "^4.1.11" + "micromatch" "^3.1.10" + "readable-stream" "^2.0.2" + +"readdirp@~3.5.0": + "integrity" "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==" + "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz" + "version" "3.5.0" + dependencies: + "picomatch" "^2.2.1" + +"readdirp@~3.6.0": + "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" + "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "picomatch" "^2.2.1" + +"readline@^1.3.0": + "integrity" "sha1-xYDXfvLPyHUrEySYBg3JeTp6wBw=" + "resolved" "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz" + "version" "1.3.0" + +"rebass@^4.0.7": + "integrity" "sha512-GJot6j6Qcr7jk1QIgf9qBoud75CGRpN8pGcEo98TSp4KNSWV01ZLvGwFKGI35oEBuNs+lpEd3+pnwkQUTSFytg==" + "resolved" "https://registry.npmjs.org/rebass/-/rebass-4.0.7.tgz" + "version" "4.0.7" + dependencies: + "reflexbox" "^4.0.6" + +"rechoir@^0.7.0": + "integrity" "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==" + "resolved" "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz" + "version" "0.7.1" + dependencies: + "resolve" "^1.9.0" + +"reconnecting-websocket@^4.4.0": + "integrity" "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" + "resolved" "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz" + "version" "4.4.0" + +"reddit@1.2.1": + "integrity" "sha512-VOpVOi079VS6H78q+y+7Sgk3XCKbCvRNi3roZNzmvg1m7DFQZ7JT1GJAoTo7AZtWmSFDvRXnYYXJt32llqGlrg==" + "resolved" "https://registry.npmjs.org/reddit/-/reddit-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "debug" "^4.1.1" + "simple-get" "^3.1.0" + +"redent@^3.0.0": + "integrity" "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==" + "resolved" "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "indent-string" "^4.0.0" + "strip-indent" "^3.0.0" + +"redis-errors@^1.0.0": + "integrity" "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=" + "resolved" "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz" + "version" "1.2.0" + +"redis-parser@3.0.0": + "integrity" "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=" + "resolved" "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "redis-errors" "^1.0.0" + +"redis@4.0.1": + "integrity" "sha512-qfcq1oz2ci7pNdCfTLLEuKhS8jZ17dFiT1exogOr+jd3EVP/h9qpy7K+VajB4BXA0k8q68KFqR6HrliKV6jt1Q==" + "resolved" "https://registry.npmjs.org/redis/-/redis-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "@node-redis/client" "^1.0.1" + "@node-redis/json" "^1.0.1" + "@node-redis/search" "^1.0.1" + "@node-redis/time-series" "^1.0.0" + +"redoc-cli@^0.12.3": + "integrity" "sha512-qTBaEfwVqCvqLbuloZ9sMBQA49WfMOQrLVBGiVyT7pNMAjosQCpMyFESqQL8WqVxDzV2olPCZ1L2rG9cuDGOsA==" + "resolved" "https://registry.npmjs.org/redoc-cli/-/redoc-cli-0.12.3.tgz" + "version" "0.12.3" + dependencies: + "chokidar" "^3.5.1" + "handlebars" "^4.7.7" + "isarray" "^2.0.5" + "mkdirp" "^1.0.4" + "mobx" "^6.3.2" + "node-libs-browser" "^2.2.1" + "react" "^17.0.1" + "react-dom" "^17.0.1" + "redoc" "2.0.0-rc.56" + "styled-components" "^5.3.0" + "yargs" "^17.0.1" + +"redoc@2.0.0-rc.56": + "integrity" "sha512-ir2TtQ2d/1FqZWIoLmUZ3qvAAnO6jg8dt0SV75TanmfCXpEABcElXWH3mtUf6qKlvgDVt40diDCVuSvyPPxkAw==" + "resolved" "https://registry.npmjs.org/redoc/-/redoc-2.0.0-rc.56.tgz" + "version" "2.0.0-rc.56" + dependencies: + "@babel/runtime" "^7.14.0" + "@redocly/openapi-core" "^1.0.0-beta.50" + "@redocly/react-dropdown-aria" "^2.0.11" + "@types/node" "^15.6.1" + "classnames" "^2.3.1" + "decko" "^1.2.0" + "dompurify" "^2.2.8" + "eventemitter3" "^4.0.7" + "json-pointer" "^0.6.1" + "lunr" "^2.3.9" + "mark.js" "^8.11.1" + "marked" "^0.7.0" + "memoize-one" "^5.2.1" + "mobx-react" "^7.2.0" + "openapi-sampler" "^1.0.1" + "path-browserify" "^1.0.1" + "perfect-scrollbar" "^1.5.1" + "polished" "^4.1.3" + "prismjs" "^1.24.1" + "prop-types" "^15.7.2" + "react-tabs" "^3.2.2" + "slugify" "~1.4.7" + "stickyfill" "^1.1.1" + "swagger2openapi" "^7.0.6" + "url-template" "^2.0.8" + +"reduce-flatten@^2.0.0": + "integrity" "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==" + "resolved" "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz" + "version" "2.0.0" + +"redux-persist@^6.0.0": + "integrity" "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==" + "resolved" "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz" + "version" "6.0.0" + +"redux-thunk@^2.4.1": + "integrity" "sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==" + "resolved" "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz" + "version" "2.4.1" + +"redux@^4.0.0", "redux@^4.1.1", "redux@^4.1.2": + "integrity" "sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==" + "resolved" "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz" + "version" "4.2.0" dependencies: "@babel/runtime" "^7.9.2" -reflect.ownkeys@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" - integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= +"reflect-metadata@^0.1.13": + "integrity" "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + "resolved" "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz" + "version" "0.1.13" -reflexbox@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/reflexbox/-/reflexbox-4.0.6.tgz#fc756d2cc1ca493baf9b96bb27dd640ad8154cf1" - integrity sha512-UNUL4YoJEXAPjRKHuty1tuOk+LV1nDJ2KYViDcH7lYm5yU3AQ+EKNXxPU3E14bQNK/pE09b1hYl+ZKdA94tWLQ== +"reflect.ownkeys@^0.2.0": + "integrity" "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=" + "resolved" "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz" + "version" "0.2.0" + +"reflexbox@^4.0.6": + "integrity" "sha512-UNUL4YoJEXAPjRKHuty1tuOk+LV1nDJ2KYViDcH7lYm5yU3AQ+EKNXxPU3E14bQNK/pE09b1hYl+ZKdA94tWLQ==" + "resolved" "https://registry.npmjs.org/reflexbox/-/reflexbox-4.0.6.tgz" + "version" "4.0.6" dependencies: "@emotion/core" "^10.0.0" "@emotion/styled" "^10.0.0" "@styled-system/css" "^5.0.0" "@styled-system/should-forward-prop" "^5.0.0" - styled-system "^5.0.0" + "styled-system" "^5.0.0" + +"reftools@^1.1.8": + "integrity" "sha512-Yvz9NH8uFHzD/AXX82Li1GdAP6FzDBxEZw+njerNBBQv/XHihqsWAjNfXtaq4QD2l4TEZVnp4UbktdYSegAM3g==" + "resolved" "https://registry.npmjs.org/reftools/-/reftools-1.1.8.tgz" + "version" "1.1.8" -regenerate-unicode-properties@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" - integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA== +"regenerate-unicode-properties@^10.0.1": + "integrity" "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==" + "resolved" "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz" + "version" "10.0.1" dependencies: - regenerate "^1.4.2" + "regenerate" "^1.4.2" -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== +"regenerate@^1.4.2": + "integrity" "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "resolved" "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + "version" "1.4.2" -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +"regenerator-runtime@^0.11.0": + "integrity" "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" + "version" "0.11.1" -regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.9: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== +"regenerator-runtime@^0.13.4", "regenerator-runtime@^0.13.9": + "integrity" "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" + "version" "0.13.9" -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== +"regenerator-transform@^0.15.0": + "integrity" "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==" + "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz" + "version" "0.15.0" dependencies: "@babel/runtime" "^7.8.4" -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -regexpu-core@^4.7.1: - version "4.8.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" - integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^9.0.0" - regjsgen "^0.5.2" - regjsparser "^0.7.0" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -registry-auth-token@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" - integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== - dependencies: - rc "^1.2.8" - -registry-url@^5.0.0, registry-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== - dependencies: - rc "^1.2.8" - -regjsgen@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - -regjsparser@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" - integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ== - dependencies: - jsesc "~0.5.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remove-markdown@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/remove-markdown/-/remove-markdown-0.3.0.tgz#5e4b667493a93579728f3d52ecc1db9ca505dc98" - integrity sha1-XktmdJOpNXlyjz1S7MHbnKUF3Jg= - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.6: - version "2.0.7" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" - integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^3.0.1" - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request@^2.88.0, request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -requireg@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/requireg/-/requireg-0.2.2.tgz#437e77a5316a54c9bcdbbf5d1f755fe093089830" - integrity sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg== - dependencies: - nested-error-stacks "~2.0.1" - rc "~1.2.7" - resolve "~1.7.1" - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -reselect@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" - integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.9.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -resolve@~1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" - integrity sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw== - dependencies: - path-parse "^1.0.5" - -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= - dependencies: - lowercase-keys "^1.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -rete-area-plugin@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/rete-area-plugin/-/rete-area-plugin-0.2.1.tgz#0afe4581baf99c36c904d08e4f0a835ed6604d86" - integrity sha512-MOeQRmSC/gjkZIMo0fNuomzunRplALqd86V+jSzuhBYchCw0wshv2/iXu4xRxVZkw9r1HpZxlz9gLkbatCbXMw== - -rete-comment-plugin@^0.7.0-rc.1: - version "0.7.0-rc.1" - resolved "https://registry.yarnpkg.com/rete-comment-plugin/-/rete-comment-plugin-0.7.0-rc.1.tgz#a8cc0e0858a655e543eb432b4bd1b82fa631a50d" - integrity sha512-Bc8HOFaR6IMozikpbeRzq8OFlDFpIpaIh3WbNkVvXiEINHgyBAmZw2gEtwtpf62F1MHWR7gdxvuwiMaVHKYeUQ== - -rete-connection-plugin@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/rete-connection-plugin/-/rete-connection-plugin-0.9.0.tgz#3a6df36f55493a5c2ea021ae3147a0f0a6ada6ed" - integrity sha512-D+H1yAONBBFYXeMkz0sdpDm76XiqcF2N3FduaqMUqcoThocMaFB2O8TX3nJc76ksuYaLYqo/+OLXTxNa+5HQYQ== - -rete-connection-reroute-plugin@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/rete-connection-reroute-plugin/-/rete-connection-reroute-plugin-0.4.0.tgz#30fb8f8e2d5d32a379f8c8bd743145a326a42e08" - integrity sha512-DWZrK/qk9kt83o2cELjKpabD0YIJ6rhzp7rnTqEV4IHpSJxhruNSBKG2V7hxXq4wMy7T0zVFh9f0TIRJ5qvTqQ== - dependencies: - d3-shape "^1.3.5" - vue "2.6.10" - -rete-context-menu-plugin@^0.6.0-rc.1: - version "0.6.0-rc.1" - resolved "https://registry.yarnpkg.com/rete-context-menu-plugin/-/rete-context-menu-plugin-0.6.0-rc.1.tgz#0e5ba94057952ec9c07c0efd0d2ab27e9cc683a1" - integrity sha512-pjDaLfg50lvwbEInciX2OOvVgmoerF5tYYhYlEjcJq0KYfhLAzhmRnPJc1Ymgd1SJZf26G4YnQjSepCEzTiaUA== - dependencies: - lodash-es "^4.17.15" - vue "^2.5.17" - -rete-module-plugin@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/rete-module-plugin/-/rete-module-plugin-0.4.1.tgz#3f81ae4efdb53394134a77649a21f32debda3468" - integrity sha512-8SFOdL8dFkw+o6QN1CPORoaP63tm+1ENZmtMaFkewXRg4j1qc7OzgsrKMygJpPdAXsN5IeFqF1sR/T7PAa4aYA== - -rete-react-render-plugin@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/rete-react-render-plugin/-/rete-react-render-plugin-0.2.1.tgz#71a6d73f18f850b85262563f678b40080a7b0e32" - integrity sha512-2ZMXUP0v+EiejHVMqdrOmUwyDBHC2UDOJ/pFkElaZL1Kn/E40JZA5yzdBXi6ajYZI2DCzoW5ZBcA2Ihjtur8MQ== - -"rete@git+https://github.com/latitudegames/rete.git#master": - version "1.4.5" - uid "24565a81a2bbcdd4cd73b0a725977550cc8ff988" - resolved "git+https://github.com/latitudegames/rete.git#24565a81a2bbcdd4cd73b0a725977550cc8ff988" - dependencies: - lodash "^4.17.21" - watch "^1.0.2" - -"rete@https://github.com/latitudegames/rete.git#master": - version "1.4.5" - resolved "https://github.com/latitudegames/rete.git#24565a81a2bbcdd4cd73b0a725977550cc8ff988" - dependencies: - lodash "^4.17.21" - watch "^1.0.2" - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rst-selector-parser@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" - integrity sha1-gbIw6i/MYGbInjRy3nlChdmwPZE= - dependencies: - lodash.flattendeep "^4.4.0" - nearley "^2.7.10" - -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" +"regex-not@^1.0.0", "regex-not@^1.0.2": + "integrity" "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==" + "resolved" "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "extend-shallow" "^3.0.2" + "safe-regex" "^1.1.0" + +"regexp.prototype.flags@^1.2.0", "regexp.prototype.flags@^1.3.0": + "integrity" "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==" + "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" + "version" "1.4.3" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "functions-have-names" "^1.2.2" + +"regexpp@^2.0.1": + "integrity" "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" + "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz" + "version" "2.0.1" + +"regexpp@^3.1.0": + "integrity" "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" + "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" + "version" "3.2.0" + +"regexpu-core@^5.0.1": + "integrity" "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==" + "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "regenerate" "^1.4.2" + "regenerate-unicode-properties" "^10.0.1" + "regjsgen" "^0.6.0" + "regjsparser" "^0.8.2" + "unicode-match-property-ecmascript" "^2.0.0" + "unicode-match-property-value-ecmascript" "^2.0.0" + +"registry-auth-token@^4.0.0": + "integrity" "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==" + "resolved" "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz" + "version" "4.2.1" + dependencies: + "rc" "^1.2.8" + +"registry-url@^5.0.0", "registry-url@^5.1.0": + "integrity" "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==" + "resolved" "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "rc" "^1.2.8" + +"regjsgen@^0.6.0": + "integrity" "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==" + "resolved" "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz" + "version" "0.6.0" + +"regjsparser@^0.8.2": + "integrity" "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==" + "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz" + "version" "0.8.4" + dependencies: + "jsesc" "~0.5.0" + +"relateurl@^0.2.7": + "integrity" "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + "resolved" "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" + "version" "0.2.7" + +"remove-markdown@^0.3.0": + "integrity" "sha1-XktmdJOpNXlyjz1S7MHbnKUF3Jg=" + "resolved" "https://registry.npmjs.org/remove-markdown/-/remove-markdown-0.3.0.tgz" + "version" "0.3.0" + +"remove-trailing-separator@^1.0.1": + "integrity" "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + "resolved" "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" + "version" "1.1.0" + +"renderkid@^3.0.0": + "integrity" "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==" + "resolved" "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "css-select" "^4.1.3" + "dom-converter" "^0.2.0" + "htmlparser2" "^6.1.0" + "lodash" "^4.17.21" + "strip-ansi" "^6.0.1" + +"repeat-element@^1.1.2": + "integrity" "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" + "resolved" "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz" + "version" "1.1.4" + +"repeat-string@^1.6.1": + "integrity" "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "resolved" "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + "version" "1.6.1" + +"request-promise-core@1.1.4": + "integrity" "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==" + "resolved" "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz" + "version" "1.1.4" + dependencies: + "lodash" "^4.17.19" + +"request-promise-native@^1.0.7": + "integrity" "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==" + "resolved" "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz" + "version" "1.0.9" + dependencies: + "request-promise-core" "1.1.4" + "stealthy-require" "^1.1.1" + "tough-cookie" "^2.3.3" + +"request-promise@^4.2.2", "request-promise@^4.2.4", "request-promise@^4.2.6": + "integrity" "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==" + "resolved" "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz" + "version" "4.2.6" + dependencies: + "bluebird" "^3.5.0" + "request-promise-core" "1.1.4" + "stealthy-require" "^1.1.1" + "tough-cookie" "^2.3.3" + +"request@^2.68.0", "request@^2.83.0", "request@^2.88.0", "request@^2.88.2": + "integrity" "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==" + "resolved" "https://registry.npmjs.org/request/-/request-2.88.2.tgz" + "version" "2.88.2" + dependencies: + "aws-sign2" "~0.7.0" + "aws4" "^1.8.0" + "caseless" "~0.12.0" + "combined-stream" "~1.0.6" + "extend" "~3.0.2" + "forever-agent" "~0.6.1" + "form-data" "~2.3.2" + "har-validator" "~5.1.3" + "http-signature" "~1.2.0" + "is-typedarray" "~1.0.0" + "isstream" "~0.1.2" + "json-stringify-safe" "~5.0.1" + "mime-types" "~2.1.19" + "oauth-sign" "~0.9.0" + "performance-now" "^2.1.0" + "qs" "~6.5.2" + "safe-buffer" "^5.1.2" + "tough-cookie" "~2.5.0" + "tunnel-agent" "^0.6.0" + "uuid" "^3.3.2" + +"require-directory@^2.1.1": + "integrity" "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + "version" "2.1.1" + +"require-from-string@^2.0.2": + "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + "version" "2.0.2" + +"require-in-the-middle@^5.0.0": + "integrity" "sha512-M2rLKVupQfJ5lf9OvqFGIT+9iVLnTmjgbOmpil12hiSQNn5zJTKGPoIisETNjfK+09vP3rpm1zJajmErpr2sEQ==" + "resolved" "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "debug" "^4.1.1" + "module-details-from-path" "^1.0.3" + "resolve" "^1.12.0" + +"require-main-filename@^2.0.0": + "integrity" "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + "resolved" "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + "version" "2.0.0" + +"require-relative@^0.8.7": + "integrity" "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=" + "resolved" "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz" + "version" "0.8.7" + +"requireg@^0.2.2": + "integrity" "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==" + "resolved" "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz" + "version" "0.2.2" + dependencies: + "nested-error-stacks" "~2.0.1" + "rc" "~1.2.7" + "resolve" "~1.7.1" + +"requires-port@^1.0.0": + "integrity" "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + "version" "1.0.0" + +"requires-port@0.x.x": + "integrity" "sha1-S0QUQR2d98hVmV3YmajHiilRwW0=" + "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-0.0.1.tgz" + "version" "0.0.1" + +"reselect@^4.1.5": + "integrity" "sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ==" + "resolved" "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz" + "version" "4.1.5" + +"reserved-words@^0.1.2": + "integrity" "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=" + "resolved" "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz" + "version" "0.1.2" + +"resolve-cwd@^3.0.0": + "integrity" "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==" + "resolved" "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "resolve-from" "^5.0.0" + +"resolve-from@^4.0.0": + "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + "version" "4.0.0" + +"resolve-from@^5.0.0": + "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + "version" "5.0.0" + +"resolve-url@^0.2.1": + "integrity" "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + "resolved" "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" + "version" "0.2.1" + +"resolve.exports@^1.1.0": + "integrity" "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==" + "resolved" "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz" + "version" "1.1.0" + +"resolve@^1.10.0", "resolve@^1.12.0", "resolve@^1.14.2", "resolve@^1.20.0", "resolve@^1.22.0", "resolve@^1.9.0": + "integrity" "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz" + "version" "1.22.0" + dependencies: + "is-core-module" "^2.8.1" + "path-parse" "^1.0.7" + "supports-preserve-symlinks-flag" "^1.0.0" + +"resolve@~1.7.1": + "integrity" "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz" + "version" "1.7.1" + dependencies: + "path-parse" "^1.0.5" + +"responselike@^1.0.2": + "integrity" "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=" + "resolved" "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "lowercase-keys" "^1.0.0" + +"restore-cursor@^2.0.0": + "integrity" "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=" + "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "onetime" "^2.0.0" + "signal-exit" "^3.0.2" + +"restore-cursor@^3.1.0": + "integrity" "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==" + "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "onetime" "^5.1.0" + "signal-exit" "^3.0.2" + +"ret@~0.1.10": + "integrity" "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + "resolved" "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" + "version" "0.1.15" + +"rete-area-plugin@^0.2.1": + "integrity" "sha512-MOeQRmSC/gjkZIMo0fNuomzunRplALqd86V+jSzuhBYchCw0wshv2/iXu4xRxVZkw9r1HpZxlz9gLkbatCbXMw==" + "resolved" "https://registry.npmjs.org/rete-area-plugin/-/rete-area-plugin-0.2.1.tgz" + "version" "0.2.1" + +"rete-comment-plugin@^0.7.0-rc.1": + "integrity" "sha512-Bc8HOFaR6IMozikpbeRzq8OFlDFpIpaIh3WbNkVvXiEINHgyBAmZw2gEtwtpf62F1MHWR7gdxvuwiMaVHKYeUQ==" + "resolved" "https://registry.npmjs.org/rete-comment-plugin/-/rete-comment-plugin-0.7.0-rc.1.tgz" + "version" "0.7.0-rc.1" + +"rete-connection-plugin@^0.9.0": + "integrity" "sha512-D+H1yAONBBFYXeMkz0sdpDm76XiqcF2N3FduaqMUqcoThocMaFB2O8TX3nJc76ksuYaLYqo/+OLXTxNa+5HQYQ==" + "resolved" "https://registry.npmjs.org/rete-connection-plugin/-/rete-connection-plugin-0.9.0.tgz" + "version" "0.9.0" + +"rete-connection-reroute-plugin@^0.4.0": + "integrity" "sha512-DWZrK/qk9kt83o2cELjKpabD0YIJ6rhzp7rnTqEV4IHpSJxhruNSBKG2V7hxXq4wMy7T0zVFh9f0TIRJ5qvTqQ==" + "resolved" "https://registry.npmjs.org/rete-connection-reroute-plugin/-/rete-connection-reroute-plugin-0.4.0.tgz" + "version" "0.4.0" + dependencies: + "d3-shape" "^1.3.5" + "vue" "2.6.10" + +"rete-context-menu-plugin@^0.6.0-rc.1": + "integrity" "sha512-AYGD/gaUqirFx3y7G3YdjGXzHW4R4BRCdvFWou/1kQZpMT6wWrbNiUEsLtLGfhM8ZXsrKd1eCr7STrh5NPhyew==" + "resolved" "https://registry.npmjs.org/rete-context-menu-plugin/-/rete-context-menu-plugin-0.6.0.tgz" + "version" "0.6.0" + dependencies: + "lodash-es" "4.17.15" + "vue" "2.5.17" + +"rete-module-plugin@^0.4.1": + "integrity" "sha512-u781w3RHuvEGXvWN2lJw4hq0zQg9Bh+V+sMqtpahXiQpJJ0UCt0sdz0lGO6YjiNEzxoYnVhQz9Q1HGGAfnt5ng==" + "resolved" "https://registry.npmjs.org/rete-module-plugin/-/rete-module-plugin-0.4.2.tgz" + "version" "0.4.2" + +"rete-react-render-plugin@^0.2.1": + "integrity" "sha512-2ZMXUP0v+EiejHVMqdrOmUwyDBHC2UDOJ/pFkElaZL1Kn/E40JZA5yzdBXi6ajYZI2DCzoW5ZBcA2Ihjtur8MQ==" + "resolved" "https://registry.npmjs.org/rete-react-render-plugin/-/rete-react-render-plugin-0.2.1.tgz" + "version" "0.2.1" + +"rete@github:latitudegames/rete": + "resolved" "git+ssh://git@github.com/latitudegames/rete.git#24565a81a2bbcdd4cd73b0a725977550cc8ff988" + "version" "1.4.5" + dependencies: + "lodash" "^4.17.21" + "watch" "^1.0.2" + +"retry-as-promised@^5.0.0": + "integrity" "sha512-6S+5LvtTl2ggBumk04hBo/4Uf6fRJUwIgunGZ7CYEBCeufGFW1Pu6ucUf/UskHeWOIsUcLOGLFXPig5tR5V1nA==" + "resolved" "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz" + "version" "5.0.0" + +"retry-request@^4.0.0", "retry-request@^4.2.2": + "integrity" "sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg==" + "resolved" "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz" + "version" "4.2.2" + dependencies: + "debug" "^4.1.1" + "extend" "^3.0.2" -rxjs@^6.6.0: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" +"retry@^0.12.0": + "integrity" "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" + "resolved" "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" + "version" "0.12.0" + +"retry@^0.13.1": + "integrity" "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + "resolved" "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + "version" "0.13.1" + +"reusify@^1.0.4": + "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + "version" "1.0.4" + +"rfdc@^1.3.0": + "integrity" "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + "resolved" "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" + "version" "1.3.0" + +"rimraf@^2.5.4": + "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + "version" "2.7.1" + dependencies: + "glob" "^7.1.3" + +"rimraf@^2.6.3": + "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + "version" "2.7.1" + dependencies: + "glob" "^7.1.3" + +"rimraf@^3.0.0", "rimraf@^3.0.2", "rimraf@3.0.2": + "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "glob" "^7.1.3" + +"rimraf@2.6.3": + "integrity" "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" + "version" "2.6.3" + dependencies: + "glob" "^7.1.3" + +"ripemd160@^2.0.0", "ripemd160@^2.0.1": + "integrity" "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==" + "resolved" "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "hash-base" "^3.0.0" + "inherits" "^2.0.1" + +"rootpath@^0.1.2": + "integrity" "sha1-Wzeah9ypBum5HWkKWZQ5vvJn6ms=" + "resolved" "https://registry.npmjs.org/rootpath/-/rootpath-0.1.2.tgz" + "version" "0.1.2" + +"rst-selector-parser@^2.2.3": + "integrity" "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=" + "resolved" "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz" + "version" "2.2.3" + dependencies: + "lodash.flattendeep" "^4.4.0" + "nearley" "^2.7.10" + +"run-async@^2.2.0", "run-async@^2.4.0": + "integrity" "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + "resolved" "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" + "version" "2.4.1" + +"run-parallel@^1.1.9": + "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" + "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "queue-microtask" "^1.2.2" + +"run-queue@^1.0.0", "run-queue@^1.0.3": + "integrity" "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=" + "resolved" "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "aproba" "^1.1.1" + +"run-series@^1.1.8": + "integrity" "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==" + "resolved" "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz" + "version" "1.1.9" + +"rxjs@^6.4.0", "rxjs@^6.5.2", "rxjs@^6.6.0", "rxjs@^6.6.3": + "integrity" "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" + "version" "6.6.7" + dependencies: + "tslib" "^1.9.0" + +"rxjs@^7.5.5": + "integrity" "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz" + "version" "7.5.5" + dependencies: + "tslib" "^2.1.0" + +"safe-buffer@^5.0.1", "safe-buffer@^5.1.0", "safe-buffer@^5.1.1", "safe-buffer@^5.1.2", "safe-buffer@>=5.1.0", "safe-buffer@~5.1.0", "safe-buffer@~5.1.1", "safe-buffer@5.1.2": + "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + "version" "5.1.2" + +"safe-buffer@^5.2.0", "safe-buffer@~5.2.0": + "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + "version" "5.2.1" + +"safe-buffer@^5.2.1": + "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + "version" "5.2.1" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +"safe-buffer@~5.2.0": + "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + "version" "5.2.1" -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +"safe-buffer@5.2.1": + "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + "version" "5.2.1" -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" +"safe-regex@^1.1.0": + "integrity" "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=" + "resolved" "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "ret" "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +"safe-stable-stringify@^2.2.0": + "integrity" "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==" + "resolved" "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz" + "version" "2.3.1" + +"safer-buffer@^2.0.2", "safer-buffer@^2.1.0", "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", "safer-buffer@~2.1.0": + "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + "version" "2.1.2" + +"sandwich-stream@^2.0.1": + "integrity" "sha512-jLYV0DORrzY3xaz/S9ydJL6Iz7essZeAfnAavsJ+zsJGZ1MOnsS52yRjU3uF3pJa/lla7+wisp//fxOwOH8SKQ==" + "resolved" "https://registry.npmjs.org/sandwich-stream/-/sandwich-stream-2.0.2.tgz" + "version" "2.0.2" + +"sax@^1.2.4": + "integrity" "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "resolved" "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" + "version" "1.2.4" + +"sax@>=0.6.0", "sax@1.2.1": + "integrity" "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" + "resolved" "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz" + "version" "1.2.1" + +"saxes@^5.0.1": + "integrity" "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==" + "resolved" "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "xmlchars" "^2.2.0" + +"scheduler@^0.19.1": + "integrity" "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==" + "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz" + "version" "0.19.1" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== +"scheduler@^0.20.2": + "integrity" "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==" + "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" + "version" "0.20.2" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + +"scheduler@^0.22.0": + "integrity" "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==" + "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz" + "version" "0.22.0" + dependencies: + "loose-envify" "^1.1.0" + +"schema-utils@^1.0.0": + "integrity" "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "ajv" "^6.1.0" + "ajv-errors" "^1.0.0" + "ajv-keywords" "^3.1.0" + +"schema-utils@^2.6.5": + "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" + "version" "2.7.1" dependencies: - xmlchars "^2.2.0" - -scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -scheduler@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" - integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" + "@types/json-schema" "^7.0.5" + "ajv" "^6.12.4" + "ajv-keywords" "^3.5.2" -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== +"schema-utils@^3.0.0": + "integrity" "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" + "version" "3.1.1" dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" + "@types/json-schema" "^7.0.8" + "ajv" "^6.12.5" + "ajv-keywords" "^3.5.2" -schema-utils@^2.6.5: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== +"schema-utils@^3.1.0": + "integrity" "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" + "version" "3.1.1" dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" + "@types/json-schema" "^7.0.8" + "ajv" "^6.12.5" + "ajv-keywords" "^3.5.2" -schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" - integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== +"schema-utils@^3.1.1": + "integrity" "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" + "version" "3.1.1" dependencies: "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.10.11: - version "1.10.11" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" - integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== - dependencies: - node-forge "^0.10.0" - -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -send@0.17.2: - version "0.17.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" - integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "1.8.1" - mime "1.6.0" - ms "2.1.3" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -serve-static@1.14.2: - version "1.14.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" - integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.2" - -set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -sharedb@^2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/sharedb/-/sharedb-2.2.5.tgz#8f6e0b4db86a89c226ebb09e0c98dcec4116f467" - integrity sha512-uCy8Npx8Azf21PmNUGqfIKRbnisH2U+N9Z0CJILWq23+HqcWRAA5n35m/dMm4ZuTQalYeWlR2/kaV8Wm0nXr3g== - dependencies: - arraydiff "^0.1.1" - async "^2.6.3" - fast-deep-equal "^2.0.1" - hat "0.0.3" - ot-json0 "^1.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.6.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" - integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== - -side-channel@^1.0.3, side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.4.tgz#366a4684d175b9cab2081e3681fda3747b6c51d7" - integrity sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q== - -signale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/signale/-/signale-1.4.0.tgz#c4be58302fb0262ac00fc3d886a7c113759042f1" - integrity sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w== - dependencies: - chalk "^2.3.2" - figures "^2.0.0" - pkg-conf "^2.1.0" - -sirv@^1.0.7: - version "1.0.17" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.17.tgz#86e2c63c612da5a1dace1c16c46f524aaa26ac45" - integrity sha512-qx9go5yraB7ekT7bCMqUHJ5jEaOC/GXBxUWv+jeWnb7WzHUFdcQPGWk7YmAwFBaQBrogpuSqd/azbC2lZRqqmw== + "ajv" "^6.12.5" + "ajv-keywords" "^3.5.2" + +"schema-utils@^4.0.0": + "integrity" "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "@types/json-schema" "^7.0.9" + "ajv" "^8.8.0" + "ajv-formats" "^2.1.1" + "ajv-keywords" "^5.0.0" + +"scmp@^2.1.0": + "integrity" "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==" + "resolved" "https://registry.npmjs.org/scmp/-/scmp-2.1.0.tgz" + "version" "2.1.0" + +"select-hose@^2.0.0": + "integrity" "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + "resolved" "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" + "version" "2.0.0" + +"selfsigned@^2.0.1": + "integrity" "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==" + "resolved" "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "node-forge" "^1" + +"semver-diff@^3.1.1": + "integrity" "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==" + "resolved" "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "semver" "^6.3.0" + +"semver@^5.3.0": + "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + "version" "5.7.1" + +"semver@^5.5.0", "semver@^5.5.1": + "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + "version" "5.7.1" + +"semver@^5.6.0": + "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + "version" "5.7.1" + +"semver@^5.7.0": + "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + "version" "5.7.1" + +"semver@^5.7.1": + "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + "version" "5.7.1" + +"semver@^6.0.0": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^6.1.1": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^6.1.2": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^6.2.0": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^6.3.0": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^7.0.0", "semver@^7.1.1", "semver@^7.1.3", "semver@^7.2", "semver@^7.2.1", "semver@^7.3.2", "semver@^7.3.4", "semver@^7.3.5", "semver@7.x": + "integrity" "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" + "version" "7.3.7" + dependencies: + "lru-cache" "^6.0.0" + +"semver@~7.2.0": + "integrity" "sha512-utbW9Z7ZxVvwiIWkdOMLOR9G/NFXh2aRucghkVrEMJWuC++r3lCkBC3LwqBinyHzGMAJxY5tn6VakZGHObq5ig==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.2.3.tgz" + "version" "7.2.3" + +"semver@2 || 3 || 4 || 5": + "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + "version" "5.7.1" + +"semver@5.5.0": + "integrity" "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz" + "version" "5.5.0" + +"semver@6.3.0": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@7.0.0": + "integrity" "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" + "version" "7.0.0" + +"send@0.18.0": + "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==" + "resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + "version" "0.18.0" + dependencies: + "debug" "2.6.9" + "depd" "2.0.0" + "destroy" "1.2.0" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "etag" "~1.8.1" + "fresh" "0.5.2" + "http-errors" "2.0.0" + "mime" "1.6.0" + "ms" "2.1.3" + "on-finished" "2.4.1" + "range-parser" "~1.2.1" + "statuses" "2.0.1" + +"sequelize-auto@^0.8.8": + "integrity" "sha512-9o0qi2yMA86oFqcA5Nh14PnQSHP0E9WPEB4hP/NgxqdFE44Nq2u8Di5O3xmvWwXMIV6W+Q0YI/2VTLvlMJAjnQ==" + "resolved" "https://registry.npmjs.org/sequelize-auto/-/sequelize-auto-0.8.8.tgz" + "version" "0.8.8" + dependencies: + "lodash" "^4.17.21" + "mkdirp" "^1.0.4" + "reserved-words" "^0.1.2" + "yargs" "^16.2.0" + +"sequelize-cli@^6.4.1": + "integrity" "sha512-gIzzFitUGUErq6DYd1JDnsmx7z7XcxzRNe4Py3AqeaxcyjpCAZU2BQnsNPGPMKAaXfMtKi/d9Tu4MtLrehVzIQ==" + "resolved" "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.4.1.tgz" + "version" "6.4.1" + dependencies: + "cli-color" "^2.0.1" + "fs-extra" "^9.1.0" + "js-beautify" "^1.14.0" + "lodash" "^4.17.21" + "resolve" "^1.20.0" + "umzug" "^2.3.0" + "yargs" "^16.2.0" + +"sequelize-pool@^7.1.0": + "integrity" "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==" + "resolved" "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz" + "version" "7.1.0" + +"sequelize@^6.15.0": + "integrity" "sha512-B3oGIdpYBERDjRDm74h7Ky67f6ZLcmBXOA7HscYObiOSo4pD7VBc9mtm44wNV7unc0uk8I1d30nbZBTQCE377A==" + "resolved" "https://registry.npmjs.org/sequelize/-/sequelize-6.19.0.tgz" + "version" "6.19.0" + dependencies: + "@types/debug" "^4.1.7" + "@types/validator" "^13.7.1" + "debug" "^4.3.3" + "dottie" "^2.0.2" + "inflection" "^1.13.2" + "lodash" "^4.17.21" + "moment" "^2.29.1" + "moment-timezone" "^0.5.34" + "pg-connection-string" "^2.5.0" + "retry-as-promised" "^5.0.0" + "semver" "^7.3.5" + "sequelize-pool" "^7.1.0" + "toposort-class" "^1.0.1" + "uuid" "^8.3.2" + "validator" "^13.7.0" + "wkx" "^0.5.0" + +"serialize-javascript@^4.0.0": + "integrity" "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==" + "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "randombytes" "^2.1.0" + +"serialize-javascript@^6.0.0": + "integrity" "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==" + "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "randombytes" "^2.1.0" + +"serve-index@^1.9.1": + "integrity" "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=" + "resolved" "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" + "version" "1.9.1" + dependencies: + "accepts" "~1.3.4" + "batch" "0.6.1" + "debug" "2.6.9" + "escape-html" "~1.0.3" + "http-errors" "~1.6.2" + "mime-types" "~2.1.17" + "parseurl" "~1.3.2" + +"serve-static@1.15.0": + "integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" + "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + "version" "1.15.0" + dependencies: + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "parseurl" "~1.3.3" + "send" "0.18.0" + +"set-blocking@^2.0.0", "set-blocking@~2.0.0": + "integrity" "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + "version" "2.0.0" + +"set-value@^2.0.0", "set-value@^2.0.1": + "integrity" "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==" + "resolved" "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "extend-shallow" "^2.0.1" + "is-extendable" "^0.1.1" + "is-plain-object" "^2.0.3" + "split-string" "^3.0.1" + +"setimmediate@^1.0.4": + "integrity" "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + "version" "1.0.5" + +"setprototypeof@1.1.0": + "integrity" "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" + "version" "1.1.0" + +"setprototypeof@1.2.0": + "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + "version" "1.2.0" + +"sha.js@^2.4.0", "sha.js@^2.4.8": + "integrity" "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==" + "resolved" "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" + "version" "2.4.11" + dependencies: + "inherits" "^2.0.1" + "safe-buffer" "^5.0.1" + +"shallow-clone@^0.1.2": + "integrity" "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=" + "resolved" "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz" + "version" "0.1.2" + dependencies: + "is-extendable" "^0.1.1" + "kind-of" "^2.0.1" + "lazy-cache" "^0.2.3" + "mixin-object" "^2.0.1" + +"shallow-clone@^3.0.0": + "integrity" "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==" + "resolved" "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "kind-of" "^6.0.2" + +"shallowequal@^1.1.0": + "integrity" "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + "resolved" "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" + "version" "1.1.0" + +"sharedb@^2.2.5": + "integrity" "sha512-uCy8Npx8Azf21PmNUGqfIKRbnisH2U+N9Z0CJILWq23+HqcWRAA5n35m/dMm4ZuTQalYeWlR2/kaV8Wm0nXr3g==" + "resolved" "https://registry.npmjs.org/sharedb/-/sharedb-2.2.5.tgz" + "version" "2.2.5" + dependencies: + "arraydiff" "^0.1.1" + "async" "^2.6.3" + "fast-deep-equal" "^2.0.1" + "hat" "0.0.3" + "ot-json0" "^1.0.1" + +"shebang-command@^1.2.0": + "integrity" "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=" + "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "shebang-regex" "^1.0.0" + +"shebang-command@^2.0.0": + "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" + "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "shebang-regex" "^3.0.0" + +"shebang-regex@^1.0.0": + "integrity" "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + "version" "1.0.0" + +"shebang-regex@^3.0.0": + "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + "version" "3.0.0" + +"shell-quote@^1.6.1": + "integrity" "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" + "resolved" "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz" + "version" "1.7.3" + +"shimmer@^1.1.0", "shimmer@^1.2.0": + "integrity" "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + "resolved" "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz" + "version" "1.2.1" + +"should-equal@^2.0.0": + "integrity" "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==" + "resolved" "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "should-type" "^1.4.0" + +"should-format@^3.0.3": + "integrity" "sha1-m/yPdPo5IFxT04w01xcwPidxJPE=" + "resolved" "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz" + "version" "3.0.3" + dependencies: + "should-type" "^1.3.0" + "should-type-adaptors" "^1.0.1" + +"should-type-adaptors@^1.0.1": + "integrity" "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==" + "resolved" "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "should-type" "^1.3.0" + "should-util" "^1.0.0" + +"should-type@^1.3.0", "should-type@^1.4.0": + "integrity" "sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM=" + "resolved" "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz" + "version" "1.4.0" + +"should-util@^1.0.0": + "integrity" "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==" + "resolved" "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz" + "version" "1.0.1" + +"should@^13.2.1": + "integrity" "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==" + "resolved" "https://registry.npmjs.org/should/-/should-13.2.3.tgz" + "version" "13.2.3" + dependencies: + "should-equal" "^2.0.0" + "should-format" "^3.0.3" + "should-type" "^1.4.0" + "should-type-adaptors" "^1.0.1" + "should-util" "^1.0.0" + +"side-channel@^1.0.3", "side-channel@^1.0.4": + "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" + "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "call-bind" "^1.0.0" + "get-intrinsic" "^1.0.2" + "object-inspect" "^1.9.0" + +"sigmund@^1.0.1": + "integrity" "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + "resolved" "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "version" "1.0.1" + +"signal-exit@^3.0.0", "signal-exit@^3.0.2", "signal-exit@^3.0.3": + "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + "version" "3.0.7" + +"signale@^1.4.0": + "integrity" "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==" + "resolved" "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "chalk" "^2.3.2" + "figures" "^2.0.0" + "pkg-conf" "^2.1.0" + +"similarity@^1.2.1": + "integrity" "sha512-lMOpWVaWrTnyL+tkvDs8oGV/KAUBQ3wfbZtdiwDcC+KYGlwO8kgtiyag1B6akAjALDMwn5rN5YHHei1hr4X7nw==" + "resolved" "https://registry.npmjs.org/similarity/-/similarity-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "levenshtein-edit-distance" "^2.0.0" + +"simple-concat@^1.0.0": + "integrity" "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + "resolved" "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" + "version" "1.0.1" + +"simple-get@^3.1.0": + "integrity" "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==" + "resolved" "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "decompress-response" "^4.2.0" + "once" "^1.3.1" + "simple-concat" "^1.0.0" + +"simple-update-in@2.2.0": + "integrity" "sha512-FrW41lLiOs82jKxwq39UrE1HDAHOvirKWk4Nv8tqnFFFknVbTxcHZzDS4vt02qqdU/5+KNsQHWzhKHznDBmrww==" + "resolved" "https://registry.npmjs.org/simple-update-in/-/simple-update-in-2.2.0.tgz" + "version" "2.2.0" + +"sirv@^1.0.7": + "integrity" "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==" + "resolved" "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz" + "version" "1.0.19" dependencies: "@polka/url" "^1.0.0-next.20" - mime "^2.3.1" - totalist "^1.0.0" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slide@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= - -smart-buffer@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sockjs@^0.3.21: - version "0.3.21" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" - integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== - dependencies: - faye-websocket "^0.11.3" - uuid "^3.4.0" - websocket-driver "^0.7.4" - -socks-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" - integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== - dependencies: - agent-base "^6.0.2" - debug "4" - socks "^2.3.3" - -socks-proxy-agent@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.0.tgz#869cf2d7bd10fea96c7ad3111e81726855e285c3" - integrity sha512-57e7lwCN4Tzt3mXz25VxOErJKXlPfXmkMLnk310v/jwW20jWRVcgsOit+xNkN3eIEdB47GwnfAEBLacZ/wVIKg== - dependencies: - agent-base "^6.0.2" - debug "^4.3.1" - socks "^2.6.1" - -socks@^2.3.3, socks@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e" - integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA== - dependencies: - ip "^1.1.5" - smart-buffer "^4.1.0" - -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= - dependencies: - is-plain-obj "^1.0.0" - -sort-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" - integrity sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg== - dependencies: - is-plain-obj "^2.0.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-js@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" - integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== - -source-map-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.0.tgz#f2a04ee2808ad01c774dea6b7d2639839f3b3049" - integrity sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw== - dependencies: - abab "^2.0.5" - iconv-lite "^0.6.2" - source-map-js "^0.6.2" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-resolve@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" - integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - -source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: - version "0.5.20" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" - integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3, source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.10" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b" - integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -split2@^3.0.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" - integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== - dependencies: - readable-stream "^3.0.0" - -split@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== - dependencies: - through "2" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - -ssri@^8.0.0, ssri@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== - dependencies: - minipass "^3.1.1" - -stack-utils@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== - dependencies: - escape-string-regexp "^2.0.0" - -state-local@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/state-local/-/state-local-1.0.7.tgz#da50211d07f05748d53009bee46307a37db386d5" - integrity sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-browserify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" - integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== - dependencies: - inherits "~2.0.4" - readable-stream "^3.5.0" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string.prototype.padend@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1" - integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -string.prototype.trim@^1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz#6014689baf5efaf106ad031a5fa45157666ed1bd" - integrity sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" + "mrmime" "^1.0.0" + "totalist" "^1.0.0" + +"sisteransi@^1.0.5": + "integrity" "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "resolved" "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + "version" "1.0.5" + +"slash@^1.0.0": + "integrity" "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + "resolved" "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" + "version" "1.0.0" + +"slash@^3.0.0": + "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + "version" "3.0.0" + +"sleep@6.1.0": + "integrity" "sha512-Z1x4JjJxsru75Tqn8F4tnOFeEu3HjtITTsumYUiuz54sGKdISgLCek9AUlXlVVrkhltRFhNUsJDJE76SFHTDIQ==" + "resolved" "https://registry.npmjs.org/sleep/-/sleep-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "nan" "^2.13.2" + +"slice-ansi@^2.1.0": + "integrity" "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==" + "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "ansi-styles" "^3.2.0" + "astral-regex" "^1.0.0" + "is-fullwidth-code-point" "^2.0.0" + +"slice-ansi@^3.0.0": + "integrity" "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==" + "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "astral-regex" "^2.0.0" + "is-fullwidth-code-point" "^3.0.0" + +"slice-ansi@^4.0.0": + "integrity" "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==" + "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "astral-regex" "^2.0.0" + "is-fullwidth-code-point" "^3.0.0" + +"slice-ansi@^5.0.0": + "integrity" "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==" + "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "ansi-styles" "^6.0.0" + "is-fullwidth-code-point" "^4.0.0" + +"slide@^1.1.6": + "integrity" "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" + "resolved" "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz" + "version" "1.1.6" + +"slugify@~1.4.7": + "integrity" "sha512-tf+h5W1IrjNm/9rKKj0JU2MDMruiopx0jjVA5zCdBtcGjfp0+c5rHw/zADLC3IeKlGHtVbHtpfzvYA0OYT+HKg==" + "resolved" "https://registry.npmjs.org/slugify/-/slugify-1.4.7.tgz" + "version" "1.4.7" + +"smart-buffer@^4.2.0": + "integrity" "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + "resolved" "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" + "version" "4.2.0" + +"snakecase-keys@^3.1.0": + "integrity" "sha512-CjU5pyRfwOtaOITYv5C8DzpZ8XA/ieRsDpr93HI2r6e3YInC6moZpSQbmUtg8cTk58tq2x3jcG2gv+p1IZGmMA==" + "resolved" "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "map-obj" "^4.1.0" + "to-snake-case" "^1.0.0" + +"snapdragon-node@^2.0.1": + "integrity" "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==" + "resolved" "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "define-property" "^1.0.0" + "isobject" "^3.0.0" + "snapdragon-util" "^3.0.1" + +"snapdragon-util@^3.0.1": + "integrity" "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==" + "resolved" "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "kind-of" "^3.2.0" + +"snapdragon@^0.8.1": + "integrity" "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==" + "resolved" "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" + "version" "0.8.2" + dependencies: + "base" "^0.11.1" + "debug" "^2.2.0" + "define-property" "^0.2.5" + "extend-shallow" "^2.0.1" + "map-cache" "^0.2.2" + "source-map" "^0.5.6" + "source-map-resolve" "^0.5.0" + "use" "^3.1.0" + +"snoostream@1.0.1": + "integrity" "sha1-cwNEq7Iwk8cfFD0v1Pzsg5UO3Yg=" + "resolved" "https://registry.npmjs.org/snoostream/-/snoostream-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "pollify" "^1.0.0" + "snoowrap" "^1.12.0" + +"snoowrap@^1.12.0", "snoowrap@1.23.0": + "integrity" "sha512-8FIGWr20Gc+d/C3NRrNPp5VQFNb+eGaQyvIkM5KUL71pYpRM231fkRdLNydMrdtLNRDrTZeZApHHCb8Uk/QuTQ==" + "resolved" "https://registry.npmjs.org/snoowrap/-/snoowrap-1.23.0.tgz" + "version" "1.23.0" + dependencies: + "bluebird" "^3.5.5" + "lodash" "^4.17.15" + "promise-chains" "^0.3.11" + "request" "^2.88.2" + "request-promise" "^4.2.6" + "ws" "^3.3.1" + +"socket.io-adapter@~2.4.0": + "integrity" "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" + "resolved" "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz" + "version" "2.4.0" + +"socket.io-client@^4.4.1": + "integrity" "sha512-HW61c1G7OrYGxaI79WRn17+b03iBCdvhBj4iqyXHBoL5M8w2MSO/vChsjA93knG4GYEai1/vbXWJna9dzxXtSg==" + "resolved" "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.0.tgz" + "version" "4.5.0" + dependencies: + "@socket.io/component-emitter" "~3.1.0" + "debug" "~4.3.2" + "engine.io-client" "~6.2.1" + "socket.io-parser" "~4.2.0" + +"socket.io-parser@~4.0.4": + "integrity" "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==" + "resolved" "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz" + "version" "4.0.4" + dependencies: + "@types/component-emitter" "^1.2.10" + "component-emitter" "~1.3.0" + "debug" "~4.3.1" + +"socket.io-parser@~4.2.0": + "integrity" "sha512-tLfmEwcEwnlQTxFB7jibL/q2+q8dlVQzj4JdRLJ/W/G1+Fu9VSxCx1Lo+n1HvXxKnM//dUuD0xgiA7tQf57Vng==" + "resolved" "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "@socket.io/component-emitter" "~3.1.0" + "debug" "~4.3.1" + +"socket.io@^4.4.1": + "integrity" "sha512-slTYqU2jCgMjXwresG8grhUi/cC6GjzmcfqArzaH3BN/9I/42eZk9yamNvZJdBfTubkjEdKAKs12NEztId+bUA==" + "resolved" "https://registry.npmjs.org/socket.io/-/socket.io-4.5.0.tgz" + "version" "4.5.0" + dependencies: + "accepts" "~1.3.4" + "base64id" "~2.0.0" + "debug" "~4.3.2" + "engine.io" "~6.2.0" + "socket.io-adapter" "~2.4.0" + "socket.io-parser" "~4.0.4" + +"sockjs@^0.3.21": + "integrity" "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==" + "resolved" "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" + "version" "0.3.24" + dependencies: + "faye-websocket" "^0.11.3" + "uuid" "^8.3.2" + "websocket-driver" "^0.7.4" + +"socks-proxy-agent@^5.0.0", "socks-proxy-agent@5": + "integrity" "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==" + "resolved" "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "agent-base" "^6.0.2" + "debug" "4" + "socks" "^2.3.3" + +"socks-proxy-agent@^6.0.0": + "integrity" "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==" + "resolved" "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "agent-base" "^6.0.2" + "debug" "^4.3.3" + "socks" "^2.6.2" + +"socks@^2.3.3", "socks@^2.6.2": + "integrity" "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==" + "resolved" "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz" + "version" "2.6.2" + dependencies: + "ip" "^1.1.5" + "smart-buffer" "^4.2.0" + +"sodium@^3.0.2": + "integrity" "sha512-IsTwTJeoNBU97km3XkrbCGC/n/9aUQejgD3QPr2YY2gtbSPru3TI6nhCqgoez9Mv88frF9oVZS/jrXFbd6WXyA==" + "resolved" "https://registry.npmjs.org/sodium/-/sodium-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "node-addon-api" "*" + +"sort-keys@^2.0.0": + "integrity" "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=" + "resolved" "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "is-plain-obj" "^1.0.0" + +"sort-keys@^4.0.0": + "integrity" "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==" + "resolved" "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "is-plain-obj" "^2.0.0" + +"source-list-map@^2.0.0": + "integrity" "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + "resolved" "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" + "version" "2.0.1" + +"source-map-js@^1.0.1", "source-map-js@^1.0.2": + "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + "version" "1.0.2" + +"source-map-loader@^3.0.0": + "integrity" "sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==" + "resolved" "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "abab" "^2.0.5" + "iconv-lite" "^0.6.3" + "source-map-js" "^1.0.1" + +"source-map-resolve@^0.5.0": + "integrity" "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==" + "resolved" "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" + "version" "0.5.3" + dependencies: + "atob" "^2.1.2" + "decode-uri-component" "^0.2.0" + "resolve-url" "^0.2.1" + "source-map-url" "^0.4.0" + "urix" "^0.1.0" + +"source-map-resolve@^0.6.0": + "integrity" "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==" + "resolved" "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz" + "version" "0.6.0" + dependencies: + "atob" "^2.1.2" + "decode-uri-component" "^0.2.0" + +"source-map-support@^0.5.17", "source-map-support@^0.5.6", "source-map-support@~0.5.12", "source-map-support@~0.5.20": + "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" + "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + "version" "0.5.21" + dependencies: + "buffer-from" "^1.0.0" + "source-map" "^0.6.0" + +"source-map-support@0.5.19": + "integrity" "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==" + "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz" + "version" "0.5.19" + dependencies: + "buffer-from" "^1.0.0" + "source-map" "^0.6.0" + +"source-map-url@^0.4.0": + "integrity" "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" + "resolved" "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz" + "version" "0.4.1" + +"source-map@^0.5.0", "source-map@^0.5.6", "source-map@^0.5.7": + "integrity" "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + "version" "0.5.7" + +"source-map@^0.6.0": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"source-map@^0.6.1", "source-map@~0.6.1": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"source-map@^0.7.3": + "integrity" "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" + "version" "0.7.3" + +"source-map@~0.6.0": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"source-map@~0.6.1": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"source-map@~0.8.0-beta.0": + "integrity" "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz" + "version" "0.8.0-beta.0" + dependencies: + "whatwg-url" "^7.0.0" + +"spawn-command@^0.0.2-1": + "integrity" "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=" + "resolved" "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz" + "version" "0.0.2-1" + +"spdx-correct@^3.0.0": + "integrity" "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==" + "resolved" "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "spdx-expression-parse" "^3.0.0" + "spdx-license-ids" "^3.0.0" + +"spdx-exceptions@^2.1.0": + "integrity" "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + "resolved" "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" + "version" "2.3.0" + +"spdx-expression-parse@^3.0.0": + "integrity" "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==" + "resolved" "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "spdx-exceptions" "^2.1.0" + "spdx-license-ids" "^3.0.0" + +"spdx-license-ids@^3.0.0": + "integrity" "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==" + "resolved" "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz" + "version" "3.0.11" + +"spdy-transport@^3.0.0": + "integrity" "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==" + "resolved" "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "debug" "^4.1.0" + "detect-node" "^2.0.4" + "hpack.js" "^2.1.6" + "obuf" "^1.1.2" + "readable-stream" "^3.0.6" + "wbuf" "^1.7.3" + +"spdy@^4.0.2": + "integrity" "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==" + "resolved" "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "debug" "^4.1.0" + "handle-thing" "^2.0.0" + "http-deceiver" "^1.2.7" + "select-hose" "^2.0.0" + "spdy-transport" "^3.0.0" + +"split-on-first@^1.0.0": + "integrity" "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + "resolved" "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz" + "version" "1.1.0" + +"split-string@^3.0.1", "split-string@^3.0.2": + "integrity" "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==" + "resolved" "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "extend-shallow" "^3.0.0" + +"split@^1.0.0": + "integrity" "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==" + "resolved" "https://registry.npmjs.org/split/-/split-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "through" "2" + +"split2@^3.0.0": + "integrity" "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==" + "resolved" "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" + "version" "3.2.2" + dependencies: + "readable-stream" "^3.0.0" + +"split2@^4.1.0": + "integrity" "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==" + "resolved" "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz" + "version" "4.1.0" + +"sprintf-js@~1.0.2": + "integrity" "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + "version" "1.0.3" + +"sprintf-js@1.1.2": + "integrity" "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz" + "version" "1.1.2" + +"sshpk@^1.7.0": + "integrity" "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==" + "resolved" "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz" + "version" "1.17.0" + dependencies: + "asn1" "~0.2.3" + "assert-plus" "^1.0.0" + "bcrypt-pbkdf" "^1.0.0" + "dashdash" "^1.12.0" + "ecc-jsbn" "~0.1.1" + "getpass" "^0.1.1" + "jsbn" "~0.1.0" + "safer-buffer" "^2.0.2" + "tweetnacl" "~0.14.0" + +"ssri@^6.0.1": + "integrity" "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==" + "resolved" "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "figgy-pudding" "^3.5.1" + +"ssri@^8.0.0", "ssri@^8.0.1": + "integrity" "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==" + "resolved" "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz" + "version" "8.0.1" + dependencies: + "minipass" "^3.1.1" + +"stack-utils@^2.0.3": + "integrity" "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==" + "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz" + "version" "2.0.5" + dependencies: + "escape-string-regexp" "^2.0.0" + +"state-local@^1.0.6": + "integrity" "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==" + "resolved" "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz" + "version" "1.0.7" + +"static-extend@^0.1.1": + "integrity" "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=" + "resolved" "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" + "version" "0.1.2" + dependencies: + "define-property" "^0.2.5" + "object-copy" "^0.1.0" + +"statuses@^1.5.0", "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2": + "integrity" "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + "version" "1.5.0" + +"statuses@2.0.1": + "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + "version" "2.0.1" + +"stealthy-require@^1.1.1": + "integrity" "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "resolved" "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz" + "version" "1.1.1" + +"stickyfill@^1.1.1": + "integrity" "sha1-OUE/7p0CXHSn5ZzuyyN4TMDxfwI=" + "resolved" "https://registry.npmjs.org/stickyfill/-/stickyfill-1.1.1.tgz" + "version" "1.1.1" + +"stream-browserify@^2.0.1": + "integrity" "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==" + "resolved" "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "inherits" "~2.0.1" + "readable-stream" "^2.0.2" + +"stream-browserify@^3.0.0": + "integrity" "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==" + "resolved" "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "inherits" "~2.0.4" + "readable-stream" "^3.5.0" + +"stream-each@^1.1.0": + "integrity" "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==" + "resolved" "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz" + "version" "1.2.3" + dependencies: + "end-of-stream" "^1.1.0" + "stream-shift" "^1.0.0" + +"stream-events@^1.0.4", "stream-events@^1.0.5": + "integrity" "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==" + "resolved" "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "stubs" "^3.0.0" + +"stream-http@^2.7.2": + "integrity" "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==" + "resolved" "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz" + "version" "2.8.3" + dependencies: + "builtin-status-codes" "^3.0.0" + "inherits" "^2.0.1" + "readable-stream" "^2.3.6" + "to-arraybuffer" "^1.0.0" + "xtend" "^4.0.0" + +"stream-parser@^0.3.1": + "integrity" "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=" + "resolved" "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz" + "version" "0.3.1" + dependencies: + "debug" "2" + +"stream-shift@^1.0.0": + "integrity" "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "resolved" "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" + "version" "1.0.1" + +"strict-uri-encode@^2.0.0": + "integrity" "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" + "resolved" "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz" + "version" "2.0.0" + +"string_decoder@^1.0.0", "string_decoder@~1.1.1": + "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "safe-buffer" "~5.1.0" + +"string_decoder@^1.1.1": + "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "safe-buffer" "~5.2.0" + +"string_decoder@~0.10.x": + "integrity" "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "version" "0.10.31" + +"string-argv@^0.3.1": + "integrity" "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==" + "resolved" "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" + "version" "0.3.1" + +"string-length@^4.0.1": + "integrity" "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==" + "resolved" "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "char-regex" "^1.0.2" + "strip-ansi" "^6.0.0" + +"string-width@^1.0.1": + "integrity" "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "code-point-at" "^1.0.0" + "is-fullwidth-code-point" "^1.0.0" + "strip-ansi" "^3.0.0" + +"string-width@^1.0.2 || 2 || 3 || 4", "string-width@^4.0.0", "string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.2", "string-width@^4.2.3": + "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + "version" "4.2.3" + dependencies: + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.1" + +"string-width@^2.1.0": + "integrity" "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "is-fullwidth-code-point" "^2.0.0" + "strip-ansi" "^4.0.0" + +"string-width@^3.0.0": + "integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "emoji-regex" "^7.0.1" + "is-fullwidth-code-point" "^2.0.0" + "strip-ansi" "^5.1.0" + +"string-width@^3.1.0": + "integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "emoji-regex" "^7.0.1" + "is-fullwidth-code-point" "^2.0.0" + "strip-ansi" "^5.1.0" + +"string-width@^5.0.0": + "integrity" "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "eastasianwidth" "^0.2.0" + "emoji-regex" "^9.2.2" + "strip-ansi" "^7.0.1" + +"string.prototype.padend@^3.0.0": + "integrity" "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==" + "resolved" "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz" + "version" "3.1.3" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.1" + +"string.prototype.trim@^1.2.1": + "integrity" "sha512-8lMR2m+U0VJTPp6JjvJTtGyc4FIGq9CdRt7O9p6T0e6K4vjU+OP+SQJpbe/SBmRcCUIvNUnjsbmY6lnMp8MhsQ==" + "resolved" "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.6.tgz" + "version" "1.2.6" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.19.5" + +"string.prototype.trimend@^1.0.4": + "integrity" "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==" + "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + +"string.prototype.trimstart@^1.0.4": + "integrity" "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==" + "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + +"strip-ansi@^3.0.0", "strip-ansi@^3.0.1": + "integrity" "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "ansi-regex" "^2.0.0" + +"strip-ansi@^4.0.0": + "integrity" "sha1-qEeQIusaw2iocTibY1JixQXuNo8=" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "ansi-regex" "^3.0.0" + +"strip-ansi@^5.0.0", "strip-ansi@^5.1.0", "strip-ansi@^5.2.0": + "integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "ansi-regex" "^4.1.0" + +"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": + "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "ansi-regex" "^5.0.1" + +"strip-ansi@^7.0.1": + "integrity" "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "ansi-regex" "^6.0.1" + +"strip-bom@^3.0.0": + "integrity" "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + "version" "3.0.0" + +"strip-bom@^4.0.0": + "integrity" "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" + "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + "version" "4.0.0" + +"strip-final-newline@^2.0.0": + "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + "version" "2.0.0" + +"strip-indent@^3.0.0": + "integrity" "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==" + "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "min-indent" "^1.0.0" + +"strip-json-comments@^2.0.1": + "integrity" "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + "version" "2.0.1" -strip-ansi@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" - integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== - dependencies: - ansi-regex "^6.0.1" +"strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1": + "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + "version" "3.1.1" + +"strip-json-comments@~2.0.1": + "integrity" "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + "version" "2.0.1" + +"stripe@^8.191.0": + "integrity" "sha512-leQj9h2T4jhEz4Ta4irNTNgErPmXfF9h4nRYblTTrkTqldOmEWZQZIgXkNp1u6/UbOmMDRvxgh57UHyxwwfw0Q==" + "resolved" "https://registry.npmjs.org/stripe/-/stripe-8.219.0.tgz" + "version" "8.219.0" + dependencies: + "@types/node" ">=8.1.0" + "qs" "^6.10.3" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +"strong-log-transformer@^2.1.0": + "integrity" "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==" + "resolved" "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "duplexer" "^0.1.1" + "minimist" "^1.2.0" + "through" "^2.3.4" -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== +"stubs@^3.0.0": + "integrity" "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" + "resolved" "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz" + "version" "3.0.0" -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +"style-loader@^3.3.0": + "integrity" "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==" + "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz" + "version" "3.3.1" -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== +"styled-components@^5.3.0": + "integrity" "sha512-bPJKwZCHjJPf/hwTJl6TbkSZg/3evha+XPEizrZUGb535jLImwDUdjTNxXqjjaASt2M4qO4AVfoHJNe3XB/tpQ==" + "resolved" "https://registry.npmjs.org/styled-components/-/styled-components-5.3.0.tgz" + "version" "5.3.0" dependencies: - min-indent "^1.0.0" - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -strong-log-transformer@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" - integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== - dependencies: - duplexer "^0.1.1" - minimist "^1.2.0" - through "^2.3.4" - -style-loader@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.0.tgz#d66ea95fc50b22f8b79b69a9e414760fcf58d8d8" - integrity sha512-szANub7ksJtQioJYtpbWwh1hUl99uK15n5HDlikeCRil/zYMZgSxucHddyF/4A3qJMUiAjPhFowrrQuNMA7jwQ== - -styled-system@^5.0.0, styled-system@^5.1.5: - version "5.1.5" - resolved "https://registry.yarnpkg.com/styled-system/-/styled-system-5.1.5.tgz#e362d73e1dbb5641a2fd749a6eba1263dc85075e" - integrity sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A== + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^0.8.8" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + "babel-plugin-styled-components" ">= 1.12.0" + "css-to-react-native" "^3.0.0" + "hoist-non-react-statics" "^3.0.0" + "shallowequal" "^1.1.0" + "supports-color" "^5.5.0" + +"styled-system@^5.0.0", "styled-system@^5.1.5": + "integrity" "sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A==" + "resolved" "https://registry.npmjs.org/styled-system/-/styled-system-5.1.5.tgz" + "version" "5.1.5" dependencies: "@styled-system/background" "^5.1.2" "@styled-system/border" "^5.1.5" @@ -13112,1475 +19077,2286 @@ styled-system@^5.0.0, styled-system@^5.1.5: "@styled-system/space" "^5.1.2" "@styled-system/typography" "^5.1.2" "@styled-system/variant" "^5.1.5" - object-assign "^4.1.1" - -stylis@4.0.13: - version "4.0.13" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" - integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== - -stylis@^4.0.3: - version "4.0.10" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.10.tgz#446512d1097197ab3f02fb3c258358c3f7a14240" - integrity sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg== - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^5.3.0, supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -table-layout@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" - integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -tar@^4.4.12: - version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" - integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== - dependencies: - chownr "^1.1.4" - fs-minipass "^1.2.7" - minipass "^2.9.0" - minizlib "^1.3.3" - mkdirp "^0.5.5" - safe-buffer "^5.2.1" - yallist "^3.1.1" - -tar@^6.0.2, tar@^6.1.0: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -temp-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= - -temp-write@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-4.0.0.tgz#cd2e0825fc826ae72d201dc26eef3bf7e6fc9320" - integrity sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw== - dependencies: - graceful-fs "^4.1.15" - is-stream "^2.0.0" - make-dir "^3.0.0" - temp-dir "^1.0.0" - uuid "^3.3.2" - -terminal-link@^2.0.0, terminal-link@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.4: - version "5.2.4" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz#ad1be7639b1cbe3ea49fab995cbe7224b31747a1" - integrity sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA== - dependencies: - jest-worker "^27.0.6" - p-limit "^3.1.0" - schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - source-map "^0.6.1" - terser "^5.7.2" - -terser@^4.1.2, terser@^4.6.3: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -terser@^5.7.2: - version "5.9.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" - integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.20" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + "object-assign" "^4.1.1" + +"stylis@4.0.13": + "integrity" "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" + "resolved" "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz" + "version" "4.0.13" + +"suffix-thumb@4.0.2": + "integrity" "sha512-CCvCAr7JyeQoO+/lyq3P2foZI/xJz5kpG3L6kg2CaOf9K2/gaM9ixy/JTuRwjEK38l306zE7vl3JoOZYmLQLlA==" + "resolved" "https://registry.npmjs.org/suffix-thumb/-/suffix-thumb-4.0.2.tgz" + "version" "4.0.2" + +"superagent@^6.1.0": + "integrity" "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==" + "resolved" "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "component-emitter" "^1.3.0" + "cookiejar" "^2.1.2" + "debug" "^4.1.1" + "fast-safe-stringify" "^2.0.7" + "form-data" "^3.0.0" + "formidable" "^1.2.2" + "methods" "^1.1.2" + "mime" "^2.4.6" + "qs" "^6.9.4" + "readable-stream" "^3.6.0" + "semver" "^7.3.2" + +"supertest@6.1.3": + "integrity" "sha512-v2NVRyP73XDewKb65adz+yug1XMtmvij63qIWHZzSX8tp6wiq6xBLUy4SUAd2NII6wIipOmHT/FD9eicpJwdgQ==" + "resolved" "https://registry.npmjs.org/supertest/-/supertest-6.1.3.tgz" + "version" "6.1.3" + dependencies: + "methods" "^1.1.2" + "superagent" "^6.1.0" + +"supports-color@^2.0.0": + "integrity" "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + "version" "2.0.0" + +"supports-color@^5.3.0", "supports-color@^5.5.0": + "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + "version" "5.5.0" + dependencies: + "has-flag" "^3.0.0" + +"supports-color@^7.0.0", "supports-color@^7.1.0": + "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "has-flag" "^4.0.0" + +"supports-color@^8.0.0": + "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + "version" "8.1.1" + dependencies: + "has-flag" "^4.0.0" + +"supports-color@^8.1.0": + "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + "version" "8.1.1" + dependencies: + "has-flag" "^4.0.0" + +"supports-color@^9.2.1": + "integrity" "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz" + "version" "9.2.2" + +"supports-hyperlinks@^2.0.0": + "integrity" "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==" + "resolved" "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "has-flag" "^4.0.0" + "supports-color" "^7.0.0" + +"supports-preserve-symlinks-flag@^1.0.0": + "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + "version" "1.0.0" + +"swagger-cli@^4.0.4": + "integrity" "sha512-Cp8YYuLny3RJFQ4CvOBTaqmOOgYsem52dPx1xM5S4EUWFblIh2Q8atppMZvXKUr1e9xH5RwipYpmdUzdPcxWcA==" + "resolved" "https://registry.npmjs.org/swagger-cli/-/swagger-cli-4.0.4.tgz" + "version" "4.0.4" + dependencies: + "@apidevtools/swagger-cli" "4.0.4" + +"swagger2openapi@^7.0.6": + "integrity" "sha512-VIT414koe0eJqre0KrhNMUB7QEUfPjGAKesPZZosIKr2rxZ6vpUoersHUFNOsN/OZ5u2zsniCslBOwVcmQZwlg==" + "resolved" "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-7.0.6.tgz" + "version" "7.0.6" + dependencies: + "call-me-maybe" "^1.0.1" + "node-fetch" "^2.6.1" + "node-fetch-h2" "^2.3.0" + "node-readfiles" "^0.2.0" + "oas-kit-common" "^1.0.8" + "oas-resolver" "^2.5.5" + "oas-schema-walker" "^1.1.5" + "oas-validator" "^5.0.6" + "reftools" "^1.1.8" + "yaml" "^1.10.0" + "yargs" "^17.0.1" + +"sylvester@^0.0.12", "sylvester@>= 0.0.8": + "integrity" "sha1-WohEFc0tACxX56OqyZRip1zp/bQ=" + "resolved" "https://registry.npmjs.org/sylvester/-/sylvester-0.0.12.tgz" + "version" "0.0.12" + +"symbol-tree@^3.2.4": + "integrity" "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + "resolved" "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" + "version" "3.2.4" + +"systeminformation@^5.7": + "integrity" "sha512-m8CJx3fIhKohanB0ExTk5q53uI1J0g5B09p77kU+KxnxRVpADVqTAwCg1PFelqKsj4LHd+qmVnumb511Hg4xow==" + "resolved" "https://registry.npmjs.org/systeminformation/-/systeminformation-5.11.14.tgz" + "version" "5.11.14" + +"table-layout@^1.0.2": + "integrity" "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==" + "resolved" "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "array-back" "^4.0.1" + "deep-extend" "~0.6.0" + "typical" "^5.2.0" + "wordwrapjs" "^4.0.0" + +"table@^5.2.3": + "integrity" "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==" + "resolved" "https://registry.npmjs.org/table/-/table-5.4.6.tgz" + "version" "5.4.6" + dependencies: + "ajv" "^6.10.2" + "lodash" "^4.17.14" + "slice-ansi" "^2.1.0" + "string-width" "^3.0.0" + +"table@^6.0.9": + "integrity" "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==" + "resolved" "https://registry.npmjs.org/table/-/table-6.8.0.tgz" + "version" "6.8.0" + dependencies: + "ajv" "^8.0.1" + "lodash.truncate" "^4.4.2" + "slice-ansi" "^4.0.0" + "string-width" "^4.2.3" + "strip-ansi" "^6.0.1" + +"tapable@^1.0.0", "tapable@^1.1.3": + "integrity" "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + "resolved" "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" + "version" "1.1.3" + +"tapable@^2.0.0", "tapable@^2.1.1", "tapable@^2.2.0": + "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" + "version" "2.2.1" + +"tar-fs@^2.0.0", "tar-fs@2.1.1": + "integrity" "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==" + "resolved" "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "chownr" "^1.1.1" + "mkdirp-classic" "^0.5.2" + "pump" "^3.0.0" + "tar-stream" "^2.1.4" + +"tar-stream@^2.1.4": + "integrity" "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==" + "resolved" "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "bl" "^4.0.3" + "end-of-stream" "^1.4.1" + "fs-constants" "^1.0.0" + "inherits" "^2.0.3" + "readable-stream" "^3.1.1" + +"tar@^4.4.12": + "integrity" "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==" + "resolved" "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz" + "version" "4.4.19" + dependencies: + "chownr" "^1.1.4" + "fs-minipass" "^1.2.7" + "minipass" "^2.9.0" + "minizlib" "^1.3.3" + "mkdirp" "^0.5.5" + "safe-buffer" "^5.2.1" + "yallist" "^3.1.1" + +"tar@^6.0.2", "tar@^6.1.0", "tar@^6.1.11": + "integrity" "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==" + "resolved" "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz" + "version" "6.1.11" + dependencies: + "chownr" "^2.0.0" + "fs-minipass" "^2.0.0" + "minipass" "^3.0.0" + "minizlib" "^2.1.1" + "mkdirp" "^1.0.3" + "yallist" "^4.0.0" + +"tedis@0.1.12": + "integrity" "sha512-bxOKYWvdF1WsjkBYIfeO+2+xZuiqHmikqTTYPm3j/FYFpxQsX2JTBh6fFSlH6jDiCL4lfPcS2woIdD3FHopS/Q==" + "resolved" "https://registry.npmjs.org/tedis/-/tedis-0.1.12.tgz" + "version" "0.1.12" + dependencies: + "uuid" "^3.3.2" + +"teeny-request@^7.0.0": + "integrity" "sha512-SyY0pek1zWsi0LRVAALem+avzMLc33MKW/JLLakdP4s9+D7+jHcy5x6P+h94g2QNZsAqQNfX5lsbd3WSeJXrrw==" + "resolved" "https://registry.npmjs.org/teeny-request/-/teeny-request-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "http-proxy-agent" "^5.0.0" + "https-proxy-agent" "^5.0.0" + "node-fetch" "^2.6.1" + "stream-events" "^1.0.5" + "uuid" "^8.0.0" + +"telegram-typings@^3.6.0": + "integrity" "sha512-njVv1EAhIZnmQVLocZEADYUyqA1WIXuVcDYlsp+mXua/XB0pxx+PKtMSPeZ/EE4wPWTw9h/hA9ASTT6yQelkiw==" + "resolved" "https://registry.npmjs.org/telegram-typings/-/telegram-typings-3.6.1.tgz" + "version" "3.6.1" + +"temp-dir@^1.0.0": + "integrity" "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=" + "resolved" "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz" + "version" "1.0.0" + +"temp-write@^4.0.0": + "integrity" "sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw==" + "resolved" "https://registry.npmjs.org/temp-write/-/temp-write-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "graceful-fs" "^4.1.15" + "is-stream" "^2.0.0" + "make-dir" "^3.0.0" + "temp-dir" "^1.0.0" + "uuid" "^3.3.2" + +"terminal-link@^2.0.0", "terminal-link@^2.1.1": + "integrity" "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==" + "resolved" "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "ansi-escapes" "^4.2.1" + "supports-hyperlinks" "^2.0.0" + +"terser-webpack-plugin@^1.4.3": + "integrity" "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==" + "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz" + "version" "1.4.5" + dependencies: + "cacache" "^12.0.2" + "find-cache-dir" "^2.1.0" + "is-wsl" "^1.1.0" + "schema-utils" "^1.0.0" + "serialize-javascript" "^4.0.0" + "source-map" "^0.6.1" + "terser" "^4.1.2" + "webpack-sources" "^1.4.0" + "worker-farm" "^1.7.0" + +"terser-webpack-plugin@^5.1.3", "terser-webpack-plugin@^5.2.4": + "integrity" "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==" + "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz" + "version" "5.3.1" + dependencies: + "jest-worker" "^27.4.5" + "schema-utils" "^3.1.1" + "serialize-javascript" "^6.0.0" + "source-map" "^0.6.1" + "terser" "^5.7.2" + +"terser@^4.1.2": + "integrity" "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==" + "resolved" "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz" + "version" "4.8.0" + dependencies: + "commander" "^2.20.0" + "source-map" "~0.6.1" + "source-map-support" "~0.5.12" + +"terser@^5.10.0", "terser@^5.7.2": + "integrity" "sha512-sgQ99P+fRBM1jAYzN9RTnD/xEWx/7LZgYTCRgmYriSq1wxxqiQPJgXkkLBBuwySDWJ2PP0PnVQyuf4xLUuH4Ng==" + "resolved" "https://registry.npmjs.org/terser/-/terser-5.13.0.tgz" + "version" "5.13.0" + dependencies: + "acorn" "^8.5.0" + "commander" "^2.20.0" + "source-map" "~0.8.0-beta.0" + "source-map-support" "~0.5.20" + +"test-exclude@^6.0.0": + "integrity" "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==" + "resolved" "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + "version" "6.0.0" dependencies: "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-extensions@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" - integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== - -throat@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== - -through2@^2.0.0, through2@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through2@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" - integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== - dependencies: - readable-stream "3" - -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - -tiny-warning@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" - integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== - -tinycolor2@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" - integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmpl@1.0.x: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-camel-case@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-camel-case/-/to-camel-case-1.0.0.tgz#1a56054b2f9d696298ce66a60897322b6f423e46" - integrity sha1-GlYFSy+daWKYzmamCJcyK29CPkY= - dependencies: - to-space-case "^1.0.0" - -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-no-case@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/to-no-case/-/to-no-case-1.0.2.tgz#c722907164ef6b178132c8e69930212d1b4aa16a" - integrity sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -to-space-case@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-space-case/-/to-space-case-1.0.0.tgz#b052daafb1b2b29dc770cea0163e5ec0ebc9fc17" - integrity sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc= - dependencies: - to-no-case "^1.0.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -totalist@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" - integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== - -touch@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" - integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== - dependencies: - nopt "~1.0.10" - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - -tr46@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" - integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== - dependencies: - punycode "^2.1.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - -trim-newlines@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" - integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== - -ts-jest@^27.0.5: - version "27.0.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.0.5.tgz#0b0604e2271167ec43c12a69770f0bb65ad1b750" - integrity sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^27.0.0" - json5 "2.x" - lodash "4.x" - make-error "1.x" - semver "7.x" - yargs-parser "20.x" - -ts-loader@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.2.0.tgz#6a3aeaa378aecda543e2ed2c332d3123841d52e0" - integrity sha512-ebXBFrNyMSmbWgjnb3WBloUBK+VSx1xckaXsMXxlZRDqce/OPdYBVN5efB0W3V0defq0Gcy4YuzvPGqRgjj85A== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^4.0.0" - loader-utils "^2.0.0" - micromatch "^4.0.0" - semver "^7.3.4" - -ts-loader@^9.2.6: - version "9.2.6" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.2.6.tgz#9937c4dd0a1e3dbbb5e433f8102a6601c6615d74" - integrity sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.0.0" - micromatch "^4.0.0" - semver "^7.3.4" - -ts-node@^9, ts-node@^9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" - integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== - dependencies: - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - source-map-support "^0.5.17" - yn "3.1.1" - -tsconfig-paths@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz#954c1fe973da6339c78e06b03ce2e48810b65f36" - integrity sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA== + "glob" "^7.1.4" + "minimatch" "^3.0.4" + +"testcheck@^1.0.0-rc": + "integrity" "sha1-ETVqJbhFde/gsIV0UehbX6dO5OQ=" + "resolved" "https://registry.npmjs.org/testcheck/-/testcheck-1.0.0-rc.2.tgz" + "version" "1.0.0-rc.2" + +"text-extensions@^1.0.0": + "integrity" "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==" + "resolved" "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz" + "version" "1.9.0" + +"text-table@^0.2.0": + "integrity" "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + "version" "0.2.0" + +"throat@^6.0.1": + "integrity" "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==" + "resolved" "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz" + "version" "6.0.1" + +"through@^2.3.4", "through@^2.3.6", "through@^2.3.8", "through@>=2.2.7 <3", "through@2": + "integrity" "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + "version" "2.3.8" + +"through2@^2.0.0", "through2@^2.0.1": + "integrity" "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==" + "resolved" "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + "version" "2.0.5" + dependencies: + "readable-stream" "~2.3.6" + "xtend" "~4.0.1" + +"through2@^4.0.0": + "integrity" "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==" + "resolved" "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "readable-stream" "3" + +"thunky@^1.0.2": + "integrity" "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + "resolved" "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + "version" "1.1.0" + +"timers-browserify@^2.0.4": + "integrity" "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==" + "resolved" "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz" + "version" "2.0.12" + dependencies: + "setimmediate" "^1.0.4" + +"timers-ext@^0.1.7": + "integrity" "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==" + "resolved" "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz" + "version" "0.1.7" + dependencies: + "es5-ext" "~0.10.46" + "next-tick" "1" + +"tiny-typed-emitter@^2.1.0": + "integrity" "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" + "resolved" "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz" + "version" "2.1.0" + +"tiny-warning@^1.0.2": + "integrity" "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + "resolved" "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" + "version" "1.0.3" + +"tinycolor2@^1.4.1": + "integrity" "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" + "resolved" "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz" + "version" "1.4.2" + +"tlds@^1.228.0": + "integrity" "sha512-L7UQwueHSkGxZHQBXHVmXW64oi+uqNtzFt2x6Ssk7NVnpIbw16CRs4eb/jmKOZ9t2JnqZ/b3Cfvo97lnXqKrhw==" + "resolved" "https://registry.npmjs.org/tlds/-/tlds-1.231.0.tgz" + "version" "1.231.0" + +"tmp@^0.0.33": + "integrity" "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==" + "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" + "version" "0.0.33" + dependencies: + "os-tmpdir" "~1.0.2" + +"tmpl@1.0.5": + "integrity" "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + "resolved" "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + "version" "1.0.5" + +"to-arraybuffer@^1.0.0": + "integrity" "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + "resolved" "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" + "version" "1.0.1" + +"to-camel-case@1.0.0": + "integrity" "sha1-GlYFSy+daWKYzmamCJcyK29CPkY=" + "resolved" "https://registry.npmjs.org/to-camel-case/-/to-camel-case-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "to-space-case" "^1.0.0" + +"to-fast-properties@^1.0.3": + "integrity" "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" + "version" "1.0.3" + +"to-fast-properties@^2.0.0": + "integrity" "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + "version" "2.0.0" + +"to-no-case@^1.0.0": + "integrity" "sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo=" + "resolved" "https://registry.npmjs.org/to-no-case/-/to-no-case-1.0.2.tgz" + "version" "1.0.2" + +"to-object-path@^0.3.0": + "integrity" "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=" + "resolved" "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" + "version" "0.3.0" + dependencies: + "kind-of" "^3.0.2" + +"to-readable-stream@^1.0.0": + "integrity" "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + "resolved" "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" + "version" "1.0.0" + +"to-regex-range@^2.1.0": + "integrity" "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=" + "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "is-number" "^3.0.0" + "repeat-string" "^1.6.1" + +"to-regex-range@^5.0.1": + "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" + "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "is-number" "^7.0.0" + +"to-regex@^3.0.1", "to-regex@^3.0.2": + "integrity" "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==" + "resolved" "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "define-property" "^2.0.2" + "extend-shallow" "^3.0.2" + "regex-not" "^1.0.2" + "safe-regex" "^1.1.0" + +"to-snake-case@^1.0.0": + "integrity" "sha1-znRpE4l5RgGah+Yu366upMYIq4w=" + "resolved" "https://registry.npmjs.org/to-snake-case/-/to-snake-case-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "to-space-case" "^1.0.0" + +"to-space-case@^1.0.0": + "integrity" "sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc=" + "resolved" "https://registry.npmjs.org/to-space-case/-/to-space-case-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "to-no-case" "^1.0.0" + +"toidentifier@1.0.1": + "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + "version" "1.0.1" + +"toposort-class@^1.0.1": + "integrity" "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" + "resolved" "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz" + "version" "1.0.1" + +"totalist@^1.0.0": + "integrity" "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==" + "resolved" "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz" + "version" "1.1.0" + +"touch@^3.1.0": + "integrity" "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==" + "resolved" "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "nopt" "~1.0.10" + +"touch@0.0.3": + "integrity" "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=" + "resolved" "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz" + "version" "0.0.3" + dependencies: + "nopt" "~1.0.10" + +"tough-cookie@^2.3.3", "tough-cookie@^2.5.0", "tough-cookie@~2.5.0": + "integrity" "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==" + "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" + "version" "2.5.0" + dependencies: + "psl" "^1.1.28" + "punycode" "^2.1.1" + +"tough-cookie@^4.0.0": + "integrity" "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==" + "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "psl" "^1.1.33" + "punycode" "^2.1.1" + "universalify" "^0.1.2" + +"tr46@^1.0.1": + "integrity" "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=" + "resolved" "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "punycode" "^2.1.0" + +"tr46@^2.1.0": + "integrity" "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==" + "resolved" "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "punycode" "^2.1.1" + +"tr46@^3.0.0": + "integrity" "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==" + "resolved" "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "punycode" "^2.1.1" + +"tr46@~0.0.3": + "integrity" "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + "version" "0.0.3" + +"traverse@>=0.3.0 <0.4": + "integrity" "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" + "resolved" "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz" + "version" "0.3.9" + +"tree-kill@^1.2.2": + "integrity" "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" + "resolved" "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" + "version" "1.2.2" + +"trim-newlines@^3.0.0": + "integrity" "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" + "resolved" "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz" + "version" "3.0.1" + +"ts-custom-error@^2.2.2": + "integrity" "sha512-I0FEdfdatDjeigRqh1JFj67bcIKyRNm12UVGheBjs2pXgyELg2xeiQLVaWu1pVmNGXZVnz/fvycSU41moBIpOg==" + "resolved" "https://registry.npmjs.org/ts-custom-error/-/ts-custom-error-2.2.2.tgz" + "version" "2.2.2" + +"ts-essentials@^4.0.0": + "integrity" "sha512-uQJX+SRY9mtbKU+g9kl5Fi7AEMofPCvHfJkQlaygpPmHPZrtgaBqbWFOYyiA47RhnSwwnXdepUJrgqUYxoUyhQ==" + "resolved" "https://registry.npmjs.org/ts-essentials/-/ts-essentials-4.0.0.tgz" + "version" "4.0.0" + +"ts-jest@^27.0.5": + "integrity" "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==" + "resolved" "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz" + "version" "27.1.4" + dependencies: + "bs-logger" "0.x" + "fast-json-stable-stringify" "2.x" + "jest-util" "^27.0.0" + "json5" "2.x" + "lodash.memoize" "4.x" + "make-error" "1.x" + "semver" "7.x" + "yargs-parser" "20.x" + +"ts-jest@27.0.3": + "integrity" "sha512-U5rdMjnYam9Ucw+h0QvtNDbc5+88nxt7tbIvqaZUhFrfG4+SkWhMXjejCLVGcpILTPuV+H3W/GZDZrnZFpPeXw==" + "resolved" "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.3.tgz" + "version" "27.0.3" + dependencies: + "bs-logger" "0.x" + "buffer-from" "1.x" + "fast-json-stable-stringify" "2.x" + "jest-util" "^27.0.0" + "json5" "2.x" + "lodash" "4.x" + "make-error" "1.x" + "mkdirp" "1.x" + "semver" "7.x" + "yargs-parser" "20.x" + +"ts-loader@^9.2.6": + "integrity" "sha512-b0+vUY2/enb0qYtDQuNlDnJ9900NTiPiJcDJ6sY7ax1CCCwXfYIqPOMm/BwW7jsF1km+Oz8W9s31HLuD+FLIMg==" + "resolved" "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.9.tgz" + "version" "9.2.9" + dependencies: + "chalk" "^4.1.0" + "enhanced-resolve" "^5.0.0" + "micromatch" "^4.0.0" + "semver" "^7.3.4" + +"ts-loader@8.2.0": + "integrity" "sha512-ebXBFrNyMSmbWgjnb3WBloUBK+VSx1xckaXsMXxlZRDqce/OPdYBVN5efB0W3V0defq0Gcy4YuzvPGqRgjj85A==" + "resolved" "https://registry.npmjs.org/ts-loader/-/ts-loader-8.2.0.tgz" + "version" "8.2.0" + dependencies: + "chalk" "^4.1.0" + "enhanced-resolve" "^4.0.0" + "loader-utils" "^2.0.0" + "micromatch" "^4.0.0" + "semver" "^7.3.4" + +"ts-mixer@^6.0.0": + "integrity" "sha512-hvE+ZYXuINrx6Ei6D6hz+PTim0Uf++dYbK9FFifLNwQj+RwKquhQpn868yZsCtJYiclZF1u8l6WZxxKi+vv7Rg==" + "resolved" "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.1.tgz" + "version" "6.0.1" + +"ts-node@^10.2.1": + "integrity" "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==" + "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz" + "version" "10.7.0" + dependencies: + "@cspotcode/source-map-support" "0.7.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + "acorn" "^8.4.1" + "acorn-walk" "^8.1.1" + "arg" "^4.1.0" + "create-require" "^1.1.0" + "diff" "^4.0.1" + "make-error" "^1.1.1" + "v8-compile-cache-lib" "^3.0.0" + "yn" "3.1.1" + +"ts-node@^9.1.1": + "integrity" "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==" + "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz" + "version" "9.1.1" + dependencies: + "arg" "^4.1.0" + "create-require" "^1.1.0" + "diff" "^4.0.1" + "make-error" "^1.1.1" + "source-map-support" "^0.5.17" + "yn" "3.1.1" + +"ts-node@^9": + "integrity" "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==" + "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz" + "version" "9.1.1" + dependencies: + "arg" "^4.1.0" + "create-require" "^1.1.0" + "diff" "^4.0.1" + "make-error" "^1.1.1" + "source-map-support" "^0.5.17" + "yn" "3.1.1" + +"ts-unused-exports@^7.0.3": + "integrity" "sha512-D0VdTiTfrmZM7tViQEMuzG0+giU5z5crn4vjK+f1dnxTKcNx23Vc2lpMgd1vP3lYrwnvJofZmCnvEuJ7XUeV2Q==" + "resolved" "https://registry.npmjs.org/ts-unused-exports/-/ts-unused-exports-7.0.3.tgz" + "version" "7.0.3" + dependencies: + "chalk" "^4.0.0" + "tsconfig-paths" "^3.9.0" + +"ts-xor@^1.0.6": + "integrity" "sha512-0u70/SDLSCaX23UddnwAb2GvZZ2N0Rbjnmemn5pHoR40D32Xcva5KRGWV9SdJOKHCjJUlmctmCTvT0z+2yT8aw==" + "resolved" "https://registry.npmjs.org/ts-xor/-/ts-xor-1.0.8.tgz" + "version" "1.0.8" + +"tsconfig-paths@^3.14.1", "tsconfig-paths@^3.9.0": + "integrity" "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==" + "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" + "version" "3.14.1" dependencies: "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" - strip-bom "^3.0.0" - -tslib@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== - -tslib@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== - -tslib@^1.14.1, tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2, tslib@^2.0.3, tslib@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" - integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.1, type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" - integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -typescript-memoize@^1.0.0-alpha.3: - version "1.0.1" - resolved "https://registry.yarnpkg.com/typescript-memoize/-/typescript-memoize-1.0.1.tgz#0a8199aa28f6fe18517f6e9308ef7bfbe9a98d59" - integrity sha512-oJNge1qUrOK37d5Y6Ly2txKeuelYVsFtNF6U9kXIN7juudcQaHJQg2MxLOy0CqtkW65rVDYuTCOjnSIVPd8z3w== - -typescript@^4.2.0: - version "4.4.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" - integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== - -uglify-js@^3.1.4: - version "3.14.2" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.2.tgz#d7dd6a46ca57214f54a2d0a43cad0f35db82ac99" - integrity sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A== - -uid-number@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= - -umask@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" - integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -undefsafe@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" - integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" - integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-names-generator@^4.5.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/unique-names-generator/-/unique-names-generator-4.6.0.tgz#852c1db8149815d6cf665a601820fe80ec2fbc37" - integrity sha512-m0fke1emBeT96UYn2psPQYwljooDWRTKt9oUZ5vlt88ZFMBGxqwPyLHXwCfkbgdm8jzioCp7oIpo6KdM+fnUlQ== - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -universal-user-agent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" - integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== - -universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -untildify@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" - integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -upath@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" - integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== - -update-notifier@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" - integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== - dependencies: - boxen "^5.0.0" - chalk "^4.1.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.4.0" - is-npm "^5.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.1.0" - pupa "^2.1.1" - semver "^7.3.4" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-join@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" - integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= - dependencies: - prepend-http "^2.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -user-home@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" - integrity sha1-nHC/2Babwdy/SGBODwS4tJzenp8= - dependencies: - os-homedir "^1.0.0" - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util-promisify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" - integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= - dependencies: - object.getownpropertydescriptors "^2.0.3" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.10.3: - version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" - integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== - dependencies: - inherits "2.0.3" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.3.2, uuid@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-compile-cache@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -v8-to-istanbul@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz#0aeb763894f1a0a1676adf8a8b7612a38902446c" - integrity sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA== + "json5" "^1.0.1" + "minimist" "^1.2.6" + "strip-bom" "^3.0.0" + +"tslib@^1.14.1": + "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + "version" "1.14.1" + +"tslib@^1.8.1": + "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + "version" "1.14.1" + +"tslib@^1.9.0": + "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + "version" "1.14.1" + +"tslib@^2", "tslib@^2.0.1", "tslib@^2.0.3", "tslib@^2.1.0", "tslib@^2.2.0", "tslib@^2.3.1": + "integrity" "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" + "version" "2.4.0" + +"tslib@1.10.0": + "integrity" "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz" + "version" "1.10.0" + +"tslib@1.9.3": + "integrity" "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz" + "version" "1.9.3" + +"tslib@2.1.0": + "integrity" "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz" + "version" "2.1.0" + +"tsscmp@1.0.6": + "integrity" "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" + "resolved" "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz" + "version" "1.0.6" + +"tsutils@^3.17.1", "tsutils@^3.21.0": + "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" + "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + "version" "3.21.0" + dependencies: + "tslib" "^1.8.1" + +"tty-browserify@0.0.0": + "integrity" "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + "resolved" "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" + "version" "0.0.0" + +"tunnel-agent@^0.6.0": + "integrity" "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=" + "resolved" "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + "version" "0.6.0" + dependencies: + "safe-buffer" "^5.0.1" + +"tv4@^1.3.0": + "integrity" "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM=" + "resolved" "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz" + "version" "1.3.0" + +"tweetnacl@^0.14.3": + "integrity" "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + "version" "0.14.5" + +"tweetnacl@^1.0.3": + "integrity" "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" + "version" "1.0.3" + +"tweetnacl@~0.14.0": + "integrity" "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + "version" "0.14.5" + +"twilio@3.72.0": + "integrity" "sha512-Nr5mPlPratfWa9ok2OQVSlqCtISncrUbhr1ab5j1P4jf0eRU8Og8EF0pCqn+4MKOHgoIn8yXbDjepVD4lpvctg==" + "resolved" "https://registry.npmjs.org/twilio/-/twilio-3.72.0.tgz" + "version" "3.72.0" + dependencies: + "axios" "^0.21.4" + "dayjs" "^1.8.29" + "https-proxy-agent" "^5.0.0" + "jsonwebtoken" "^8.5.1" + "lodash" "^4.17.21" + "q" "2.0.x" + "qs" "^6.9.4" + "rootpath" "^0.1.2" + "scmp" "^2.1.0" + "url-parse" "^1.5.3" + "xmlbuilder" "^13.0.2" + +"twit@2.2.11": + "integrity" "sha512-BkdwvZGRVoUTcEBp0zuocuqfih4LB+kEFUWkWJOVBg6pAE9Ebv9vmsYTTrfXleZGf45Bj5H3A1/O9YhF2uSYNg==" + "resolved" "https://registry.npmjs.org/twit/-/twit-2.2.11.tgz" + "version" "2.2.11" + dependencies: + "bluebird" "^3.1.5" + "mime" "^1.3.4" + "request" "^2.68.0" + +"twitter-api-v2@1.8.0": + "integrity" "sha512-aslxbzSf+i2bIRbH7RK4k3H2cU2KUHAxwoNlcYJkqq/sX+S2wocjP6olqcnReANylLGY4g3vqZMpnFC59jH3Eg==" + "resolved" "https://registry.npmjs.org/twitter-api-v2/-/twitter-api-v2-1.8.0.tgz" + "version" "1.8.0" + +"twitter-autohook@1.7.2": + "integrity" "sha512-V8yDgnTxDIOxezwLSsbGc58kzA007yBr4ZwR451VXbBjrTY8j4DjW/rbn1uGXIbx08YlfXZo9EsXdpgh/hZGzw==" + "resolved" "https://registry.npmjs.org/twitter-autohook/-/twitter-autohook-1.7.2.tgz" + "version" "1.7.2" + dependencies: + "commander" "^2.20.0" + "dotenv" "^8.0.0" + "needle" "^2.3.3" + "ngrok" "^3.2.1" + "nock" "^12.0.2" + +"tx2@~1.0.4": + "integrity" "sha512-sJ24w0y03Md/bxzK4FU8J8JveYYUbSs2FViLJ2D/8bytSiyPRbuE3DyL/9UKYXTZlV3yXq0L8GLlhobTnekCVg==" + "resolved" "https://registry.npmjs.org/tx2/-/tx2-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "json-stringify-safe" "^5.0.1" + +"type-check@^0.4.0", "type-check@~0.4.0": + "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" + "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + "version" "0.4.0" + dependencies: + "prelude-ls" "^1.2.1" + +"type-check@~0.3.2": + "integrity" "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=" + "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" + "version" "0.3.2" + dependencies: + "prelude-ls" "~1.1.2" + +"type-detect@4.0.8": + "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + "version" "4.0.8" + +"type-fest@^0.18.0": + "integrity" "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz" + "version" "0.18.1" + +"type-fest@^0.20.2": + "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + "version" "0.20.2" + +"type-fest@^0.21.1", "type-fest@^0.21.3": + "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + "version" "0.21.3" + +"type-fest@^0.4.1": + "integrity" "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz" + "version" "0.4.1" + +"type-fest@^0.6.0": + "integrity" "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" + "version" "0.6.0" + +"type-fest@^0.8.1": + "integrity" "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" + "version" "0.8.1" + +"type-is@^1.6.14", "type-is@^1.6.16", "type-is@~1.6.18": + "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" + "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + "version" "1.6.18" + dependencies: + "media-typer" "0.3.0" + "mime-types" "~2.1.24" + +"type@^1.0.1": + "integrity" "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + "resolved" "https://registry.npmjs.org/type/-/type-1.2.0.tgz" + "version" "1.2.0" + +"type@^2.5.0": + "integrity" "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" + "resolved" "https://registry.npmjs.org/type/-/type-2.6.0.tgz" + "version" "2.6.0" + +"typedarray-to-buffer@^3.1.5": + "integrity" "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==" + "resolved" "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" + "version" "3.1.5" + dependencies: + "is-typedarray" "^1.0.0" + +"typedarray@^0.0.6": + "integrity" "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "resolved" "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + "version" "0.0.6" + +"typescript-memoize@^1.0.0-alpha.3": + "integrity" "sha512-LQPKVXK8QrBBkL/zclE6YgSWn0I8ew5m0Lf+XL00IwMhlotqRLlzHV+BRrljVQIc+NohUAuQP7mg4HQwrx5Xbg==" + "resolved" "https://registry.npmjs.org/typescript-memoize/-/typescript-memoize-1.1.0.tgz" + "version" "1.1.0" + +"typescript@^3.2.1": + "integrity" "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz" + "version" "3.9.10" + +"typescript@^3.9.3": + "integrity" "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz" + "version" "3.9.10" + +"typescript@^4.2.0", "typescript@4.3.5": + "integrity" "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz" + "version" "4.3.5" + +"typical@^4.0.0": + "integrity" "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==" + "resolved" "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz" + "version" "4.0.0" + +"typical@^5.2.0": + "integrity" "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==" + "resolved" "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz" + "version" "5.2.0" + +"uglify-js@^3.1.4": + "integrity" "sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA==" + "resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.4.tgz" + "version" "3.15.4" + +"uid-number@0.0.6": + "integrity" "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=" + "resolved" "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz" + "version" "0.0.6" + +"ultron@~1.1.0": + "integrity" "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + "resolved" "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz" + "version" "1.1.1" + +"umask@^1.1.0": + "integrity" "sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0=" + "resolved" "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz" + "version" "1.1.0" + +"umzug@^2.3.0": + "integrity" "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==" + "resolved" "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "bluebird" "^3.7.2" + +"unbox-primitive@^1.0.1": + "integrity" "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==" + "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.2" + "has-bigints" "^1.0.2" + "has-symbols" "^1.0.3" + "which-boxed-primitive" "^1.0.2" + +"unbzip2-stream@^1.3.3", "unbzip2-stream@1.4.3": + "integrity" "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==" + "resolved" "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz" + "version" "1.4.3" + dependencies: + "buffer" "^5.2.1" + "through" "^2.3.8" + +"undefsafe@^2.0.5": + "integrity" "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + "resolved" "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz" + "version" "2.0.5" + +"underscore@^1.13.1", "underscore@^1.8.3", "underscore@^1.9.1": + "integrity" "sha512-QvjkYpiD+dJJraRA8+dGAU4i7aBbb2s0S3jA45TFOvg2VgqvdCDd/3N6CqA8gluk1W91GLoXg5enMUx560QzuA==" + "resolved" "https://registry.npmjs.org/underscore/-/underscore-1.13.3.tgz" + "version" "1.13.3" + +"unicode-canonical-property-names-ecmascript@^2.0.0": + "integrity" "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + "resolved" "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + "version" "2.0.0" + +"unicode-match-property-ecmascript@^2.0.0": + "integrity" "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==" + "resolved" "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "unicode-canonical-property-names-ecmascript" "^2.0.0" + "unicode-property-aliases-ecmascript" "^2.0.0" + +"unicode-match-property-value-ecmascript@^2.0.0": + "integrity" "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" + "resolved" "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz" + "version" "2.0.0" + +"unicode-property-aliases-ecmascript@^2.0.0": + "integrity" "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==" + "resolved" "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz" + "version" "2.0.0" + +"union-value@^1.0.0": + "integrity" "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==" + "resolved" "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "arr-union" "^3.1.0" + "get-value" "^2.0.6" + "is-extendable" "^0.1.1" + "set-value" "^2.0.1" + +"unique-filename@^1.1.1": + "integrity" "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==" + "resolved" "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "unique-slug" "^2.0.0" + +"unique-names-generator@^4.5.0": + "integrity" "sha512-lMx9dX+KRmG8sq6gulYYpKWZc9RlGsgBR6aoO8Qsm3qvkSJ+3rAymr+TnV8EDMrIrwuFJ4kruzMWM/OpYzPoow==" + "resolved" "https://registry.npmjs.org/unique-names-generator/-/unique-names-generator-4.7.1.tgz" + "version" "4.7.1" + +"unique-slug@^2.0.0": + "integrity" "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==" + "resolved" "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "imurmurhash" "^0.1.4" + +"unique-string@^2.0.0": + "integrity" "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==" + "resolved" "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "crypto-random-string" "^2.0.0" + +"universal-user-agent@^6.0.0": + "integrity" "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + "resolved" "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz" + "version" "6.0.0" + +"universalify@^0.1.0": + "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + "version" "0.1.2" + +"universalify@^0.1.2": + "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + "version" "0.1.2" + +"universalify@^2.0.0": + "integrity" "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" + "version" "2.0.0" + +"unpipe@~1.0.0", "unpipe@1.0.0": + "integrity" "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + "version" "1.0.0" + +"unset-value@^1.0.0": + "integrity" "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=" + "resolved" "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "has-value" "^0.3.1" + "isobject" "^3.0.0" + +"untildify@^4.0.0": + "integrity" "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==" + "resolved" "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz" + "version" "4.0.0" + +"upath@^1.1.1": + "integrity" "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + "resolved" "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" + "version" "1.2.0" + +"upath@^2.0.1": + "integrity" "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==" + "resolved" "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz" + "version" "2.0.1" + +"update-notifier@^5.1.0": + "integrity" "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==" + "resolved" "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "boxen" "^5.0.0" + "chalk" "^4.1.0" + "configstore" "^5.0.1" + "has-yarn" "^2.1.0" + "import-lazy" "^2.1.0" + "is-ci" "^2.0.0" + "is-installed-globally" "^0.4.0" + "is-npm" "^5.0.0" + "is-yarn-global" "^0.3.0" + "latest-version" "^5.1.0" + "pupa" "^2.1.1" + "semver" "^7.3.4" + "semver-diff" "^3.1.1" + "xdg-basedir" "^4.0.0" + +"uri-js@^4.2.2": + "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" + "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + "version" "4.4.1" + dependencies: + "punycode" "^2.1.0" + +"urix@^0.1.0": + "integrity" "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + "resolved" "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" + "version" "0.1.0" + +"url-join@^4.0.0": + "integrity" "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" + "resolved" "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz" + "version" "4.0.1" + +"url-parse-lax@^3.0.0": + "integrity" "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=" + "resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "prepend-http" "^2.0.0" + +"url-parse@^1.5.3": + "integrity" "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==" + "resolved" "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" + "version" "1.5.10" + dependencies: + "querystringify" "^2.1.1" + "requires-port" "^1.0.0" + +"url-regex-safe@^3.0.0": + "integrity" "sha512-+2U40NrcmtWFVjuxXVt9bGRw6c7/MgkGKN9xIfPrT/2RX0LTkkae6CCEDp93xqUN0UKm/rr821QnHd2dHQmN3A==" + "resolved" "https://registry.npmjs.org/url-regex-safe/-/url-regex-safe-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ip-regex" "4.3.0" + "tlds" "^1.228.0" + +"url-template@^2.0.8": + "integrity" "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" + "resolved" "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz" + "version" "2.0.8" + +"url-toolkit@^2.2.1": + "integrity" "sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg==" + "resolved" "https://registry.npmjs.org/url-toolkit/-/url-toolkit-2.2.5.tgz" + "version" "2.2.5" + +"url@^0.11.0": + "integrity" "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=" + "resolved" "https://registry.npmjs.org/url/-/url-0.11.0.tgz" + "version" "0.11.0" + dependencies: + "punycode" "1.3.2" + "querystring" "0.2.0" + +"url@0.10.3": + "integrity" "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=" + "resolved" "https://registry.npmjs.org/url/-/url-0.10.3.tgz" + "version" "0.10.3" + dependencies: + "punycode" "1.3.2" + "querystring" "0.2.0" + +"use@^3.1.0": + "integrity" "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + "resolved" "https://registry.npmjs.org/use/-/use-3.1.1.tgz" + "version" "3.1.1" + +"user-home@^2.0.0": + "integrity" "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=" + "resolved" "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "os-homedir" "^1.0.0" + +"util-deprecate@^1.0.1", "util-deprecate@^1.0.2", "util-deprecate@~1.0.1": + "integrity" "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "version" "1.0.2" + +"util-promisify@^2.1.0": + "integrity" "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=" + "resolved" "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "object.getownpropertydescriptors" "^2.0.3" + +"util@^0.10.3": + "integrity" "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==" + "resolved" "https://registry.npmjs.org/util/-/util-0.10.4.tgz" + "version" "0.10.4" + dependencies: + "inherits" "2.0.3" + +"util@^0.11.0": + "integrity" "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==" + "resolved" "https://registry.npmjs.org/util/-/util-0.11.1.tgz" + "version" "0.11.1" + dependencies: + "inherits" "2.0.3" + +"util@0.10.3": + "integrity" "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=" + "resolved" "https://registry.npmjs.org/util/-/util-0.10.3.tgz" + "version" "0.10.3" + dependencies: + "inherits" "2.0.1" + +"utila@~0.4": + "integrity" "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + "resolved" "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" + "version" "0.4.0" + +"utility-types@^3.10.0": + "integrity" "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==" + "resolved" "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz" + "version" "3.10.0" + +"utils-merge@1.0.1": + "integrity" "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + "version" "1.0.1" + +"uuid@^3.0.0": + "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + "version" "3.4.0" + +"uuid@^3.2.1": + "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + "version" "3.4.0" + +"uuid@^3.3.2": + "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + "version" "3.4.0" + +"uuid@^8.0.0", "uuid@^8.3.2": + "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + "version" "8.3.2" + +"uuid@3.3.2": + "integrity" "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz" + "version" "3.3.2" + +"v8-compile-cache-lib@^3.0.0": + "integrity" "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" + "resolved" "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + "version" "3.0.1" + +"v8-compile-cache@^2.0.3": + "integrity" "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + "resolved" "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" + "version" "2.3.0" + +"v8-to-istanbul@^8.1.0": + "integrity" "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==" + "resolved" "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz" + "version" "8.1.1" dependencies: "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= - dependencies: - builtins "^1.0.3" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -vue@2.6.10: - version "2.6.10" - resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.10.tgz#a72b1a42a4d82a721ea438d1b6bf55e66195c637" - integrity sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ== - -vue@^2.5.17: - version "2.6.14" - resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.14.tgz#e51aa5250250d569a3fbad3a8a5a687d6036e235" - integrity sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ== - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -watch@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/watch/-/watch-1.0.2.tgz#340a717bde765726fa0aa07d721e0147a551df0c" - integrity sha1-NApxe952Vyb6CqB9ch4BR6VR3ww= - dependencies: - exec-sh "^0.2.0" - minimist "^1.2.0" - -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" + "convert-source-map" "^1.6.0" + "source-map" "^0.7.3" + +"validate-npm-package-license@^3.0.1", "validate-npm-package-license@^3.0.4": + "integrity" "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==" + "resolved" "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "spdx-correct" "^3.0.0" + "spdx-expression-parse" "^3.0.0" + +"validate-npm-package-name@^3.0.0": + "integrity" "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=" + "resolved" "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "builtins" "^1.0.3" + +"validator@^13.7.0": + "integrity" "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" + "resolved" "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz" + "version" "13.7.0" + +"vary@^1", "vary@^1.1.2", "vary@~1.1.2": + "integrity" "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + "version" "1.1.2" + +"verify-apple-id-token@^2.1.0": + "integrity" "sha512-YUAJjOhJqTX7513gRPFR6auz3sRIQPu+YMlTRq1XSKTLxQL25+Z/EGTvpM4Yu1CjzskREdhHXhjoAhpyldfXJA==" + "resolved" "https://registry.npmjs.org/verify-apple-id-token/-/verify-apple-id-token-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "jsonwebtoken" "^8.5.1" + "jwks-rsa" "^2.0.2" + +"verror@1.10.0": + "integrity" "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=" + "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "assert-plus" "^1.0.0" + "core-util-is" "1.0.2" + "extsprintf" "^1.2.0" + +"vite-plugin-env-compatible@^1.1.1": + "integrity" "sha512-4lqhBWhOzP+SaCPoCVdmpM5cXzjKQV5jgFauxea488oOeElXo/kw6bXkMIooZhrh9q7gclTl8en6N9NmnqUwRQ==" + "resolved" "https://registry.npmjs.org/vite-plugin-env-compatible/-/vite-plugin-env-compatible-1.1.1.tgz" + "version" "1.1.1" + +"vite-plugin-react@^4.0.1": + "integrity" "sha512-liDo/wxTcy2E5cptwsAUZIC0F4flxWkmcPOJdhKCzJIC9XguWCCJimzziTQRmHuqIPawmQNE8PJb8+RlGzNxOA==" + "resolved" "https://registry.npmjs.org/vite-plugin-react/-/vite-plugin-react-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "@babel/core" "^7.9.6" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "react-refresh" "^0.8.2" + +"vizion@~2.2.1": + "integrity" "sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww==" + "resolved" "https://registry.npmjs.org/vizion/-/vizion-2.2.1.tgz" + "version" "2.2.1" + dependencies: + "async" "^2.6.3" + "git-node-fs" "^1.0.0" + "ini" "^1.3.5" + "js-git" "^0.7.8" + +"vm-browserify@^1.0.1": + "integrity" "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + "resolved" "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" + "version" "1.1.2" + +"vm2@^3.9.8": + "integrity" "sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw==" + "resolved" "https://registry.npmjs.org/vm2/-/vm2-3.9.9.tgz" + "version" "3.9.9" + dependencies: + "acorn" "^8.7.0" + "acorn-walk" "^8.2.0" + +"vue-eslint-parser@^2.0.2": + "integrity" "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==" + "resolved" "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "debug" "^3.1.0" + "eslint-scope" "^3.7.1" + "eslint-visitor-keys" "^1.0.0" + "espree" "^3.5.2" + "esquery" "^1.0.0" + "lodash" "^4.17.4" + +"vue-eslint-parser@~7.1.0": + "integrity" "sha512-8FdXi0gieEwh1IprIBafpiJWcApwrU+l2FEj8c1HtHFdNXMd0+2jUSjBVmcQYohf/E72irwAXEXLga6TQcB3FA==" + "resolved" "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.1.1.tgz" + "version" "7.1.1" + dependencies: + "debug" "^4.1.1" + "eslint-scope" "^5.0.0" + "eslint-visitor-keys" "^1.1.0" + "espree" "^6.2.1" + "esquery" "^1.0.1" + "lodash" "^4.17.15" + +"vue@2.5.17": + "integrity" "sha512-mFbcWoDIJi0w0Za4emyLiW72Jae0yjANHbCVquMKijcavBGypqlF7zHRgMa5k4sesdv7hv2rB4JPdZfR+TPfhQ==" + "resolved" "https://registry.npmjs.org/vue/-/vue-2.5.17.tgz" + "version" "2.5.17" + +"vue@2.6.10": + "integrity" "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==" + "resolved" "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz" + "version" "2.6.10" + +"w3c-hr-time@^1.0.2": + "integrity" "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==" + "resolved" "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "browser-process-hrtime" "^1.0.0" + +"w3c-xmlserializer@^2.0.0": + "integrity" "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==" + "resolved" "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "xml-name-validator" "^3.0.0" + +"walker@^1.0.7": + "integrity" "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==" + "resolved" "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + "version" "1.0.8" + dependencies: + "makeerror" "1.0.12" + +"watch@^1.0.2": + "integrity" "sha1-NApxe952Vyb6CqB9ch4BR6VR3ww=" + "resolved" "https://registry.npmjs.org/watch/-/watch-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "exec-sh" "^0.2.0" + "minimist" "^1.2.0" + +"watchpack-chokidar2@^2.0.1": + "integrity" "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==" + "resolved" "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "chokidar" "^2.1.8" + +"watchpack@^1.7.4": + "integrity" "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==" + "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz" + "version" "1.7.5" + dependencies: + "graceful-fs" "^4.1.2" + "neo-async" "^2.5.0" optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" - -watchpack@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce" - integrity sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -wcwidth@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -web-vitals@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-1.1.2.tgz#06535308168986096239aa84716e68b4c6ae6d1c" - integrity sha512-PFMKIY+bRSXlMxVAQ+m2aw9c/ioUYfDgrYot0YUa+/xa0sakubWhSDyxAKwzymvXVdF4CZI71g06W+mqhzu6ig== - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -webidl-conversions@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" - integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== - -webpack-bundle-analyzer@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.2.tgz#39898cf6200178240910d629705f0f3493f7d666" - integrity sha512-PIagMYhlEzFfhMYOzs5gFT55DkUdkyrJi/SxJp8EF3YMWhS+T9vvs2EoTetpk5qb6VsCq02eXTlRDOydRhDFAQ== - dependencies: - acorn "^8.0.4" - acorn-walk "^8.0.0" - chalk "^4.1.0" - commander "^6.2.0" - gzip-size "^6.0.0" - lodash "^4.17.20" - opener "^1.5.2" - sirv "^1.0.7" - ws "^7.3.1" - -webpack-cli@^4.8.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.8.0.tgz#5fc3c8b9401d3c8a43e2afceacfa8261962338d1" - integrity sha512-+iBSWsX16uVna5aAYN6/wjhJy1q/GKk4KjKvfg90/6hykCTSgozbfz5iRgDTSJt/LgSbYxdBX3KBHeobIs+ZEw== + "chokidar" "^3.4.1" + "watchpack-chokidar2" "^2.0.1" + +"watchpack@^2.3.1": + "integrity" "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==" + "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz" + "version" "2.3.1" + dependencies: + "glob-to-regexp" "^0.4.1" + "graceful-fs" "^4.1.2" + +"wav@^1.0.2": + "integrity" "sha512-viHtz3cDd/Tcr/HbNqzQCofKdF6kWUymH9LGDdskfWFoIy/HJ+RTihgjEcHfnsy1PO4e9B+y4HwgTwMrByquhg==" + "resolved" "https://registry.npmjs.org/wav/-/wav-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "buffer-alloc" "^1.1.0" + "buffer-from" "^1.0.0" + "debug" "^2.2.0" + "readable-stream" "^1.1.14" + "stream-parser" "^0.3.1" + +"wbuf@^1.1.0", "wbuf@^1.7.3": + "integrity" "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==" + "resolved" "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" + "version" "1.7.3" + dependencies: + "minimalistic-assert" "^1.0.0" + +"wcwidth@^1.0.0", "wcwidth@^1.0.1": + "integrity" "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=" + "resolved" "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "defaults" "^1.0.3" + +"weak-map@^1.0.5": + "integrity" "sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw==" + "resolved" "https://registry.npmjs.org/weak-map/-/weak-map-1.0.8.tgz" + "version" "1.0.8" + +"weaviate-client@^2.3.0": + "integrity" "sha512-GyfswcIs+XdIsnX2JfEfYirihxCTodI20yNstqDRiJd7ry6ZGVzDi3VZNywO/6nnDreaXDMrTFkc+r+mdQjGbw==" + "resolved" "https://registry.npmjs.org/weaviate-client/-/weaviate-client-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "graphql-client" "^2.0.1" + "isomorphic-fetch" "^2.2.1" + +"web-vitals@^1.0.1": + "integrity" "sha512-PFMKIY+bRSXlMxVAQ+m2aw9c/ioUYfDgrYot0YUa+/xa0sakubWhSDyxAKwzymvXVdF4CZI71g06W+mqhzu6ig==" + "resolved" "https://registry.npmjs.org/web-vitals/-/web-vitals-1.1.2.tgz" + "version" "1.1.2" + +"webidl-conversions@^3.0.0": + "integrity" "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + "version" "3.0.1" + +"webidl-conversions@^4.0.2": + "integrity" "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz" + "version" "4.0.2" + +"webidl-conversions@^5.0.0": + "integrity" "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" + "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" + "version" "5.0.0" + +"webidl-conversions@^6.1.0": + "integrity" "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" + "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" + "version" "6.1.0" + +"webidl-conversions@^7.0.0": + "integrity" "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" + "version" "7.0.0" + +"webpack-bundle-analyzer@^4.4.2": + "integrity" "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==" + "resolved" "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz" + "version" "4.5.0" + dependencies: + "acorn" "^8.0.4" + "acorn-walk" "^8.0.0" + "chalk" "^4.1.0" + "commander" "^7.2.0" + "gzip-size" "^6.0.0" + "lodash" "^4.17.20" + "opener" "^1.5.2" + "sirv" "^1.0.7" + "ws" "^7.3.1" + +"webpack-cli@^4.8.0": + "integrity" "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==" + "resolved" "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz" + "version" "4.9.2" dependencies: "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^1.0.4" - "@webpack-cli/info" "^1.3.0" - "@webpack-cli/serve" "^1.5.2" - colorette "^1.2.1" - commander "^7.0.0" - execa "^5.0.0" - fastest-levenshtein "^1.0.12" - import-local "^3.0.2" - interpret "^2.2.0" - rechoir "^0.7.0" - v8-compile-cache "^2.2.0" - webpack-merge "^5.7.3" - -webpack-dev-middleware@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.2.1.tgz#97c948144349177856a3d2d9c612cc3fee180cf1" - integrity sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ== - dependencies: - colorette "^2.0.10" - memfs "^3.2.2" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^3.1.0" - -webpack-dev-server@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.3.0.tgz#732f5869d4c06e222b599daee64bc268f5edea24" - integrity sha512-kuqP9Xn4OzcKe7f0rJwd4p8xqiD+4b5Lzu8tJa8OttRL3E1Q8gI2KmUtouJTgDswjjvHOHlZDV8LTQfSY5qZSA== - dependencies: - ansi-html-community "^0.0.8" - bonjour "^3.5.0" - chokidar "^3.5.1" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - del "^6.0.0" - express "^4.17.1" - graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.0" - internal-ip "^6.2.0" - ipaddr.js "^2.0.1" - open "^8.0.9" - p-retry "^4.5.0" - portfinder "^1.0.28" - schema-utils "^3.1.0" - selfsigned "^1.10.11" - serve-index "^1.9.1" - sockjs "^0.3.21" - spdy "^4.0.2" - strip-ansi "^7.0.0" - url "^0.11.0" - webpack-dev-middleware "^5.2.1" - ws "^8.1.0" - -webpack-merge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - -webpack-merge@^5.7.3, webpack-merge@^5.8.0: - version "5.8.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" - integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== - dependencies: - clone-deep "^4.0.1" - wildcard "^2.0.0" - -webpack-sources@^1.4.0, webpack-sources@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack-sources@^3.0.0: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack-sources@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.1.tgz#251a7d9720d75ada1469ca07dbb62f3641a05b6d" - integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA== - -webpack@^4.41.0: - version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== + "@webpack-cli/configtest" "^1.1.1" + "@webpack-cli/info" "^1.4.1" + "@webpack-cli/serve" "^1.6.1" + "colorette" "^2.0.14" + "commander" "^7.0.0" + "execa" "^5.0.0" + "fastest-levenshtein" "^1.0.12" + "import-local" "^3.0.2" + "interpret" "^2.2.0" + "rechoir" "^0.7.0" + "webpack-merge" "^5.7.3" + +"webpack-dev-middleware@^5.3.1": + "integrity" "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==" + "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz" + "version" "5.3.1" + dependencies: + "colorette" "^2.0.10" + "memfs" "^3.4.1" + "mime-types" "^2.1.31" + "range-parser" "^1.2.1" + "schema-utils" "^4.0.0" + +"webpack-dev-server@^4.3.0": + "integrity" "sha512-dwld70gkgNJa33czmcj/PlKY/nOy/BimbrgZRaR9vDATBQAYgLzggR0nxDtPLJiLrMgZwbE6RRfJ5vnBBasTyg==" + "resolved" "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.8.1.tgz" + "version" "4.8.1" + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.1" + "ansi-html-community" "^0.0.8" + "bonjour-service" "^1.0.11" + "chokidar" "^3.5.3" + "colorette" "^2.0.10" + "compression" "^1.7.4" + "connect-history-api-fallback" "^1.6.0" + "default-gateway" "^6.0.3" + "express" "^4.17.3" + "graceful-fs" "^4.2.6" + "html-entities" "^2.3.2" + "http-proxy-middleware" "^2.0.3" + "ipaddr.js" "^2.0.1" + "open" "^8.0.9" + "p-retry" "^4.5.0" + "portfinder" "^1.0.28" + "rimraf" "^3.0.2" + "schema-utils" "^4.0.0" + "selfsigned" "^2.0.1" + "serve-index" "^1.9.1" + "sockjs" "^0.3.21" + "spdy" "^4.0.2" + "webpack-dev-middleware" "^5.3.1" + "ws" "^8.4.2" + +"webpack-merge@^4.2.2": + "integrity" "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==" + "resolved" "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz" + "version" "4.2.2" + dependencies: + "lodash" "^4.17.15" + +"webpack-merge@^5.7.3", "webpack-merge@^5.8.0": + "integrity" "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==" + "resolved" "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz" + "version" "5.8.0" + dependencies: + "clone-deep" "^4.0.1" + "wildcard" "^2.0.0" + +"webpack-sources@^1.4.0", "webpack-sources@^1.4.1": + "integrity" "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==" + "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" + "version" "1.4.3" + dependencies: + "source-list-map" "^2.0.0" + "source-map" "~0.6.1" + +"webpack-sources@^3.0.0", "webpack-sources@^3.2.3": + "integrity" "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" + "version" "3.2.3" + +"webpack@^4.41.0": + "integrity" "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==" + "resolved" "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz" + "version" "4.46.0" dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" "@webassemblyjs/wasm-edit" "1.9.0" "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.5.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - -webpack@^5.4.0: - version "5.55.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.55.0.tgz#77e4d90c6db6764623f91cb1549cdcda9b9f8a84" - integrity sha512-/1LyoAG+4+YRt+RLN3H2cz4dcw8+iO/GwKhL54GQDmqONCi0ZISXZF6aCCrCRDJFK685h+RGLCZd61Y+SEqdWQ== - dependencies: - "@types/eslint-scope" "^3.7.0" - "@types/estree" "^0.0.50" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.4.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.8.3" - es-module-lexer "^0.9.0" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.4" - json-parse-better-errors "^1.0.2" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.1.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" - watchpack "^2.2.0" - webpack-sources "^3.2.0" - -webpack@^5.54.0: - version "5.54.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.54.0.tgz#629f0cd14c7a4340af758a3c7cef25c50670ae4d" - integrity sha512-MAVKJMsIUotOQKzFOmN8ZkmMlj7BOyjDU6t1lomW9dWOme5WTStzGa3HMLdV1KYD1AiFETGsznL4LMSvj4tukw== - dependencies: - "@types/eslint-scope" "^3.7.0" - "@types/estree" "^0.0.50" + "acorn" "^6.4.1" + "ajv" "^6.10.2" + "ajv-keywords" "^3.4.1" + "chrome-trace-event" "^1.0.2" + "enhanced-resolve" "^4.5.0" + "eslint-scope" "^4.0.3" + "json-parse-better-errors" "^1.0.2" + "loader-runner" "^2.4.0" + "loader-utils" "^1.2.3" + "memory-fs" "^0.4.1" + "micromatch" "^3.1.10" + "mkdirp" "^0.5.3" + "neo-async" "^2.6.1" + "node-libs-browser" "^2.2.1" + "schema-utils" "^1.0.0" + "tapable" "^1.1.3" + "terser-webpack-plugin" "^1.4.3" + "watchpack" "^1.7.4" + "webpack-sources" "^1.4.1" + +"webpack@^5.4.0", "webpack@^5.54.0": + "integrity" "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==" + "resolved" "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz" + "version" "5.72.0" + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^0.0.51" "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/wasm-edit" "1.11.1" "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.4.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.8.3" - es-module-lexer "^0.9.0" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.4" - json-parse-better-errors "^1.0.2" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.1.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" - watchpack "^2.2.0" - webpack-sources "^3.2.0" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-mimetype@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" - integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== - -whatwg-url@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-10.0.0.tgz#37264f720b575b4a311bd4094ed8c760caaa05da" - integrity sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w== - dependencies: - tr46 "^3.0.0" - webidl-conversions "^7.0.0" - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -whatwg-url@^8.0.0, whatwg-url@^8.4.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - -whatwg-url@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-9.1.0.tgz#1b112cf237d72cd64fa7882b9c3f6234a1c3050d" - integrity sha512-CQ0UcrPHyomtlOCot1TL77WyMIm/bCwrJ2D6AOKGwEczU9EpyoqAokfqrf/MioU9kHcMsmJZcg1egXix2KYEsA== - dependencies: - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - -which-boxed-primitive@^1.0.1, which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-collection@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" - integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== - dependencies: - is-map "^2.0.1" - is-set "^2.0.1" - is-weakmap "^2.0.1" - is-weakset "^2.0.1" - -which-typed-array@^1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793" - integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-abstract "^1.18.5" - foreach "^2.0.5" - has-tostringtag "^1.0.0" - is-typed-array "^1.1.7" - -which@^1.2.9, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -wildcard@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" - integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" - integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^2.4.2: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -write-json-file@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" - integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== - dependencies: - detect-indent "^5.0.0" - graceful-fs "^4.1.15" - make-dir "^2.1.0" - pify "^4.0.1" - sort-keys "^2.0.0" - write-file-atomic "^2.4.2" - -write-json-file@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-4.3.0.tgz#908493d6fd23225344af324016e4ca8f702dd12d" - integrity sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ== - dependencies: - detect-indent "^6.0.0" - graceful-fs "^4.1.15" - is-plain-obj "^2.0.0" - make-dir "^3.0.0" - sort-keys "^4.0.0" - write-file-atomic "^3.0.0" - -write-pkg@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" - integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== - dependencies: - sort-keys "^2.0.0" - type-fest "^0.4.1" - write-json-file "^3.2.0" - -ws@^7.3.1, ws@^7.4.6: - version "7.5.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" - integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== - -ws@^8.0.0: - version "8.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" - integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== - -ws@^8.1.0: - version "8.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.2.tgz#ca684330c6dd6076a737250ed81ac1606cb0a63e" - integrity sha512-Q6B6H2oc8QY3llc3cB8kVmQ6pnJWVQbP7Q5algTcIxx7YEpc0oU4NBVHlztA7Ekzfhw2r0rPducMUiCGWKQRzw== - -ws@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" - integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== - -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0, yaml@^1.7.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@20.2.4: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - -yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs@^16.0.3, yargs@^16.1.0, yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + "acorn" "^8.4.1" + "acorn-import-assertions" "^1.7.6" + "browserslist" "^4.14.5" + "chrome-trace-event" "^1.0.2" + "enhanced-resolve" "^5.9.2" + "es-module-lexer" "^0.9.0" + "eslint-scope" "5.1.1" + "events" "^3.2.0" + "glob-to-regexp" "^0.4.1" + "graceful-fs" "^4.2.9" + "json-parse-better-errors" "^1.0.2" + "loader-runner" "^4.2.0" + "mime-types" "^2.1.27" + "neo-async" "^2.6.2" + "schema-utils" "^3.1.0" + "tapable" "^2.1.1" + "terser-webpack-plugin" "^5.1.3" + "watchpack" "^2.3.1" + "webpack-sources" "^3.2.3" + +"websocket-driver@^0.7.4", "websocket-driver@>=0.5.1": + "integrity" "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==" + "resolved" "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" + "version" "0.7.4" + dependencies: + "http-parser-js" ">=0.5.1" + "safe-buffer" ">=5.1.0" + "websocket-extensions" ">=0.1.1" + +"websocket-extensions@>=0.1.1": + "integrity" "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + "resolved" "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" + "version" "0.1.4" + +"whatwg-encoding@^1.0.5": + "integrity" "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==" + "resolved" "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "iconv-lite" "0.4.24" + +"whatwg-fetch@>=0.10.0": + "integrity" "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" + "resolved" "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz" + "version" "3.6.2" + +"whatwg-mimetype@^2.3.0": + "integrity" "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + "resolved" "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" + "version" "2.3.0" + +"whatwg-mimetype@^3.0.0": + "integrity" "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==" + "resolved" "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz" + "version" "3.0.0" + +"whatwg-url@^11.0.0": + "integrity" "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz" + "version" "11.0.0" + dependencies: + "tr46" "^3.0.0" + "webidl-conversions" "^7.0.0" + +"whatwg-url@^5.0.0": + "integrity" "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "tr46" "~0.0.3" + "webidl-conversions" "^3.0.0" + +"whatwg-url@^7.0.0": + "integrity" "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz" + "version" "7.1.0" + dependencies: + "lodash.sortby" "^4.7.0" + "tr46" "^1.0.1" + "webidl-conversions" "^4.0.2" + +"whatwg-url@^8.0.0", "whatwg-url@^8.5.0": + "integrity" "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" + "version" "8.7.0" + dependencies: + "lodash" "^4.7.0" + "tr46" "^2.1.0" + "webidl-conversions" "^6.1.0" + +"whatwg-url@^8.4.0": + "integrity" "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" + "version" "8.7.0" + dependencies: + "lodash" "^4.7.0" + "tr46" "^2.1.0" + "webidl-conversions" "^6.1.0" + +"whatwg-url@^9.0.0": + "integrity" "sha512-CQ0UcrPHyomtlOCot1TL77WyMIm/bCwrJ2D6AOKGwEczU9EpyoqAokfqrf/MioU9kHcMsmJZcg1egXix2KYEsA==" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-9.1.0.tgz" + "version" "9.1.0" + dependencies: + "tr46" "^2.1.0" + "webidl-conversions" "^6.1.0" + +"which-boxed-primitive@^1.0.1", "which-boxed-primitive@^1.0.2": + "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" + "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "is-bigint" "^1.0.1" + "is-boolean-object" "^1.1.0" + "is-number-object" "^1.0.4" + "is-string" "^1.0.5" + "is-symbol" "^1.0.3" + +"which-collection@^1.0.1": + "integrity" "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==" + "resolved" "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "is-map" "^2.0.1" + "is-set" "^2.0.1" + "is-weakmap" "^2.0.1" + "is-weakset" "^2.0.1" + +"which-module@^2.0.0": + "integrity" "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "resolved" "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" + "version" "2.0.0" + +"which-typed-array@^1.1.2": + "integrity" "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==" + "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz" + "version" "1.1.7" + dependencies: + "available-typed-arrays" "^1.0.5" + "call-bind" "^1.0.2" + "es-abstract" "^1.18.5" + "foreach" "^2.0.5" + "has-tostringtag" "^1.0.0" + "is-typed-array" "^1.1.7" + +"which@^1.1.1": + "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" + "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + "version" "1.3.1" + dependencies: + "isexe" "^2.0.0" + +"which@^1.2.9": + "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" + "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + "version" "1.3.1" + dependencies: + "isexe" "^2.0.0" + +"which@^1.3.1": + "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" + "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + "version" "1.3.1" + dependencies: + "isexe" "^2.0.0" + +"which@^2.0.1", "which@^2.0.2": + "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" + "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "isexe" "^2.0.0" + +"wide-align@^1.1.0", "wide-align@^1.1.2": + "integrity" "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==" + "resolved" "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" + "version" "1.1.5" + dependencies: + "string-width" "^1.0.2 || 2 || 3 || 4" + +"widest-line@^3.1.0": + "integrity" "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==" + "resolved" "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "string-width" "^4.0.0" + +"wikipedia@^1.1.6": + "integrity" "sha512-ViwcPGccpK+imOOz8s5cYfsRVarw0ylb8QNZF+OHEztiQ6wxhs+nXjSuwv+wgKyn7c4eGZ7iRfw5EWIi9FTsMA==" + "resolved" "https://registry.npmjs.org/wikipedia/-/wikipedia-1.1.8.tgz" + "version" "1.1.8" + dependencies: + "infobox-parser" "^3.4.1" + "node-fetch" "^2.6.1" + +"wildcard@^2.0.0": + "integrity" "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" + "resolved" "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz" + "version" "2.0.0" + +"wkx@^0.5.0": + "integrity" "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==" + "resolved" "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz" + "version" "0.5.0" + dependencies: + "@types/node" "*" + +"word-wrap@^1.2.3", "word-wrap@~1.2.3": + "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + "version" "1.2.3" + +"wordnet-db@^3.1.11": + "integrity" "sha512-zVyFsvE+mq9MCmwXUWHIcpfbrHHClZWZiVOzKSxNJruIcFn2RbY55zkhiAMMxM8zCVSmtNiViq8FsAZSFpMYag==" + "resolved" "https://registry.npmjs.org/wordnet-db/-/wordnet-db-3.1.14.tgz" + "version" "3.1.14" + +"wordwrap@^1.0.0": + "integrity" "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + "resolved" "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" + "version" "1.0.0" + +"wordwrapjs@^4.0.0": + "integrity" "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==" + "resolved" "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "reduce-flatten" "^2.0.0" + "typical" "^5.2.0" + +"worker-farm@^1.7.0": + "integrity" "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==" + "resolved" "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz" + "version" "1.7.0" + dependencies: + "errno" "~0.1.7" + +"wrap-ansi@^5.1.0": + "integrity" "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "ansi-styles" "^3.2.0" + "string-width" "^3.0.0" + "strip-ansi" "^5.0.0" + +"wrap-ansi@^6.2.0": + "integrity" "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "ansi-styles" "^4.0.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + +"wrap-ansi@^7.0.0": + "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + +"wrappy@1": + "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "version" "1.0.2" + +"write-file-atomic@^2.4.2": + "integrity" "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==" + "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "graceful-fs" "^4.1.11" + "imurmurhash" "^0.1.4" + "signal-exit" "^3.0.2" + +"write-file-atomic@^3.0.0", "write-file-atomic@^3.0.3": + "integrity" "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==" + "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" + "version" "3.0.3" + dependencies: + "imurmurhash" "^0.1.4" + "is-typedarray" "^1.0.0" + "signal-exit" "^3.0.2" + "typedarray-to-buffer" "^3.1.5" + +"write-json-file@^3.2.0": + "integrity" "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==" + "resolved" "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "detect-indent" "^5.0.0" + "graceful-fs" "^4.1.15" + "make-dir" "^2.1.0" + "pify" "^4.0.1" + "sort-keys" "^2.0.0" + "write-file-atomic" "^2.4.2" + +"write-json-file@^4.3.0": + "integrity" "sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==" + "resolved" "https://registry.npmjs.org/write-json-file/-/write-json-file-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "detect-indent" "^6.0.0" + "graceful-fs" "^4.1.15" + "is-plain-obj" "^2.0.0" + "make-dir" "^3.0.0" + "sort-keys" "^4.0.0" + "write-file-atomic" "^3.0.0" + +"write-pkg@^4.0.0": + "integrity" "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==" + "resolved" "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "sort-keys" "^2.0.0" + "type-fest" "^0.4.1" + "write-json-file" "^3.2.0" + +"write@1.0.3": + "integrity" "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==" + "resolved" "https://registry.npmjs.org/write/-/write-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "mkdirp" "^0.5.1" + +"ws@^3.3.1": + "integrity" "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==" + "resolved" "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz" + "version" "3.3.3" + dependencies: + "async-limiter" "~1.0.0" + "safe-buffer" "~5.1.0" + "ultron" "~1.1.0" + +"ws@^7.0.0": + "integrity" "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==" + "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz" + "version" "7.5.7" + +"ws@^7.2.3": + "integrity" "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==" + "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz" + "version" "7.5.7" + +"ws@^7.3.1": + "integrity" "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==" + "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz" + "version" "7.5.7" + +"ws@^7.4.6": + "integrity" "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==" + "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz" + "version" "7.5.7" + +"ws@^8.0.0", "ws@^8.4.0", "ws@^8.4.2", "ws@^8.5.0": + "integrity" "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==" + "resolved" "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz" + "version" "8.5.0" + +"ws@~7.4.0": + "integrity" "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" + "resolved" "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz" + "version" "7.4.6" + +"ws@~8.2.3": + "integrity" "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" + "resolved" "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz" + "version" "8.2.3" + +"ws@8.2.3": + "integrity" "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" + "resolved" "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz" + "version" "8.2.3" + +"xdg-basedir@^4.0.0": + "integrity" "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + "resolved" "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" + "version" "4.0.0" + +"xml-name-validator@^3.0.0": + "integrity" "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + "resolved" "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" + "version" "3.0.0" + +"xml2js@0.4.19": + "integrity" "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==" + "resolved" "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz" + "version" "0.4.19" + dependencies: + "sax" ">=0.6.0" + "xmlbuilder" "~9.0.1" + +"xmlbuilder@^13.0.2": + "integrity" "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==" + "resolved" "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz" + "version" "13.0.2" + +"xmlbuilder@~9.0.1": + "integrity" "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + "resolved" "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz" + "version" "9.0.7" + +"xmlchars@^2.2.0": + "integrity" "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + "resolved" "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" + "version" "2.2.0" + +"xmlhttprequest-ssl@~2.0.0": + "integrity" "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" + "resolved" "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz" + "version" "2.0.0" + +"xregexp@2.0.0": + "integrity" "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=" + "resolved" "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz" + "version" "2.0.0" + +"xtend@^4.0.0", "xtend@~4.0.1": + "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + "version" "4.0.2" + +"xvfb@0.4.0": + "integrity" "sha512-g55AbjcBL4Bztfn7kiUrR0ne8mMUsFODDJ+HFGf5OuHJqKKccpExX2Qgn7VF2eImw1eoh6+riXHser1J4agrFA==" + "resolved" "https://registry.npmjs.org/xvfb/-/xvfb-0.4.0.tgz" + "version" "0.4.0" + optionalDependencies: + "sleep" "6.1.0" + +"y18n@^4.0.0": + "integrity" "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + "resolved" "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + "version" "4.0.3" + +"y18n@^5.0.5": + "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + "version" "5.0.8" + +"yallist@^2.0.0": + "integrity" "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" + "version" "2.1.2" + +"yallist@^2.1.2": + "integrity" "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" + "version" "2.1.2" + +"yallist@^3.0.0", "yallist@^3.1.1": + "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + "version" "3.1.1" + +"yallist@^3.0.2": + "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + "version" "3.1.1" + +"yallist@^4.0.0", "yallist@4.0.0": + "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + "version" "4.0.0" + +"yaml-ast-parser@0.0.43": + "integrity" "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==" + "resolved" "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz" + "version" "0.0.43" + +"yaml@^1.10.0", "yaml@^1.10.2", "yaml@^1.7.2": + "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + "version" "1.10.2" + +"yamljs@0.3.0": + "integrity" "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==" + "resolved" "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz" + "version" "0.3.0" + dependencies: + "argparse" "^1.0.7" + "glob" "^7.0.5" + +"yargs-parser@^13.1.2": + "integrity" "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz" + "version" "13.1.2" + dependencies: + "camelcase" "^5.0.0" + "decamelize" "^1.2.0" + +"yargs-parser@^18.1.2": + "integrity" "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" + "version" "18.1.3" + dependencies: + "camelcase" "^5.0.0" + "decamelize" "^1.2.0" + +"yargs-parser@^20.2.2", "yargs-parser@^20.2.3", "yargs-parser@20.x": + "integrity" "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + "version" "20.2.9" + +"yargs-parser@20.2.4": + "integrity" "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" + "version" "20.2.4" + +"yargs@^13.2.4": + "integrity" "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==" + "resolved" "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz" + "version" "13.3.2" + dependencies: + "cliui" "^5.0.0" + "find-up" "^3.0.0" + "get-caller-file" "^2.0.1" + "require-directory" "^2.1.1" + "require-main-filename" "^2.0.0" + "set-blocking" "^2.0.0" + "string-width" "^3.0.0" + "which-module" "^2.0.0" + "y18n" "^4.0.0" + "yargs-parser" "^13.1.2" + +"yargs@^15.4.1": + "integrity" "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==" + "resolved" "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" + "version" "15.4.1" + dependencies: + "cliui" "^6.0.0" + "decamelize" "^1.2.0" + "find-up" "^4.1.0" + "get-caller-file" "^2.0.1" + "require-directory" "^2.1.1" + "require-main-filename" "^2.0.0" + "set-blocking" "^2.0.0" + "string-width" "^4.2.0" + "which-module" "^2.0.0" + "y18n" "^4.0.0" + "yargs-parser" "^18.1.2" + +"yargs@^16.1.0", "yargs@^16.2.0": + "integrity" "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==" + "resolved" "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" + "version" "16.2.0" + dependencies: + "cliui" "^7.0.2" + "escalade" "^3.1.1" + "get-caller-file" "^2.0.5" + "require-directory" "^2.1.1" + "string-width" "^4.2.0" + "y18n" "^5.0.5" + "yargs-parser" "^20.2.2" + +"yargs@^17.0.1": + "integrity" "sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ==" + "resolved" "https://registry.npmjs.org/yargs/-/yargs-17.0.1.tgz" + "version" "17.0.1" + dependencies: + "cliui" "^7.0.2" + "escalade" "^3.1.1" + "get-caller-file" "^2.0.5" + "require-directory" "^2.1.1" + "string-width" "^4.2.0" + "y18n" "^5.0.5" + "yargs-parser" "^20.2.2" + +"yauzl@^2.10.0": + "integrity" "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=" + "resolved" "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" + "version" "2.10.0" + dependencies: + "buffer-crc32" "~0.2.3" + "fd-slicer" "~1.1.0" + +"ylru@^1.2.0": + "integrity" "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==" + "resolved" "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz" + "version" "1.3.2" + +"yn@3.1.1": + "integrity" "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" + "resolved" "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + "version" "3.1.1" + +"yocto-queue@^0.1.0": + "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + "version" "0.1.0" + +"z-schema@^5.0.1": + "integrity" "sha512-sGvEcBOTNum68x9jCpCVGPFJ6mWnkD0YxOcddDlJHRx3tKdB2q8pCHExMVZo/AV/6geuVJXG7hljDaWG8+5GDw==" + "resolved" "https://registry.npmjs.org/z-schema/-/z-schema-5.0.3.tgz" + "version" "5.0.3" + dependencies: + "lodash.get" "^4.4.2" + "lodash.isequal" "^4.5.0" + "validator" "^13.7.0" + optionalDependencies: + "commander" "^2.20.3" + +"zod@^3.11.6": + "integrity" "sha512-U9BFLb2GO34Sfo9IUYp0w3wJLlmcyGoMd75qU9yf+DrdGA4kEx6e+l9KOkAlyUO0PSQzZCa3TR4qVlcmwqSDuw==" + "resolved" "https://registry.npmjs.org/zod/-/zod-3.14.4.tgz" + "version" "3.14.4"