├── .editorconfig ├── .env.example ├── .eslintignore ├── .eslintrc.json ├── .github ├── FUNDING.yml └── workflows │ ├── npm-publish.yml │ └── npm-test.yml ├── .gitignore ├── .npmrc ├── .vscode └── launch.json ├── LICENSE ├── README.md ├── bin └── www ├── bot └── index.js ├── calendar-helper ├── index.js └── index.test.js ├── images └── demo.gif ├── index.js ├── package.json └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | quote_type = single 12 | 13 | [*.md] 14 | trim_trailing_whitespace = false 15 | 16 | [*.txt] 17 | trim_trailing_whitespace = false 18 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | CALENDAR_BOT_TOKEN= -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "commonjs": true, 5 | "es6": true, 6 | "node": true 7 | }, 8 | "parserOptions": { 9 | "sourceType": "module", 10 | "ecmaVersion": 2020 11 | }, 12 | "rules": { 13 | "no-const-assign": "warn", 14 | "no-this-before-super": "warn", 15 | "no-undef": "warn", 16 | "no-unreachable": "warn", 17 | "no-unused-vars": "warn", 18 | "constructor-super": "warn", 19 | "valid-typeof": "warn" 20 | }, 21 | "overrides": [ 22 | { 23 | "files": ["**/*.test.js"], 24 | "env": { 25 | "jest": true 26 | } 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: gianlucaparadise -------------------------------------------------------------------------------- /.github/workflows/npm-publish.yml: -------------------------------------------------------------------------------- 1 | # This workflow will run tests using node and then publish a package to GitHub Packages when a release is created 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages 3 | 4 | name: Node.js Package 5 | 6 | on: 7 | release: 8 | types: [created] 9 | 10 | jobs: 11 | build: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v2 15 | - uses: actions/setup-node@v2 16 | with: 17 | node-version: 16 18 | - run: yarn 19 | 20 | publish-npm: 21 | needs: build 22 | runs-on: ubuntu-latest 23 | steps: 24 | - uses: actions/checkout@v2 25 | - uses: actions/setup-node@v2 26 | with: 27 | node-version: 16 28 | registry-url: https://registry.npmjs.org/ 29 | scope: '@gianlucaparadise' 30 | - run: yarn 31 | - run: yarn test 32 | - run: yarn publish 33 | env: 34 | NODE_AUTH_TOKEN: ${{secrets.npm_token}} 35 | -------------------------------------------------------------------------------- /.github/workflows/npm-test.yml: -------------------------------------------------------------------------------- 1 | # This workflow will run tests using node 2 | # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs 3 | 4 | name: Node.js Test 5 | 6 | on: 7 | push: 8 | branches: [master] 9 | pull_request: 10 | branches: [master] 11 | 12 | jobs: 13 | test: 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - uses: actions/checkout@v3 18 | - name: Use Node.js 16 19 | uses: actions/setup-node@v3 20 | with: 21 | node-version: 16 22 | - run: yarn 23 | - run: yarn test 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (http://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # Typescript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | registry="https://registry.yarnpkg.com" 2 | email=gianlucaparadise@gmail.com 3 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible Node.js debug attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "node", 9 | "request": "launch", 10 | "name": "Launch Program", 11 | "program": "${workspaceRoot}/bot/index.js" 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # telegraf-calendar-telegram 2 | Inline calendar for Telegram bots using Telegraf framework. 3 | You can contact [@CalendarTelegrafBot](https://t.me/CalendarTelegrafBot) to test the calendar. 4 | 5 | Description 6 | ================ 7 | Using this simple inline calendar you can allow your Telegram bot to ask dates. This library is built using [Telegraf](https://github.com/telegraf/telegraf) Framework. 8 | 9 | ![Demo](https://github.com/gianlucaparadise/telegraf-calendar-telegram/blob/master/images/demo.gif "Demo") 10 | 11 | Usage 12 | ================ 13 | Installation 14 | --------------- 15 | 16 | ``` 17 | npm i telegraf-calendar-telegram --save 18 | ``` 19 | or 20 | ``` 21 | yarn add telegraf-calendar-telegram 22 | ``` 23 | 24 | Basic usage 25 | --------------- 26 | ```javascript 27 | // create the bot 28 | const bot = new Telegraf(process.env.CALENDAR_BOT_TOKEN); 29 | // instantiate the calendar 30 | const calendar = new Calendar(bot); 31 | 32 | // listen for the selected date event 33 | calendar.setDateListener((context, date) => context.reply(date)); 34 | // retreive the calendar HTML 35 | bot.command("calendar", context => context.reply("Here you are", calendar.getCalendar())); 36 | ``` 37 | 38 | This creates a calendar with the default options: you will have an english calendar with Sunday as starting week day. 39 | 40 | Customization 41 | --------------- 42 | When you instantiate the calendar, you can pass an option object: 43 | 44 | ```javascript 45 | const calendar = new Calendar(bot, { 46 | startWeekDay: 1, 47 | weekDayNames: ["L", "M", "M", "G", "V", "S", "D"], 48 | monthNames: [ 49 | "Gen", "Feb", "Mar", "Apr", "Mag", "Giu", 50 | "Lug", "Ago", "Set", "Ott", "Nov", "Dic" 51 | ] 52 | }); 53 | ``` 54 | 55 | This creates an italian calendar. 56 | 57 | Default options: 58 | 59 | ```javascript 60 | { 61 | startWeekDay: 0, 62 | weekDayNames: ["S", "M", "T", "W", "T", "F", "S"], 63 | monthNames: [ 64 | "Jan", "Feb", "Mar", "Apr", "May", "Jun", 65 | "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" 66 | ], 67 | minDate: null, 68 | maxDate: null, 69 | ignoreWeekDays: [], 70 | shortcutButtons: [], 71 | hideIgnoredWeeks: false 72 | } 73 | ``` 74 | 75 | The `options` object has the following properties: 76 | 77 | - `startWeekDay`: first day of the week, where 0 is Sunday 78 | - `weekDayNames`: week day names, where the first element is `startWeekDay` name 79 | - `monthNames`: month names 80 | - `minDate`: minimum selectable date (there is a setter on Calendar object, too) 81 | - `maxDate`: maximum selectable date (there is a setter on Calendar object, too) 82 | - `ignoreWeekDays`: numbers of week days that can't be selected by user (E.g. when `startWeekDay` is 1, 5 means saturday and 6 means sunday) 83 | - `shortcutButtons`: list of additional buttons data, which will be displayed at the top of calendar. You can add a button with: `shortcutButtons: [{"label": "Today", "action": "ping"}]` and you can handle it with `bot.action("ping", context => context.reply("pong"))` 84 | - `hideIgnoredWeeks`: hide a week if all days of a week can't be selected 85 | 86 | 87 | Example 88 | ----------- 89 | 90 | ## Polling 91 | 92 | You can find [here](./bot/index.js) the code for a simple bot that can run locally using polling. 93 | 94 | ## Webhooks 95 | 96 | You can check [this](https://github.com/gianlucaparadise/telegraf-calendar-telegram-bot/blob/main/src/bot-setup.js) repository for a bot that is using webhooks and is deployed on Vercel. You can contact [@CalendarTelegrafBot](https://t.me/CalendarTelegrafBot) to test this bot. 97 | 98 | Local testing 99 | ----------- 100 | * Create a Telegram bot using [BotFather](https://core.telegram.org/bots#6-botfather) to get an API token 101 | * Clone this repository 102 | * Run `yarn` 103 | * Run `cp .env.example .env` to create the env file 104 | * Edit the _.env_ file and set the API token of your bot to `CALENDAR_BOT_TOKEN` -------------------------------------------------------------------------------- /bin/www: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var bot = require('../bot'); 3 | var http = require('http'); 4 | 5 | var server = http.createServer(function (req, res) { 6 | res.writeHead(200); 7 | res.end('Calendar Bot is up'); 8 | }); 9 | server.listen(process.env.CALENDAR_BOT_PORT || '3000'); 10 | -------------------------------------------------------------------------------- /bot/index.js: -------------------------------------------------------------------------------- 1 | require('dotenv').config(); 2 | 3 | const Calendar = require('../'); 4 | 5 | const { Telegraf } = require('telegraf'); 6 | // create the bot 7 | const bot = new Telegraf(process.env.CALENDAR_BOT_TOKEN); 8 | 9 | // instantiate the calendar 10 | const calendar = new Calendar(bot, { 11 | startWeekDay: 1, 12 | weekDayNames: ['L', 'M', 'M', 'G', 'V', 'S', 'D'], 13 | monthNames: [ 14 | 'Gen', 15 | 'Feb', 16 | 'Mar', 17 | 'Apr', 18 | 'Mag', 19 | 'Giu', 20 | 'Lug', 21 | 'Ago', 22 | 'Set', 23 | 'Ott', 24 | 'Nov', 25 | 'Dic', 26 | ], 27 | }); 28 | 29 | // listen for the selected date event 30 | calendar.setDateListener((context, date) => context.reply(date)); 31 | // retrieve the calendar HTML 32 | bot.command('calendar', (context) => { 33 | const today = new Date(); 34 | const minDate = new Date(); 35 | minDate.setMonth(today.getMonth() - 2); 36 | const maxDate = new Date(); 37 | maxDate.setMonth(today.getMonth() + 2); 38 | maxDate.setDate(today.getDate()); 39 | 40 | context.reply( 41 | 'Here you are', 42 | calendar.setMinDate(minDate).setMaxDate(maxDate).getCalendar() 43 | ); 44 | }); 45 | 46 | bot.catch((err) => { 47 | console.error('Error in bot:', err); 48 | }); 49 | 50 | bot.startPolling(); 51 | 52 | module.exports = bot; 53 | -------------------------------------------------------------------------------- /calendar-helper/index.js: -------------------------------------------------------------------------------- 1 | const { Markup } = require('telegraf'); 2 | 3 | class CalendarHelper { 4 | constructor(options) { 5 | this.options = Object.assign( 6 | { 7 | startWeekDay: 0, 8 | weekDayNames: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], 9 | monthNames: [ 10 | 'Jan', 11 | 'Feb', 12 | 'Mar', 13 | 'Apr', 14 | 'May', 15 | 'Jun', 16 | 'Jul', 17 | 'Aug', 18 | 'Sep', 19 | 'Oct', 20 | 'Nov', 21 | 'Dec', 22 | ], 23 | minDate: null, 24 | maxDate: null, 25 | ignoreWeekDays: [], 26 | shortcutButtons: [], 27 | hideIgnoredWeeks: false, 28 | }, 29 | options 30 | ); 31 | } 32 | 33 | getCalendarMarkup(date) { 34 | return Markup.inlineKeyboard(this.getPage(date)); 35 | } 36 | 37 | setMinDate(date) { 38 | if (this.options.maxDate && date > this.options.maxDate) { 39 | throw "Min date can't be greater than max date"; 40 | } 41 | this.options.minDate = date; 42 | } 43 | 44 | setMaxDate(date) { 45 | if (this.options.minDate && date < this.options.minDate) { 46 | throw "Max date can't be lower than min date"; 47 | } 48 | this.options.maxDate = date; 49 | } 50 | 51 | setWeekDayNames(names) { 52 | this.options.weekDayNames = names; 53 | } 54 | 55 | setMonthNames(names) { 56 | this.options.monthNames = names; 57 | } 58 | 59 | setStartWeekDay(startDay) { 60 | this.options.startWeekDay = startDay; 61 | } 62 | 63 | setIgnoreWeekDays(ignoreWeekDays) { 64 | this.options.ignoreWeekDays = ignoreWeekDays; 65 | } 66 | 67 | setShortcutButtons(shortcutButtons) { 68 | this.options.shortcutButtons = shortcutButtons; 69 | } 70 | 71 | setHideIgnoredWeeks(hideIgnoredWeeks) { 72 | this.options.hideIgnoredWeeks = hideIgnoredWeeks; 73 | } 74 | 75 | addShortcutButtons(page) { 76 | let menuShortcutButtons = []; 77 | 78 | for (let shortcutButton of this.options.shortcutButtons) { 79 | let buttonLabel = shortcutButton.label; 80 | let buttonAction = shortcutButton.action; 81 | 82 | menuShortcutButtons.push( 83 | Markup.button.callback(buttonLabel, buttonAction) 84 | ); 85 | } 86 | 87 | page.push(menuShortcutButtons); 88 | } 89 | 90 | addHeader(page, date) { 91 | let monthName = this.options.monthNames[date.getMonth()]; 92 | let year = date.getFullYear(); 93 | 94 | let header = []; 95 | 96 | if (this.isInMinMonth(date)) { 97 | // this is min month, I push an empty button 98 | header.push( 99 | Markup.button.callback(' ', 'calendar-telegram-ignore-minmonth') 100 | ); 101 | } else { 102 | header.push( 103 | Markup.button.callback( 104 | '<', 105 | 'calendar-telegram-prev-' + CalendarHelper.toYyyymmdd(date) 106 | ) 107 | ); 108 | } 109 | 110 | header.push( 111 | Markup.button.callback( 112 | monthName + ' ' + year, 113 | 'calendar-telegram-ignore-monthname' 114 | ) 115 | ); 116 | 117 | if (this.isInMaxMonth(date)) { 118 | // this is max month, I push an empty button 119 | header.push( 120 | Markup.button.callback(' ', 'calendar-telegram-ignore-maxmonth') 121 | ); 122 | } else { 123 | header.push( 124 | Markup.button.callback( 125 | '>', 126 | 'calendar-telegram-next-' + CalendarHelper.toYyyymmdd(date) 127 | ) 128 | ); 129 | } 130 | 131 | page.push(header); 132 | 133 | page.push( 134 | this.options.weekDayNames.map((e, i) => 135 | Markup.button.callback(e, 'calendar-telegram-ignore-weekday' + i) 136 | ) 137 | ); 138 | } 139 | 140 | addDays(page, date) { 141 | let maxMonthDay = new Date( 142 | date.getFullYear(), 143 | date.getMonth() + 1, 144 | 0 145 | ).getDate(); 146 | let maxDay = this.getMaxDay(date); 147 | let minDay = this.getMinDay(date); 148 | 149 | let daysOfWeekProcessed = 0, 150 | daysOfWeekIgnored = 0; 151 | 152 | let currentRow = CalendarHelper.buildFillerRow('firstRow-'); 153 | for (var d = 1; d <= maxMonthDay; d++) { 154 | date.setDate(d); 155 | 156 | let weekDay = this.normalizeWeekDay(date.getDay()); 157 | //currentRow[weekDay] = CalendarHelper.toYyyymmdd(date); 158 | if (d < minDay || d > maxDay) { 159 | if (!this.options.hideIgnoredWeeks) { 160 | currentRow[weekDay] = Markup.button.callback( 161 | CalendarHelper.strikethroughText(d.toString()), 162 | 'calendar-telegram-ignore-' + CalendarHelper.toYyyymmdd(date) 163 | ); 164 | } 165 | 166 | daysOfWeekIgnored++; 167 | } else if (this.options.ignoreWeekDays.includes(weekDay)) { 168 | currentRow[weekDay] = Markup.button.callback( 169 | CalendarHelper.strikethroughText(d.toString()), 170 | 'calendar-telegram-ignore-' + CalendarHelper.toYyyymmdd(date) 171 | ); 172 | 173 | daysOfWeekIgnored++; 174 | } else { 175 | currentRow[weekDay] = Markup.button.callback( 176 | d.toString(), 177 | 'calendar-telegram-date-' + CalendarHelper.toYyyymmdd(date) 178 | ); 179 | } 180 | 181 | daysOfWeekProcessed++; 182 | 183 | if (weekDay == 6 || d == maxMonthDay) { 184 | if ( 185 | !this.options.hideIgnoredWeeks || 186 | daysOfWeekProcessed !== daysOfWeekIgnored 187 | ) { 188 | page.push(currentRow); 189 | } 190 | // I'm at the end of the row: I create a new filler row 191 | currentRow = CalendarHelper.buildFillerRow('lastRow-'); 192 | 193 | daysOfWeekProcessed = 0; 194 | daysOfWeekIgnored = 0; 195 | } 196 | } 197 | } 198 | 199 | getPage(inputDate) { 200 | // I use a math clamp to check if the input date is in range 201 | let dateNumber = 202 | this.options.minDate || this.options.maxDate 203 | ? Math.min( 204 | Math.max(inputDate, this.options.minDate), 205 | this.options.maxDate 206 | ) 207 | : null; 208 | let date = dateNumber ? new Date(dateNumber) : inputDate; 209 | 210 | let page = []; 211 | 212 | const shortcutButtons = this.options.shortcutButtons; 213 | if (shortcutButtons && shortcutButtons.length > 0) { 214 | this.addShortcutButtons(page); 215 | } 216 | this.addHeader(page, date); 217 | this.addDays(page, date); 218 | 219 | return page; 220 | } 221 | 222 | normalizeWeekDay(weekDay) { 223 | let result = weekDay - this.options.startWeekDay; 224 | if (result < 0) result += 7; 225 | return result; 226 | } 227 | 228 | /** 229 | * Calculates min day depending on input date and minDate in options 230 | * @param {*Date} date Test date 231 | * @returns int 232 | */ 233 | getMinDay(date) { 234 | let minDay; 235 | if (this.isInMinMonth(date)) { 236 | minDay = this.options.minDate.getDate(); 237 | } else { 238 | minDay = 1; 239 | } 240 | 241 | return minDay; 242 | } 243 | 244 | /** 245 | * Calculates max day depending on input date and maxDate in options 246 | * @param {*Date} date Test date 247 | * @returns int 248 | */ 249 | getMaxDay(date) { 250 | let maxDay; 251 | if (this.isInMaxMonth(date)) { 252 | maxDay = this.options.maxDate.getDate(); 253 | } else { 254 | maxDay = new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(); 255 | } 256 | 257 | return maxDay; 258 | } 259 | 260 | static toYyyymmdd(date) { 261 | let mm = date.getMonth() + 1; // getMonth() is zero-based 262 | let dd = date.getDate(); 263 | 264 | return [ 265 | date.getFullYear(), 266 | (mm > 9 ? '' : '0') + mm, 267 | (dd > 9 ? '' : '0') + dd, 268 | ].join('-'); 269 | } 270 | 271 | /** 272 | * Check if input date is in same year and month as min date 273 | */ 274 | isInMinMonth(date) { 275 | return CalendarHelper.isSameMonth(this.options.minDate, date); 276 | } 277 | 278 | /** 279 | * Check if input date is in same year and month as max date 280 | */ 281 | isInMaxMonth(date) { 282 | return CalendarHelper.isSameMonth(this.options.maxDate, date); 283 | } 284 | 285 | /** 286 | * Check if myDate is in same year and month as testDate 287 | * @param {*Date} myDate input date 288 | * @param {*Date} testDate test date 289 | * @returns bool 290 | */ 291 | static isSameMonth(myDate, testDate) { 292 | if (!myDate) return false; 293 | 294 | testDate = testDate || new Date(); 295 | 296 | return ( 297 | myDate.getFullYear() === testDate.getFullYear() && 298 | myDate.getMonth() === testDate.getMonth() 299 | ); 300 | } 301 | 302 | /** 303 | * This uses unicode to draw strikethrough on text 304 | * @param {*String} text text to modify 305 | */ 306 | static strikethroughText(text) { 307 | return text.split('').reduce(function (acc, char) { 308 | return acc + char + '\u0336'; 309 | }, ''); 310 | } 311 | 312 | /** 313 | * Builds an array of seven ignored callback buttons 314 | * @param {*object} m Telegraf Markup object 315 | * @param {*String} prefix String to be added before the element index 316 | */ 317 | static buildFillerRow(prefix) { 318 | let buttonKey = 'calendar-telegram-ignore-filler-' + prefix; 319 | return Array.from({ length: 7 }, (v, k) => 320 | Markup.button.callback(' ', buttonKey + k) 321 | ); 322 | } 323 | } 324 | 325 | module.exports = CalendarHelper; 326 | -------------------------------------------------------------------------------- /calendar-helper/index.test.js: -------------------------------------------------------------------------------- 1 | const CalendarHelper = require('.'); 2 | 3 | jest.mock('telegraf', () => ({ 4 | Markup: { 5 | button: { 6 | callback: (text, callback_data) => ({ text, callback_data }), 7 | }, 8 | }, 9 | })); 10 | 11 | const isFillerButton = (btn, prefixAndIndex) => { 12 | return ( 13 | btn.text === ' ' && 14 | btn.callback_data === `calendar-telegram-ignore-filler-${prefixAndIndex}` 15 | ); 16 | }; 17 | 18 | describe('Calendar Helper', () => { 19 | describe('constructor and setters tests', () => { 20 | it('should parse basic options correctly', () => { 21 | const minDate = new Date('2020-02-03'); 22 | const maxDate = new Date('2020-11-12'); 23 | 24 | const options = { 25 | startWeekDay: 3, 26 | weekDayNames: ['A', 'B', 'C'], 27 | monthNames: ['D', 'E', 'F'], 28 | minDate: minDate, 29 | maxDate: maxDate, 30 | ignoreWeekDays: [2], 31 | hideIgnoredWeeks: true, 32 | shortcutButtons: [{ label: 'Today', action: 'ping' }], 33 | }; 34 | const helper = new CalendarHelper(options); 35 | 36 | expect(helper.options).toBeTruthy(); 37 | expect(helper.options.startWeekDay).toBe(options.startWeekDay); 38 | expect(helper.options.weekDayNames).toBe(options.weekDayNames); 39 | expect(helper.options.monthNames).toBe(options.monthNames); 40 | expect(helper.options.minDate).toBe(options.minDate); 41 | expect(helper.options.maxDate).toBe(options.maxDate); 42 | expect(helper.options.ignoreWeekDays).toBe(options.ignoreWeekDays); 43 | expect(helper.options.hideIgnoredWeeks).toBe(options.hideIgnoredWeeks); 44 | 45 | expect(helper.options.shortcutButtons).toHaveLength(1); 46 | expect(helper.options.shortcutButtons[0].action).toBe('ping'); 47 | }); 48 | 49 | it('should check valid min date', () => { 50 | const maxDate = new Date('2020-11-12'); 51 | const helper = new CalendarHelper({ 52 | maxDate: maxDate, 53 | }); 54 | 55 | const validMinDate = new Date('2020-02-03'); 56 | helper.setMinDate(validMinDate); 57 | expect(helper.options.minDate).toBe(validMinDate); 58 | 59 | const invalidMinDate = new Date('2021-02-03'); 60 | expect(() => helper.setMinDate(invalidMinDate)).toThrow(); 61 | }); 62 | 63 | it('should check valid max date', () => { 64 | const minDate = new Date('2020-02-03'); 65 | const helper = new CalendarHelper({ 66 | minDate: minDate, 67 | }); 68 | 69 | const validMaxDate = new Date('2020-11-12'); 70 | helper.setMaxDate(validMaxDate); 71 | expect(helper.options.maxDate).toBe(validMaxDate); 72 | 73 | const invalidMaxDate = new Date('2020-01-12'); 74 | expect(() => helper.setMaxDate(invalidMaxDate)).toThrow(); 75 | }); 76 | }); 77 | 78 | describe('builders tests', () => { 79 | it('should add shortcut buttons to on top of the page', () => { 80 | const options = { 81 | shortcutButtons: [{ label: 'Today', action: 'ping' }], 82 | }; 83 | const helper = new CalendarHelper(options); 84 | 85 | const page = []; 86 | helper.addShortcutButtons(page); 87 | 88 | expect(page).toHaveLength(1); 89 | 90 | const firstRow = page[0]; 91 | expect(firstRow).toHaveLength(1); 92 | 93 | { 94 | const firstShortcutButton = firstRow[0]; 95 | expect(firstShortcutButton.text).toBe('Today'); 96 | expect(firstShortcutButton.callback_data).toBe('ping'); 97 | } 98 | }); 99 | 100 | it('should build filler row', () => { 101 | const fillerRow = CalendarHelper.buildFillerRow('prefix-'); 102 | expect(fillerRow).toHaveLength(7); 103 | 104 | { 105 | const secondDay = fillerRow[1]; 106 | expect(isFillerButton(secondDay, 'prefix-1')).toBe(true); 107 | } 108 | }); 109 | 110 | it('should build header with two navigators', () => { 111 | const headerOptions = { 112 | startWeekDay: 1, 113 | weekDayNames: ['L', 'M', 'M', 'G', 'V', 'S', 'D'], 114 | monthNames: [ 115 | 'Gen', 116 | 'Feb', 117 | 'Mar', 118 | 'Apr', 119 | 'Mag', 120 | 'Giu', 121 | 'Lug', 122 | 'Ago', 123 | 'Set', 124 | 'Ott', 125 | 'Nov', 126 | 'Dic', 127 | ], 128 | }; 129 | const helper = new CalendarHelper(headerOptions); 130 | const page = []; 131 | const date = new Date('2023-01-01'); 132 | 133 | helper.addHeader(page, date); 134 | 135 | expect(page).toHaveLength(2); 136 | 137 | { 138 | const firstRow = page[0]; // Month name row, with navigators 139 | expect(firstRow).toHaveLength(3); 140 | expect(firstRow[0].text).toBe('<'); 141 | expect(firstRow[0].callback_data).toBe( 142 | 'calendar-telegram-prev-2023-01-01' 143 | ); 144 | expect(firstRow[1].text).toBe('Gen 2023'); 145 | expect(firstRow[1].callback_data).toBe( 146 | 'calendar-telegram-ignore-monthname' 147 | ); 148 | expect(firstRow[2].text).toBe('>'); 149 | expect(firstRow[2].callback_data).toBe( 150 | 'calendar-telegram-next-2023-01-01' 151 | ); 152 | } 153 | 154 | { 155 | const secondRow = page[1]; // Weekday names row 156 | expect(secondRow).toHaveLength(7); 157 | expect(secondRow[2].text).toBe('M'); 158 | expect(secondRow[2].callback_data).toBe( 159 | 'calendar-telegram-ignore-weekday2' 160 | ); 161 | } 162 | }); 163 | 164 | it('should build header on min and max month', () => { 165 | const minMaxMonthOptions = { 166 | minDate: new Date('2023-02-06'), 167 | maxDate: new Date('2023-02-27'), 168 | }; 169 | const helper = new CalendarHelper(minMaxMonthOptions); 170 | const page = []; 171 | const date = new Date('2023-02-20'); 172 | 173 | helper.addHeader(page, date); 174 | 175 | expect(page).toHaveLength(2); 176 | 177 | { 178 | const firstRow = page[0]; // Month name row, with navigators 179 | expect(firstRow).toHaveLength(3); 180 | expect(firstRow[0].text).toBe(' '); 181 | expect(firstRow[0].callback_data).toBe( 182 | 'calendar-telegram-ignore-minmonth' 183 | ); 184 | expect(firstRow[1].text).toBe('Feb 2023'); 185 | expect(firstRow[1].callback_data).toBe( 186 | 'calendar-telegram-ignore-monthname' 187 | ); 188 | expect(firstRow[2].text).toBe(' '); 189 | expect(firstRow[2].callback_data).toBe( 190 | 'calendar-telegram-ignore-maxmonth' 191 | ); 192 | } 193 | }); 194 | 195 | it('should build days page', () => { 196 | const minMaxMonthOptions = { 197 | ignoreWeekDays: [0], 198 | minDate: new Date('2023-02-05'), 199 | maxDate: new Date('2023-02-25'), 200 | }; 201 | const helper = new CalendarHelper(minMaxMonthOptions); 202 | const page = []; 203 | const date = new Date('2023-02-20'); 204 | 205 | helper.addDays(page, date); 206 | 207 | expect(page).toHaveLength(5); 208 | 209 | // February 2023 starts on wednesday and ends on tuesday 210 | // And in helper options startWeekDay is Monday 211 | { 212 | const firstRow = page[0]; 213 | expect(firstRow).toHaveLength(7); 214 | expect(isFillerButton(firstRow[0], 'firstRow-0')).toBe(true); 215 | expect(firstRow[6].callback_data).toBe( 216 | 'calendar-telegram-ignore-2023-02-04' 217 | ); 218 | } 219 | { 220 | const secondRow = page[1]; 221 | expect(secondRow).toHaveLength(7); 222 | // Sundays are ignored because ignoreWeekDays is 0 223 | expect(secondRow[0].callback_data).toBe( 224 | 'calendar-telegram-ignore-2023-02-05' 225 | ); 226 | expect(secondRow[1].text).toBe('6'); 227 | expect(secondRow[1].callback_data).toBe( 228 | 'calendar-telegram-date-2023-02-06' 229 | ); 230 | } 231 | { 232 | const lastRow = page[4]; 233 | expect(lastRow).toHaveLength(7); 234 | expect(lastRow[0].callback_data).toBe( 235 | 'calendar-telegram-ignore-2023-02-26' 236 | ); 237 | expect(isFillerButton(lastRow[6], 'lastRow-6')).toBe(true); 238 | } 239 | }); 240 | 241 | it('should build a page', () => { 242 | // TODO 243 | const options = { 244 | minDate: new Date('2023-02-02'), 245 | maxDate: new Date('2023-03-14'), 246 | shortcutButtons: [{ label: 'Today', action: 'ping' }], 247 | }; 248 | const helper = new CalendarHelper(options); 249 | const inputDate = new Date('2023-02-20'); 250 | 251 | const page = helper.getPage(inputDate); 252 | 253 | // 1 row for shortcut buttons + 2 rows for header + 5 rows for days 254 | expect(page).toHaveLength(8); 255 | 256 | { 257 | // Checking shortcut buttons row 258 | const firstRow = page[0]; 259 | expect(firstRow).toHaveLength(1); 260 | expect(firstRow[0].text).toBe('Today'); 261 | } 262 | { 263 | // Checking header rows 264 | const secondRow = page[1]; 265 | expect(secondRow).toHaveLength(3); 266 | expect(secondRow[1].text).toBe('Feb 2023'); 267 | } 268 | { 269 | // Checking days rows 270 | const lastRow = page[7]; 271 | expect(lastRow).toHaveLength(7); 272 | expect(lastRow[0].text).toBe('26'); 273 | } 274 | }); 275 | }); 276 | 277 | describe('date helpers tests', () => { 278 | it('should normalize weekday', () => { 279 | const monday = 1; 280 | const helper = new CalendarHelper({ 281 | startWeekDay: monday, 282 | }); 283 | 284 | const sunday = 0; 285 | const normalizedSunday = helper.normalizeWeekDay(sunday); 286 | expect(normalizedSunday).toBe(6); 287 | }); 288 | 289 | it('should recognize same year and month of min date', () => { 290 | const minDate = new Date('2020-02-03'); 291 | const helper = new CalendarHelper({ 292 | minDate: minDate, 293 | }); 294 | 295 | const validMinDate = new Date('2020-02-27'); 296 | expect(helper.isInMinMonth(validMinDate)).toBe(true); 297 | 298 | const invalidMinDate = new Date('2020-03-27'); 299 | expect(helper.isInMinMonth(invalidMinDate)).toBe(false); 300 | }); 301 | 302 | it('should recognize same year and month of max date', () => { 303 | const maxDate = new Date('2020-11-12'); 304 | const helper = new CalendarHelper({ 305 | maxDate: maxDate, 306 | }); 307 | 308 | const validMaxDate = new Date('2020-11-01'); 309 | expect(helper.isInMaxMonth(validMaxDate)).toBe(true); 310 | 311 | const invalidMaxDate = new Date('2020-12-01'); 312 | expect(helper.isInMaxMonth(invalidMaxDate)).toBe(false); 313 | }); 314 | 315 | it('should get min day in month', () => { 316 | const minDate = new Date('2020-02-03'); 317 | const helper = new CalendarHelper({ 318 | minDate: minDate, 319 | }); 320 | 321 | const anyMonth = new Date('2020-05-03'); 322 | expect(helper.getMinDay(anyMonth)).toBe(1); 323 | 324 | const minMonth = new Date('2020-02-20'); 325 | expect(helper.getMinDay(minMonth)).toBe(3); 326 | }); 327 | 328 | it('should get max day in month', () => { 329 | const maxDate = new Date('2020-11-12'); 330 | const helper = new CalendarHelper({ 331 | maxDate: maxDate, 332 | }); 333 | 334 | const anyMonth = new Date('2020-06-12'); 335 | expect(helper.getMaxDay(anyMonth)).toBe(30); 336 | 337 | const maxMonth = new Date('2020-11-02'); 338 | expect(helper.getMaxDay(maxMonth)).toBe(12); 339 | }); 340 | }); 341 | }); 342 | -------------------------------------------------------------------------------- /images/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gianlucaparadise/telegraf-calendar-telegram/017df18051fc884df80dfd050d7efee5cd8d9b71/images/demo.gif -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const CalendarHelper = require('./calendar-helper'); 2 | 3 | class Calendar { 4 | /** 5 | * Construct the calendar 6 | * @param {Telegraf} bot Telegraf bot instance 7 | * @param {*} options Options to configure the calendar 8 | */ 9 | constructor(bot, options) { 10 | this.bot = bot; 11 | 12 | this.helper = new CalendarHelper(options); 13 | } 14 | 15 | /** 16 | * Return Calendar Markup 17 | * @param {Date} date Starting date for the calendar. When null, 'today' is used 18 | */ 19 | getCalendar(date) { 20 | if (!date) date = new Date(); 21 | 22 | return this.helper.getCalendarMarkup(date); 23 | } 24 | 25 | /** 26 | * Set the callback that will be called when a date is selected 27 | * @param {(context: Context, date: Date) => void} onDateSelected The callback to be used 28 | */ 29 | setDateListener(onDateSelected) { 30 | this.bot.action(/calendar-telegram-date-[\d-]+/g, (context) => { 31 | if (onDateSelected) { 32 | let date = context.match[0].replace('calendar-telegram-date-', ''); 33 | return context 34 | .answerCbQuery() 35 | .then(() => onDateSelected(context, date)); 36 | } 37 | }); 38 | 39 | this.bot.action(/calendar-telegram-prev-[\d-]+/g, (context) => { 40 | let dateString = context.match[0].replace('calendar-telegram-prev-', ''); 41 | let date = new Date(dateString); 42 | date.setMonth(date.getMonth() - 1); 43 | 44 | let prevText = context.callbackQuery.message.text; 45 | 46 | let prevEntities = context.callbackQuery.message.entities; 47 | let extras = { 48 | ...this.helper.getCalendarMarkup(date), 49 | entities: prevEntities, 50 | }; 51 | 52 | return context 53 | .answerCbQuery() 54 | .then(() => context.editMessageText(prevText, extras)); 55 | }); 56 | 57 | this.bot.action(/calendar-telegram-next-[\d-]+/g, (context) => { 58 | let dateString = context.match[0] 59 | .replace('calendar-telegram-next-', '') 60 | .replace(/-\d+$/, '-01'); 61 | 62 | let date = new Date(dateString); 63 | date.setMonth(date.getMonth() + 1); 64 | 65 | let prevText = context.callbackQuery.message.text; 66 | 67 | let prevEntities = context.callbackQuery.message.entities; 68 | let extras = { 69 | ...this.helper.getCalendarMarkup(date), 70 | entities: prevEntities, 71 | }; 72 | 73 | return context 74 | .answerCbQuery() 75 | .then(() => context.editMessageText(prevText, extras)); 76 | }); 77 | 78 | this.bot.action(/calendar-telegram-ignore-[\d\w-]+/g, (context) => 79 | context.answerCbQuery() 80 | ); 81 | } 82 | 83 | /** 84 | * Minimum selectable date 85 | * @param {Date} date The date to be used 86 | */ 87 | setMinDate(date) { 88 | this.helper.setMinDate(new Date(date)); 89 | return this; 90 | } 91 | 92 | /** 93 | * Maximum selectable date 94 | * @param {Date} date The date to be used 95 | */ 96 | setMaxDate(date) { 97 | this.helper.setMaxDate(new Date(date)); 98 | return this; 99 | } 100 | 101 | /** 102 | * Set the week day names, where the first element is `startWeekDay` name 103 | * @param {String[]} names Names to be used 104 | */ 105 | setWeekDayNames(names) { 106 | this.helper.setWeekDayNames(names); 107 | return this; 108 | } 109 | 110 | /** 111 | * Set the month names 112 | * @param {String[]} names Names to be used 113 | */ 114 | setMonthNames(names) { 115 | this.helper.setMonthNames(names); 116 | return this; 117 | } 118 | 119 | /** 120 | * Set the first day of the week, where 0 is Sunday 121 | * @param {Number} startDay Day to be used 122 | */ 123 | setStartWeekDay(startDay) { 124 | this.helper.setStartWeekDay(startDay); 125 | return this; 126 | } 127 | } 128 | 129 | module.exports = Calendar; 130 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "telegraf-calendar-telegram", 3 | "version": "2.0.2", 4 | "description": "Inline calendar for Telegram bots using Telegraf framework", 5 | "author": { 6 | "name": "gianlucaparadise", 7 | "email": "gianlucaparadise@gmail.com", 8 | "url": "https://github.com/gianlucaparadise" 9 | }, 10 | "license": "Apache-2.0", 11 | "main": "index.js", 12 | "type": "commonjs", 13 | "repository": { 14 | "type": "git", 15 | "url": "https://github.com/gianlucaparadise/telegraf-calendar-telegram" 16 | }, 17 | "scripts": { 18 | "start": "node bin/www", 19 | "test": "jest" 20 | }, 21 | "keywords": [ 22 | "telegram", 23 | "bot", 24 | "telegraf", 25 | "calendar" 26 | ], 27 | "dependencies": { 28 | "telegraf": "^4.8.5" 29 | }, 30 | "devDependencies": { 31 | "@types/jest": "^29.4.0", 32 | "dotenv": "^16.0.1", 33 | "eslint": "^8.11.0", 34 | "jest": "^29.4.2" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.1.0": 6 | version "2.2.0" 7 | resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" 8 | integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== 9 | dependencies: 10 | "@jridgewell/gen-mapping" "^0.1.0" 11 | "@jridgewell/trace-mapping" "^0.3.9" 12 | 13 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": 14 | version "7.18.6" 15 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" 16 | integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== 17 | dependencies: 18 | "@babel/highlight" "^7.18.6" 19 | 20 | "@babel/compat-data@^7.20.5": 21 | version "7.20.14" 22 | resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz#4106fc8b755f3e3ee0a0a7c27dde5de1d2b2baf8" 23 | integrity sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw== 24 | 25 | "@babel/core@^7.11.6", "@babel/core@^7.12.3": 26 | version "7.20.12" 27 | resolved "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d" 28 | integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg== 29 | dependencies: 30 | "@ampproject/remapping" "^2.1.0" 31 | "@babel/code-frame" "^7.18.6" 32 | "@babel/generator" "^7.20.7" 33 | "@babel/helper-compilation-targets" "^7.20.7" 34 | "@babel/helper-module-transforms" "^7.20.11" 35 | "@babel/helpers" "^7.20.7" 36 | "@babel/parser" "^7.20.7" 37 | "@babel/template" "^7.20.7" 38 | "@babel/traverse" "^7.20.12" 39 | "@babel/types" "^7.20.7" 40 | convert-source-map "^1.7.0" 41 | debug "^4.1.0" 42 | gensync "^1.0.0-beta.2" 43 | json5 "^2.2.2" 44 | semver "^6.3.0" 45 | 46 | "@babel/generator@^7.20.7", "@babel/generator@^7.7.2": 47 | version "7.20.14" 48 | resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz#9fa772c9f86a46c6ac9b321039400712b96f64ce" 49 | integrity sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg== 50 | dependencies: 51 | "@babel/types" "^7.20.7" 52 | "@jridgewell/gen-mapping" "^0.3.2" 53 | jsesc "^2.5.1" 54 | 55 | "@babel/helper-compilation-targets@^7.20.7": 56 | version "7.20.7" 57 | resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" 58 | integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== 59 | dependencies: 60 | "@babel/compat-data" "^7.20.5" 61 | "@babel/helper-validator-option" "^7.18.6" 62 | browserslist "^4.21.3" 63 | lru-cache "^5.1.1" 64 | semver "^6.3.0" 65 | 66 | "@babel/helper-environment-visitor@^7.18.9": 67 | version "7.18.9" 68 | resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" 69 | integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== 70 | 71 | "@babel/helper-function-name@^7.19.0": 72 | version "7.19.0" 73 | resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" 74 | integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== 75 | dependencies: 76 | "@babel/template" "^7.18.10" 77 | "@babel/types" "^7.19.0" 78 | 79 | "@babel/helper-hoist-variables@^7.18.6": 80 | version "7.18.6" 81 | resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" 82 | integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== 83 | dependencies: 84 | "@babel/types" "^7.18.6" 85 | 86 | "@babel/helper-module-imports@^7.18.6": 87 | version "7.18.6" 88 | resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" 89 | integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== 90 | dependencies: 91 | "@babel/types" "^7.18.6" 92 | 93 | "@babel/helper-module-transforms@^7.20.11": 94 | version "7.20.11" 95 | resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0" 96 | integrity sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg== 97 | dependencies: 98 | "@babel/helper-environment-visitor" "^7.18.9" 99 | "@babel/helper-module-imports" "^7.18.6" 100 | "@babel/helper-simple-access" "^7.20.2" 101 | "@babel/helper-split-export-declaration" "^7.18.6" 102 | "@babel/helper-validator-identifier" "^7.19.1" 103 | "@babel/template" "^7.20.7" 104 | "@babel/traverse" "^7.20.10" 105 | "@babel/types" "^7.20.7" 106 | 107 | "@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.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0": 108 | version "7.20.2" 109 | resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" 110 | integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== 111 | 112 | "@babel/helper-simple-access@^7.20.2": 113 | version "7.20.2" 114 | resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" 115 | integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== 116 | dependencies: 117 | "@babel/types" "^7.20.2" 118 | 119 | "@babel/helper-split-export-declaration@^7.18.6": 120 | version "7.18.6" 121 | resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" 122 | integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== 123 | dependencies: 124 | "@babel/types" "^7.18.6" 125 | 126 | "@babel/helper-string-parser@^7.19.4": 127 | version "7.19.4" 128 | resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" 129 | integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== 130 | 131 | "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": 132 | version "7.19.1" 133 | resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" 134 | integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== 135 | 136 | "@babel/helper-validator-option@^7.18.6": 137 | version "7.18.6" 138 | resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" 139 | integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== 140 | 141 | "@babel/helpers@^7.20.7": 142 | version "7.20.13" 143 | resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz#e3cb731fb70dc5337134cadc24cbbad31cc87ad2" 144 | integrity sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg== 145 | dependencies: 146 | "@babel/template" "^7.20.7" 147 | "@babel/traverse" "^7.20.13" 148 | "@babel/types" "^7.20.7" 149 | 150 | "@babel/highlight@^7.18.6": 151 | version "7.18.6" 152 | resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" 153 | integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== 154 | dependencies: 155 | "@babel/helper-validator-identifier" "^7.18.6" 156 | chalk "^2.0.0" 157 | js-tokens "^4.0.0" 158 | 159 | "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.13", "@babel/parser@^7.20.7": 160 | version "7.20.15" 161 | resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz#eec9f36d8eaf0948bb88c87a46784b5ee9fd0c89" 162 | integrity sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg== 163 | 164 | "@babel/plugin-syntax-async-generators@^7.8.4": 165 | version "7.8.4" 166 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" 167 | integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== 168 | dependencies: 169 | "@babel/helper-plugin-utils" "^7.8.0" 170 | 171 | "@babel/plugin-syntax-bigint@^7.8.3": 172 | version "7.8.3" 173 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" 174 | integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== 175 | dependencies: 176 | "@babel/helper-plugin-utils" "^7.8.0" 177 | 178 | "@babel/plugin-syntax-class-properties@^7.8.3": 179 | version "7.12.13" 180 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" 181 | integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== 182 | dependencies: 183 | "@babel/helper-plugin-utils" "^7.12.13" 184 | 185 | "@babel/plugin-syntax-import-meta@^7.8.3": 186 | version "7.10.4" 187 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" 188 | integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== 189 | dependencies: 190 | "@babel/helper-plugin-utils" "^7.10.4" 191 | 192 | "@babel/plugin-syntax-json-strings@^7.8.3": 193 | version "7.8.3" 194 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" 195 | integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== 196 | dependencies: 197 | "@babel/helper-plugin-utils" "^7.8.0" 198 | 199 | "@babel/plugin-syntax-jsx@^7.7.2": 200 | version "7.18.6" 201 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" 202 | integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== 203 | dependencies: 204 | "@babel/helper-plugin-utils" "^7.18.6" 205 | 206 | "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": 207 | version "7.10.4" 208 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" 209 | integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== 210 | dependencies: 211 | "@babel/helper-plugin-utils" "^7.10.4" 212 | 213 | "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": 214 | version "7.8.3" 215 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" 216 | integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== 217 | dependencies: 218 | "@babel/helper-plugin-utils" "^7.8.0" 219 | 220 | "@babel/plugin-syntax-numeric-separator@^7.8.3": 221 | version "7.10.4" 222 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" 223 | integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== 224 | dependencies: 225 | "@babel/helper-plugin-utils" "^7.10.4" 226 | 227 | "@babel/plugin-syntax-object-rest-spread@^7.8.3": 228 | version "7.8.3" 229 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" 230 | integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== 231 | dependencies: 232 | "@babel/helper-plugin-utils" "^7.8.0" 233 | 234 | "@babel/plugin-syntax-optional-catch-binding@^7.8.3": 235 | version "7.8.3" 236 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" 237 | integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== 238 | dependencies: 239 | "@babel/helper-plugin-utils" "^7.8.0" 240 | 241 | "@babel/plugin-syntax-optional-chaining@^7.8.3": 242 | version "7.8.3" 243 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" 244 | integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== 245 | dependencies: 246 | "@babel/helper-plugin-utils" "^7.8.0" 247 | 248 | "@babel/plugin-syntax-top-level-await@^7.8.3": 249 | version "7.14.5" 250 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" 251 | integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== 252 | dependencies: 253 | "@babel/helper-plugin-utils" "^7.14.5" 254 | 255 | "@babel/plugin-syntax-typescript@^7.7.2": 256 | version "7.20.0" 257 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" 258 | integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== 259 | dependencies: 260 | "@babel/helper-plugin-utils" "^7.19.0" 261 | 262 | "@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3": 263 | version "7.20.7" 264 | resolved "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" 265 | integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== 266 | dependencies: 267 | "@babel/code-frame" "^7.18.6" 268 | "@babel/parser" "^7.20.7" 269 | "@babel/types" "^7.20.7" 270 | 271 | "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.13", "@babel/traverse@^7.7.2": 272 | version "7.20.13" 273 | resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473" 274 | integrity sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ== 275 | dependencies: 276 | "@babel/code-frame" "^7.18.6" 277 | "@babel/generator" "^7.20.7" 278 | "@babel/helper-environment-visitor" "^7.18.9" 279 | "@babel/helper-function-name" "^7.19.0" 280 | "@babel/helper-hoist-variables" "^7.18.6" 281 | "@babel/helper-split-export-declaration" "^7.18.6" 282 | "@babel/parser" "^7.20.13" 283 | "@babel/types" "^7.20.7" 284 | debug "^4.1.0" 285 | globals "^11.1.0" 286 | 287 | "@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3": 288 | version "7.20.7" 289 | resolved "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f" 290 | integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== 291 | dependencies: 292 | "@babel/helper-string-parser" "^7.19.4" 293 | "@babel/helper-validator-identifier" "^7.19.1" 294 | to-fast-properties "^2.0.0" 295 | 296 | "@bcoe/v8-coverage@^0.2.3": 297 | version "0.2.3" 298 | resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 299 | integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== 300 | 301 | "@eslint/eslintrc@^1.2.1": 302 | version "1.2.1" 303 | resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz#8b5e1c49f4077235516bc9ec7d41378c0f69b8c6" 304 | integrity sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ== 305 | dependencies: 306 | ajv "^6.12.4" 307 | debug "^4.3.2" 308 | espree "^9.3.1" 309 | globals "^13.9.0" 310 | ignore "^5.2.0" 311 | import-fresh "^3.2.1" 312 | js-yaml "^4.1.0" 313 | minimatch "^3.0.4" 314 | strip-json-comments "^3.1.1" 315 | 316 | "@humanwhocodes/config-array@^0.9.2": 317 | version "0.9.5" 318 | resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" 319 | integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== 320 | dependencies: 321 | "@humanwhocodes/object-schema" "^1.2.1" 322 | debug "^4.1.1" 323 | minimatch "^3.0.4" 324 | 325 | "@humanwhocodes/object-schema@^1.2.1": 326 | version "1.2.1" 327 | resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 328 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 329 | 330 | "@istanbuljs/load-nyc-config@^1.0.0": 331 | version "1.1.0" 332 | resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" 333 | integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== 334 | dependencies: 335 | camelcase "^5.3.1" 336 | find-up "^4.1.0" 337 | get-package-type "^0.1.0" 338 | js-yaml "^3.13.1" 339 | resolve-from "^5.0.0" 340 | 341 | "@istanbuljs/schema@^0.1.2": 342 | version "0.1.3" 343 | resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" 344 | integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== 345 | 346 | "@jest/console@^29.4.2": 347 | version "29.4.2" 348 | resolved "https://registry.npmjs.org/@jest/console/-/console-29.4.2.tgz#f78374905c2454764152904a344a2d5226b0ef09" 349 | integrity sha512-0I/rEJwMpV9iwi9cDEnT71a5nNGK9lj8Z4+1pRAU2x/thVXCDnaTGrvxyK+cAqZTFVFCiR+hfVrP4l2m+dCmQg== 350 | dependencies: 351 | "@jest/types" "^29.4.2" 352 | "@types/node" "*" 353 | chalk "^4.0.0" 354 | jest-message-util "^29.4.2" 355 | jest-util "^29.4.2" 356 | slash "^3.0.0" 357 | 358 | "@jest/core@^29.4.2": 359 | version "29.4.2" 360 | resolved "https://registry.npmjs.org/@jest/core/-/core-29.4.2.tgz#6e999b67bdc2df9d96ba9b142465bda71ee472c2" 361 | integrity sha512-KGuoQah0P3vGNlaS/l9/wQENZGNKGoWb+OPxh3gz+YzG7/XExvYu34MzikRndQCdM2S0tzExN4+FL37i6gZmCQ== 362 | dependencies: 363 | "@jest/console" "^29.4.2" 364 | "@jest/reporters" "^29.4.2" 365 | "@jest/test-result" "^29.4.2" 366 | "@jest/transform" "^29.4.2" 367 | "@jest/types" "^29.4.2" 368 | "@types/node" "*" 369 | ansi-escapes "^4.2.1" 370 | chalk "^4.0.0" 371 | ci-info "^3.2.0" 372 | exit "^0.1.2" 373 | graceful-fs "^4.2.9" 374 | jest-changed-files "^29.4.2" 375 | jest-config "^29.4.2" 376 | jest-haste-map "^29.4.2" 377 | jest-message-util "^29.4.2" 378 | jest-regex-util "^29.4.2" 379 | jest-resolve "^29.4.2" 380 | jest-resolve-dependencies "^29.4.2" 381 | jest-runner "^29.4.2" 382 | jest-runtime "^29.4.2" 383 | jest-snapshot "^29.4.2" 384 | jest-util "^29.4.2" 385 | jest-validate "^29.4.2" 386 | jest-watcher "^29.4.2" 387 | micromatch "^4.0.4" 388 | pretty-format "^29.4.2" 389 | slash "^3.0.0" 390 | strip-ansi "^6.0.0" 391 | 392 | "@jest/environment@^29.4.2": 393 | version "29.4.2" 394 | resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.4.2.tgz#ee92c316ee2fbdf0bcd9d2db0ef42d64fea26b56" 395 | integrity sha512-JKs3VUtse0vQfCaFGJRX1bir9yBdtasxziSyu+pIiEllAQOe4oQhdCYIf3+Lx+nGglFktSKToBnRJfD5QKp+NQ== 396 | dependencies: 397 | "@jest/fake-timers" "^29.4.2" 398 | "@jest/types" "^29.4.2" 399 | "@types/node" "*" 400 | jest-mock "^29.4.2" 401 | 402 | "@jest/expect-utils@^29.4.2": 403 | version "29.4.2" 404 | resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.4.2.tgz#cd0065dfdd8e8a182aa350cc121db97b5eed7b3f" 405 | integrity sha512-Dd3ilDJpBnqa0GiPN7QrudVs0cczMMHtehSo2CSTjm3zdHx0RcpmhFNVEltuEFeqfLIyWKFI224FsMSQ/nsJQA== 406 | dependencies: 407 | jest-get-type "^29.4.2" 408 | 409 | "@jest/expect@^29.4.2": 410 | version "29.4.2" 411 | resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.4.2.tgz#2d4a6a41b29380957c5094de19259f87f194578b" 412 | integrity sha512-NUAeZVApzyaeLjfWIV/64zXjA2SS+NuUPHpAlO7IwVMGd5Vf9szTl9KEDlxY3B4liwLO31os88tYNHl6cpjtKQ== 413 | dependencies: 414 | expect "^29.4.2" 415 | jest-snapshot "^29.4.2" 416 | 417 | "@jest/fake-timers@^29.4.2": 418 | version "29.4.2" 419 | resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.4.2.tgz#af43ee1a5720b987d0348f80df98f2cb17d45cd0" 420 | integrity sha512-Ny1u0Wg6kCsHFWq7A/rW/tMhIedq2siiyHyLpHCmIhP7WmcAmd2cx95P+0xtTZlj5ZbJxIRQi4OPydZZUoiSQQ== 421 | dependencies: 422 | "@jest/types" "^29.4.2" 423 | "@sinonjs/fake-timers" "^10.0.2" 424 | "@types/node" "*" 425 | jest-message-util "^29.4.2" 426 | jest-mock "^29.4.2" 427 | jest-util "^29.4.2" 428 | 429 | "@jest/globals@^29.4.2": 430 | version "29.4.2" 431 | resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.4.2.tgz#73f85f5db0e17642258b25fd0b9fc89ddedb50eb" 432 | integrity sha512-zCk70YGPzKnz/I9BNFDPlK+EuJLk21ur/NozVh6JVM86/YYZtZHqxFFQ62O9MWq7uf3vIZnvNA0BzzrtxD9iyg== 433 | dependencies: 434 | "@jest/environment" "^29.4.2" 435 | "@jest/expect" "^29.4.2" 436 | "@jest/types" "^29.4.2" 437 | jest-mock "^29.4.2" 438 | 439 | "@jest/reporters@^29.4.2": 440 | version "29.4.2" 441 | resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.4.2.tgz#6abfa923941daae0acc76a18830ee9e79a22042d" 442 | integrity sha512-10yw6YQe75zCgYcXgEND9kw3UZZH5tJeLzWv4vTk/2mrS1aY50A37F+XT2hPO5OqQFFnUWizXD8k1BMiATNfUw== 443 | dependencies: 444 | "@bcoe/v8-coverage" "^0.2.3" 445 | "@jest/console" "^29.4.2" 446 | "@jest/test-result" "^29.4.2" 447 | "@jest/transform" "^29.4.2" 448 | "@jest/types" "^29.4.2" 449 | "@jridgewell/trace-mapping" "^0.3.15" 450 | "@types/node" "*" 451 | chalk "^4.0.0" 452 | collect-v8-coverage "^1.0.0" 453 | exit "^0.1.2" 454 | glob "^7.1.3" 455 | graceful-fs "^4.2.9" 456 | istanbul-lib-coverage "^3.0.0" 457 | istanbul-lib-instrument "^5.1.0" 458 | istanbul-lib-report "^3.0.0" 459 | istanbul-lib-source-maps "^4.0.0" 460 | istanbul-reports "^3.1.3" 461 | jest-message-util "^29.4.2" 462 | jest-util "^29.4.2" 463 | jest-worker "^29.4.2" 464 | slash "^3.0.0" 465 | string-length "^4.0.1" 466 | strip-ansi "^6.0.0" 467 | v8-to-istanbul "^9.0.1" 468 | 469 | "@jest/schemas@^29.4.2": 470 | version "29.4.2" 471 | resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.2.tgz#cf7cfe97c5649f518452b176c47ed07486270fc1" 472 | integrity sha512-ZrGzGfh31NtdVH8tn0mgJw4khQuNHiKqdzJAFbCaERbyCP9tHlxWuL/mnMu8P7e/+k4puWjI1NOzi/sFsjce/g== 473 | dependencies: 474 | "@sinclair/typebox" "^0.25.16" 475 | 476 | "@jest/source-map@^29.4.2": 477 | version "29.4.2" 478 | resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.2.tgz#f9815d59e25cd3d6828e41489cd239271018d153" 479 | integrity sha512-tIoqV5ZNgYI9XCKXMqbYe5JbumcvyTgNN+V5QW4My033lanijvCD0D4PI9tBw4pRTqWOc00/7X3KVvUh+qnF4Q== 480 | dependencies: 481 | "@jridgewell/trace-mapping" "^0.3.15" 482 | callsites "^3.0.0" 483 | graceful-fs "^4.2.9" 484 | 485 | "@jest/test-result@^29.4.2": 486 | version "29.4.2" 487 | resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.4.2.tgz#34b0ba069f2e3072261e4884c8fb6bd15ed6fb8d" 488 | integrity sha512-HZsC3shhiHVvMtP+i55MGR5bPcc3obCFbA5bzIOb8pCjwBZf11cZliJncCgaVUbC5yoQNuGqCkC0Q3t6EItxZA== 489 | dependencies: 490 | "@jest/console" "^29.4.2" 491 | "@jest/types" "^29.4.2" 492 | "@types/istanbul-lib-coverage" "^2.0.0" 493 | collect-v8-coverage "^1.0.0" 494 | 495 | "@jest/test-sequencer@^29.4.2": 496 | version "29.4.2" 497 | resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.4.2.tgz#8b48e5bc4af80b42edacaf2a733d4f295edf28fb" 498 | integrity sha512-9Z2cVsD6CcObIVrWigHp2McRJhvCxL27xHtrZFgNC1RwnoSpDx6fZo8QYjJmziFlW9/hr78/3sxF54S8B6v8rg== 499 | dependencies: 500 | "@jest/test-result" "^29.4.2" 501 | graceful-fs "^4.2.9" 502 | jest-haste-map "^29.4.2" 503 | slash "^3.0.0" 504 | 505 | "@jest/transform@^29.4.2": 506 | version "29.4.2" 507 | resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.4.2.tgz#b24b72dbab4c8675433a80e222d6a8ef4656fb81" 508 | integrity sha512-kf1v5iTJHn7p9RbOsBuc/lcwyPtJaZJt5885C98omWz79NIeD3PfoiiaPSu7JyCyFzNOIzKhmMhQLUhlTL9BvQ== 509 | dependencies: 510 | "@babel/core" "^7.11.6" 511 | "@jest/types" "^29.4.2" 512 | "@jridgewell/trace-mapping" "^0.3.15" 513 | babel-plugin-istanbul "^6.1.1" 514 | chalk "^4.0.0" 515 | convert-source-map "^2.0.0" 516 | fast-json-stable-stringify "^2.1.0" 517 | graceful-fs "^4.2.9" 518 | jest-haste-map "^29.4.2" 519 | jest-regex-util "^29.4.2" 520 | jest-util "^29.4.2" 521 | micromatch "^4.0.4" 522 | pirates "^4.0.4" 523 | slash "^3.0.0" 524 | write-file-atomic "^4.0.2" 525 | 526 | "@jest/types@^29.4.2": 527 | version "29.4.2" 528 | resolved "https://registry.npmjs.org/@jest/types/-/types-29.4.2.tgz#8f724a414b1246b2bfd56ca5225d9e1f39540d82" 529 | integrity sha512-CKlngyGP0fwlgC1BRUtPZSiWLBhyS9dKwKmyGxk8Z6M82LBEGB2aLQSg+U1MyLsU+M7UjnlLllBM2BLWKVm/Uw== 530 | dependencies: 531 | "@jest/schemas" "^29.4.2" 532 | "@types/istanbul-lib-coverage" "^2.0.0" 533 | "@types/istanbul-reports" "^3.0.0" 534 | "@types/node" "*" 535 | "@types/yargs" "^17.0.8" 536 | chalk "^4.0.0" 537 | 538 | "@jridgewell/gen-mapping@^0.1.0": 539 | version "0.1.1" 540 | resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" 541 | integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== 542 | dependencies: 543 | "@jridgewell/set-array" "^1.0.0" 544 | "@jridgewell/sourcemap-codec" "^1.4.10" 545 | 546 | "@jridgewell/gen-mapping@^0.3.2": 547 | version "0.3.2" 548 | resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" 549 | integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== 550 | dependencies: 551 | "@jridgewell/set-array" "^1.0.1" 552 | "@jridgewell/sourcemap-codec" "^1.4.10" 553 | "@jridgewell/trace-mapping" "^0.3.9" 554 | 555 | "@jridgewell/resolve-uri@3.1.0": 556 | version "3.1.0" 557 | resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 558 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 559 | 560 | "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": 561 | version "1.1.2" 562 | resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" 563 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== 564 | 565 | "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": 566 | version "1.4.14" 567 | resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" 568 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 569 | 570 | "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.9": 571 | version "0.3.17" 572 | resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" 573 | integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== 574 | dependencies: 575 | "@jridgewell/resolve-uri" "3.1.0" 576 | "@jridgewell/sourcemap-codec" "1.4.14" 577 | 578 | "@sinclair/typebox@^0.25.16": 579 | version "0.25.21" 580 | resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz#763b05a4b472c93a8db29b2c3e359d55b29ce272" 581 | integrity sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g== 582 | 583 | "@sinonjs/commons@^2.0.0": 584 | version "2.0.0" 585 | resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" 586 | integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== 587 | dependencies: 588 | type-detect "4.0.8" 589 | 590 | "@sinonjs/fake-timers@^10.0.2": 591 | version "10.0.2" 592 | resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz#d10549ed1f423d80639c528b6c7f5a1017747d0c" 593 | integrity sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw== 594 | dependencies: 595 | "@sinonjs/commons" "^2.0.0" 596 | 597 | "@types/babel__core@^7.1.14": 598 | version "7.20.0" 599 | resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" 600 | integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== 601 | dependencies: 602 | "@babel/parser" "^7.20.7" 603 | "@babel/types" "^7.20.7" 604 | "@types/babel__generator" "*" 605 | "@types/babel__template" "*" 606 | "@types/babel__traverse" "*" 607 | 608 | "@types/babel__generator@*": 609 | version "7.6.4" 610 | resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" 611 | integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== 612 | dependencies: 613 | "@babel/types" "^7.0.0" 614 | 615 | "@types/babel__template@*": 616 | version "7.4.1" 617 | resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" 618 | integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== 619 | dependencies: 620 | "@babel/parser" "^7.1.0" 621 | "@babel/types" "^7.0.0" 622 | 623 | "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": 624 | version "7.18.3" 625 | resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz#dfc508a85781e5698d5b33443416b6268c4b3e8d" 626 | integrity sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w== 627 | dependencies: 628 | "@babel/types" "^7.3.0" 629 | 630 | "@types/graceful-fs@^4.1.3": 631 | version "4.1.6" 632 | resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" 633 | integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== 634 | dependencies: 635 | "@types/node" "*" 636 | 637 | "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": 638 | version "2.0.4" 639 | resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" 640 | integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== 641 | 642 | "@types/istanbul-lib-report@*": 643 | version "3.0.0" 644 | resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" 645 | integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== 646 | dependencies: 647 | "@types/istanbul-lib-coverage" "*" 648 | 649 | "@types/istanbul-reports@^3.0.0": 650 | version "3.0.1" 651 | resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" 652 | integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== 653 | dependencies: 654 | "@types/istanbul-lib-report" "*" 655 | 656 | "@types/jest@^29.4.0": 657 | version "29.4.0" 658 | resolved "https://registry.npmjs.org/@types/jest/-/jest-29.4.0.tgz#a8444ad1704493e84dbf07bb05990b275b3b9206" 659 | integrity sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ== 660 | dependencies: 661 | expect "^29.0.0" 662 | pretty-format "^29.0.0" 663 | 664 | "@types/node@*": 665 | version "18.13.0" 666 | resolved "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz#0400d1e6ce87e9d3032c19eb6c58205b0d3f7850" 667 | integrity sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg== 668 | 669 | "@types/prettier@^2.1.5": 670 | version "2.7.2" 671 | resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" 672 | integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== 673 | 674 | "@types/stack-utils@^2.0.0": 675 | version "2.0.1" 676 | resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" 677 | integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== 678 | 679 | "@types/yargs-parser@*": 680 | version "21.0.0" 681 | resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" 682 | integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== 683 | 684 | "@types/yargs@^17.0.8": 685 | version "17.0.22" 686 | resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz#7dd37697691b5f17d020f3c63e7a45971ff71e9a" 687 | integrity sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g== 688 | dependencies: 689 | "@types/yargs-parser" "*" 690 | 691 | abort-controller@^3.0.0: 692 | version "3.0.0" 693 | resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" 694 | integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== 695 | dependencies: 696 | event-target-shim "^5.0.0" 697 | 698 | acorn-jsx@^5.3.1: 699 | version "5.3.2" 700 | resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 701 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 702 | 703 | acorn@^8.7.0: 704 | version "8.7.0" 705 | resolved "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" 706 | integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== 707 | 708 | ajv@^6.10.0, ajv@^6.12.4: 709 | version "6.12.6" 710 | resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 711 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 712 | dependencies: 713 | fast-deep-equal "^3.1.1" 714 | fast-json-stable-stringify "^2.0.0" 715 | json-schema-traverse "^0.4.1" 716 | uri-js "^4.2.2" 717 | 718 | ansi-escapes@^4.2.1: 719 | version "4.3.2" 720 | resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" 721 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== 722 | dependencies: 723 | type-fest "^0.21.3" 724 | 725 | ansi-regex@^5.0.1: 726 | version "5.0.1" 727 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 728 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 729 | 730 | ansi-styles@^3.2.1: 731 | version "3.2.1" 732 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 733 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 734 | dependencies: 735 | color-convert "^1.9.0" 736 | 737 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 738 | version "4.3.0" 739 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 740 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 741 | dependencies: 742 | color-convert "^2.0.1" 743 | 744 | ansi-styles@^5.0.0: 745 | version "5.2.0" 746 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" 747 | integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== 748 | 749 | anymatch@^3.0.3: 750 | version "3.1.3" 751 | resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 752 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 753 | dependencies: 754 | normalize-path "^3.0.0" 755 | picomatch "^2.0.4" 756 | 757 | argparse@^1.0.7: 758 | version "1.0.10" 759 | resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 760 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 761 | dependencies: 762 | sprintf-js "~1.0.2" 763 | 764 | argparse@^2.0.1: 765 | version "2.0.1" 766 | resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 767 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 768 | 769 | babel-jest@^29.4.2: 770 | version "29.4.2" 771 | resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.4.2.tgz#b17b9f64be288040877cbe2649f91ac3b63b2ba6" 772 | integrity sha512-vcghSqhtowXPG84posYkkkzcZsdayFkubUgbE3/1tuGbX7AQtwCkkNA/wIbB0BMjuCPoqTkiDyKN7Ty7d3uwNQ== 773 | dependencies: 774 | "@jest/transform" "^29.4.2" 775 | "@types/babel__core" "^7.1.14" 776 | babel-plugin-istanbul "^6.1.1" 777 | babel-preset-jest "^29.4.2" 778 | chalk "^4.0.0" 779 | graceful-fs "^4.2.9" 780 | slash "^3.0.0" 781 | 782 | babel-plugin-istanbul@^6.1.1: 783 | version "6.1.1" 784 | resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" 785 | integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== 786 | dependencies: 787 | "@babel/helper-plugin-utils" "^7.0.0" 788 | "@istanbuljs/load-nyc-config" "^1.0.0" 789 | "@istanbuljs/schema" "^0.1.2" 790 | istanbul-lib-instrument "^5.0.4" 791 | test-exclude "^6.0.0" 792 | 793 | babel-plugin-jest-hoist@^29.4.2: 794 | version "29.4.2" 795 | resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.2.tgz#22aa43e255230f02371ffef1cac7eedef58f60bc" 796 | integrity sha512-5HZRCfMeWypFEonRbEkwWXtNS1sQK159LhRVyRuLzyfVBxDy/34Tr/rg4YVi0SScSJ4fqeaR/OIeceJ/LaQ0pQ== 797 | dependencies: 798 | "@babel/template" "^7.3.3" 799 | "@babel/types" "^7.3.3" 800 | "@types/babel__core" "^7.1.14" 801 | "@types/babel__traverse" "^7.0.6" 802 | 803 | babel-preset-current-node-syntax@^1.0.0: 804 | version "1.0.1" 805 | resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" 806 | integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== 807 | dependencies: 808 | "@babel/plugin-syntax-async-generators" "^7.8.4" 809 | "@babel/plugin-syntax-bigint" "^7.8.3" 810 | "@babel/plugin-syntax-class-properties" "^7.8.3" 811 | "@babel/plugin-syntax-import-meta" "^7.8.3" 812 | "@babel/plugin-syntax-json-strings" "^7.8.3" 813 | "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" 814 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" 815 | "@babel/plugin-syntax-numeric-separator" "^7.8.3" 816 | "@babel/plugin-syntax-object-rest-spread" "^7.8.3" 817 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" 818 | "@babel/plugin-syntax-optional-chaining" "^7.8.3" 819 | "@babel/plugin-syntax-top-level-await" "^7.8.3" 820 | 821 | babel-preset-jest@^29.4.2: 822 | version "29.4.2" 823 | resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.4.2.tgz#f0b20c6a79a9f155515e72a2d4f537fe002a4e38" 824 | integrity sha512-ecWdaLY/8JyfUDr0oELBMpj3R5I1L6ZqG+kRJmwqfHtLWuPrJStR0LUkvUhfykJWTsXXMnohsayN/twltBbDrQ== 825 | dependencies: 826 | babel-plugin-jest-hoist "^29.4.2" 827 | babel-preset-current-node-syntax "^1.0.0" 828 | 829 | balanced-match@^1.0.0: 830 | version "1.0.2" 831 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 832 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 833 | 834 | brace-expansion@^1.1.7: 835 | version "1.1.11" 836 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 837 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 838 | dependencies: 839 | balanced-match "^1.0.0" 840 | concat-map "0.0.1" 841 | 842 | braces@^3.0.2: 843 | version "3.0.2" 844 | resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 845 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 846 | dependencies: 847 | fill-range "^7.0.1" 848 | 849 | browserslist@^4.21.3: 850 | version "4.21.5" 851 | resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" 852 | integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== 853 | dependencies: 854 | caniuse-lite "^1.0.30001449" 855 | electron-to-chromium "^1.4.284" 856 | node-releases "^2.0.8" 857 | update-browserslist-db "^1.0.10" 858 | 859 | bser@2.1.1: 860 | version "2.1.1" 861 | resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" 862 | integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== 863 | dependencies: 864 | node-int64 "^0.4.0" 865 | 866 | buffer-alloc-unsafe@^1.1.0: 867 | version "1.1.0" 868 | resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" 869 | integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== 870 | 871 | buffer-alloc@^1.2.0: 872 | version "1.2.0" 873 | resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" 874 | integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== 875 | dependencies: 876 | buffer-alloc-unsafe "^1.1.0" 877 | buffer-fill "^1.0.0" 878 | 879 | buffer-fill@^1.0.0: 880 | version "1.0.0" 881 | resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" 882 | integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== 883 | 884 | buffer-from@^1.0.0: 885 | version "1.1.2" 886 | resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 887 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 888 | 889 | callsites@^3.0.0: 890 | version "3.1.0" 891 | resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 892 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 893 | 894 | camelcase@^5.3.1: 895 | version "5.3.1" 896 | resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 897 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 898 | 899 | camelcase@^6.2.0: 900 | version "6.3.0" 901 | resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 902 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 903 | 904 | caniuse-lite@^1.0.30001449: 905 | version "1.0.30001452" 906 | resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001452.tgz#dff7b8bb834b3a91808f0a9ff0453abb1fbba02a" 907 | integrity sha512-Lkp0vFjMkBB3GTpLR8zk4NwW5EdRdnitwYJHDOOKIU85x4ckYCPQ+9WlVvSVClHxVReefkUMtWZH2l9KGlD51w== 908 | 909 | chalk@^2.0.0: 910 | version "2.4.2" 911 | resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 912 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 913 | dependencies: 914 | ansi-styles "^3.2.1" 915 | escape-string-regexp "^1.0.5" 916 | supports-color "^5.3.0" 917 | 918 | chalk@^4.0.0: 919 | version "4.1.2" 920 | resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 921 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 922 | dependencies: 923 | ansi-styles "^4.1.0" 924 | supports-color "^7.1.0" 925 | 926 | char-regex@^1.0.2: 927 | version "1.0.2" 928 | resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" 929 | integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== 930 | 931 | ci-info@^3.2.0: 932 | version "3.8.0" 933 | resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" 934 | integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== 935 | 936 | cjs-module-lexer@^1.0.0: 937 | version "1.2.2" 938 | resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" 939 | integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== 940 | 941 | cliui@^8.0.1: 942 | version "8.0.1" 943 | resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" 944 | integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== 945 | dependencies: 946 | string-width "^4.2.0" 947 | strip-ansi "^6.0.1" 948 | wrap-ansi "^7.0.0" 949 | 950 | co@^4.6.0: 951 | version "4.6.0" 952 | resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 953 | integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== 954 | 955 | collect-v8-coverage@^1.0.0: 956 | version "1.0.1" 957 | resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" 958 | integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== 959 | 960 | color-convert@^1.9.0: 961 | version "1.9.3" 962 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 963 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 964 | dependencies: 965 | color-name "1.1.3" 966 | 967 | color-convert@^2.0.1: 968 | version "2.0.1" 969 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 970 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 971 | dependencies: 972 | color-name "~1.1.4" 973 | 974 | color-name@1.1.3: 975 | version "1.1.3" 976 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 977 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 978 | 979 | color-name@~1.1.4: 980 | version "1.1.4" 981 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 982 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 983 | 984 | concat-map@0.0.1: 985 | version "0.0.1" 986 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 987 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 988 | 989 | convert-source-map@^1.6.0, convert-source-map@^1.7.0: 990 | version "1.9.0" 991 | resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" 992 | integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== 993 | 994 | convert-source-map@^2.0.0: 995 | version "2.0.0" 996 | resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" 997 | integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== 998 | 999 | cross-spawn@^7.0.2, cross-spawn@^7.0.3: 1000 | version "7.0.3" 1001 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 1002 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 1003 | dependencies: 1004 | path-key "^3.1.0" 1005 | shebang-command "^2.0.0" 1006 | which "^2.0.1" 1007 | 1008 | debug@^4.1.0, debug@^4.3.3: 1009 | version "4.3.4" 1010 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 1011 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 1012 | dependencies: 1013 | ms "2.1.2" 1014 | 1015 | debug@^4.1.1, debug@^4.3.2: 1016 | version "4.3.3" 1017 | resolved "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" 1018 | integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== 1019 | dependencies: 1020 | ms "2.1.2" 1021 | 1022 | dedent@^0.7.0: 1023 | version "0.7.0" 1024 | resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" 1025 | integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== 1026 | 1027 | deep-is@^0.1.3: 1028 | version "0.1.4" 1029 | resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 1030 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 1031 | 1032 | deepmerge@^4.2.2: 1033 | version "4.3.0" 1034 | resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz#65491893ec47756d44719ae520e0e2609233b59b" 1035 | integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== 1036 | 1037 | detect-newline@^3.0.0: 1038 | version "3.1.0" 1039 | resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" 1040 | integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== 1041 | 1042 | diff-sequences@^29.4.2: 1043 | version "29.4.2" 1044 | resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.2.tgz#711fe6bd8a5869fe2539cee4a5152425ff671fda" 1045 | integrity sha512-R6P0Y6PrsH3n4hUXxL3nns0rbRk6Q33js3ygJBeEpbzLzgcNuJ61+u0RXasFpTKISw99TxUzFnumSnRLsjhLaw== 1046 | 1047 | doctrine@^3.0.0: 1048 | version "3.0.0" 1049 | resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 1050 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 1051 | dependencies: 1052 | esutils "^2.0.2" 1053 | 1054 | dotenv@^16.0.1: 1055 | version "16.0.1" 1056 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d" 1057 | integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ== 1058 | 1059 | electron-to-chromium@^1.4.284: 1060 | version "1.4.295" 1061 | resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.295.tgz#911d5df67542bf7554336142eb302c5ec90bba66" 1062 | integrity sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw== 1063 | 1064 | emittery@^0.13.1: 1065 | version "0.13.1" 1066 | resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" 1067 | integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== 1068 | 1069 | emoji-regex@^8.0.0: 1070 | version "8.0.0" 1071 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1072 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1073 | 1074 | error-ex@^1.3.1: 1075 | version "1.3.2" 1076 | resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 1077 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 1078 | dependencies: 1079 | is-arrayish "^0.2.1" 1080 | 1081 | escalade@^3.1.1: 1082 | version "3.1.1" 1083 | resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 1084 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 1085 | 1086 | escape-string-regexp@^1.0.5: 1087 | version "1.0.5" 1088 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1089 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 1090 | 1091 | escape-string-regexp@^2.0.0: 1092 | version "2.0.0" 1093 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" 1094 | integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== 1095 | 1096 | escape-string-regexp@^4.0.0: 1097 | version "4.0.0" 1098 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 1099 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 1100 | 1101 | eslint-scope@^7.1.1: 1102 | version "7.1.1" 1103 | resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" 1104 | integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== 1105 | dependencies: 1106 | esrecurse "^4.3.0" 1107 | estraverse "^5.2.0" 1108 | 1109 | eslint-utils@^3.0.0: 1110 | version "3.0.0" 1111 | resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" 1112 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== 1113 | dependencies: 1114 | eslint-visitor-keys "^2.0.0" 1115 | 1116 | eslint-visitor-keys@^2.0.0: 1117 | version "2.1.0" 1118 | resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 1119 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 1120 | 1121 | eslint-visitor-keys@^3.3.0: 1122 | version "3.3.0" 1123 | resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" 1124 | integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== 1125 | 1126 | eslint@^8.11.0: 1127 | version "8.11.0" 1128 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.11.0.tgz#88b91cfba1356fc10bb9eb592958457dfe09fb37" 1129 | integrity sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA== 1130 | dependencies: 1131 | "@eslint/eslintrc" "^1.2.1" 1132 | "@humanwhocodes/config-array" "^0.9.2" 1133 | ajv "^6.10.0" 1134 | chalk "^4.0.0" 1135 | cross-spawn "^7.0.2" 1136 | debug "^4.3.2" 1137 | doctrine "^3.0.0" 1138 | escape-string-regexp "^4.0.0" 1139 | eslint-scope "^7.1.1" 1140 | eslint-utils "^3.0.0" 1141 | eslint-visitor-keys "^3.3.0" 1142 | espree "^9.3.1" 1143 | esquery "^1.4.0" 1144 | esutils "^2.0.2" 1145 | fast-deep-equal "^3.1.3" 1146 | file-entry-cache "^6.0.1" 1147 | functional-red-black-tree "^1.0.1" 1148 | glob-parent "^6.0.1" 1149 | globals "^13.6.0" 1150 | ignore "^5.2.0" 1151 | import-fresh "^3.0.0" 1152 | imurmurhash "^0.1.4" 1153 | is-glob "^4.0.0" 1154 | js-yaml "^4.1.0" 1155 | json-stable-stringify-without-jsonify "^1.0.1" 1156 | levn "^0.4.1" 1157 | lodash.merge "^4.6.2" 1158 | minimatch "^3.0.4" 1159 | natural-compare "^1.4.0" 1160 | optionator "^0.9.1" 1161 | regexpp "^3.2.0" 1162 | strip-ansi "^6.0.1" 1163 | strip-json-comments "^3.1.0" 1164 | text-table "^0.2.0" 1165 | v8-compile-cache "^2.0.3" 1166 | 1167 | espree@^9.3.1: 1168 | version "9.3.1" 1169 | resolved "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" 1170 | integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== 1171 | dependencies: 1172 | acorn "^8.7.0" 1173 | acorn-jsx "^5.3.1" 1174 | eslint-visitor-keys "^3.3.0" 1175 | 1176 | esprima@^4.0.0: 1177 | version "4.0.1" 1178 | resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1179 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1180 | 1181 | esquery@^1.4.0: 1182 | version "1.4.0" 1183 | resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 1184 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 1185 | dependencies: 1186 | estraverse "^5.1.0" 1187 | 1188 | esrecurse@^4.3.0: 1189 | version "4.3.0" 1190 | resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 1191 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 1192 | dependencies: 1193 | estraverse "^5.2.0" 1194 | 1195 | estraverse@^5.1.0, estraverse@^5.2.0: 1196 | version "5.3.0" 1197 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 1198 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 1199 | 1200 | esutils@^2.0.2: 1201 | version "2.0.2" 1202 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 1203 | 1204 | event-target-shim@^5.0.0: 1205 | version "5.0.1" 1206 | resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" 1207 | integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== 1208 | 1209 | execa@^5.0.0: 1210 | version "5.1.1" 1211 | resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" 1212 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 1213 | dependencies: 1214 | cross-spawn "^7.0.3" 1215 | get-stream "^6.0.0" 1216 | human-signals "^2.1.0" 1217 | is-stream "^2.0.0" 1218 | merge-stream "^2.0.0" 1219 | npm-run-path "^4.0.1" 1220 | onetime "^5.1.2" 1221 | signal-exit "^3.0.3" 1222 | strip-final-newline "^2.0.0" 1223 | 1224 | exit@^0.1.2: 1225 | version "0.1.2" 1226 | resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 1227 | integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== 1228 | 1229 | expect@^29.0.0, expect@^29.4.2: 1230 | version "29.4.2" 1231 | resolved "https://registry.npmjs.org/expect/-/expect-29.4.2.tgz#2ae34eb88de797c64a1541ad0f1e2ea8a7a7b492" 1232 | integrity sha512-+JHYg9O3hd3RlICG90OPVjRkPBoiUH7PxvDVMnRiaq1g6JUgZStX514erMl0v2Dc5SkfVbm7ztqbd6qHHPn+mQ== 1233 | dependencies: 1234 | "@jest/expect-utils" "^29.4.2" 1235 | jest-get-type "^29.4.2" 1236 | jest-matcher-utils "^29.4.2" 1237 | jest-message-util "^29.4.2" 1238 | jest-util "^29.4.2" 1239 | 1240 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 1241 | version "3.1.3" 1242 | resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 1243 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 1244 | 1245 | fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: 1246 | version "2.1.0" 1247 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1248 | 1249 | fast-levenshtein@^2.0.6: 1250 | version "2.0.6" 1251 | resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1252 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 1253 | 1254 | fb-watchman@^2.0.0: 1255 | version "2.0.2" 1256 | resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" 1257 | integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== 1258 | dependencies: 1259 | bser "2.1.1" 1260 | 1261 | file-entry-cache@^6.0.1: 1262 | version "6.0.1" 1263 | resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 1264 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 1265 | dependencies: 1266 | flat-cache "^3.0.4" 1267 | 1268 | fill-range@^7.0.1: 1269 | version "7.0.1" 1270 | resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 1271 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 1272 | dependencies: 1273 | to-regex-range "^5.0.1" 1274 | 1275 | find-up@^4.0.0, find-up@^4.1.0: 1276 | version "4.1.0" 1277 | resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 1278 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 1279 | dependencies: 1280 | locate-path "^5.0.0" 1281 | path-exists "^4.0.0" 1282 | 1283 | flat-cache@^3.0.4: 1284 | version "3.0.4" 1285 | resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 1286 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 1287 | dependencies: 1288 | flatted "^3.1.0" 1289 | rimraf "^3.0.2" 1290 | 1291 | flatted@^3.1.0: 1292 | version "3.2.5" 1293 | resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" 1294 | integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== 1295 | 1296 | fs.realpath@^1.0.0: 1297 | version "1.0.0" 1298 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1299 | 1300 | fsevents@^2.3.2: 1301 | version "2.3.2" 1302 | resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 1303 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 1304 | 1305 | function-bind@^1.1.1: 1306 | version "1.1.1" 1307 | resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1308 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1309 | 1310 | functional-red-black-tree@^1.0.1: 1311 | version "1.0.1" 1312 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 1313 | 1314 | gensync@^1.0.0-beta.2: 1315 | version "1.0.0-beta.2" 1316 | resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 1317 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1318 | 1319 | get-caller-file@^2.0.5: 1320 | version "2.0.5" 1321 | resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1322 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1323 | 1324 | get-package-type@^0.1.0: 1325 | version "0.1.0" 1326 | resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" 1327 | integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== 1328 | 1329 | get-stream@^6.0.0: 1330 | version "6.0.1" 1331 | resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 1332 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 1333 | 1334 | glob-parent@^6.0.1: 1335 | version "6.0.2" 1336 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 1337 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 1338 | dependencies: 1339 | is-glob "^4.0.3" 1340 | 1341 | glob@^7.1.3: 1342 | version "7.2.0" 1343 | resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 1344 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 1345 | dependencies: 1346 | fs.realpath "^1.0.0" 1347 | inflight "^1.0.4" 1348 | inherits "2" 1349 | minimatch "^3.0.4" 1350 | once "^1.3.0" 1351 | path-is-absolute "^1.0.0" 1352 | 1353 | glob@^7.1.4: 1354 | version "7.2.3" 1355 | resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 1356 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 1357 | dependencies: 1358 | fs.realpath "^1.0.0" 1359 | inflight "^1.0.4" 1360 | inherits "2" 1361 | minimatch "^3.1.1" 1362 | once "^1.3.0" 1363 | path-is-absolute "^1.0.0" 1364 | 1365 | globals@^11.1.0: 1366 | version "11.12.0" 1367 | resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1368 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1369 | 1370 | globals@^13.6.0, globals@^13.9.0: 1371 | version "13.12.1" 1372 | resolved "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz#ec206be932e6c77236677127577aa8e50bf1c5cb" 1373 | integrity sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw== 1374 | dependencies: 1375 | type-fest "^0.20.2" 1376 | 1377 | graceful-fs@^4.2.9: 1378 | version "4.2.10" 1379 | resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 1380 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 1381 | 1382 | has-flag@^3.0.0: 1383 | version "3.0.0" 1384 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1385 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 1386 | 1387 | has-flag@^4.0.0: 1388 | version "4.0.0" 1389 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1390 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1391 | 1392 | has@^1.0.3: 1393 | version "1.0.3" 1394 | resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1395 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1396 | dependencies: 1397 | function-bind "^1.1.1" 1398 | 1399 | html-escaper@^2.0.0: 1400 | version "2.0.2" 1401 | resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 1402 | integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 1403 | 1404 | human-signals@^2.1.0: 1405 | version "2.1.0" 1406 | resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 1407 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 1408 | 1409 | ignore@^5.2.0: 1410 | version "5.2.0" 1411 | resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" 1412 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== 1413 | 1414 | import-fresh@^3.0.0, import-fresh@^3.2.1: 1415 | version "3.3.0" 1416 | resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1417 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1418 | dependencies: 1419 | parent-module "^1.0.0" 1420 | resolve-from "^4.0.0" 1421 | 1422 | import-local@^3.0.2: 1423 | version "3.1.0" 1424 | resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" 1425 | integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== 1426 | dependencies: 1427 | pkg-dir "^4.2.0" 1428 | resolve-cwd "^3.0.0" 1429 | 1430 | imurmurhash@^0.1.4: 1431 | version "0.1.4" 1432 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1433 | 1434 | inflight@^1.0.4: 1435 | version "1.0.6" 1436 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1437 | dependencies: 1438 | once "^1.3.0" 1439 | wrappy "1" 1440 | 1441 | inherits@2: 1442 | version "2.0.3" 1443 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1444 | 1445 | is-arrayish@^0.2.1: 1446 | version "0.2.1" 1447 | resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1448 | integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== 1449 | 1450 | is-core-module@^2.9.0: 1451 | version "2.11.0" 1452 | resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" 1453 | integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== 1454 | dependencies: 1455 | has "^1.0.3" 1456 | 1457 | is-extglob@^2.1.1: 1458 | version "2.1.1" 1459 | resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1460 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1461 | 1462 | is-fullwidth-code-point@^3.0.0: 1463 | version "3.0.0" 1464 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1465 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1466 | 1467 | is-generator-fn@^2.0.0: 1468 | version "2.1.0" 1469 | resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" 1470 | integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== 1471 | 1472 | is-glob@^4.0.0, is-glob@^4.0.3: 1473 | version "4.0.3" 1474 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1475 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1476 | dependencies: 1477 | is-extglob "^2.1.1" 1478 | 1479 | is-number@^7.0.0: 1480 | version "7.0.0" 1481 | resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1482 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1483 | 1484 | is-stream@^2.0.0: 1485 | version "2.0.1" 1486 | resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" 1487 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== 1488 | 1489 | isexe@^2.0.0: 1490 | version "2.0.0" 1491 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1492 | 1493 | istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: 1494 | version "3.2.0" 1495 | resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" 1496 | integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== 1497 | 1498 | istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: 1499 | version "5.2.1" 1500 | resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" 1501 | integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== 1502 | dependencies: 1503 | "@babel/core" "^7.12.3" 1504 | "@babel/parser" "^7.14.7" 1505 | "@istanbuljs/schema" "^0.1.2" 1506 | istanbul-lib-coverage "^3.2.0" 1507 | semver "^6.3.0" 1508 | 1509 | istanbul-lib-report@^3.0.0: 1510 | version "3.0.0" 1511 | resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" 1512 | integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== 1513 | dependencies: 1514 | istanbul-lib-coverage "^3.0.0" 1515 | make-dir "^3.0.0" 1516 | supports-color "^7.1.0" 1517 | 1518 | istanbul-lib-source-maps@^4.0.0: 1519 | version "4.0.1" 1520 | resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" 1521 | integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== 1522 | dependencies: 1523 | debug "^4.1.1" 1524 | istanbul-lib-coverage "^3.0.0" 1525 | source-map "^0.6.1" 1526 | 1527 | istanbul-reports@^3.1.3: 1528 | version "3.1.5" 1529 | resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" 1530 | integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== 1531 | dependencies: 1532 | html-escaper "^2.0.0" 1533 | istanbul-lib-report "^3.0.0" 1534 | 1535 | jest-changed-files@^29.4.2: 1536 | version "29.4.2" 1537 | resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.4.2.tgz#bee1fafc8b620d6251423d1978a0080546bc4376" 1538 | integrity sha512-Qdd+AXdqD16PQa+VsWJpxR3kN0JyOCX1iugQfx5nUgAsI4gwsKviXkpclxOK9ZnwaY2IQVHz+771eAvqeOlfuw== 1539 | dependencies: 1540 | execa "^5.0.0" 1541 | p-limit "^3.1.0" 1542 | 1543 | jest-circus@^29.4.2: 1544 | version "29.4.2" 1545 | resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.4.2.tgz#2d00c04baefd0ee2a277014cd494d4b5970663ed" 1546 | integrity sha512-wW3ztp6a2P5c1yOc1Cfrt5ozJ7neWmqeXm/4SYiqcSriyisgq63bwFj1NuRdSR5iqS0CMEYwSZd89ZA47W9zUg== 1547 | dependencies: 1548 | "@jest/environment" "^29.4.2" 1549 | "@jest/expect" "^29.4.2" 1550 | "@jest/test-result" "^29.4.2" 1551 | "@jest/types" "^29.4.2" 1552 | "@types/node" "*" 1553 | chalk "^4.0.0" 1554 | co "^4.6.0" 1555 | dedent "^0.7.0" 1556 | is-generator-fn "^2.0.0" 1557 | jest-each "^29.4.2" 1558 | jest-matcher-utils "^29.4.2" 1559 | jest-message-util "^29.4.2" 1560 | jest-runtime "^29.4.2" 1561 | jest-snapshot "^29.4.2" 1562 | jest-util "^29.4.2" 1563 | p-limit "^3.1.0" 1564 | pretty-format "^29.4.2" 1565 | slash "^3.0.0" 1566 | stack-utils "^2.0.3" 1567 | 1568 | jest-cli@^29.4.2: 1569 | version "29.4.2" 1570 | resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.4.2.tgz#94a2f913a0a7a49d11bee98ad88bf48baae941f4" 1571 | integrity sha512-b+eGUtXq/K2v7SH3QcJvFvaUaCDS1/YAZBYz0m28Q/Ppyr+1qNaHmVYikOrbHVbZqYQs2IeI3p76uy6BWbXq8Q== 1572 | dependencies: 1573 | "@jest/core" "^29.4.2" 1574 | "@jest/test-result" "^29.4.2" 1575 | "@jest/types" "^29.4.2" 1576 | chalk "^4.0.0" 1577 | exit "^0.1.2" 1578 | graceful-fs "^4.2.9" 1579 | import-local "^3.0.2" 1580 | jest-config "^29.4.2" 1581 | jest-util "^29.4.2" 1582 | jest-validate "^29.4.2" 1583 | prompts "^2.0.1" 1584 | yargs "^17.3.1" 1585 | 1586 | jest-config@^29.4.2: 1587 | version "29.4.2" 1588 | resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.4.2.tgz#15386dd9ed2f7059516915515f786b8836a98f07" 1589 | integrity sha512-919CtnXic52YM0zW4C1QxjG6aNueX1kBGthuMtvFtRTAxhKfJmiXC9qwHmi6o2josjbDz8QlWyY55F1SIVmCWA== 1590 | dependencies: 1591 | "@babel/core" "^7.11.6" 1592 | "@jest/test-sequencer" "^29.4.2" 1593 | "@jest/types" "^29.4.2" 1594 | babel-jest "^29.4.2" 1595 | chalk "^4.0.0" 1596 | ci-info "^3.2.0" 1597 | deepmerge "^4.2.2" 1598 | glob "^7.1.3" 1599 | graceful-fs "^4.2.9" 1600 | jest-circus "^29.4.2" 1601 | jest-environment-node "^29.4.2" 1602 | jest-get-type "^29.4.2" 1603 | jest-regex-util "^29.4.2" 1604 | jest-resolve "^29.4.2" 1605 | jest-runner "^29.4.2" 1606 | jest-util "^29.4.2" 1607 | jest-validate "^29.4.2" 1608 | micromatch "^4.0.4" 1609 | parse-json "^5.2.0" 1610 | pretty-format "^29.4.2" 1611 | slash "^3.0.0" 1612 | strip-json-comments "^3.1.1" 1613 | 1614 | jest-diff@^29.4.2: 1615 | version "29.4.2" 1616 | resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.4.2.tgz#b88502d5dc02d97f6512d73c37da8b36f49b4871" 1617 | integrity sha512-EK8DSajVtnjx9sa1BkjZq3mqChm2Cd8rIzdXkQMA8e0wuXq53ypz6s5o5V8HRZkoEt2ywJ3eeNWFKWeYr8HK4g== 1618 | dependencies: 1619 | chalk "^4.0.0" 1620 | diff-sequences "^29.4.2" 1621 | jest-get-type "^29.4.2" 1622 | pretty-format "^29.4.2" 1623 | 1624 | jest-docblock@^29.4.2: 1625 | version "29.4.2" 1626 | resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.2.tgz#c78a95eedf9a24c0a6cc16cf2abdc4b8b0f2531b" 1627 | integrity sha512-dV2JdahgClL34Y5vLrAHde3nF3yo2jKRH+GIYJuCpfqwEJZcikzeafVTGAjbOfKPG17ez9iWXwUYp7yefeCRag== 1628 | dependencies: 1629 | detect-newline "^3.0.0" 1630 | 1631 | jest-each@^29.4.2: 1632 | version "29.4.2" 1633 | resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.4.2.tgz#e1347aff1303f4c35470827a62c029d389c5d44a" 1634 | integrity sha512-trvKZb0JYiCndc55V1Yh0Luqi7AsAdDWpV+mKT/5vkpnnFQfuQACV72IoRV161aAr6kAVIBpmYzwhBzm34vQkA== 1635 | dependencies: 1636 | "@jest/types" "^29.4.2" 1637 | chalk "^4.0.0" 1638 | jest-get-type "^29.4.2" 1639 | jest-util "^29.4.2" 1640 | pretty-format "^29.4.2" 1641 | 1642 | jest-environment-node@^29.4.2: 1643 | version "29.4.2" 1644 | resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.4.2.tgz#0eab835b41e25fd0c1a72f62665fc8db08762ad2" 1645 | integrity sha512-MLPrqUcOnNBc8zTOfqBbxtoa8/Ee8tZ7UFW7hRDQSUT+NGsvS96wlbHGTf+EFAT9KC3VNb7fWEM6oyvmxtE/9w== 1646 | dependencies: 1647 | "@jest/environment" "^29.4.2" 1648 | "@jest/fake-timers" "^29.4.2" 1649 | "@jest/types" "^29.4.2" 1650 | "@types/node" "*" 1651 | jest-mock "^29.4.2" 1652 | jest-util "^29.4.2" 1653 | 1654 | jest-get-type@^29.4.2: 1655 | version "29.4.2" 1656 | resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.2.tgz#7cb63f154bca8d8f57364d01614477d466fa43fe" 1657 | integrity sha512-vERN30V5i2N6lqlFu4ljdTqQAgrkTFMC9xaIIfOPYBw04pufjXRty5RuXBiB1d72tGbURa/UgoiHB90ruOSivg== 1658 | 1659 | jest-haste-map@^29.4.2: 1660 | version "29.4.2" 1661 | resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.4.2.tgz#9112df3f5121e643f1b2dcbaa86ab11b0b90b49a" 1662 | integrity sha512-WkUgo26LN5UHPknkezrBzr7lUtV1OpGsp+NfXbBwHztsFruS3gz+AMTTBcEklvi8uPzpISzYjdKXYZQJXBnfvw== 1663 | dependencies: 1664 | "@jest/types" "^29.4.2" 1665 | "@types/graceful-fs" "^4.1.3" 1666 | "@types/node" "*" 1667 | anymatch "^3.0.3" 1668 | fb-watchman "^2.0.0" 1669 | graceful-fs "^4.2.9" 1670 | jest-regex-util "^29.4.2" 1671 | jest-util "^29.4.2" 1672 | jest-worker "^29.4.2" 1673 | micromatch "^4.0.4" 1674 | walker "^1.0.8" 1675 | optionalDependencies: 1676 | fsevents "^2.3.2" 1677 | 1678 | jest-leak-detector@^29.4.2: 1679 | version "29.4.2" 1680 | resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.4.2.tgz#8f05c6680e0cb46a1d577c0d3da9793bed3ea97b" 1681 | integrity sha512-Wa62HuRJmWXtX9F00nUpWlrbaH5axeYCdyRsOs/+Rb1Vb6+qWTlB5rKwCCRKtorM7owNwKsyJ8NRDUcZ8ghYUA== 1682 | dependencies: 1683 | jest-get-type "^29.4.2" 1684 | pretty-format "^29.4.2" 1685 | 1686 | jest-matcher-utils@^29.4.2: 1687 | version "29.4.2" 1688 | resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.4.2.tgz#08d0bf5abf242e3834bec92c7ef5071732839e85" 1689 | integrity sha512-EZaAQy2je6Uqkrm6frnxBIdaWtSYFoR8SVb2sNLAtldswlR/29JAgx+hy67llT3+hXBaLB0zAm5UfeqerioZyg== 1690 | dependencies: 1691 | chalk "^4.0.0" 1692 | jest-diff "^29.4.2" 1693 | jest-get-type "^29.4.2" 1694 | pretty-format "^29.4.2" 1695 | 1696 | jest-message-util@^29.4.2: 1697 | version "29.4.2" 1698 | resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.4.2.tgz#309a2924eae6ca67cf7f25781a2af1902deee717" 1699 | integrity sha512-SElcuN4s6PNKpOEtTInjOAA8QvItu0iugkXqhYyguRvQoXapg5gN+9RQxLAkakChZA7Y26j6yUCsFWN+hlKD6g== 1700 | dependencies: 1701 | "@babel/code-frame" "^7.12.13" 1702 | "@jest/types" "^29.4.2" 1703 | "@types/stack-utils" "^2.0.0" 1704 | chalk "^4.0.0" 1705 | graceful-fs "^4.2.9" 1706 | micromatch "^4.0.4" 1707 | pretty-format "^29.4.2" 1708 | slash "^3.0.0" 1709 | stack-utils "^2.0.3" 1710 | 1711 | jest-mock@^29.4.2: 1712 | version "29.4.2" 1713 | resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.4.2.tgz#e1054be66fb3e975d26d4528fcde6979e4759de8" 1714 | integrity sha512-x1FSd4Gvx2yIahdaIKoBjwji6XpboDunSJ95RpntGrYulI1ByuYQCKN/P7hvk09JB74IonU3IPLdkutEWYt++g== 1715 | dependencies: 1716 | "@jest/types" "^29.4.2" 1717 | "@types/node" "*" 1718 | jest-util "^29.4.2" 1719 | 1720 | jest-pnp-resolver@^1.2.2: 1721 | version "1.2.3" 1722 | resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" 1723 | integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== 1724 | 1725 | jest-regex-util@^29.4.2: 1726 | version "29.4.2" 1727 | resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.2.tgz#19187cca35d301f8126cf7a021dd4dcb7b58a1ca" 1728 | integrity sha512-XYZXOqUl1y31H6VLMrrUL1ZhXuiymLKPz0BO1kEeR5xER9Tv86RZrjTm74g5l9bPJQXA/hyLdaVPN/sdqfteig== 1729 | 1730 | jest-resolve-dependencies@^29.4.2: 1731 | version "29.4.2" 1732 | resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.4.2.tgz#6359db606f5967b68ca8bbe9dbc07a4306c12bf7" 1733 | integrity sha512-6pL4ptFw62rjdrPk7rRpzJYgcRqRZNsZTF1VxVTZMishbO6ObyWvX57yHOaNGgKoADtAHRFYdHQUEvYMJATbDg== 1734 | dependencies: 1735 | jest-regex-util "^29.4.2" 1736 | jest-snapshot "^29.4.2" 1737 | 1738 | jest-resolve@^29.4.2: 1739 | version "29.4.2" 1740 | resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.4.2.tgz#8831f449671d08d161fe493003f61dc9b55b808e" 1741 | integrity sha512-RtKWW0mbR3I4UdkOrW7552IFGLYQ5AF9YrzD0FnIOkDu0rAMlA5/Y1+r7lhCAP4nXSBTaE7ueeqj6IOwZpgoqw== 1742 | dependencies: 1743 | chalk "^4.0.0" 1744 | graceful-fs "^4.2.9" 1745 | jest-haste-map "^29.4.2" 1746 | jest-pnp-resolver "^1.2.2" 1747 | jest-util "^29.4.2" 1748 | jest-validate "^29.4.2" 1749 | resolve "^1.20.0" 1750 | resolve.exports "^2.0.0" 1751 | slash "^3.0.0" 1752 | 1753 | jest-runner@^29.4.2: 1754 | version "29.4.2" 1755 | resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.4.2.tgz#2bcecf72303369df4ef1e6e983c22a89870d5125" 1756 | integrity sha512-wqwt0drm7JGjwdH+x1XgAl+TFPH7poowMguPQINYxaukCqlczAcNLJiK+OLxUxQAEWMdy+e6nHZlFHO5s7EuRg== 1757 | dependencies: 1758 | "@jest/console" "^29.4.2" 1759 | "@jest/environment" "^29.4.2" 1760 | "@jest/test-result" "^29.4.2" 1761 | "@jest/transform" "^29.4.2" 1762 | "@jest/types" "^29.4.2" 1763 | "@types/node" "*" 1764 | chalk "^4.0.0" 1765 | emittery "^0.13.1" 1766 | graceful-fs "^4.2.9" 1767 | jest-docblock "^29.4.2" 1768 | jest-environment-node "^29.4.2" 1769 | jest-haste-map "^29.4.2" 1770 | jest-leak-detector "^29.4.2" 1771 | jest-message-util "^29.4.2" 1772 | jest-resolve "^29.4.2" 1773 | jest-runtime "^29.4.2" 1774 | jest-util "^29.4.2" 1775 | jest-watcher "^29.4.2" 1776 | jest-worker "^29.4.2" 1777 | p-limit "^3.1.0" 1778 | source-map-support "0.5.13" 1779 | 1780 | jest-runtime@^29.4.2: 1781 | version "29.4.2" 1782 | resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.4.2.tgz#d86b764c5b95d76cb26ed1f32644e99de5d5c134" 1783 | integrity sha512-3fque9vtpLzGuxT9eZqhxi+9EylKK/ESfhClv4P7Y9sqJPs58LjVhTt8jaMp/pRO38agll1CkSu9z9ieTQeRrw== 1784 | dependencies: 1785 | "@jest/environment" "^29.4.2" 1786 | "@jest/fake-timers" "^29.4.2" 1787 | "@jest/globals" "^29.4.2" 1788 | "@jest/source-map" "^29.4.2" 1789 | "@jest/test-result" "^29.4.2" 1790 | "@jest/transform" "^29.4.2" 1791 | "@jest/types" "^29.4.2" 1792 | "@types/node" "*" 1793 | chalk "^4.0.0" 1794 | cjs-module-lexer "^1.0.0" 1795 | collect-v8-coverage "^1.0.0" 1796 | glob "^7.1.3" 1797 | graceful-fs "^4.2.9" 1798 | jest-haste-map "^29.4.2" 1799 | jest-message-util "^29.4.2" 1800 | jest-mock "^29.4.2" 1801 | jest-regex-util "^29.4.2" 1802 | jest-resolve "^29.4.2" 1803 | jest-snapshot "^29.4.2" 1804 | jest-util "^29.4.2" 1805 | semver "^7.3.5" 1806 | slash "^3.0.0" 1807 | strip-bom "^4.0.0" 1808 | 1809 | jest-snapshot@^29.4.2: 1810 | version "29.4.2" 1811 | resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.4.2.tgz#ba1fb9abb279fd2c85109ff1757bc56b503bbb3a" 1812 | integrity sha512-PdfubrSNN5KwroyMH158R23tWcAXJyx4pvSvWls1dHoLCaUhGul9rsL3uVjtqzRpkxlkMavQjGuWG1newPgmkw== 1813 | dependencies: 1814 | "@babel/core" "^7.11.6" 1815 | "@babel/generator" "^7.7.2" 1816 | "@babel/plugin-syntax-jsx" "^7.7.2" 1817 | "@babel/plugin-syntax-typescript" "^7.7.2" 1818 | "@babel/traverse" "^7.7.2" 1819 | "@babel/types" "^7.3.3" 1820 | "@jest/expect-utils" "^29.4.2" 1821 | "@jest/transform" "^29.4.2" 1822 | "@jest/types" "^29.4.2" 1823 | "@types/babel__traverse" "^7.0.6" 1824 | "@types/prettier" "^2.1.5" 1825 | babel-preset-current-node-syntax "^1.0.0" 1826 | chalk "^4.0.0" 1827 | expect "^29.4.2" 1828 | graceful-fs "^4.2.9" 1829 | jest-diff "^29.4.2" 1830 | jest-get-type "^29.4.2" 1831 | jest-haste-map "^29.4.2" 1832 | jest-matcher-utils "^29.4.2" 1833 | jest-message-util "^29.4.2" 1834 | jest-util "^29.4.2" 1835 | natural-compare "^1.4.0" 1836 | pretty-format "^29.4.2" 1837 | semver "^7.3.5" 1838 | 1839 | jest-util@^29.4.2: 1840 | version "29.4.2" 1841 | resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.4.2.tgz#3db8580b295df453a97de4a1b42dd2578dabd2c2" 1842 | integrity sha512-wKnm6XpJgzMUSRFB7YF48CuwdzuDIHenVuoIb1PLuJ6F+uErZsuDkU+EiExkChf6473XcawBrSfDSnXl+/YG4g== 1843 | dependencies: 1844 | "@jest/types" "^29.4.2" 1845 | "@types/node" "*" 1846 | chalk "^4.0.0" 1847 | ci-info "^3.2.0" 1848 | graceful-fs "^4.2.9" 1849 | picomatch "^2.2.3" 1850 | 1851 | jest-validate@^29.4.2: 1852 | version "29.4.2" 1853 | resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.4.2.tgz#3b3f8c4910ab9a3442d2512e2175df6b3f77b915" 1854 | integrity sha512-tto7YKGPJyFbhcKhIDFq8B5od+eVWD/ySZ9Tvcp/NGCvYA4RQbuzhbwYWtIjMT5W5zA2W0eBJwu4HVw34d5G6Q== 1855 | dependencies: 1856 | "@jest/types" "^29.4.2" 1857 | camelcase "^6.2.0" 1858 | chalk "^4.0.0" 1859 | jest-get-type "^29.4.2" 1860 | leven "^3.1.0" 1861 | pretty-format "^29.4.2" 1862 | 1863 | jest-watcher@^29.4.2: 1864 | version "29.4.2" 1865 | resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.4.2.tgz#09c0f4c9a9c7c0807fcefb1445b821c6f7953b7c" 1866 | integrity sha512-onddLujSoGiMJt+tKutehIidABa175i/Ays+QvKxCqBwp7fvxP3ZhKsrIdOodt71dKxqk4sc0LN41mWLGIK44w== 1867 | dependencies: 1868 | "@jest/test-result" "^29.4.2" 1869 | "@jest/types" "^29.4.2" 1870 | "@types/node" "*" 1871 | ansi-escapes "^4.2.1" 1872 | chalk "^4.0.0" 1873 | emittery "^0.13.1" 1874 | jest-util "^29.4.2" 1875 | string-length "^4.0.1" 1876 | 1877 | jest-worker@^29.4.2: 1878 | version "29.4.2" 1879 | resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.2.tgz#d9b2c3bafc69311d84d94e7fb45677fc8976296f" 1880 | integrity sha512-VIuZA2hZmFyRbchsUCHEehoSf2HEl0YVF8SDJqtPnKorAaBuh42V8QsLnde0XP5F6TyCynGPEGgBOn3Fc+wZGw== 1881 | dependencies: 1882 | "@types/node" "*" 1883 | jest-util "^29.4.2" 1884 | merge-stream "^2.0.0" 1885 | supports-color "^8.0.0" 1886 | 1887 | jest@^29.4.2: 1888 | version "29.4.2" 1889 | resolved "https://registry.npmjs.org/jest/-/jest-29.4.2.tgz#4c2127d03a71dc187f386156ef155dbf323fb7be" 1890 | integrity sha512-+5hLd260vNIHu+7ZgMIooSpKl7Jp5pHKb51e73AJU3owd5dEo/RfVwHbA/na3C/eozrt3hJOLGf96c7EWwIAzg== 1891 | dependencies: 1892 | "@jest/core" "^29.4.2" 1893 | "@jest/types" "^29.4.2" 1894 | import-local "^3.0.2" 1895 | jest-cli "^29.4.2" 1896 | 1897 | js-tokens@^4.0.0: 1898 | version "4.0.0" 1899 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1900 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1901 | 1902 | js-yaml@^3.13.1: 1903 | version "3.14.1" 1904 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 1905 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 1906 | dependencies: 1907 | argparse "^1.0.7" 1908 | esprima "^4.0.0" 1909 | 1910 | js-yaml@^4.1.0: 1911 | version "4.1.0" 1912 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1913 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1914 | dependencies: 1915 | argparse "^2.0.1" 1916 | 1917 | jsesc@^2.5.1: 1918 | version "2.5.2" 1919 | resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1920 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1921 | 1922 | json-parse-even-better-errors@^2.3.0: 1923 | version "2.3.1" 1924 | resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 1925 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 1926 | 1927 | json-schema-traverse@^0.4.1: 1928 | version "0.4.1" 1929 | resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1930 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1931 | 1932 | json-stable-stringify-without-jsonify@^1.0.1: 1933 | version "1.0.1" 1934 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1935 | 1936 | json5@^2.2.2: 1937 | version "2.2.3" 1938 | resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" 1939 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== 1940 | 1941 | kleur@^3.0.3: 1942 | version "3.0.3" 1943 | resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" 1944 | integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== 1945 | 1946 | leven@^3.1.0: 1947 | version "3.1.0" 1948 | resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 1949 | integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 1950 | 1951 | levn@^0.4.1: 1952 | version "0.4.1" 1953 | resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1954 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1955 | dependencies: 1956 | prelude-ls "^1.2.1" 1957 | type-check "~0.4.0" 1958 | 1959 | lines-and-columns@^1.1.6: 1960 | version "1.2.4" 1961 | resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" 1962 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 1963 | 1964 | locate-path@^5.0.0: 1965 | version "5.0.0" 1966 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1967 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1968 | dependencies: 1969 | p-locate "^4.1.0" 1970 | 1971 | lodash.merge@^4.6.2: 1972 | version "4.6.2" 1973 | resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1974 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1975 | 1976 | lru-cache@^5.1.1: 1977 | version "5.1.1" 1978 | resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" 1979 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== 1980 | dependencies: 1981 | yallist "^3.0.2" 1982 | 1983 | lru-cache@^6.0.0: 1984 | version "6.0.0" 1985 | resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1986 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1987 | dependencies: 1988 | yallist "^4.0.0" 1989 | 1990 | make-dir@^3.0.0: 1991 | version "3.1.0" 1992 | resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 1993 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 1994 | dependencies: 1995 | semver "^6.0.0" 1996 | 1997 | makeerror@1.0.12: 1998 | version "1.0.12" 1999 | resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" 2000 | integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== 2001 | dependencies: 2002 | tmpl "1.0.5" 2003 | 2004 | merge-stream@^2.0.0: 2005 | version "2.0.0" 2006 | resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 2007 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 2008 | 2009 | micromatch@^4.0.4: 2010 | version "4.0.5" 2011 | resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 2012 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 2013 | dependencies: 2014 | braces "^3.0.2" 2015 | picomatch "^2.3.1" 2016 | 2017 | mimic-fn@^2.1.0: 2018 | version "2.1.0" 2019 | resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 2020 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 2021 | 2022 | minimatch@^3.0.4, minimatch@^3.1.1: 2023 | version "3.1.2" 2024 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 2025 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 2026 | dependencies: 2027 | brace-expansion "^1.1.7" 2028 | 2029 | minimist@^1.2.6: 2030 | version "1.2.6" 2031 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" 2032 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== 2033 | 2034 | module-alias@^2.2.2: 2035 | version "2.2.2" 2036 | resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.2.tgz#151cdcecc24e25739ff0aa6e51e1c5716974c0e0" 2037 | integrity sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q== 2038 | 2039 | ms@2.1.2: 2040 | version "2.1.2" 2041 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2042 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 2043 | 2044 | natural-compare@^1.4.0: 2045 | version "1.4.0" 2046 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 2047 | 2048 | node-fetch@^2.6.7: 2049 | version "2.6.7" 2050 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" 2051 | integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== 2052 | dependencies: 2053 | whatwg-url "^5.0.0" 2054 | 2055 | node-int64@^0.4.0: 2056 | version "0.4.0" 2057 | resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" 2058 | integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== 2059 | 2060 | node-releases@^2.0.8: 2061 | version "2.0.10" 2062 | resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" 2063 | integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== 2064 | 2065 | normalize-path@^3.0.0: 2066 | version "3.0.0" 2067 | resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 2068 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 2069 | 2070 | npm-run-path@^4.0.1: 2071 | version "4.0.1" 2072 | resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 2073 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 2074 | dependencies: 2075 | path-key "^3.0.0" 2076 | 2077 | once@^1.3.0: 2078 | version "1.4.0" 2079 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2080 | dependencies: 2081 | wrappy "1" 2082 | 2083 | onetime@^5.1.2: 2084 | version "5.1.2" 2085 | resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 2086 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 2087 | dependencies: 2088 | mimic-fn "^2.1.0" 2089 | 2090 | optionator@^0.9.1: 2091 | version "0.9.1" 2092 | resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 2093 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 2094 | dependencies: 2095 | deep-is "^0.1.3" 2096 | fast-levenshtein "^2.0.6" 2097 | levn "^0.4.1" 2098 | prelude-ls "^1.2.1" 2099 | type-check "^0.4.0" 2100 | word-wrap "^1.2.3" 2101 | 2102 | p-limit@^2.2.0: 2103 | version "2.3.0" 2104 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 2105 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 2106 | dependencies: 2107 | p-try "^2.0.0" 2108 | 2109 | p-limit@^3.1.0: 2110 | version "3.1.0" 2111 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 2112 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 2113 | dependencies: 2114 | yocto-queue "^0.1.0" 2115 | 2116 | p-locate@^4.1.0: 2117 | version "4.1.0" 2118 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 2119 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 2120 | dependencies: 2121 | p-limit "^2.2.0" 2122 | 2123 | p-timeout@^4.1.0: 2124 | version "4.1.0" 2125 | resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-4.1.0.tgz#788253c0452ab0ffecf18a62dff94ff1bd09ca0a" 2126 | integrity sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw== 2127 | 2128 | p-try@^2.0.0: 2129 | version "2.2.0" 2130 | resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 2131 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 2132 | 2133 | parent-module@^1.0.0: 2134 | version "1.0.1" 2135 | resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 2136 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 2137 | dependencies: 2138 | callsites "^3.0.0" 2139 | 2140 | parse-json@^5.2.0: 2141 | version "5.2.0" 2142 | resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 2143 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 2144 | dependencies: 2145 | "@babel/code-frame" "^7.0.0" 2146 | error-ex "^1.3.1" 2147 | json-parse-even-better-errors "^2.3.0" 2148 | lines-and-columns "^1.1.6" 2149 | 2150 | path-exists@^4.0.0: 2151 | version "4.0.0" 2152 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 2153 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 2154 | 2155 | path-is-absolute@^1.0.0: 2156 | version "1.0.1" 2157 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2158 | 2159 | path-key@^3.0.0, path-key@^3.1.0: 2160 | version "3.1.1" 2161 | resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 2162 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 2163 | 2164 | path-parse@^1.0.7: 2165 | version "1.0.7" 2166 | resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 2167 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 2168 | 2169 | picocolors@^1.0.0: 2170 | version "1.0.0" 2171 | resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 2172 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 2173 | 2174 | picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: 2175 | version "2.3.1" 2176 | resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 2177 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 2178 | 2179 | pirates@^4.0.4: 2180 | version "4.0.5" 2181 | resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" 2182 | integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== 2183 | 2184 | pkg-dir@^4.2.0: 2185 | version "4.2.0" 2186 | resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 2187 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 2188 | dependencies: 2189 | find-up "^4.0.0" 2190 | 2191 | prelude-ls@^1.2.1: 2192 | version "1.2.1" 2193 | resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 2194 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 2195 | 2196 | pretty-format@^29.0.0, pretty-format@^29.4.2: 2197 | version "29.4.2" 2198 | resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.2.tgz#64bf5ccc0d718c03027d94ac957bdd32b3fb2401" 2199 | integrity sha512-qKlHR8yFVCbcEWba0H0TOC8dnLlO4vPlyEjRPw31FZ2Rupy9nLa8ZLbYny8gWEl8CkEhJqAE6IzdNELTBVcBEg== 2200 | dependencies: 2201 | "@jest/schemas" "^29.4.2" 2202 | ansi-styles "^5.0.0" 2203 | react-is "^18.0.0" 2204 | 2205 | prompts@^2.0.1: 2206 | version "2.4.2" 2207 | resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" 2208 | integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== 2209 | dependencies: 2210 | kleur "^3.0.3" 2211 | sisteransi "^1.0.5" 2212 | 2213 | punycode@^2.1.0: 2214 | version "2.1.1" 2215 | resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 2216 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 2217 | 2218 | react-is@^18.0.0: 2219 | version "18.2.0" 2220 | resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" 2221 | integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== 2222 | 2223 | regexpp@^3.2.0: 2224 | version "3.2.0" 2225 | resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 2226 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 2227 | 2228 | require-directory@^2.1.1: 2229 | version "2.1.1" 2230 | resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2231 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 2232 | 2233 | resolve-cwd@^3.0.0: 2234 | version "3.0.0" 2235 | resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" 2236 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== 2237 | dependencies: 2238 | resolve-from "^5.0.0" 2239 | 2240 | resolve-from@^4.0.0: 2241 | version "4.0.0" 2242 | resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 2243 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 2244 | 2245 | resolve-from@^5.0.0: 2246 | version "5.0.0" 2247 | resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 2248 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 2249 | 2250 | resolve.exports@^2.0.0: 2251 | version "2.0.0" 2252 | resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.0.tgz#c1a0028c2d166ec2fbf7d0644584927e76e7400e" 2253 | integrity sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg== 2254 | 2255 | resolve@^1.20.0: 2256 | version "1.22.1" 2257 | resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" 2258 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== 2259 | dependencies: 2260 | is-core-module "^2.9.0" 2261 | path-parse "^1.0.7" 2262 | supports-preserve-symlinks-flag "^1.0.0" 2263 | 2264 | rimraf@^3.0.2: 2265 | version "3.0.2" 2266 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 2267 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 2268 | dependencies: 2269 | glob "^7.1.3" 2270 | 2271 | safe-compare@^1.1.4: 2272 | version "1.1.4" 2273 | resolved "https://registry.yarnpkg.com/safe-compare/-/safe-compare-1.1.4.tgz#5e0128538a82820e2e9250cd78e45da6786ba593" 2274 | integrity sha512-b9wZ986HHCo/HbKrRpBJb2kqXMK9CEWIE1egeEvZsYn69ay3kdfl9nG3RyOcR+jInTDf7a86WQ1d4VJX7goSSQ== 2275 | dependencies: 2276 | buffer-alloc "^1.2.0" 2277 | 2278 | sandwich-stream@^2.0.2: 2279 | version "2.0.2" 2280 | resolved "https://registry.yarnpkg.com/sandwich-stream/-/sandwich-stream-2.0.2.tgz#6d1feb6cf7e9fe9fadb41513459a72c2e84000fa" 2281 | integrity sha512-jLYV0DORrzY3xaz/S9ydJL6Iz7essZeAfnAavsJ+zsJGZ1MOnsS52yRjU3uF3pJa/lla7+wisp//fxOwOH8SKQ== 2282 | 2283 | semver@^6.0.0, semver@^6.3.0: 2284 | version "6.3.0" 2285 | resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 2286 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 2287 | 2288 | semver@^7.3.5: 2289 | version "7.3.8" 2290 | resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" 2291 | integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== 2292 | dependencies: 2293 | lru-cache "^6.0.0" 2294 | 2295 | shebang-command@^2.0.0: 2296 | version "2.0.0" 2297 | resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 2298 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 2299 | dependencies: 2300 | shebang-regex "^3.0.0" 2301 | 2302 | shebang-regex@^3.0.0: 2303 | version "3.0.0" 2304 | resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 2305 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 2306 | 2307 | signal-exit@^3.0.3, signal-exit@^3.0.7: 2308 | version "3.0.7" 2309 | resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 2310 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 2311 | 2312 | sisteransi@^1.0.5: 2313 | version "1.0.5" 2314 | resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" 2315 | integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== 2316 | 2317 | slash@^3.0.0: 2318 | version "3.0.0" 2319 | resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 2320 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 2321 | 2322 | source-map-support@0.5.13: 2323 | version "0.5.13" 2324 | resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" 2325 | integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== 2326 | dependencies: 2327 | buffer-from "^1.0.0" 2328 | source-map "^0.6.0" 2329 | 2330 | source-map@^0.6.0, source-map@^0.6.1: 2331 | version "0.6.1" 2332 | resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2333 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 2334 | 2335 | sprintf-js@~1.0.2: 2336 | version "1.0.3" 2337 | resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2338 | integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== 2339 | 2340 | stack-utils@^2.0.3: 2341 | version "2.0.6" 2342 | resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" 2343 | integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== 2344 | dependencies: 2345 | escape-string-regexp "^2.0.0" 2346 | 2347 | string-length@^4.0.1: 2348 | version "4.0.2" 2349 | resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" 2350 | integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== 2351 | dependencies: 2352 | char-regex "^1.0.2" 2353 | strip-ansi "^6.0.0" 2354 | 2355 | string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: 2356 | version "4.2.3" 2357 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 2358 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 2359 | dependencies: 2360 | emoji-regex "^8.0.0" 2361 | is-fullwidth-code-point "^3.0.0" 2362 | strip-ansi "^6.0.1" 2363 | 2364 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 2365 | version "6.0.1" 2366 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 2367 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 2368 | dependencies: 2369 | ansi-regex "^5.0.1" 2370 | 2371 | strip-bom@^4.0.0: 2372 | version "4.0.0" 2373 | resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" 2374 | integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== 2375 | 2376 | strip-final-newline@^2.0.0: 2377 | version "2.0.0" 2378 | resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 2379 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 2380 | 2381 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 2382 | version "3.1.1" 2383 | resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 2384 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 2385 | 2386 | supports-color@^5.3.0: 2387 | version "5.5.0" 2388 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2389 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2390 | dependencies: 2391 | has-flag "^3.0.0" 2392 | 2393 | supports-color@^7.1.0: 2394 | version "7.2.0" 2395 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 2396 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 2397 | dependencies: 2398 | has-flag "^4.0.0" 2399 | 2400 | supports-color@^8.0.0: 2401 | version "8.1.1" 2402 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 2403 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 2404 | dependencies: 2405 | has-flag "^4.0.0" 2406 | 2407 | supports-preserve-symlinks-flag@^1.0.0: 2408 | version "1.0.0" 2409 | resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 2410 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 2411 | 2412 | telegraf@^4.8.5: 2413 | version "4.8.5" 2414 | resolved "https://registry.yarnpkg.com/telegraf/-/telegraf-4.8.5.tgz#0df238ae01e44f98ce28785f5d465127d712151b" 2415 | integrity sha512-BTnXBvQ2sRnPCuDvMCvZhMfanJxycWNmAEd+23yBliKXddqt/fFWkj/2OQMD/L3YPD1c1elK5F4WEkJUW3khQQ== 2416 | dependencies: 2417 | abort-controller "^3.0.0" 2418 | debug "^4.3.3" 2419 | minimist "^1.2.6" 2420 | module-alias "^2.2.2" 2421 | node-fetch "^2.6.7" 2422 | p-timeout "^4.1.0" 2423 | safe-compare "^1.1.4" 2424 | sandwich-stream "^2.0.2" 2425 | typegram "^3.9.0" 2426 | 2427 | test-exclude@^6.0.0: 2428 | version "6.0.0" 2429 | resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" 2430 | integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== 2431 | dependencies: 2432 | "@istanbuljs/schema" "^0.1.2" 2433 | glob "^7.1.4" 2434 | minimatch "^3.0.4" 2435 | 2436 | text-table@^0.2.0: 2437 | version "0.2.0" 2438 | resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2439 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 2440 | 2441 | tmpl@1.0.5: 2442 | version "1.0.5" 2443 | resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" 2444 | integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== 2445 | 2446 | to-fast-properties@^2.0.0: 2447 | version "2.0.0" 2448 | resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 2449 | integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== 2450 | 2451 | to-regex-range@^5.0.1: 2452 | version "5.0.1" 2453 | resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2454 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2455 | dependencies: 2456 | is-number "^7.0.0" 2457 | 2458 | tr46@~0.0.3: 2459 | version "0.0.3" 2460 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 2461 | integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= 2462 | 2463 | type-check@^0.4.0, type-check@~0.4.0: 2464 | version "0.4.0" 2465 | resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 2466 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 2467 | dependencies: 2468 | prelude-ls "^1.2.1" 2469 | 2470 | type-detect@4.0.8: 2471 | version "4.0.8" 2472 | resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 2473 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 2474 | 2475 | type-fest@^0.20.2: 2476 | version "0.20.2" 2477 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 2478 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 2479 | 2480 | type-fest@^0.21.3: 2481 | version "0.21.3" 2482 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" 2483 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== 2484 | 2485 | typegram@^3.9.0: 2486 | version "3.10.0" 2487 | resolved "https://registry.yarnpkg.com/typegram/-/typegram-3.10.0.tgz#8f02c2a7748f019f0566279318d2be396d103bd8" 2488 | integrity sha512-kma7ZF7SFRqcUCgo5sHg1MbPwc9/KYjVkbvrqIZK7oXfPdLBGz1s7wF9d7o4yjHp+AOGke8cyYGhI/+4xYYC4Q== 2489 | 2490 | update-browserslist-db@^1.0.10: 2491 | version "1.0.10" 2492 | resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" 2493 | integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== 2494 | dependencies: 2495 | escalade "^3.1.1" 2496 | picocolors "^1.0.0" 2497 | 2498 | uri-js@^4.2.2: 2499 | version "4.4.1" 2500 | resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 2501 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 2502 | dependencies: 2503 | punycode "^2.1.0" 2504 | 2505 | v8-compile-cache@^2.0.3: 2506 | version "2.3.0" 2507 | resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 2508 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 2509 | 2510 | v8-to-istanbul@^9.0.1: 2511 | version "9.0.1" 2512 | resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" 2513 | integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== 2514 | dependencies: 2515 | "@jridgewell/trace-mapping" "^0.3.12" 2516 | "@types/istanbul-lib-coverage" "^2.0.1" 2517 | convert-source-map "^1.6.0" 2518 | 2519 | walker@^1.0.8: 2520 | version "1.0.8" 2521 | resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" 2522 | integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== 2523 | dependencies: 2524 | makeerror "1.0.12" 2525 | 2526 | webidl-conversions@^3.0.0: 2527 | version "3.0.1" 2528 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 2529 | integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= 2530 | 2531 | whatwg-url@^5.0.0: 2532 | version "5.0.0" 2533 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 2534 | integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= 2535 | dependencies: 2536 | tr46 "~0.0.3" 2537 | webidl-conversions "^3.0.0" 2538 | 2539 | which@^2.0.1: 2540 | version "2.0.2" 2541 | resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2542 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2543 | dependencies: 2544 | isexe "^2.0.0" 2545 | 2546 | word-wrap@^1.2.3: 2547 | version "1.2.3" 2548 | resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 2549 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 2550 | 2551 | wrap-ansi@^7.0.0: 2552 | version "7.0.0" 2553 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 2554 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 2555 | dependencies: 2556 | ansi-styles "^4.0.0" 2557 | string-width "^4.1.0" 2558 | strip-ansi "^6.0.0" 2559 | 2560 | wrappy@1: 2561 | version "1.0.2" 2562 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2563 | 2564 | write-file-atomic@^4.0.2: 2565 | version "4.0.2" 2566 | resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" 2567 | integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== 2568 | dependencies: 2569 | imurmurhash "^0.1.4" 2570 | signal-exit "^3.0.7" 2571 | 2572 | y18n@^5.0.5: 2573 | version "5.0.8" 2574 | resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 2575 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 2576 | 2577 | yallist@^3.0.2: 2578 | version "3.1.1" 2579 | resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" 2580 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 2581 | 2582 | yallist@^4.0.0: 2583 | version "4.0.0" 2584 | resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 2585 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 2586 | 2587 | yargs-parser@^21.1.1: 2588 | version "21.1.1" 2589 | resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" 2590 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 2591 | 2592 | yargs@^17.3.1: 2593 | version "17.6.2" 2594 | resolved "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" 2595 | integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== 2596 | dependencies: 2597 | cliui "^8.0.1" 2598 | escalade "^3.1.1" 2599 | get-caller-file "^2.0.5" 2600 | require-directory "^2.1.1" 2601 | string-width "^4.2.3" 2602 | y18n "^5.0.5" 2603 | yargs-parser "^21.1.1" 2604 | 2605 | yocto-queue@^0.1.0: 2606 | version "0.1.0" 2607 | resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 2608 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 2609 | --------------------------------------------------------------------------------