├── .npmignore ├── .gitignore ├── .babelrc ├── LICENSE ├── package.json ├── README.md ├── src ├── cobranca.js └── cli.js ├── dist ├── cobranca.js └── cli.js └── yarn.lock /.npmignore: -------------------------------------------------------------------------------- 1 | src 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | node_modules/ 3 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["@babel/preset-env"] 3 | } 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Marcelo Camargo 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "_args": [ 3 | [ 4 | { 5 | "raw": "ligar-cobranca", 6 | "scope": null, 7 | "escapedName": "ligar-cobranca", 8 | "name": "ligar-cobranca", 9 | "rawSpec": "", 10 | "spec": "latest", 11 | "type": "tag" 12 | }, 13 | "C:\\Users\\gtoka" 14 | ] 15 | ], 16 | "_from": "ligar-cobranca@latest", 17 | "_inCache": true, 18 | "_location": "/ligar-cobranca", 19 | "_nodeVersion": "6.9.5", 20 | "_npmOperationalInternal": { 21 | "host": "s3://npm-registry-packages", 22 | "tmp": "tmp/ligar-cobranca-0.1.2.tgz_1502150573772_0.6703111487440765" 23 | }, 24 | "_npmUser": { 25 | "name": "gustavoporto", 26 | "email": "fgustavoporto@gmail.com" 27 | }, 28 | "_npmVersion": "3.5.0", 29 | "_phantomChildren": {}, 30 | "_requested": { 31 | "raw": "ligar-cobranca", 32 | "scope": null, 33 | "escapedName": "ligar-cobranca", 34 | "name": "ligar-cobranca", 35 | "rawSpec": "", 36 | "spec": "latest", 37 | "type": "tag" 38 | }, 39 | "_requiredBy": [ 40 | "#USER" 41 | ], 42 | "_resolved": "https://registry.npmjs.org/ligar-cobranca/-/ligar-cobranca-0.1.2.tgz", 43 | "_shasum": "ba742dc372bcb27493200076879be5db2e3cd45b", 44 | "_shrinkwrap": null, 45 | "_spec": "ligar-cobranca", 46 | "_where": "C:\\Users\\gtoka", 47 | "author": "Gustavo Porto ", 48 | "bin": { 49 | "ligar-cobranca": "./dist/cli.js" 50 | }, 51 | "bugs": { 52 | "url": "http://facebook.com/talvez.seja.o.gustavo" 53 | }, 54 | "dependencies": { 55 | "axios": "^1.6.7", 56 | "boxen": "^4.2.0", 57 | "chalk": "^4.1.2", 58 | "colors": "^1.4.0", 59 | "dotenv": "^16.4.5", 60 | "inquirer": "^8.2.6", 61 | "ora": "^5.4.1", 62 | "ramda": "^0.29.1", 63 | "yargs": "^17.7.2" 64 | }, 65 | "description": "Uma ferramenta para fazer chamadas automáticas usando a API da Zenvia", 66 | "devDependencies": { 67 | "@babel/cli": "^7.24.0", 68 | "@babel/core": "^7.24.0", 69 | "@babel/preset-env": "^7.24.0", 70 | "nodemon": "^3.1.0" 71 | }, 72 | "directories": {}, 73 | "dist": { 74 | "shasum": "ba742dc372bcb27493200076879be5db2e3cd45b", 75 | "tarball": "https://registry.npmjs.org/ligar-cobranca/-/ligar-cobranca-0.1.2.tgz" 76 | }, 77 | "homepage": "https://github.com/GtOkAi/ligar-cobranca", 78 | "license": "ISC", 79 | "main": "dist/cli.js", 80 | "maintainers": [ 81 | "Gustavo Porto " 82 | ], 83 | "name": "ligar-cobranca", 84 | "repository": { 85 | "type": "git", 86 | "url": "git+https://github.com/GtOkAi/ligar-cobranca.git" 87 | }, 88 | "scripts": { 89 | "build": "babel src -d dist", 90 | "start": "node dist/cli.js", 91 | "dev": "nodemon --watch src --exec 'npm run build && npm start'" 92 | }, 93 | "version": "1.0.0", 94 | "xo": { 95 | "esnext": true, 96 | "space": 4, 97 | "rules": { 98 | "camelcase": [ 99 | "off" 100 | ], 101 | "no-restricted-syntax": [ 102 | "error" 103 | ], 104 | "object-curly-spacing": [ 105 | "error", 106 | "always" 107 | ], 108 | "operator-linebreak": [ 109 | "error", 110 | "before" 111 | ] 112 | } 113 | }, 114 | "keywords": [ 115 | "zenvia", 116 | "cobranca", 117 | "chamadas", 118 | "voice", 119 | "api" 120 | ] 121 | } 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 📞 Ligar Cobrança 2 | 3 |

4 | 5 | ![Ligar Cobrança](https://i.imgur.com/4K5Gn5O.png) 6 | 7 | [![npm version](https://img.shields.io/npm/v/ligar-cobranca.svg?style=flat)](https://www.npmjs.com/package/ligar-cobranca) 8 | [![license](https://img.shields.io/npm/l/ligar-cobranca.svg?style=flat)](https://github.com/gtokai/ligar-cobranca/blob/main/LICENSE) 9 | 10 | Uma ferramenta CLI para fazer chamadas automáticas usando a API da Zenvia. 11 | Após 7 anos, fiz uma atualização profunda devido a pedidos de suporte de pessoas com pouco ou nenhum conhecimento em programação. 12 | 13 | Atualizei as dependências com falhas de segurança, o uso da API da TotalVoice que foi compradda pela ZENVIA e deixei de forma nativo o loop, além de outras melhorias. 14 | 15 | [Instalação](#-instalação) • [Como Usar](#-como-usar) • [Exemplos](#-exemplos) • [Configuração](#-configuração) 16 | 17 |

18 | 19 | ## 🚀 Instalação 20 | 21 | ```bash 22 | npm install -g ligar-cobranca 23 | ``` 24 | 25 | ## ⚙️ Configuração 26 | 27 | Você pode configurar a ferramenta de duas maneiras: 28 | 29 | ### 1. Usando o Assistente (Recomendado) 30 | Na primeira vez que você executar a ferramenta, ela irá guiá-lo através de um assistente interativo que ajudará você a configurar o token e o número de origem. Basta executar: 31 | 32 | ```bash 33 | ligar-cobranca 34 | ``` 35 | 36 | E seguir as instruções na tela. 37 | 38 | ### 2. Configuração Manual 39 | Se preferir, você pode criar manualmente um arquivo `.env` na raiz do projeto: 40 | 41 | ```env 42 | ZENVIA_TOKEN=seu_token_aqui 43 | ZENVIA_PHONE_NUMBER=seu_numero_de_origem 44 | ``` 45 | 46 | Para obter seu token, acesse [https://app.zenvia.com/](https://app.zenvia.com/) 47 | 48 | ## 🎯 Como Usar 49 | 50 | ### Modo Interativo 51 | ```bash 52 | ligar-cobranca 53 | ``` 54 | 55 | O modo interativo é perfeito para quem não está familiarizado com comandos de linha. Ele guia você passo a passo através de um assistente amigável: 56 | 57 | 1. **Token da Zenvia**: Digite seu token ou pressione Enter se já estiver configurado 58 | 2. **Tipo de Chamada**: Escolha entre chamada única ou múltipla 59 | 3. **Número de Destino**: Digite o número no formato internacional (ex: +5511999999999) 60 | 4. **Número de Origem**: Opcional, digite ou pressione Enter para usar o padrão 61 | 5. **Mensagem**: Escolha entre mensagem padrão ou digite uma personalizada 62 | 6. **Voz**: Selecione uma das 4 vozes disponíveis 63 | 7. **Velocidade**: Escolha entre 5 níveis de velocidade 64 | 8. **Gravar**: Decida se deseja gravar a chamada 65 | 9. **Quantidade**: Defina quantas chamadas deseja fazer (1-999) 66 | 10. **Debug**: Ative o modo debug se precisar de mais informações 67 | 68 | Cada opção é apresentada de forma clara e intuitiva, com menus de seleção quando apropriado. 69 | 70 | ### Modo CLI 71 | ```bash 72 | ligar-cobranca --para=NUMERO_DESTINO [opções] 73 | ``` 74 | 75 | ## 📋 Opções 76 | 77 | | Opção | Descrição | Padrão | 78 | |-------|-----------|---------| 79 | | `--para` | Número de destino | - | 80 | | `--numeros` | Números de destino (separados por vírgula) | - | 81 | | `--de` | Número de origem | ZENVIA_PHONE_NUMBER do .env | 82 | | `--texto` | Mensagem para ser convertida em voz | "Alô? Alô? Alô? Alô? Alô?" | 83 | | `--voz` | Voz a ser utilizada | 0 (Ricardo) | 84 | | `--velocidade` | Velocidade da voz (1-5) | 3 (Normal) | 85 | | `--gravar` | Gravar a chamada | false | 86 | | `--quantidade` | Quantidade de chamadas (1-999) | 1 | 87 | | `--debug` | Ativar modo debug | false | 88 | 89 | ### Vozes Disponíveis 90 | - `0` - Ricardo (BR) 91 | - `1` - Vitória (BR) 92 | - `2` - Joey (EN) 93 | - `3` - Maxim (RUS) 94 | 95 | ### Velocidades 96 | - `1` - Muito lento (0.5x) 97 | - `2` - Lento (0.75x) 98 | - `3` - Normal (1x) 99 | - `4` - Rápido (1.5x) 100 | - `5` - Muito rápido (2x) 101 | 102 | ## 💡 Exemplos 103 | 104 | ### Chamada Única 105 | ```bash 106 | ligar-cobranca --para=+5511999999999 --voz=0 --velocidade=3 --gravar 107 | ``` 108 | 109 | ### Múltiplas Chamadas 110 | ```bash 111 | ligar-cobranca --numeros=+5511999999999,+5511888888888 --quantidade=5 112 | ``` 113 | 114 | ### Chamada com Mensagem Personalizada 115 | ```bash 116 | ligar-cobranca --para=+5511999999999 --texto="Olá, isso é um teste" --voz=1 117 | ``` 118 | 119 | ### Chamada com Gravação 120 | ```bash 121 | ligar-cobranca --para=+5511999999999 --texto="Olá" --gravar 122 | ``` 123 | 124 | ### Modo Debug 125 | ```bash 126 | ligar-cobranca --para=+5511999999999 --debug 127 | ``` 128 | 129 | ## ⚠️ Importante 130 | 131 | - O número de origem (`--de`) deve estar no formato internacional (ex: +5511999999999) 132 | - Para múltiplas chamadas, forneça pelo menos 2 números 133 | - A quantidade de chamadas deve estar entre 1 e 999 134 | - O token da Zenvia deve ter 32 caracteres alfanuméricos 135 | - A gravação de chamadas está disponível apenas no painel de controle da Zenvia 136 | - Suporte completo para números internacionais (formato: +55DDDNUMERO) 137 | 138 | ## 🔍 Modo Debug 139 | 140 | Use a opção `--debug` para ver logs detalhados do processo, incluindo: 141 | - Detalhes da requisição à API 142 | - Resposta do servidor 143 | - Informações de progresso 144 | - Erros detalhados (se houver) 145 | 146 | ```bash 147 | ligar-cobranca --para=+5511999999999 --debug 148 | ``` 149 | 150 | ## 📝 Licença 151 | 152 | MIT 153 | 154 | --- 155 | 156 |

157 | 158 | **⚠️ Aviso Legal** 159 | 160 | Não sou responsável pelo uso que você faz desta ferramenta. Use com responsabilidade e de acordo com as leis locais. 161 | 162 |

163 | 164 | -------------------------------------------------------------------------------- /src/cobranca.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const axios = require('axios'); 4 | const fs = require('fs'); 5 | const path = require('path'); 6 | require('dotenv').config(); 7 | 8 | const ZENVIA_TOKEN = process.env.ZENVIA_TOKEN; 9 | const ZENVIA_PHONE_NUMBER = process.env.ZENVIA_PHONE_NUMBER; 10 | 11 | // Função para log condicional baseado no modo debug 12 | const debugLog = (message, debug = false) => { 13 | if (debug) { 14 | console.log(message); 15 | } 16 | }; 17 | 18 | // Função para salvar token no arquivo .env 19 | const salvarToken = (token) => { 20 | const envPath = path.join(process.cwd(), '.env'); 21 | let envContent = ''; 22 | 23 | // Verifica se o arquivo .env existe 24 | if (fs.existsSync(envPath)) { 25 | envContent = fs.readFileSync(envPath, 'utf8'); 26 | } 27 | 28 | // Remove espaços em branco e quebras de linha extras 29 | envContent = envContent.trim(); 30 | 31 | // Atualiza ou adiciona o token 32 | if (envContent.includes('ZENVIA_TOKEN=')) { 33 | envContent = envContent.replace(/ZENVIA_TOKEN=.*/, `ZENVIA_TOKEN=${token}`); 34 | } else { 35 | envContent += `\nZENVIA_TOKEN=${token}`; 36 | } 37 | 38 | // Garante que o arquivo termine com uma quebra de linha 39 | if (!envContent.endsWith('\n')) { 40 | envContent += '\n'; 41 | } 42 | 43 | // Salva o arquivo 44 | fs.writeFileSync(envPath, envContent); 45 | console.log('✅ Token salvo com sucesso no arquivo .env'); 46 | console.log('🔍 Token atual:', token); 47 | }; 48 | 49 | // Função para formatar número brasileiro 50 | const formatarNumero = (numero) => { 51 | // Remove todos os caracteres não numéricos 52 | numero = numero.replace(/\D/g, ''); 53 | 54 | // Se o número começa com 0, remove o 0 55 | if (numero.startsWith('0')) { 56 | numero = numero.substring(1); 57 | } 58 | 59 | // Se o número não começa com 55 e tem 10 ou 11 dígitos (DDD + número), adiciona 55 60 | if (!numero.startsWith('55') && (numero.length === 10 || numero.length === 11)) { 61 | numero = '55' + numero; 62 | } 63 | 64 | // Adiciona o + no início 65 | return '+' + numero; 66 | }; 67 | 68 | const call = async (token, para, texto, voz, velocidade, de, gravar, debug = false) => { 69 | const voiceMap = { 70 | 0: 'br-Ricardo', 71 | 1: 'br-Vitoria', 72 | 2: 'en-Joey', 73 | 3: 'rus-Maxim' 74 | }; 75 | 76 | const speedMap = { 77 | 1: 0.5, // Muito lento 78 | 2: 0.75, // Lento 79 | 3: 1, // Normal 80 | 4: 1.5, // Rápido 81 | 5: 2 // Muito rápido 82 | }; 83 | 84 | try { 85 | debugLog('\n🔍 Iniciando chamada:', debug); 86 | debugLog(' - Para: ' + para, debug); 87 | debugLog(' - De: ' + de, debug); 88 | debugLog(' - Voz: ' + voiceMap[voz], debug); 89 | debugLog(' - Velocidade: ' + speedMap[velocidade], debug); 90 | debugLog(' - Gravar: ' + (gravar ? 'Sim' : 'Não'), debug); 91 | debugLog(' - Mensagem: ' + texto, debug); 92 | 93 | const response = await axios.post('https://voice-api.zenvia.com/tts', { 94 | numero_destino: para, 95 | mensagem: texto, 96 | resposta_usuario: false, 97 | tipo_voz: voiceMap[voz], 98 | bina: de, 99 | gravar_audio: gravar, 100 | detecta_caixa: false, 101 | bina_inteligente: true, 102 | velocidade: speedMap[velocidade] || 1 103 | }, { 104 | headers: { 105 | 'Content-Type': 'application/json', 106 | 'Accept': 'application/json', 107 | 'Access-Token': token 108 | } 109 | }); 110 | 111 | debugLog('✅ Chamada iniciada com sucesso!', debug); 112 | debugLog(' - ID: ' + response.data.dados?.id, debug); 113 | debugLog(' - Status: ' + response.data.status, debug); 114 | debugLog(' - Mensagem: ' + response.data.mensagem, debug); 115 | 116 | return { 117 | success: true, 118 | messageId: response.data.dados?.id, 119 | status: response.data.status, 120 | message: response.data.mensagem, 121 | number: para 122 | }; 123 | } catch (error) { 124 | debugLog('❌ Erro na chamada:', debug); 125 | debugLog(' - Número: ' + para, debug); 126 | debugLog(' - Status: ' + error.response?.status, debug); 127 | debugLog(' - Mensagem: ' + (error.response?.data?.mensagem || error.message), debug); 128 | if (error.response?.data) { 129 | debugLog(' - Detalhes: ' + JSON.stringify(error.response.data, null, 2), debug); 130 | } 131 | 132 | return { 133 | success: false, 134 | error: error.response?.data?.mensagem || error.message, 135 | number: para, 136 | status: error.response?.status, 137 | details: error.response?.data 138 | }; 139 | } 140 | }; 141 | 142 | async function makeMultipleCalls(args) { 143 | const results = []; 144 | const totalCalls = args.quantidade; 145 | let currentCall = 0; 146 | 147 | // Faz as chamadas em sequência para o mesmo número 148 | for (let i = 0; i < args.quantidade; i++) { 149 | try { 150 | const result = await call( 151 | args.token || ZENVIA_TOKEN, 152 | args.para, 153 | args.texto, 154 | args.voz, 155 | args.velocidade, 156 | args.de, 157 | args.gravar, 158 | args.debug 159 | ); 160 | results.push(result); 161 | currentCall++; 162 | if (args.onProgress) { 163 | args.onProgress(currentCall); 164 | } 165 | } catch (error) { 166 | results.push({ 167 | success: false, 168 | number: args.para, 169 | error: error.message 170 | }); 171 | currentCall++; 172 | if (args.onProgress) { 173 | args.onProgress(currentCall); 174 | } 175 | } 176 | await new Promise(resolve => setTimeout(resolve, 1000)); 177 | } 178 | 179 | return results; 180 | } 181 | 182 | const makeCall = async (args) => { 183 | try { 184 | // Usa o token fornecido ou o do .env 185 | const token = args.token || process.env.ZENVIA_TOKEN; 186 | 187 | if (!token) { 188 | throw new Error('Token não encontrado. Configure ZENVIA_TOKEN no arquivo .env ou forneça um token via linha de comando'); 189 | } 190 | 191 | const response = await axios.post( 192 | 'https://voice-api.zenvia.com/tts', 193 | { 194 | numero_destino: args.para, 195 | mensagem: args.texto, 196 | resposta_usuario: false, 197 | tipo_voz: args.voz === 0 ? 'br-Ricardo' : 198 | args.voz === 1 ? 'br-Vitoria' : 199 | args.voz === 2 ? 'en-Joey' : 'rus-Maxim', 200 | bina: args.de, 201 | gravar_audio: args.gravar, 202 | bina_inteligente: true, 203 | velocidade: args.velocidade === 1 ? 0.5 : 204 | args.velocidade === 2 ? 0.75 : 205 | args.velocidade === 3 ? 1 : 206 | args.velocidade === 4 ? 1.5 : 2 207 | }, 208 | { 209 | headers: { 210 | 'Content-Type': 'application/json', 211 | 'Accept': 'application/json', 212 | 'Access-Token': token 213 | } 214 | } 215 | ); 216 | 217 | return { 218 | success: true, 219 | number: args.para, 220 | response: response.data 221 | }; 222 | } catch (error) { 223 | throw new Error(error.response?.data?.mensagem || error.message); 224 | } 225 | }; 226 | 227 | const cobranca = async (args) => { 228 | try { 229 | if (args.debug) { 230 | console.log('Debug: Argumentos recebidos:', args); 231 | } 232 | 233 | // Se um token foi fornecido, salva no .env 234 | if (args.token) { 235 | if (!/^[a-zA-Z0-9]{32}$/.test(args.token)) { 236 | throw new Error('Token inválido. O token da Zenvia deve ter 32 caracteres alfanuméricos.'); 237 | } 238 | salvarToken(args.token); 239 | } 240 | 241 | return await makeMultipleCalls(args); 242 | } catch (error) { 243 | throw new Error(error.message); 244 | } 245 | }; 246 | 247 | module.exports = cobranca; -------------------------------------------------------------------------------- /src/cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 'use strict'; 3 | 4 | require('dotenv').config(); 5 | 6 | var _yargs = require('yargs'); 7 | var _yargs2 = _interopRequireDefault(_yargs); 8 | var _safe = require('colors/safe'); 9 | var _ramda = require('ramda'); 10 | var _cobranca = require('./cobranca'); 11 | var _cobranca2 = _interopRequireDefault(_cobranca); 12 | var inquirer = require('inquirer'); 13 | const chalk = require('chalk'); 14 | const boxen = require('boxen'); 15 | 16 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 17 | 18 | const title = boxen( 19 | chalk.bold.blue('Ligar Cobrança') + '\n' + 20 | chalk.gray('Uma ferramenta para fazer chamadas automáticas usando a API da Zenvia'), 21 | { 22 | padding: 1, 23 | margin: 1, 24 | borderStyle: 'round', 25 | borderColor: 'blue' 26 | } 27 | ); 28 | 29 | const emitSuccess = function emitSuccess(message) { 30 | return console.log(chalk.green(' ✓ ' + message)); 31 | }; 32 | 33 | const emitError = function emitError(message) { 34 | return console.log(chalk.red(' ✗ ' + message)); 35 | }; 36 | 37 | const emitInfo = function emitInfo(message) { 38 | return console.log(chalk.blue(' ℹ ' + message)); 39 | }; 40 | 41 | const voices = [ 42 | { name: chalk.cyan('Ricardo') + ' (Português BR - Masculino)', value: 0 }, 43 | { name: chalk.magenta('Vitória') + ' (Português BR - Feminino)', value: 1 }, 44 | { name: chalk.yellow('Joey') + ' (Inglês - Masculino)', value: 2 }, 45 | { name: chalk.green('Maxim') + ' (Russo - Masculino)', value: 3 } 46 | ]; 47 | 48 | const defaultTexts = [ 49 | { name: chalk.cyan('Alô? Alô? Alô? Alô? Alô?'), value: 'Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô?' }, 50 | { name: chalk.gray('Personalizado'), value: 'custom' } 51 | ]; 52 | 53 | const interactiveMode = async () => { 54 | console.log(boxen(chalk.blue(` 55 | LIGAR-COBRANÇA 56 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣶⣶⣶⣶⣶⣦⣤⣶⣤⣤⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 57 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣾⡿⠛⠋⠉⠀⠀⠀⠀⠀⠀⠈⠉⠉⠛⠻⢿⣶⣦⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 58 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⠟⣯⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⢿⣷⣦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 59 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣧⣤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⠀⠀⠀⠀⠀⠀⠀⠙⠻⣷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀ 60 | ⠀⠀⠀⣤⣄⠀⠀⠀⠀⠀⠀⠉⠙⠛⠻⣿⡿⣿⣶⣶⣦⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⠀⠀⠀⠀⠀⠀⠈⠻⣿⣄⠀⠀⠀⠀⠀⠀⠀ 61 | ⠀⢀⣠⣿⡁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⠃⠀⠀⠀⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣧⡀⠀⠀⠀⠀⠀ 62 | ⢰⣿⣿⣿⣗⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣄⠀⠀⠀⠀ 63 | ⠀⠉⠉⢹⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣄⠀⠀⠀ 64 | ⠀⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⣸⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⡄⠀⠀ 65 | ⠀⠀⠀⠀⣿⣇⠀⠀⠀⠀⠀⢠⣾⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣿⠀⠀ 66 | ⠀⠀⠀⠀⢹⣿⡀⠀⠀⠀⣠⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣇⠀ 67 | ⠀⠀⠀⠀⠀⢿⣧⠀⢀⣾⣿⢃⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀ 68 | ⠀⠀⠀⠀⠀⠘⣿⣤⣾⡿⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡆ 69 | ⠀⠀⠀⠀⠀⠀⠙⠟⠋⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣧ 70 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿ 71 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿ 72 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿ 73 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿ 74 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿ 75 | 76 | Não sou responsável pelo uso que você faz da ferramenta! Divirta-se! 77 | `), { 78 | padding: 1, 79 | margin: 1, 80 | borderStyle: 'round', 81 | borderColor: 'blue' 82 | })); 83 | 84 | const answers = await inquirer.prompt([ 85 | { 86 | type: 'input', 87 | name: 'token', 88 | message: 'Digite seu token da Zenvia (ou pressione Enter se já estiver configurado no .env):', 89 | validate: (input) => { 90 | if (!input) return true; // Permite vazio se já estiver no .env 91 | if (!/^[a-zA-Z0-9]{32}$/.test(input)) { 92 | return 'Token inválido. O token da Zenvia deve ter 32 caracteres alfanuméricos.'; 93 | } 94 | return true; 95 | } 96 | }, 97 | { 98 | type: 'list', 99 | name: 'tipo', 100 | message: 'Tipo de chamada:', 101 | choices: [ 102 | { name: '1 - Chamada única', value: 1 }, 103 | { name: '2 - Chamadas múltiplas', value: 2 } 104 | ], 105 | default: 1 106 | }, 107 | { 108 | type: 'input', 109 | name: 'para', 110 | message: 'Número de destino:', 111 | validate: input => { 112 | if (!input) return 'Por favor, insira um número'; 113 | if (!/^\+?[0-9]{10,15}$/.test(input.replace(/\D/g, ''))) { 114 | return 'Número inválido. Use o formato: +5511999999999'; 115 | } 116 | return true; 117 | }, 118 | when: answers => answers.tipo === 1 119 | }, 120 | { 121 | type: 'input', 122 | name: 'numeros', 123 | message: 'Números de destino (separados por vírgula):', 124 | validate: input => { 125 | if (!input) return 'Por favor, insira pelo menos um número'; 126 | const numeros = input.split(',').map(n => n.trim().replace(/\D/g, '')); 127 | if (numeros.length < 2) return 'Insira pelo menos 2 números'; 128 | for (const numero of numeros) { 129 | if (!/^[0-9]{10,15}$/.test(numero)) { 130 | return 'Número inválido. Use o formato: 5511999999999'; 131 | } 132 | } 133 | return true; 134 | }, 135 | filter: input => { 136 | if (!input) return ''; 137 | // Remove espaços extras e caracteres não numéricos 138 | const numeros = input.split(',').map(n => n.trim().replace(/\D/g, '')); 139 | return numeros.join(','); 140 | }, 141 | when: answers => answers.tipo === 2 142 | }, 143 | { 144 | type: 'input', 145 | name: 'de', 146 | message: 'Número de origem (opcional):', 147 | default: process.env.ZENVIA_PHONE_NUMBER || '', 148 | validate: input => { 149 | if (!input) return true; 150 | if (!/^\+?[0-9]{10,15}$/.test(input.replace(/\D/g, ''))) { 151 | return 'Número inválido. Use o formato: +5511999999999'; 152 | } 153 | return true; 154 | } 155 | }, 156 | { 157 | type: 'list', 158 | name: 'tipoMensagem', 159 | message: 'Mensagem:', 160 | choices: [ 161 | { name: '1 - Mensagem padrão', value: 'padrao' }, 162 | { name: '2 - Mensagem personalizada', value: 'custom' } 163 | ], 164 | default: 0 165 | }, 166 | { 167 | type: 'input', 168 | name: 'texto', 169 | message: 'Digite sua mensagem:', 170 | when: answers => answers.tipoMensagem === 'custom' 171 | }, 172 | { 173 | type: 'list', 174 | name: 'voz', 175 | message: 'Voz:', 176 | choices: [ 177 | { name: '1 - Ricardo (BR)', value: 0 }, 178 | { name: '2 - Vitória (BR)', value: 1 }, 179 | { name: '3 - Joey (EN)', value: 2 }, 180 | { name: '4 - Maxim (RUS)', value: 3 } 181 | ], 182 | default: 0 183 | }, 184 | { 185 | type: 'list', 186 | name: 'velocidade', 187 | message: 'Velocidade da voz:', 188 | choices: [ 189 | { name: '1 - Muito lento', value: 1 }, 190 | { name: '2 - Lento', value: 2 }, 191 | { name: '3 - Normal', value: 3 }, 192 | { name: '4 - Rápido', value: 4 }, 193 | { name: '5 - Muito rápido', value: 5 } 194 | ], 195 | default: 3 196 | }, 197 | { 198 | type: 'confirm', 199 | name: 'gravar', 200 | message: 'Gravar chamada?', 201 | default: false 202 | }, 203 | { 204 | type: 'input', 205 | name: 'quantidade', 206 | message: 'Quantidade de chamadas:', 207 | default: '1', 208 | validate: input => { 209 | const num = parseInt(input); 210 | if (isNaN(num) || num < 1 || num > 999) { 211 | return 'Por favor, insira um número entre 1 e 999'; 212 | } 213 | return true; 214 | } 215 | }, 216 | { 217 | type: 'confirm', 218 | name: 'debug', 219 | message: 'Ativar modo debug?', 220 | default: false 221 | } 222 | ]); 223 | 224 | return { 225 | token: answers.token || undefined, 226 | para: answers.para, 227 | numeros: answers.tipo === 2 ? (answers.numeros || '').split(',').map(n => n.trim().replace(/\D/g, '')) : null, 228 | de: answers.de, 229 | texto: answers.tipoMensagem === 'custom' ? answers.texto : 'Alô? Alô? Alô? Alô? Alô?', 230 | voz: parseInt(answers.voz), 231 | velocidade: parseInt(answers.velocidade), 232 | gravar: answers.gravar, 233 | quantidade: parseInt(answers.quantidade), 234 | debug: answers.debug 235 | }; 236 | }; 237 | 238 | const cli = async () => { 239 | try { 240 | const argv = _yargs2.default 241 | .usage('Uso: $0 [opções]') 242 | .option('para', { 243 | alias: 'p', 244 | description: 'Número de destino', 245 | type: 'string' 246 | }) 247 | .option('numeros', { 248 | alias: 'n', 249 | description: 'Números de destino (separados por vírgula)', 250 | type: 'array' 251 | }) 252 | .option('de', { 253 | alias: 'd', 254 | description: 'Número de origem', 255 | type: 'string' 256 | }) 257 | .option('texto', { 258 | alias: 't', 259 | description: 'Mensagem para ser convertida em voz', 260 | type: 'string' 261 | }) 262 | .option('voz', { 263 | alias: 'v', 264 | description: 'Voz a ser utilizada (0-3)', 265 | type: 'number' 266 | }) 267 | .option('velocidade', { 268 | alias: 's', 269 | description: 'Velocidade da voz (1-5)', 270 | type: 'number' 271 | }) 272 | .option('gravar', { 273 | alias: 'g', 274 | description: 'Gravar a chamada', 275 | type: 'boolean' 276 | }) 277 | .option('quantidade', { 278 | alias: 'q', 279 | description: 'Quantidade de chamadas (1-999)', 280 | type: 'number' 281 | }) 282 | .option('debug', { 283 | description: 'Ativar modo debug', 284 | type: 'boolean' 285 | }) 286 | .help('h') 287 | .alias('h', 'help') 288 | .argv; 289 | 290 | let args; 291 | if (argv.para || argv.numeros) { 292 | args = argv; 293 | } else { 294 | args = await interactiveMode(); 295 | } 296 | 297 | // Função para executar as chamadas 298 | const executarChamadas = async () => { 299 | const totalChamadas = args.quantidade * (args.numeros ? args.numeros.length : 1); 300 | let currentCall = 0; 301 | 302 | // Atualiza o progresso a cada chamada 303 | const updateProgress = (current) => { 304 | currentCall = current; 305 | process.stdout.write(`\r\x1b[K`); // Limpa a linha atual 306 | process.stdout.write(`Efetuando ligações (${current}/${totalChamadas})...`); 307 | }; 308 | 309 | // Adiciona o callback de progresso aos argumentos 310 | args.onProgress = updateProgress; 311 | 312 | const results = await _cobranca2.default(args); 313 | 314 | // Limpa a linha do progresso 315 | process.stdout.write(`\r\x1b[K`); // Limpa a linha atual 316 | 317 | // Exibe o resumo das chamadas 318 | const sucessos = results.filter(r => r.success).length; 319 | const sucessosFormatados = sucessos.toString().padStart(2, '0'); 320 | console.log(boxen(chalk.green(` 321 | Chamadas Concluídas! 322 | ✓ Sucessos: ${sucessosFormatados} 323 | `), { 324 | padding: 1, 325 | margin: 1, 326 | borderStyle: 'round', 327 | borderColor: 'green' 328 | })); 329 | 330 | return results; 331 | }; 332 | 333 | // Executa as chamadas iniciais 334 | await executarChamadas(); 335 | 336 | // Loop principal 337 | while (true) { 338 | const { acao } = await inquirer.prompt([ 339 | { 340 | type: 'list', 341 | name: 'acao', 342 | message: 'O que você deseja fazer?', 343 | choices: [ 344 | { name: '1 - Executar novamente com as mesmas configurações', value: 'repetir' }, 345 | { name: '2 - Reiniciar com novas configurações', value: 'reiniciar' }, 346 | { name: '3 - Sair', value: 'sair' } 347 | ], 348 | default: 0 349 | } 350 | ]); 351 | 352 | if (acao === 'sair') { 353 | console.log('\n👋 Até logo!'); 354 | break; 355 | } else if (acao === 'reiniciar') { 356 | console.log('\n🔄 Reiniciando...\n'); 357 | await cli(); 358 | break; 359 | } else if (acao === 'repetir') { 360 | console.log('\n🔄 Executando novamente...\n'); 361 | await executarChamadas(); 362 | } 363 | } 364 | 365 | } catch (error) { 366 | console.error(chalk.red('❌ Erro:'), error.message); 367 | process.exit(1); 368 | } 369 | }; 370 | 371 | cli(); -------------------------------------------------------------------------------- /dist/cobranca.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } 4 | function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } 5 | function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } 6 | function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } 7 | var axios = require('axios'); 8 | var fs = require('fs'); 9 | var path = require('path'); 10 | require('dotenv').config(); 11 | var ZENVIA_TOKEN = process.env.ZENVIA_TOKEN; 12 | var ZENVIA_PHONE_NUMBER = process.env.ZENVIA_PHONE_NUMBER; 13 | 14 | // Função para log condicional baseado no modo debug 15 | var debugLog = function debugLog(message) { 16 | var debug = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; 17 | if (debug) { 18 | console.log(message); 19 | } 20 | }; 21 | 22 | // Função para salvar token no arquivo .env 23 | var salvarToken = function salvarToken(token) { 24 | var envPath = path.join(process.cwd(), '.env'); 25 | var envContent = ''; 26 | 27 | // Verifica se o arquivo .env existe 28 | if (fs.existsSync(envPath)) { 29 | envContent = fs.readFileSync(envPath, 'utf8'); 30 | } 31 | 32 | // Remove espaços em branco e quebras de linha extras 33 | envContent = envContent.trim(); 34 | 35 | // Atualiza ou adiciona o token 36 | if (envContent.includes('ZENVIA_TOKEN=')) { 37 | envContent = envContent.replace(/ZENVIA_TOKEN=.*/, "ZENVIA_TOKEN=".concat(token)); 38 | } else { 39 | envContent += "\nZENVIA_TOKEN=".concat(token); 40 | } 41 | 42 | // Garante que o arquivo termine com uma quebra de linha 43 | if (!envContent.endsWith('\n')) { 44 | envContent += '\n'; 45 | } 46 | 47 | // Salva o arquivo 48 | fs.writeFileSync(envPath, envContent); 49 | console.log('✅ Token salvo com sucesso no arquivo .env'); 50 | console.log('🔍 Token atual:', token); 51 | }; 52 | 53 | // Função para formatar número brasileiro 54 | var formatarNumero = function formatarNumero(numero) { 55 | // Remove todos os caracteres não numéricos 56 | numero = numero.replace(/\D/g, ''); 57 | 58 | // Se o número começa com 0, remove o 0 59 | if (numero.startsWith('0')) { 60 | numero = numero.substring(1); 61 | } 62 | 63 | // Se o número não começa com 55 e tem 10 ou 11 dígitos (DDD + número), adiciona 55 64 | if (!numero.startsWith('55') && (numero.length === 10 || numero.length === 11)) { 65 | numero = '55' + numero; 66 | } 67 | 68 | // Adiciona o + no início 69 | return '+' + numero; 70 | }; 71 | var call = /*#__PURE__*/function () { 72 | var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(token, para, texto, voz, velocidade, de, gravar) { 73 | var debug, 74 | voiceMap, 75 | speedMap, 76 | _response$data$dados, 77 | _response$data$dados2, 78 | response, 79 | _error$response, 80 | _error$response2, 81 | _error$response3, 82 | _error$response4, 83 | _error$response5, 84 | _error$response6, 85 | _args = arguments; 86 | return _regeneratorRuntime().wrap(function _callee$(_context) { 87 | while (1) switch (_context.prev = _context.next) { 88 | case 0: 89 | debug = _args.length > 7 && _args[7] !== undefined ? _args[7] : false; 90 | voiceMap = { 91 | 0: 'br-Ricardo', 92 | 1: 'br-Vitoria', 93 | 2: 'en-Joey', 94 | 3: 'rus-Maxim' 95 | }; 96 | speedMap = { 97 | 1: 0.5, 98 | // Muito lento 99 | 2: 0.75, 100 | // Lento 101 | 3: 1, 102 | // Normal 103 | 4: 1.5, 104 | // Rápido 105 | 5: 2 // Muito rápido 106 | }; 107 | _context.prev = 3; 108 | debugLog('\n🔍 Iniciando chamada:', debug); 109 | debugLog(' - Para: ' + para, debug); 110 | debugLog(' - De: ' + de, debug); 111 | debugLog(' - Voz: ' + voiceMap[voz], debug); 112 | debugLog(' - Velocidade: ' + speedMap[velocidade], debug); 113 | debugLog(' - Gravar: ' + (gravar ? 'Sim' : 'Não'), debug); 114 | debugLog(' - Mensagem: ' + texto, debug); 115 | _context.next = 13; 116 | return axios.post('https://voice-api.zenvia.com/tts', { 117 | numero_destino: para, 118 | mensagem: texto, 119 | resposta_usuario: false, 120 | tipo_voz: voiceMap[voz], 121 | bina: de, 122 | gravar_audio: gravar, 123 | detecta_caixa: false, 124 | bina_inteligente: true, 125 | velocidade: speedMap[velocidade] || 1 126 | }, { 127 | headers: { 128 | 'Content-Type': 'application/json', 129 | 'Accept': 'application/json', 130 | 'Access-Token': token 131 | } 132 | }); 133 | case 13: 134 | response = _context.sent; 135 | debugLog('✅ Chamada iniciada com sucesso!', debug); 136 | debugLog(' - ID: ' + ((_response$data$dados = response.data.dados) === null || _response$data$dados === void 0 ? void 0 : _response$data$dados.id), debug); 137 | debugLog(' - Status: ' + response.data.status, debug); 138 | debugLog(' - Mensagem: ' + response.data.mensagem, debug); 139 | return _context.abrupt("return", { 140 | success: true, 141 | messageId: (_response$data$dados2 = response.data.dados) === null || _response$data$dados2 === void 0 ? void 0 : _response$data$dados2.id, 142 | status: response.data.status, 143 | message: response.data.mensagem, 144 | number: para 145 | }); 146 | case 21: 147 | _context.prev = 21; 148 | _context.t0 = _context["catch"](3); 149 | debugLog('❌ Erro na chamada:', debug); 150 | debugLog(' - Número: ' + para, debug); 151 | debugLog(' - Status: ' + ((_error$response = _context.t0.response) === null || _error$response === void 0 ? void 0 : _error$response.status), debug); 152 | debugLog(' - Mensagem: ' + (((_error$response2 = _context.t0.response) === null || _error$response2 === void 0 || (_error$response2 = _error$response2.data) === null || _error$response2 === void 0 ? void 0 : _error$response2.mensagem) || _context.t0.message), debug); 153 | if ((_error$response3 = _context.t0.response) !== null && _error$response3 !== void 0 && _error$response3.data) { 154 | debugLog(' - Detalhes: ' + JSON.stringify(_context.t0.response.data, null, 2), debug); 155 | } 156 | return _context.abrupt("return", { 157 | success: false, 158 | error: ((_error$response4 = _context.t0.response) === null || _error$response4 === void 0 || (_error$response4 = _error$response4.data) === null || _error$response4 === void 0 ? void 0 : _error$response4.mensagem) || _context.t0.message, 159 | number: para, 160 | status: (_error$response5 = _context.t0.response) === null || _error$response5 === void 0 ? void 0 : _error$response5.status, 161 | details: (_error$response6 = _context.t0.response) === null || _error$response6 === void 0 ? void 0 : _error$response6.data 162 | }); 163 | case 29: 164 | case "end": 165 | return _context.stop(); 166 | } 167 | }, _callee, null, [[3, 21]]); 168 | })); 169 | return function call(_x, _x2, _x3, _x4, _x5, _x6, _x7) { 170 | return _ref.apply(this, arguments); 171 | }; 172 | }(); 173 | function makeMultipleCalls(_x8) { 174 | return _makeMultipleCalls.apply(this, arguments); 175 | } 176 | function _makeMultipleCalls() { 177 | _makeMultipleCalls = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(args) { 178 | var results, totalCalls, currentCall, i, result; 179 | return _regeneratorRuntime().wrap(function _callee4$(_context4) { 180 | while (1) switch (_context4.prev = _context4.next) { 181 | case 0: 182 | results = []; 183 | totalCalls = args.quantidade; 184 | currentCall = 0; // Faz as chamadas em sequência para o mesmo número 185 | i = 0; 186 | case 4: 187 | if (!(i < args.quantidade)) { 188 | _context4.next = 24; 189 | break; 190 | } 191 | _context4.prev = 5; 192 | _context4.next = 8; 193 | return call(args.token || ZENVIA_TOKEN, args.para, args.texto, args.voz, args.velocidade, args.de, args.gravar, args.debug); 194 | case 8: 195 | result = _context4.sent; 196 | results.push(result); 197 | currentCall++; 198 | if (args.onProgress) { 199 | args.onProgress(currentCall); 200 | } 201 | _context4.next = 19; 202 | break; 203 | case 14: 204 | _context4.prev = 14; 205 | _context4.t0 = _context4["catch"](5); 206 | results.push({ 207 | success: false, 208 | number: args.para, 209 | error: _context4.t0.message 210 | }); 211 | currentCall++; 212 | if (args.onProgress) { 213 | args.onProgress(currentCall); 214 | } 215 | case 19: 216 | _context4.next = 21; 217 | return new Promise(function (resolve) { 218 | return setTimeout(resolve, 1000); 219 | }); 220 | case 21: 221 | i++; 222 | _context4.next = 4; 223 | break; 224 | case 24: 225 | return _context4.abrupt("return", results); 226 | case 25: 227 | case "end": 228 | return _context4.stop(); 229 | } 230 | }, _callee4, null, [[5, 14]]); 231 | })); 232 | return _makeMultipleCalls.apply(this, arguments); 233 | } 234 | var makeCall = /*#__PURE__*/function () { 235 | var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(args) { 236 | var token, response, _error$response7; 237 | return _regeneratorRuntime().wrap(function _callee2$(_context2) { 238 | while (1) switch (_context2.prev = _context2.next) { 239 | case 0: 240 | _context2.prev = 0; 241 | // Usa o token fornecido ou o do .env 242 | token = args.token || process.env.ZENVIA_TOKEN; 243 | if (token) { 244 | _context2.next = 4; 245 | break; 246 | } 247 | throw new Error('Token não encontrado. Configure ZENVIA_TOKEN no arquivo .env ou forneça um token via linha de comando'); 248 | case 4: 249 | _context2.next = 6; 250 | return axios.post('https://voice-api.zenvia.com/tts', { 251 | numero_destino: args.para, 252 | mensagem: args.texto, 253 | resposta_usuario: false, 254 | tipo_voz: args.voz === 0 ? 'br-Ricardo' : args.voz === 1 ? 'br-Vitoria' : args.voz === 2 ? 'en-Joey' : 'rus-Maxim', 255 | bina: args.de, 256 | gravar_audio: args.gravar, 257 | bina_inteligente: true, 258 | velocidade: args.velocidade === 1 ? 0.5 : args.velocidade === 2 ? 0.75 : args.velocidade === 3 ? 1 : args.velocidade === 4 ? 1.5 : 2 259 | }, { 260 | headers: { 261 | 'Content-Type': 'application/json', 262 | 'Accept': 'application/json', 263 | 'Access-Token': token 264 | } 265 | }); 266 | case 6: 267 | response = _context2.sent; 268 | return _context2.abrupt("return", { 269 | success: true, 270 | number: args.para, 271 | response: response.data 272 | }); 273 | case 10: 274 | _context2.prev = 10; 275 | _context2.t0 = _context2["catch"](0); 276 | throw new Error(((_error$response7 = _context2.t0.response) === null || _error$response7 === void 0 || (_error$response7 = _error$response7.data) === null || _error$response7 === void 0 ? void 0 : _error$response7.mensagem) || _context2.t0.message); 277 | case 13: 278 | case "end": 279 | return _context2.stop(); 280 | } 281 | }, _callee2, null, [[0, 10]]); 282 | })); 283 | return function makeCall(_x9) { 284 | return _ref2.apply(this, arguments); 285 | }; 286 | }(); 287 | var cobranca = /*#__PURE__*/function () { 288 | var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(args) { 289 | return _regeneratorRuntime().wrap(function _callee3$(_context3) { 290 | while (1) switch (_context3.prev = _context3.next) { 291 | case 0: 292 | _context3.prev = 0; 293 | if (args.debug) { 294 | console.log('Debug: Argumentos recebidos:', args); 295 | } 296 | 297 | // Se um token foi fornecido, salva no .env 298 | if (!args.token) { 299 | _context3.next = 6; 300 | break; 301 | } 302 | if (/^[a-zA-Z0-9]{32}$/.test(args.token)) { 303 | _context3.next = 5; 304 | break; 305 | } 306 | throw new Error('Token inválido. O token da Zenvia deve ter 32 caracteres alfanuméricos.'); 307 | case 5: 308 | salvarToken(args.token); 309 | case 6: 310 | _context3.next = 8; 311 | return makeMultipleCalls(args); 312 | case 8: 313 | return _context3.abrupt("return", _context3.sent); 314 | case 11: 315 | _context3.prev = 11; 316 | _context3.t0 = _context3["catch"](0); 317 | throw new Error(_context3.t0.message); 318 | case 14: 319 | case "end": 320 | return _context3.stop(); 321 | } 322 | }, _callee3, null, [[0, 11]]); 323 | })); 324 | return function cobranca(_x10) { 325 | return _ref3.apply(this, arguments); 326 | }; 327 | }(); 328 | module.exports = cobranca; -------------------------------------------------------------------------------- /dist/cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 'use strict'; 3 | 4 | function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } 5 | function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } 6 | function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; } 7 | function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } 8 | function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } 9 | function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } 10 | function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } 11 | require('dotenv').config(); 12 | var _yargs = require('yargs'); 13 | var _yargs2 = _interopRequireDefault(_yargs); 14 | var _safe = require('colors/safe'); 15 | var _ramda = require('ramda'); 16 | var _cobranca = require('./cobranca'); 17 | var _cobranca2 = _interopRequireDefault(_cobranca); 18 | var inquirer = require('inquirer'); 19 | var chalk = require('chalk'); 20 | var boxen = require('boxen'); 21 | function _interopRequireDefault(obj) { 22 | return obj && obj.__esModule ? obj : { 23 | "default": obj 24 | }; 25 | } 26 | var title = boxen(chalk.bold.blue('Ligar Cobrança') + '\n' + chalk.gray('Uma ferramenta para fazer chamadas automáticas usando a API da Zenvia'), { 27 | padding: 1, 28 | margin: 1, 29 | borderStyle: 'round', 30 | borderColor: 'blue' 31 | }); 32 | var emitSuccess = function emitSuccess(message) { 33 | return console.log(chalk.green(' ✓ ' + message)); 34 | }; 35 | var emitError = function emitError(message) { 36 | return console.log(chalk.red(' ✗ ' + message)); 37 | }; 38 | var emitInfo = function emitInfo(message) { 39 | return console.log(chalk.blue(' ℹ ' + message)); 40 | }; 41 | var voices = [{ 42 | name: chalk.cyan('Ricardo') + ' (Português BR - Masculino)', 43 | value: 0 44 | }, { 45 | name: chalk.magenta('Vitória') + ' (Português BR - Feminino)', 46 | value: 1 47 | }, { 48 | name: chalk.yellow('Joey') + ' (Inglês - Masculino)', 49 | value: 2 50 | }, { 51 | name: chalk.green('Maxim') + ' (Russo - Masculino)', 52 | value: 3 53 | }]; 54 | var defaultTexts = [{ 55 | name: chalk.cyan('Alô? Alô? Alô? Alô? Alô?'), 56 | value: 'Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô? Alô?' 57 | }, { 58 | name: chalk.gray('Personalizado'), 59 | value: 'custom' 60 | }]; 61 | var interactiveMode = /*#__PURE__*/function () { 62 | var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() { 63 | var answers; 64 | return _regeneratorRuntime().wrap(function _callee$(_context) { 65 | while (1) switch (_context.prev = _context.next) { 66 | case 0: 67 | console.log(boxen(chalk.blue("\nLIGAR-COBRAN\xC7A\n\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2880\u28C0\u28E4\u28F6\u28F6\u28F6\u28F6\u28F6\u28E6\u28E4\u28F6\u28E4\u28E4\u28C0\u28C0\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\n\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28E0\u28F4\u28FE\u287F\u281B\u280B\u2809\u2800\u2800\u2800\u2800\u2800\u2800\u2808\u2809\u2809\u281B\u283B\u28BF\u28F6\u28E6\u28E4\u2840\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\n\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28E0\u28FE\u281F\u28EF\u2845\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2809\u281B\u28BF\u28F7\u28E6\u28C4\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\n\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28BF\u28E7\u28E4\u28C4\u28C0\u2840\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28E4\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2819\u283B\u28F7\u28E6\u2840\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\n\u2800\u2800\u2800\u28E4\u28C4\u2800\u2800\u2800\u2800\u2800\u2800\u2809\u2819\u281B\u283B\u28FF\u287F\u28FF\u28F6\u28F6\u28E6\u28E4\u28E4\u28E4\u28E4\u28E4\u28E4\u28E4\u28E4\u28E4\u28E4\u28E4\u2800\u2800\u2800\u2800\u2800\u2800\u2808\u283B\u28FF\u28C4\u2800\u2800\u2800\u2800\u2800\u2800\u2800\n\u2800\u2880\u28E0\u28FF\u2841\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28B0\u28FF\u2803\u2800\u2800\u2800\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2818\u28BF\u28E7\u2840\u2800\u2800\u2800\u2800\u2800\n\u28B0\u28FF\u28FF\u28FF\u28D7\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28F8\u287F\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2808\u283B\u28FF\u28C4\u2800\u2800\u2800\u2800\n\u2800\u2809\u2809\u28B9\u28FF\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28FF\u2847\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2839\u28FF\u28C4\u2800\u2800\u2800\n\u2800\u2800\u2800\u2800\u28FF\u2847\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28F8\u28FF\u2803\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2838\u28FF\u2844\u2800\u2800\n\u2800\u2800\u2800\u2800\u28FF\u28C7\u2800\u2800\u2800\u2800\u2800\u28A0\u28FE\u28FF\u2847\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u283B\u28FF\u2800\u2800\n\u2800\u2800\u2800\u2800\u28B9\u28FF\u2840\u2800\u2800\u2800\u28E0\u28FF\u28FF\u28FF\u2801\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28FF\u28C7\u2800\n\u2800\u2800\u2800\u2800\u2800\u28BF\u28E7\u2800\u2880\u28FE\u28FF\u2883\u28FF\u2847\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28B8\u28FF\u2800\n\u2800\u2800\u2800\u2800\u2800\u2818\u28FF\u28E4\u28FE\u287F\u2800\u28B8\u28FF\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28FF\u2846\n\u2800\u2800\u2800\u2800\u2800\u2800\u2819\u281F\u280B\u2800\u2800\u28B8\u28FF\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28FF\u28E7\n\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28F8\u285F\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28B8\u28FF\n\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28FF\u2847\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28B8\u28FF\n\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28B8\u28FF\u2801\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28B8\u28FF\n\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28FE\u285F\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28B8\u28FF\n\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2880\u28FF\u2847\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28B8\u28FF \n\nN\xE3o sou respons\xE1vel pelo uso que voc\xEA faz da ferramenta! Divirta-se!\n"), { 68 | padding: 1, 69 | margin: 1, 70 | borderStyle: 'round', 71 | borderColor: 'blue' 72 | })); 73 | _context.next = 3; 74 | return inquirer.prompt([{ 75 | type: 'input', 76 | name: 'token', 77 | message: 'Digite seu token da Zenvia (ou pressione Enter se já estiver configurado no .env):', 78 | validate: function validate(input) { 79 | if (!input) return true; // Permite vazio se já estiver no .env 80 | if (!/^[a-zA-Z0-9]{32}$/.test(input)) { 81 | return 'Token inválido. O token da Zenvia deve ter 32 caracteres alfanuméricos.'; 82 | } 83 | return true; 84 | } 85 | }, { 86 | type: 'list', 87 | name: 'tipo', 88 | message: 'Tipo de chamada:', 89 | choices: [{ 90 | name: '1 - Chamada única', 91 | value: 1 92 | }, { 93 | name: '2 - Chamadas múltiplas', 94 | value: 2 95 | }], 96 | "default": 1 97 | }, { 98 | type: 'input', 99 | name: 'para', 100 | message: 'Número de destino:', 101 | validate: function validate(input) { 102 | if (!input) return 'Por favor, insira um número'; 103 | if (!/^\+?[0-9]{10,15}$/.test(input.replace(/\D/g, ''))) { 104 | return 'Número inválido. Use o formato: +5511999999999'; 105 | } 106 | return true; 107 | }, 108 | when: function when(answers) { 109 | return answers.tipo === 1; 110 | } 111 | }, { 112 | type: 'input', 113 | name: 'numeros', 114 | message: 'Números de destino (separados por vírgula):', 115 | validate: function validate(input) { 116 | if (!input) return 'Por favor, insira pelo menos um número'; 117 | var numeros = input.split(',').map(function (n) { 118 | return n.trim().replace(/\D/g, ''); 119 | }); 120 | if (numeros.length < 2) return 'Insira pelo menos 2 números'; 121 | var _iterator = _createForOfIteratorHelper(numeros), 122 | _step; 123 | try { 124 | for (_iterator.s(); !(_step = _iterator.n()).done;) { 125 | var numero = _step.value; 126 | if (!/^[0-9]{10,15}$/.test(numero)) { 127 | return 'Número inválido. Use o formato: 5511999999999'; 128 | } 129 | } 130 | } catch (err) { 131 | _iterator.e(err); 132 | } finally { 133 | _iterator.f(); 134 | } 135 | return true; 136 | }, 137 | filter: function filter(input) { 138 | if (!input) return ''; 139 | // Remove espaços extras e caracteres não numéricos 140 | var numeros = input.split(',').map(function (n) { 141 | return n.trim().replace(/\D/g, ''); 142 | }); 143 | return numeros.join(','); 144 | }, 145 | when: function when(answers) { 146 | return answers.tipo === 2; 147 | } 148 | }, { 149 | type: 'input', 150 | name: 'de', 151 | message: 'Número de origem (opcional):', 152 | "default": process.env.ZENVIA_PHONE_NUMBER || '', 153 | validate: function validate(input) { 154 | if (!input) return true; 155 | if (!/^\+?[0-9]{10,15}$/.test(input.replace(/\D/g, ''))) { 156 | return 'Número inválido. Use o formato: +5511999999999'; 157 | } 158 | return true; 159 | } 160 | }, { 161 | type: 'list', 162 | name: 'tipoMensagem', 163 | message: 'Mensagem:', 164 | choices: [{ 165 | name: '1 - Mensagem padrão', 166 | value: 'padrao' 167 | }, { 168 | name: '2 - Mensagem personalizada', 169 | value: 'custom' 170 | }], 171 | "default": 0 172 | }, { 173 | type: 'input', 174 | name: 'texto', 175 | message: 'Digite sua mensagem:', 176 | when: function when(answers) { 177 | return answers.tipoMensagem === 'custom'; 178 | } 179 | }, { 180 | type: 'list', 181 | name: 'voz', 182 | message: 'Voz:', 183 | choices: [{ 184 | name: '1 - Ricardo (BR)', 185 | value: 0 186 | }, { 187 | name: '2 - Vitória (BR)', 188 | value: 1 189 | }, { 190 | name: '3 - Joey (EN)', 191 | value: 2 192 | }, { 193 | name: '4 - Maxim (RUS)', 194 | value: 3 195 | }], 196 | "default": 0 197 | }, { 198 | type: 'list', 199 | name: 'velocidade', 200 | message: 'Velocidade da voz:', 201 | choices: [{ 202 | name: '1 - Muito lento', 203 | value: 1 204 | }, { 205 | name: '2 - Lento', 206 | value: 2 207 | }, { 208 | name: '3 - Normal', 209 | value: 3 210 | }, { 211 | name: '4 - Rápido', 212 | value: 4 213 | }, { 214 | name: '5 - Muito rápido', 215 | value: 5 216 | }], 217 | "default": 3 218 | }, { 219 | type: 'confirm', 220 | name: 'gravar', 221 | message: 'Gravar chamada?', 222 | "default": false 223 | }, { 224 | type: 'input', 225 | name: 'quantidade', 226 | message: 'Quantidade de chamadas:', 227 | "default": '1', 228 | validate: function validate(input) { 229 | var num = parseInt(input); 230 | if (isNaN(num) || num < 1 || num > 999) { 231 | return 'Por favor, insira um número entre 1 e 999'; 232 | } 233 | return true; 234 | } 235 | }, { 236 | type: 'confirm', 237 | name: 'debug', 238 | message: 'Ativar modo debug?', 239 | "default": false 240 | }]); 241 | case 3: 242 | answers = _context.sent; 243 | return _context.abrupt("return", { 244 | token: answers.token || undefined, 245 | para: answers.para, 246 | numeros: answers.tipo === 2 ? (answers.numeros || '').split(',').map(function (n) { 247 | return n.trim().replace(/\D/g, ''); 248 | }) : null, 249 | de: answers.de, 250 | texto: answers.tipoMensagem === 'custom' ? answers.texto : 'Alô? Alô? Alô? Alô? Alô?', 251 | voz: parseInt(answers.voz), 252 | velocidade: parseInt(answers.velocidade), 253 | gravar: answers.gravar, 254 | quantidade: parseInt(answers.quantidade), 255 | debug: answers.debug 256 | }); 257 | case 5: 258 | case "end": 259 | return _context.stop(); 260 | } 261 | }, _callee); 262 | })); 263 | return function interactiveMode() { 264 | return _ref.apply(this, arguments); 265 | }; 266 | }(); 267 | var _cli = /*#__PURE__*/function () { 268 | var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() { 269 | var argv, args, executarChamadas, _yield$inquirer$promp, acao; 270 | return _regeneratorRuntime().wrap(function _callee3$(_context3) { 271 | while (1) switch (_context3.prev = _context3.next) { 272 | case 0: 273 | _context3.prev = 0; 274 | argv = _yargs2["default"].usage('Uso: $0 [opções]').option('para', { 275 | alias: 'p', 276 | description: 'Número de destino', 277 | type: 'string' 278 | }).option('numeros', { 279 | alias: 'n', 280 | description: 'Números de destino (separados por vírgula)', 281 | type: 'array' 282 | }).option('de', { 283 | alias: 'd', 284 | description: 'Número de origem', 285 | type: 'string' 286 | }).option('texto', { 287 | alias: 't', 288 | description: 'Mensagem para ser convertida em voz', 289 | type: 'string' 290 | }).option('voz', { 291 | alias: 'v', 292 | description: 'Voz a ser utilizada (0-3)', 293 | type: 'number' 294 | }).option('velocidade', { 295 | alias: 's', 296 | description: 'Velocidade da voz (1-5)', 297 | type: 'number' 298 | }).option('gravar', { 299 | alias: 'g', 300 | description: 'Gravar a chamada', 301 | type: 'boolean' 302 | }).option('quantidade', { 303 | alias: 'q', 304 | description: 'Quantidade de chamadas (1-999)', 305 | type: 'number' 306 | }).option('debug', { 307 | description: 'Ativar modo debug', 308 | type: 'boolean' 309 | }).help('h').alias('h', 'help').argv; 310 | if (!(argv.para || argv.numeros)) { 311 | _context3.next = 6; 312 | break; 313 | } 314 | args = argv; 315 | _context3.next = 9; 316 | break; 317 | case 6: 318 | _context3.next = 8; 319 | return interactiveMode(); 320 | case 8: 321 | args = _context3.sent; 322 | case 9: 323 | // Função para executar as chamadas 324 | executarChamadas = /*#__PURE__*/function () { 325 | var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { 326 | var totalChamadas, currentCall, updateProgress, results, sucessos, sucessosFormatados; 327 | return _regeneratorRuntime().wrap(function _callee2$(_context2) { 328 | while (1) switch (_context2.prev = _context2.next) { 329 | case 0: 330 | totalChamadas = args.quantidade * (args.numeros ? args.numeros.length : 1); 331 | currentCall = 0; // Atualiza o progresso a cada chamada 332 | updateProgress = function updateProgress(current) { 333 | currentCall = current; 334 | process.stdout.write("\r\x1B[K"); // Limpa a linha atual 335 | process.stdout.write("Efetuando liga\xE7\xF5es (".concat(current, "/").concat(totalChamadas, ")...")); 336 | }; // Adiciona o callback de progresso aos argumentos 337 | args.onProgress = updateProgress; 338 | _context2.next = 6; 339 | return _cobranca2["default"](args); 340 | case 6: 341 | results = _context2.sent; 342 | // Limpa a linha do progresso 343 | process.stdout.write("\r\x1B[K"); // Limpa a linha atual 344 | 345 | // Exibe o resumo das chamadas 346 | sucessos = results.filter(function (r) { 347 | return r.success; 348 | }).length; 349 | sucessosFormatados = sucessos.toString().padStart(2, '0'); 350 | console.log(boxen(chalk.green("\nChamadas Conclu\xEDdas!\n\u2713 Sucessos: ".concat(sucessosFormatados, "\n")), { 351 | padding: 1, 352 | margin: 1, 353 | borderStyle: 'round', 354 | borderColor: 'green' 355 | })); 356 | return _context2.abrupt("return", results); 357 | case 12: 358 | case "end": 359 | return _context2.stop(); 360 | } 361 | }, _callee2); 362 | })); 363 | return function executarChamadas() { 364 | return _ref3.apply(this, arguments); 365 | }; 366 | }(); // Executa as chamadas iniciais 367 | _context3.next = 12; 368 | return executarChamadas(); 369 | case 12: 370 | if (!true) { 371 | _context3.next = 35; 372 | break; 373 | } 374 | _context3.next = 15; 375 | return inquirer.prompt([{ 376 | type: 'list', 377 | name: 'acao', 378 | message: 'O que você deseja fazer?', 379 | choices: [{ 380 | name: '1 - Executar novamente com as mesmas configurações', 381 | value: 'repetir' 382 | }, { 383 | name: '2 - Reiniciar com novas configurações', 384 | value: 'reiniciar' 385 | }, { 386 | name: '3 - Sair', 387 | value: 'sair' 388 | }], 389 | "default": 0 390 | }]); 391 | case 15: 392 | _yield$inquirer$promp = _context3.sent; 393 | acao = _yield$inquirer$promp.acao; 394 | if (!(acao === 'sair')) { 395 | _context3.next = 22; 396 | break; 397 | } 398 | console.log('\n👋 Até logo!'); 399 | return _context3.abrupt("break", 35); 400 | case 22: 401 | if (!(acao === 'reiniciar')) { 402 | _context3.next = 29; 403 | break; 404 | } 405 | console.log('\n🔄 Reiniciando...\n'); 406 | _context3.next = 26; 407 | return _cli(); 408 | case 26: 409 | return _context3.abrupt("break", 35); 410 | case 29: 411 | if (!(acao === 'repetir')) { 412 | _context3.next = 33; 413 | break; 414 | } 415 | console.log('\n🔄 Executando novamente...\n'); 416 | _context3.next = 33; 417 | return executarChamadas(); 418 | case 33: 419 | _context3.next = 12; 420 | break; 421 | case 35: 422 | _context3.next = 41; 423 | break; 424 | case 37: 425 | _context3.prev = 37; 426 | _context3.t0 = _context3["catch"](0); 427 | console.error(chalk.red('❌ Erro:'), _context3.t0.message); 428 | process.exit(1); 429 | case 41: 430 | case "end": 431 | return _context3.stop(); 432 | } 433 | }, _callee3, null, [[0, 37]]); 434 | })); 435 | return function cli() { 436 | return _ref2.apply(this, arguments); 437 | }; 438 | }(); 439 | _cli(); -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.2.0": 6 | version "2.3.0" 7 | resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" 8 | integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== 9 | dependencies: 10 | "@jridgewell/gen-mapping" "^0.3.5" 11 | "@jridgewell/trace-mapping" "^0.3.24" 12 | 13 | "@babel/cli@^7.24.0": 14 | version "7.27.0" 15 | resolved "https://registry.npmjs.org/@babel/cli/-/cli-7.27.0.tgz" 16 | integrity sha512-bZfxn8DRxwiVzDO5CEeV+7IqXeCkzI4yYnrQbpwjT76CUyossQc6RYE7n+xfm0/2k40lPaCpW0FhxYs7EBAetw== 17 | dependencies: 18 | "@jridgewell/trace-mapping" "^0.3.25" 19 | commander "^6.2.0" 20 | convert-source-map "^2.0.0" 21 | fs-readdir-recursive "^1.1.0" 22 | glob "^7.2.0" 23 | make-dir "^2.1.0" 24 | slash "^2.0.0" 25 | optionalDependencies: 26 | "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" 27 | chokidar "^3.6.0" 28 | 29 | "@babel/code-frame@^7.26.2": 30 | version "7.26.2" 31 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz" 32 | integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== 33 | dependencies: 34 | "@babel/helper-validator-identifier" "^7.25.9" 35 | js-tokens "^4.0.0" 36 | picocolors "^1.0.0" 37 | 38 | "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.26.8": 39 | version "7.26.8" 40 | resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz" 41 | integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== 42 | 43 | "@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.24.0", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0": 44 | version "7.26.10" 45 | resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz" 46 | integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ== 47 | dependencies: 48 | "@ampproject/remapping" "^2.2.0" 49 | "@babel/code-frame" "^7.26.2" 50 | "@babel/generator" "^7.26.10" 51 | "@babel/helper-compilation-targets" "^7.26.5" 52 | "@babel/helper-module-transforms" "^7.26.0" 53 | "@babel/helpers" "^7.26.10" 54 | "@babel/parser" "^7.26.10" 55 | "@babel/template" "^7.26.9" 56 | "@babel/traverse" "^7.26.10" 57 | "@babel/types" "^7.26.10" 58 | convert-source-map "^2.0.0" 59 | debug "^4.1.0" 60 | gensync "^1.0.0-beta.2" 61 | json5 "^2.2.3" 62 | semver "^6.3.1" 63 | 64 | "@babel/generator@^7.26.10", "@babel/generator@^7.27.0": 65 | version "7.27.0" 66 | resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz" 67 | integrity sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw== 68 | dependencies: 69 | "@babel/parser" "^7.27.0" 70 | "@babel/types" "^7.27.0" 71 | "@jridgewell/gen-mapping" "^0.3.5" 72 | "@jridgewell/trace-mapping" "^0.3.25" 73 | jsesc "^3.0.2" 74 | 75 | "@babel/helper-annotate-as-pure@^7.25.9": 76 | version "7.25.9" 77 | resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz" 78 | integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== 79 | dependencies: 80 | "@babel/types" "^7.25.9" 81 | 82 | "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9", "@babel/helper-compilation-targets@^7.26.5": 83 | version "7.27.0" 84 | resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz" 85 | integrity sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA== 86 | dependencies: 87 | "@babel/compat-data" "^7.26.8" 88 | "@babel/helper-validator-option" "^7.25.9" 89 | browserslist "^4.24.0" 90 | lru-cache "^5.1.1" 91 | semver "^6.3.1" 92 | 93 | "@babel/helper-create-class-features-plugin@^7.25.9": 94 | version "7.27.0" 95 | resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz" 96 | integrity sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg== 97 | dependencies: 98 | "@babel/helper-annotate-as-pure" "^7.25.9" 99 | "@babel/helper-member-expression-to-functions" "^7.25.9" 100 | "@babel/helper-optimise-call-expression" "^7.25.9" 101 | "@babel/helper-replace-supers" "^7.26.5" 102 | "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" 103 | "@babel/traverse" "^7.27.0" 104 | semver "^6.3.1" 105 | 106 | "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9": 107 | version "7.27.0" 108 | resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.0.tgz" 109 | integrity sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ== 110 | dependencies: 111 | "@babel/helper-annotate-as-pure" "^7.25.9" 112 | regexpu-core "^6.2.0" 113 | semver "^6.3.1" 114 | 115 | "@babel/helper-define-polyfill-provider@^0.6.3", "@babel/helper-define-polyfill-provider@^0.6.4": 116 | version "0.6.4" 117 | resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz" 118 | integrity sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw== 119 | dependencies: 120 | "@babel/helper-compilation-targets" "^7.22.6" 121 | "@babel/helper-plugin-utils" "^7.22.5" 122 | debug "^4.1.1" 123 | lodash.debounce "^4.0.8" 124 | resolve "^1.14.2" 125 | 126 | "@babel/helper-member-expression-to-functions@^7.25.9": 127 | version "7.25.9" 128 | resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz" 129 | integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== 130 | dependencies: 131 | "@babel/traverse" "^7.25.9" 132 | "@babel/types" "^7.25.9" 133 | 134 | "@babel/helper-module-imports@^7.25.9": 135 | version "7.25.9" 136 | resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz" 137 | integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== 138 | dependencies: 139 | "@babel/traverse" "^7.25.9" 140 | "@babel/types" "^7.25.9" 141 | 142 | "@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": 143 | version "7.26.0" 144 | resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz" 145 | integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== 146 | dependencies: 147 | "@babel/helper-module-imports" "^7.25.9" 148 | "@babel/helper-validator-identifier" "^7.25.9" 149 | "@babel/traverse" "^7.25.9" 150 | 151 | "@babel/helper-optimise-call-expression@^7.25.9": 152 | version "7.25.9" 153 | resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz" 154 | integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== 155 | dependencies: 156 | "@babel/types" "^7.25.9" 157 | 158 | "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5": 159 | version "7.26.5" 160 | resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz" 161 | integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg== 162 | 163 | "@babel/helper-remap-async-to-generator@^7.25.9": 164 | version "7.25.9" 165 | resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz" 166 | integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== 167 | dependencies: 168 | "@babel/helper-annotate-as-pure" "^7.25.9" 169 | "@babel/helper-wrap-function" "^7.25.9" 170 | "@babel/traverse" "^7.25.9" 171 | 172 | "@babel/helper-replace-supers@^7.25.9", "@babel/helper-replace-supers@^7.26.5": 173 | version "7.26.5" 174 | resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz" 175 | integrity sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg== 176 | dependencies: 177 | "@babel/helper-member-expression-to-functions" "^7.25.9" 178 | "@babel/helper-optimise-call-expression" "^7.25.9" 179 | "@babel/traverse" "^7.26.5" 180 | 181 | "@babel/helper-skip-transparent-expression-wrappers@^7.25.9": 182 | version "7.25.9" 183 | resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz" 184 | integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== 185 | dependencies: 186 | "@babel/traverse" "^7.25.9" 187 | "@babel/types" "^7.25.9" 188 | 189 | "@babel/helper-string-parser@^7.25.9": 190 | version "7.25.9" 191 | resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz" 192 | integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== 193 | 194 | "@babel/helper-validator-identifier@^7.25.9": 195 | version "7.25.9" 196 | resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz" 197 | integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== 198 | 199 | "@babel/helper-validator-option@^7.25.9": 200 | version "7.25.9" 201 | resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz" 202 | integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== 203 | 204 | "@babel/helper-wrap-function@^7.25.9": 205 | version "7.25.9" 206 | resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz" 207 | integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g== 208 | dependencies: 209 | "@babel/template" "^7.25.9" 210 | "@babel/traverse" "^7.25.9" 211 | "@babel/types" "^7.25.9" 212 | 213 | "@babel/helpers@^7.26.10": 214 | version "7.27.0" 215 | resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz" 216 | integrity sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg== 217 | dependencies: 218 | "@babel/template" "^7.27.0" 219 | "@babel/types" "^7.27.0" 220 | 221 | "@babel/parser@^7.26.10", "@babel/parser@^7.27.0": 222 | version "7.27.0" 223 | resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz" 224 | integrity sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg== 225 | dependencies: 226 | "@babel/types" "^7.27.0" 227 | 228 | "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": 229 | version "7.25.9" 230 | resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz" 231 | integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g== 232 | dependencies: 233 | "@babel/helper-plugin-utils" "^7.25.9" 234 | "@babel/traverse" "^7.25.9" 235 | 236 | "@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9": 237 | version "7.25.9" 238 | resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz" 239 | integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw== 240 | dependencies: 241 | "@babel/helper-plugin-utils" "^7.25.9" 242 | 243 | "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": 244 | version "7.25.9" 245 | resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz" 246 | integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug== 247 | dependencies: 248 | "@babel/helper-plugin-utils" "^7.25.9" 249 | 250 | "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": 251 | version "7.25.9" 252 | resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz" 253 | integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g== 254 | dependencies: 255 | "@babel/helper-plugin-utils" "^7.25.9" 256 | "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" 257 | "@babel/plugin-transform-optional-chaining" "^7.25.9" 258 | 259 | "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": 260 | version "7.25.9" 261 | resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz" 262 | integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg== 263 | dependencies: 264 | "@babel/helper-plugin-utils" "^7.25.9" 265 | "@babel/traverse" "^7.25.9" 266 | 267 | "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": 268 | version "7.21.0-placeholder-for-preset-env.2" 269 | resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz" 270 | integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== 271 | 272 | "@babel/plugin-syntax-import-assertions@^7.26.0": 273 | version "7.26.0" 274 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz" 275 | integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg== 276 | dependencies: 277 | "@babel/helper-plugin-utils" "^7.25.9" 278 | 279 | "@babel/plugin-syntax-import-attributes@^7.26.0": 280 | version "7.26.0" 281 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz" 282 | integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== 283 | dependencies: 284 | "@babel/helper-plugin-utils" "^7.25.9" 285 | 286 | "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": 287 | version "7.18.6" 288 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" 289 | integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== 290 | dependencies: 291 | "@babel/helper-create-regexp-features-plugin" "^7.18.6" 292 | "@babel/helper-plugin-utils" "^7.18.6" 293 | 294 | "@babel/plugin-transform-arrow-functions@^7.25.9": 295 | version "7.25.9" 296 | resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz" 297 | integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== 298 | dependencies: 299 | "@babel/helper-plugin-utils" "^7.25.9" 300 | 301 | "@babel/plugin-transform-async-generator-functions@^7.26.8": 302 | version "7.26.8" 303 | resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz" 304 | integrity sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg== 305 | dependencies: 306 | "@babel/helper-plugin-utils" "^7.26.5" 307 | "@babel/helper-remap-async-to-generator" "^7.25.9" 308 | "@babel/traverse" "^7.26.8" 309 | 310 | "@babel/plugin-transform-async-to-generator@^7.25.9": 311 | version "7.25.9" 312 | resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz" 313 | integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== 314 | dependencies: 315 | "@babel/helper-module-imports" "^7.25.9" 316 | "@babel/helper-plugin-utils" "^7.25.9" 317 | "@babel/helper-remap-async-to-generator" "^7.25.9" 318 | 319 | "@babel/plugin-transform-block-scoped-functions@^7.26.5": 320 | version "7.26.5" 321 | resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz" 322 | integrity sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ== 323 | dependencies: 324 | "@babel/helper-plugin-utils" "^7.26.5" 325 | 326 | "@babel/plugin-transform-block-scoping@^7.25.9": 327 | version "7.27.0" 328 | resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.0.tgz" 329 | integrity sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ== 330 | dependencies: 331 | "@babel/helper-plugin-utils" "^7.26.5" 332 | 333 | "@babel/plugin-transform-class-properties@^7.25.9": 334 | version "7.25.9" 335 | resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz" 336 | integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== 337 | dependencies: 338 | "@babel/helper-create-class-features-plugin" "^7.25.9" 339 | "@babel/helper-plugin-utils" "^7.25.9" 340 | 341 | "@babel/plugin-transform-class-static-block@^7.26.0": 342 | version "7.26.0" 343 | resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz" 344 | integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ== 345 | dependencies: 346 | "@babel/helper-create-class-features-plugin" "^7.25.9" 347 | "@babel/helper-plugin-utils" "^7.25.9" 348 | 349 | "@babel/plugin-transform-classes@^7.25.9": 350 | version "7.25.9" 351 | resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz" 352 | integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== 353 | dependencies: 354 | "@babel/helper-annotate-as-pure" "^7.25.9" 355 | "@babel/helper-compilation-targets" "^7.25.9" 356 | "@babel/helper-plugin-utils" "^7.25.9" 357 | "@babel/helper-replace-supers" "^7.25.9" 358 | "@babel/traverse" "^7.25.9" 359 | globals "^11.1.0" 360 | 361 | "@babel/plugin-transform-computed-properties@^7.25.9": 362 | version "7.25.9" 363 | resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz" 364 | integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== 365 | dependencies: 366 | "@babel/helper-plugin-utils" "^7.25.9" 367 | "@babel/template" "^7.25.9" 368 | 369 | "@babel/plugin-transform-destructuring@^7.25.9": 370 | version "7.25.9" 371 | resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz" 372 | integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== 373 | dependencies: 374 | "@babel/helper-plugin-utils" "^7.25.9" 375 | 376 | "@babel/plugin-transform-dotall-regex@^7.25.9": 377 | version "7.25.9" 378 | resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz" 379 | integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA== 380 | dependencies: 381 | "@babel/helper-create-regexp-features-plugin" "^7.25.9" 382 | "@babel/helper-plugin-utils" "^7.25.9" 383 | 384 | "@babel/plugin-transform-duplicate-keys@^7.25.9": 385 | version "7.25.9" 386 | resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz" 387 | integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw== 388 | dependencies: 389 | "@babel/helper-plugin-utils" "^7.25.9" 390 | 391 | "@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9": 392 | version "7.25.9" 393 | resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz" 394 | integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog== 395 | dependencies: 396 | "@babel/helper-create-regexp-features-plugin" "^7.25.9" 397 | "@babel/helper-plugin-utils" "^7.25.9" 398 | 399 | "@babel/plugin-transform-dynamic-import@^7.25.9": 400 | version "7.25.9" 401 | resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz" 402 | integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg== 403 | dependencies: 404 | "@babel/helper-plugin-utils" "^7.25.9" 405 | 406 | "@babel/plugin-transform-exponentiation-operator@^7.26.3": 407 | version "7.26.3" 408 | resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz" 409 | integrity sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ== 410 | dependencies: 411 | "@babel/helper-plugin-utils" "^7.25.9" 412 | 413 | "@babel/plugin-transform-export-namespace-from@^7.25.9": 414 | version "7.25.9" 415 | resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz" 416 | integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== 417 | dependencies: 418 | "@babel/helper-plugin-utils" "^7.25.9" 419 | 420 | "@babel/plugin-transform-for-of@^7.26.9": 421 | version "7.26.9" 422 | resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz" 423 | integrity sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg== 424 | dependencies: 425 | "@babel/helper-plugin-utils" "^7.26.5" 426 | "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" 427 | 428 | "@babel/plugin-transform-function-name@^7.25.9": 429 | version "7.25.9" 430 | resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz" 431 | integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== 432 | dependencies: 433 | "@babel/helper-compilation-targets" "^7.25.9" 434 | "@babel/helper-plugin-utils" "^7.25.9" 435 | "@babel/traverse" "^7.25.9" 436 | 437 | "@babel/plugin-transform-json-strings@^7.25.9": 438 | version "7.25.9" 439 | resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz" 440 | integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw== 441 | dependencies: 442 | "@babel/helper-plugin-utils" "^7.25.9" 443 | 444 | "@babel/plugin-transform-literals@^7.25.9": 445 | version "7.25.9" 446 | resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz" 447 | integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== 448 | dependencies: 449 | "@babel/helper-plugin-utils" "^7.25.9" 450 | 451 | "@babel/plugin-transform-logical-assignment-operators@^7.25.9": 452 | version "7.25.9" 453 | resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz" 454 | integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== 455 | dependencies: 456 | "@babel/helper-plugin-utils" "^7.25.9" 457 | 458 | "@babel/plugin-transform-member-expression-literals@^7.25.9": 459 | version "7.25.9" 460 | resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz" 461 | integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA== 462 | dependencies: 463 | "@babel/helper-plugin-utils" "^7.25.9" 464 | 465 | "@babel/plugin-transform-modules-amd@^7.25.9": 466 | version "7.25.9" 467 | resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz" 468 | integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw== 469 | dependencies: 470 | "@babel/helper-module-transforms" "^7.25.9" 471 | "@babel/helper-plugin-utils" "^7.25.9" 472 | 473 | "@babel/plugin-transform-modules-commonjs@^7.26.3": 474 | version "7.26.3" 475 | resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz" 476 | integrity sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ== 477 | dependencies: 478 | "@babel/helper-module-transforms" "^7.26.0" 479 | "@babel/helper-plugin-utils" "^7.25.9" 480 | 481 | "@babel/plugin-transform-modules-systemjs@^7.25.9": 482 | version "7.25.9" 483 | resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz" 484 | integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA== 485 | dependencies: 486 | "@babel/helper-module-transforms" "^7.25.9" 487 | "@babel/helper-plugin-utils" "^7.25.9" 488 | "@babel/helper-validator-identifier" "^7.25.9" 489 | "@babel/traverse" "^7.25.9" 490 | 491 | "@babel/plugin-transform-modules-umd@^7.25.9": 492 | version "7.25.9" 493 | resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz" 494 | integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw== 495 | dependencies: 496 | "@babel/helper-module-transforms" "^7.25.9" 497 | "@babel/helper-plugin-utils" "^7.25.9" 498 | 499 | "@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": 500 | version "7.25.9" 501 | resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz" 502 | integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== 503 | dependencies: 504 | "@babel/helper-create-regexp-features-plugin" "^7.25.9" 505 | "@babel/helper-plugin-utils" "^7.25.9" 506 | 507 | "@babel/plugin-transform-new-target@^7.25.9": 508 | version "7.25.9" 509 | resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz" 510 | integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ== 511 | dependencies: 512 | "@babel/helper-plugin-utils" "^7.25.9" 513 | 514 | "@babel/plugin-transform-nullish-coalescing-operator@^7.26.6": 515 | version "7.26.6" 516 | resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz" 517 | integrity sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw== 518 | dependencies: 519 | "@babel/helper-plugin-utils" "^7.26.5" 520 | 521 | "@babel/plugin-transform-numeric-separator@^7.25.9": 522 | version "7.25.9" 523 | resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz" 524 | integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== 525 | dependencies: 526 | "@babel/helper-plugin-utils" "^7.25.9" 527 | 528 | "@babel/plugin-transform-object-rest-spread@^7.25.9": 529 | version "7.25.9" 530 | resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz" 531 | integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== 532 | dependencies: 533 | "@babel/helper-compilation-targets" "^7.25.9" 534 | "@babel/helper-plugin-utils" "^7.25.9" 535 | "@babel/plugin-transform-parameters" "^7.25.9" 536 | 537 | "@babel/plugin-transform-object-super@^7.25.9": 538 | version "7.25.9" 539 | resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz" 540 | integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A== 541 | dependencies: 542 | "@babel/helper-plugin-utils" "^7.25.9" 543 | "@babel/helper-replace-supers" "^7.25.9" 544 | 545 | "@babel/plugin-transform-optional-catch-binding@^7.25.9": 546 | version "7.25.9" 547 | resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz" 548 | integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== 549 | dependencies: 550 | "@babel/helper-plugin-utils" "^7.25.9" 551 | 552 | "@babel/plugin-transform-optional-chaining@^7.25.9": 553 | version "7.25.9" 554 | resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz" 555 | integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== 556 | dependencies: 557 | "@babel/helper-plugin-utils" "^7.25.9" 558 | "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" 559 | 560 | "@babel/plugin-transform-parameters@^7.25.9": 561 | version "7.25.9" 562 | resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz" 563 | integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== 564 | dependencies: 565 | "@babel/helper-plugin-utils" "^7.25.9" 566 | 567 | "@babel/plugin-transform-private-methods@^7.25.9": 568 | version "7.25.9" 569 | resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz" 570 | integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== 571 | dependencies: 572 | "@babel/helper-create-class-features-plugin" "^7.25.9" 573 | "@babel/helper-plugin-utils" "^7.25.9" 574 | 575 | "@babel/plugin-transform-private-property-in-object@^7.25.9": 576 | version "7.25.9" 577 | resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz" 578 | integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== 579 | dependencies: 580 | "@babel/helper-annotate-as-pure" "^7.25.9" 581 | "@babel/helper-create-class-features-plugin" "^7.25.9" 582 | "@babel/helper-plugin-utils" "^7.25.9" 583 | 584 | "@babel/plugin-transform-property-literals@^7.25.9": 585 | version "7.25.9" 586 | resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz" 587 | integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA== 588 | dependencies: 589 | "@babel/helper-plugin-utils" "^7.25.9" 590 | 591 | "@babel/plugin-transform-regenerator@^7.25.9": 592 | version "7.27.0" 593 | resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.0.tgz" 594 | integrity sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA== 595 | dependencies: 596 | "@babel/helper-plugin-utils" "^7.26.5" 597 | regenerator-transform "^0.15.2" 598 | 599 | "@babel/plugin-transform-regexp-modifiers@^7.26.0": 600 | version "7.26.0" 601 | resolved "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz" 602 | integrity sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw== 603 | dependencies: 604 | "@babel/helper-create-regexp-features-plugin" "^7.25.9" 605 | "@babel/helper-plugin-utils" "^7.25.9" 606 | 607 | "@babel/plugin-transform-reserved-words@^7.25.9": 608 | version "7.25.9" 609 | resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz" 610 | integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg== 611 | dependencies: 612 | "@babel/helper-plugin-utils" "^7.25.9" 613 | 614 | "@babel/plugin-transform-shorthand-properties@^7.25.9": 615 | version "7.25.9" 616 | resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz" 617 | integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== 618 | dependencies: 619 | "@babel/helper-plugin-utils" "^7.25.9" 620 | 621 | "@babel/plugin-transform-spread@^7.25.9": 622 | version "7.25.9" 623 | resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz" 624 | integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== 625 | dependencies: 626 | "@babel/helper-plugin-utils" "^7.25.9" 627 | "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" 628 | 629 | "@babel/plugin-transform-sticky-regex@^7.25.9": 630 | version "7.25.9" 631 | resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz" 632 | integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== 633 | dependencies: 634 | "@babel/helper-plugin-utils" "^7.25.9" 635 | 636 | "@babel/plugin-transform-template-literals@^7.26.8": 637 | version "7.26.8" 638 | resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz" 639 | integrity sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q== 640 | dependencies: 641 | "@babel/helper-plugin-utils" "^7.26.5" 642 | 643 | "@babel/plugin-transform-typeof-symbol@^7.26.7": 644 | version "7.27.0" 645 | resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz" 646 | integrity sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w== 647 | dependencies: 648 | "@babel/helper-plugin-utils" "^7.26.5" 649 | 650 | "@babel/plugin-transform-unicode-escapes@^7.25.9": 651 | version "7.25.9" 652 | resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz" 653 | integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q== 654 | dependencies: 655 | "@babel/helper-plugin-utils" "^7.25.9" 656 | 657 | "@babel/plugin-transform-unicode-property-regex@^7.25.9": 658 | version "7.25.9" 659 | resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz" 660 | integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg== 661 | dependencies: 662 | "@babel/helper-create-regexp-features-plugin" "^7.25.9" 663 | "@babel/helper-plugin-utils" "^7.25.9" 664 | 665 | "@babel/plugin-transform-unicode-regex@^7.25.9": 666 | version "7.25.9" 667 | resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz" 668 | integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== 669 | dependencies: 670 | "@babel/helper-create-regexp-features-plugin" "^7.25.9" 671 | "@babel/helper-plugin-utils" "^7.25.9" 672 | 673 | "@babel/plugin-transform-unicode-sets-regex@^7.25.9": 674 | version "7.25.9" 675 | resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz" 676 | integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ== 677 | dependencies: 678 | "@babel/helper-create-regexp-features-plugin" "^7.25.9" 679 | "@babel/helper-plugin-utils" "^7.25.9" 680 | 681 | "@babel/preset-env@^7.24.0": 682 | version "7.26.9" 683 | resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz" 684 | integrity sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ== 685 | dependencies: 686 | "@babel/compat-data" "^7.26.8" 687 | "@babel/helper-compilation-targets" "^7.26.5" 688 | "@babel/helper-plugin-utils" "^7.26.5" 689 | "@babel/helper-validator-option" "^7.25.9" 690 | "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9" 691 | "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9" 692 | "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9" 693 | "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9" 694 | "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9" 695 | "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" 696 | "@babel/plugin-syntax-import-assertions" "^7.26.0" 697 | "@babel/plugin-syntax-import-attributes" "^7.26.0" 698 | "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" 699 | "@babel/plugin-transform-arrow-functions" "^7.25.9" 700 | "@babel/plugin-transform-async-generator-functions" "^7.26.8" 701 | "@babel/plugin-transform-async-to-generator" "^7.25.9" 702 | "@babel/plugin-transform-block-scoped-functions" "^7.26.5" 703 | "@babel/plugin-transform-block-scoping" "^7.25.9" 704 | "@babel/plugin-transform-class-properties" "^7.25.9" 705 | "@babel/plugin-transform-class-static-block" "^7.26.0" 706 | "@babel/plugin-transform-classes" "^7.25.9" 707 | "@babel/plugin-transform-computed-properties" "^7.25.9" 708 | "@babel/plugin-transform-destructuring" "^7.25.9" 709 | "@babel/plugin-transform-dotall-regex" "^7.25.9" 710 | "@babel/plugin-transform-duplicate-keys" "^7.25.9" 711 | "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9" 712 | "@babel/plugin-transform-dynamic-import" "^7.25.9" 713 | "@babel/plugin-transform-exponentiation-operator" "^7.26.3" 714 | "@babel/plugin-transform-export-namespace-from" "^7.25.9" 715 | "@babel/plugin-transform-for-of" "^7.26.9" 716 | "@babel/plugin-transform-function-name" "^7.25.9" 717 | "@babel/plugin-transform-json-strings" "^7.25.9" 718 | "@babel/plugin-transform-literals" "^7.25.9" 719 | "@babel/plugin-transform-logical-assignment-operators" "^7.25.9" 720 | "@babel/plugin-transform-member-expression-literals" "^7.25.9" 721 | "@babel/plugin-transform-modules-amd" "^7.25.9" 722 | "@babel/plugin-transform-modules-commonjs" "^7.26.3" 723 | "@babel/plugin-transform-modules-systemjs" "^7.25.9" 724 | "@babel/plugin-transform-modules-umd" "^7.25.9" 725 | "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9" 726 | "@babel/plugin-transform-new-target" "^7.25.9" 727 | "@babel/plugin-transform-nullish-coalescing-operator" "^7.26.6" 728 | "@babel/plugin-transform-numeric-separator" "^7.25.9" 729 | "@babel/plugin-transform-object-rest-spread" "^7.25.9" 730 | "@babel/plugin-transform-object-super" "^7.25.9" 731 | "@babel/plugin-transform-optional-catch-binding" "^7.25.9" 732 | "@babel/plugin-transform-optional-chaining" "^7.25.9" 733 | "@babel/plugin-transform-parameters" "^7.25.9" 734 | "@babel/plugin-transform-private-methods" "^7.25.9" 735 | "@babel/plugin-transform-private-property-in-object" "^7.25.9" 736 | "@babel/plugin-transform-property-literals" "^7.25.9" 737 | "@babel/plugin-transform-regenerator" "^7.25.9" 738 | "@babel/plugin-transform-regexp-modifiers" "^7.26.0" 739 | "@babel/plugin-transform-reserved-words" "^7.25.9" 740 | "@babel/plugin-transform-shorthand-properties" "^7.25.9" 741 | "@babel/plugin-transform-spread" "^7.25.9" 742 | "@babel/plugin-transform-sticky-regex" "^7.25.9" 743 | "@babel/plugin-transform-template-literals" "^7.26.8" 744 | "@babel/plugin-transform-typeof-symbol" "^7.26.7" 745 | "@babel/plugin-transform-unicode-escapes" "^7.25.9" 746 | "@babel/plugin-transform-unicode-property-regex" "^7.25.9" 747 | "@babel/plugin-transform-unicode-regex" "^7.25.9" 748 | "@babel/plugin-transform-unicode-sets-regex" "^7.25.9" 749 | "@babel/preset-modules" "0.1.6-no-external-plugins" 750 | babel-plugin-polyfill-corejs2 "^0.4.10" 751 | babel-plugin-polyfill-corejs3 "^0.11.0" 752 | babel-plugin-polyfill-regenerator "^0.6.1" 753 | core-js-compat "^3.40.0" 754 | semver "^6.3.1" 755 | 756 | "@babel/preset-modules@0.1.6-no-external-plugins": 757 | version "0.1.6-no-external-plugins" 758 | resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" 759 | integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== 760 | dependencies: 761 | "@babel/helper-plugin-utils" "^7.0.0" 762 | "@babel/types" "^7.4.4" 763 | esutils "^2.0.2" 764 | 765 | "@babel/runtime@^7.8.4": 766 | version "7.27.0" 767 | resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz" 768 | integrity sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw== 769 | dependencies: 770 | regenerator-runtime "^0.14.0" 771 | 772 | "@babel/template@^7.25.9", "@babel/template@^7.26.9", "@babel/template@^7.27.0": 773 | version "7.27.0" 774 | resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz" 775 | integrity sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA== 776 | dependencies: 777 | "@babel/code-frame" "^7.26.2" 778 | "@babel/parser" "^7.27.0" 779 | "@babel/types" "^7.27.0" 780 | 781 | "@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10", "@babel/traverse@^7.26.5", "@babel/traverse@^7.26.8", "@babel/traverse@^7.27.0": 782 | version "7.27.0" 783 | resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz" 784 | integrity sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA== 785 | dependencies: 786 | "@babel/code-frame" "^7.26.2" 787 | "@babel/generator" "^7.27.0" 788 | "@babel/parser" "^7.27.0" 789 | "@babel/template" "^7.27.0" 790 | "@babel/types" "^7.27.0" 791 | debug "^4.3.1" 792 | globals "^11.1.0" 793 | 794 | "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.0", "@babel/types@^7.4.4": 795 | version "7.27.0" 796 | resolved "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz" 797 | integrity sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg== 798 | dependencies: 799 | "@babel/helper-string-parser" "^7.25.9" 800 | "@babel/helper-validator-identifier" "^7.25.9" 801 | 802 | "@jridgewell/gen-mapping@^0.3.5": 803 | version "0.3.8" 804 | resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz" 805 | integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== 806 | dependencies: 807 | "@jridgewell/set-array" "^1.2.1" 808 | "@jridgewell/sourcemap-codec" "^1.4.10" 809 | "@jridgewell/trace-mapping" "^0.3.24" 810 | 811 | "@jridgewell/resolve-uri@^3.1.0": 812 | version "3.1.2" 813 | resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" 814 | integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== 815 | 816 | "@jridgewell/set-array@^1.2.1": 817 | version "1.2.1" 818 | resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" 819 | integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== 820 | 821 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": 822 | version "1.5.0" 823 | resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz" 824 | integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== 825 | 826 | "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": 827 | version "0.3.25" 828 | resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" 829 | integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== 830 | dependencies: 831 | "@jridgewell/resolve-uri" "^3.1.0" 832 | "@jridgewell/sourcemap-codec" "^1.4.14" 833 | 834 | "@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": 835 | version "2.1.8-no-fsevents.3" 836 | resolved "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz" 837 | integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== 838 | 839 | ansi-align@^3.0.0: 840 | version "3.0.1" 841 | resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" 842 | integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== 843 | dependencies: 844 | string-width "^4.1.0" 845 | 846 | ansi-escapes@^4.2.1: 847 | version "4.3.2" 848 | resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" 849 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== 850 | dependencies: 851 | type-fest "^0.21.3" 852 | 853 | ansi-regex@^5.0.1: 854 | version "5.0.1" 855 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" 856 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 857 | 858 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 859 | version "4.3.0" 860 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" 861 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 862 | dependencies: 863 | color-convert "^2.0.1" 864 | 865 | anymatch@~3.1.2: 866 | version "3.1.3" 867 | resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" 868 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 869 | dependencies: 870 | normalize-path "^3.0.0" 871 | picomatch "^2.0.4" 872 | 873 | asynckit@^0.4.0: 874 | version "0.4.0" 875 | resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" 876 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 877 | 878 | axios@^1.6.7: 879 | version "1.6.7" 880 | resolved "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz" 881 | integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA== 882 | dependencies: 883 | follow-redirects "^1.15.4" 884 | form-data "^4.0.0" 885 | proxy-from-env "^1.1.0" 886 | 887 | babel-plugin-polyfill-corejs2@^0.4.10: 888 | version "0.4.13" 889 | resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz" 890 | integrity sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g== 891 | dependencies: 892 | "@babel/compat-data" "^7.22.6" 893 | "@babel/helper-define-polyfill-provider" "^0.6.4" 894 | semver "^6.3.1" 895 | 896 | babel-plugin-polyfill-corejs3@^0.11.0: 897 | version "0.11.1" 898 | resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz" 899 | integrity sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ== 900 | dependencies: 901 | "@babel/helper-define-polyfill-provider" "^0.6.3" 902 | core-js-compat "^3.40.0" 903 | 904 | babel-plugin-polyfill-regenerator@^0.6.1: 905 | version "0.6.4" 906 | resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz" 907 | integrity sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw== 908 | dependencies: 909 | "@babel/helper-define-polyfill-provider" "^0.6.4" 910 | 911 | balanced-match@^1.0.0: 912 | version "1.0.0" 913 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" 914 | integrity sha512-9Y0g0Q8rmSt+H33DfKv7FOc3v+iRI+o1lbzt8jGcIosYW37IIW/2XVYq5NPdmaD5NQ59Nk26Kl/vZbwW9Fr8vg== 915 | 916 | base64-js@^1.3.1: 917 | version "1.5.1" 918 | resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" 919 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 920 | 921 | binary-extensions@^2.0.0: 922 | version "2.3.0" 923 | resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" 924 | integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== 925 | 926 | bl@^4.1.0: 927 | version "4.1.0" 928 | resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" 929 | integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== 930 | dependencies: 931 | buffer "^5.5.0" 932 | inherits "^2.0.4" 933 | readable-stream "^3.4.0" 934 | 935 | boxen@^4.2.0: 936 | version "4.2.0" 937 | resolved "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz" 938 | integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== 939 | dependencies: 940 | ansi-align "^3.0.0" 941 | camelcase "^5.3.1" 942 | chalk "^3.0.0" 943 | cli-boxes "^2.2.0" 944 | string-width "^4.1.0" 945 | term-size "^2.1.0" 946 | type-fest "^0.8.1" 947 | widest-line "^3.1.0" 948 | 949 | brace-expansion@^1.1.7: 950 | version "1.1.8" 951 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz" 952 | integrity sha512-Dnfc9ROAPrkkeLIUweEbh7LFT9Mc53tO/bbM044rKjhgAEyIGKvKXg97PM/kRizZIfUHaROZIoeEaWao+Unzfw== 953 | dependencies: 954 | balanced-match "^1.0.0" 955 | concat-map "0.0.1" 956 | 957 | braces@~3.0.2: 958 | version "3.0.3" 959 | resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" 960 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 961 | dependencies: 962 | fill-range "^7.1.1" 963 | 964 | browserslist@^4.24.0, browserslist@^4.24.4, "browserslist@>= 4.21.0": 965 | version "4.24.4" 966 | resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz" 967 | integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== 968 | dependencies: 969 | caniuse-lite "^1.0.30001688" 970 | electron-to-chromium "^1.5.73" 971 | node-releases "^2.0.19" 972 | update-browserslist-db "^1.1.1" 973 | 974 | buffer@^5.5.0: 975 | version "5.7.1" 976 | resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" 977 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 978 | dependencies: 979 | base64-js "^1.3.1" 980 | ieee754 "^1.1.13" 981 | 982 | call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: 983 | version "1.0.2" 984 | resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" 985 | integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== 986 | dependencies: 987 | es-errors "^1.3.0" 988 | function-bind "^1.1.2" 989 | 990 | camelcase@^5.3.1: 991 | version "5.3.1" 992 | resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" 993 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 994 | 995 | caniuse-lite@^1.0.30001688: 996 | version "1.0.30001707" 997 | resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz" 998 | integrity sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw== 999 | 1000 | chalk@^3.0.0: 1001 | version "3.0.0" 1002 | resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" 1003 | integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== 1004 | dependencies: 1005 | ansi-styles "^4.1.0" 1006 | supports-color "^7.1.0" 1007 | 1008 | chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: 1009 | version "4.1.2" 1010 | resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" 1011 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 1012 | dependencies: 1013 | ansi-styles "^4.1.0" 1014 | supports-color "^7.1.0" 1015 | 1016 | chardet@^0.7.0: 1017 | version "0.7.0" 1018 | resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" 1019 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 1020 | 1021 | chokidar@^3.5.2, chokidar@^3.6.0: 1022 | version "3.6.0" 1023 | resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" 1024 | integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== 1025 | dependencies: 1026 | anymatch "~3.1.2" 1027 | braces "~3.0.2" 1028 | glob-parent "~5.1.2" 1029 | is-binary-path "~2.1.0" 1030 | is-glob "~4.0.1" 1031 | normalize-path "~3.0.0" 1032 | readdirp "~3.6.0" 1033 | optionalDependencies: 1034 | fsevents "~2.3.2" 1035 | 1036 | cli-boxes@^2.2.0: 1037 | version "2.2.1" 1038 | resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" 1039 | integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== 1040 | 1041 | cli-cursor@^3.1.0: 1042 | version "3.1.0" 1043 | resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" 1044 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 1045 | dependencies: 1046 | restore-cursor "^3.1.0" 1047 | 1048 | cli-spinners@^2.5.0: 1049 | version "2.9.2" 1050 | resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz" 1051 | integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== 1052 | 1053 | cli-width@^3.0.0: 1054 | version "3.0.0" 1055 | resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" 1056 | integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== 1057 | 1058 | cliui@^8.0.1: 1059 | version "8.0.1" 1060 | resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" 1061 | integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== 1062 | dependencies: 1063 | string-width "^4.2.0" 1064 | strip-ansi "^6.0.1" 1065 | wrap-ansi "^7.0.0" 1066 | 1067 | clone@^1.0.2: 1068 | version "1.0.4" 1069 | resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" 1070 | integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== 1071 | 1072 | color-convert@^2.0.1: 1073 | version "2.0.1" 1074 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" 1075 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 1076 | dependencies: 1077 | color-name "~1.1.4" 1078 | 1079 | color-name@~1.1.4: 1080 | version "1.1.4" 1081 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" 1082 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 1083 | 1084 | colors@^1.4.0: 1085 | version "1.4.0" 1086 | resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz" 1087 | integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== 1088 | 1089 | combined-stream@^1.0.8: 1090 | version "1.0.8" 1091 | resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" 1092 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 1093 | dependencies: 1094 | delayed-stream "~1.0.0" 1095 | 1096 | commander@^6.2.0: 1097 | version "6.2.1" 1098 | resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz" 1099 | integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== 1100 | 1101 | concat-map@0.0.1: 1102 | version "0.0.1" 1103 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 1104 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 1105 | 1106 | convert-source-map@^2.0.0: 1107 | version "2.0.0" 1108 | resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" 1109 | integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== 1110 | 1111 | core-js-compat@^3.40.0: 1112 | version "3.41.0" 1113 | resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz" 1114 | integrity sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A== 1115 | dependencies: 1116 | browserslist "^4.24.4" 1117 | 1118 | debug@^4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: 1119 | version "4.4.0" 1120 | resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" 1121 | integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== 1122 | dependencies: 1123 | ms "^2.1.3" 1124 | 1125 | defaults@^1.0.3: 1126 | version "1.0.4" 1127 | resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" 1128 | integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== 1129 | dependencies: 1130 | clone "^1.0.2" 1131 | 1132 | delayed-stream@~1.0.0: 1133 | version "1.0.0" 1134 | resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" 1135 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 1136 | 1137 | dotenv@^16.4.5: 1138 | version "16.4.7" 1139 | resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz" 1140 | integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== 1141 | 1142 | dunder-proto@^1.0.1: 1143 | version "1.0.1" 1144 | resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" 1145 | integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== 1146 | dependencies: 1147 | call-bind-apply-helpers "^1.0.1" 1148 | es-errors "^1.3.0" 1149 | gopd "^1.2.0" 1150 | 1151 | electron-to-chromium@^1.5.73: 1152 | version "1.5.128" 1153 | resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz" 1154 | integrity sha512-bo1A4HH/NS522Ws0QNFIzyPcyUUNV/yyy70Ho1xqfGYzPUme2F/xr4tlEOuM6/A538U1vDA7a4XfCd1CKRegKQ== 1155 | 1156 | emoji-regex@^8.0.0: 1157 | version "8.0.0" 1158 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" 1159 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1160 | 1161 | es-define-property@^1.0.1: 1162 | version "1.0.1" 1163 | resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" 1164 | integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== 1165 | 1166 | es-errors@^1.3.0: 1167 | version "1.3.0" 1168 | resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" 1169 | integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== 1170 | 1171 | es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: 1172 | version "1.1.1" 1173 | resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz" 1174 | integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== 1175 | dependencies: 1176 | es-errors "^1.3.0" 1177 | 1178 | es-set-tostringtag@^2.1.0: 1179 | version "2.1.0" 1180 | resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz" 1181 | integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== 1182 | dependencies: 1183 | es-errors "^1.3.0" 1184 | get-intrinsic "^1.2.6" 1185 | has-tostringtag "^1.0.2" 1186 | hasown "^2.0.2" 1187 | 1188 | escalade@^3.1.1, escalade@^3.2.0: 1189 | version "3.2.0" 1190 | resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" 1191 | integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== 1192 | 1193 | escape-string-regexp@^1.0.5: 1194 | version "1.0.5" 1195 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" 1196 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 1197 | 1198 | esutils@^2.0.2: 1199 | version "2.0.2" 1200 | resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" 1201 | integrity sha512-UUPPULqkyAV+M3Shodis7l8D+IyX6V8SbaBnTb449jf3fMTd8+UOZI1Q70NbZVOQkcR91yYgdHsJiMMMVmYshg== 1202 | 1203 | external-editor@^3.0.3: 1204 | version "3.1.0" 1205 | resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" 1206 | integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== 1207 | dependencies: 1208 | chardet "^0.7.0" 1209 | iconv-lite "^0.4.24" 1210 | tmp "^0.0.33" 1211 | 1212 | figures@^3.0.0: 1213 | version "3.2.0" 1214 | resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" 1215 | integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== 1216 | dependencies: 1217 | escape-string-regexp "^1.0.5" 1218 | 1219 | fill-range@^7.1.1: 1220 | version "7.1.1" 1221 | resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" 1222 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 1223 | dependencies: 1224 | to-regex-range "^5.0.1" 1225 | 1226 | follow-redirects@^1.15.4: 1227 | version "1.15.9" 1228 | resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz" 1229 | integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== 1230 | 1231 | form-data@^4.0.0: 1232 | version "4.0.2" 1233 | resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz" 1234 | integrity sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w== 1235 | dependencies: 1236 | asynckit "^0.4.0" 1237 | combined-stream "^1.0.8" 1238 | es-set-tostringtag "^2.1.0" 1239 | mime-types "^2.1.12" 1240 | 1241 | fs-readdir-recursive@^1.1.0: 1242 | version "1.1.0" 1243 | resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" 1244 | integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== 1245 | 1246 | fs.realpath@^1.0.0: 1247 | version "1.0.0" 1248 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 1249 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 1250 | 1251 | fsevents@~2.3.2: 1252 | version "2.3.3" 1253 | resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" 1254 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 1255 | 1256 | function-bind@^1.1.2: 1257 | version "1.1.2" 1258 | resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" 1259 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 1260 | 1261 | gensync@^1.0.0-beta.2: 1262 | version "1.0.0-beta.2" 1263 | resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" 1264 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1265 | 1266 | get-caller-file@^2.0.5: 1267 | version "2.0.5" 1268 | resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" 1269 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1270 | 1271 | get-intrinsic@^1.2.6: 1272 | version "1.3.0" 1273 | resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz" 1274 | integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== 1275 | dependencies: 1276 | call-bind-apply-helpers "^1.0.2" 1277 | es-define-property "^1.0.1" 1278 | es-errors "^1.3.0" 1279 | es-object-atoms "^1.1.1" 1280 | function-bind "^1.1.2" 1281 | get-proto "^1.0.1" 1282 | gopd "^1.2.0" 1283 | has-symbols "^1.1.0" 1284 | hasown "^2.0.2" 1285 | math-intrinsics "^1.1.0" 1286 | 1287 | get-proto@^1.0.1: 1288 | version "1.0.1" 1289 | resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" 1290 | integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== 1291 | dependencies: 1292 | dunder-proto "^1.0.1" 1293 | es-object-atoms "^1.0.0" 1294 | 1295 | glob-parent@~5.1.2: 1296 | version "5.1.2" 1297 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" 1298 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1299 | dependencies: 1300 | is-glob "^4.0.1" 1301 | 1302 | glob@^7.2.0: 1303 | version "7.2.3" 1304 | resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" 1305 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 1306 | dependencies: 1307 | fs.realpath "^1.0.0" 1308 | inflight "^1.0.4" 1309 | inherits "2" 1310 | minimatch "^3.1.1" 1311 | once "^1.3.0" 1312 | path-is-absolute "^1.0.0" 1313 | 1314 | globals@^11.1.0: 1315 | version "11.12.0" 1316 | resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" 1317 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1318 | 1319 | gopd@^1.2.0: 1320 | version "1.2.0" 1321 | resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" 1322 | integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== 1323 | 1324 | has-flag@^3.0.0: 1325 | version "3.0.0" 1326 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" 1327 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 1328 | 1329 | has-flag@^4.0.0: 1330 | version "4.0.0" 1331 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" 1332 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1333 | 1334 | has-symbols@^1.0.3, has-symbols@^1.1.0: 1335 | version "1.1.0" 1336 | resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" 1337 | integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== 1338 | 1339 | has-tostringtag@^1.0.2: 1340 | version "1.0.2" 1341 | resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz" 1342 | integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== 1343 | dependencies: 1344 | has-symbols "^1.0.3" 1345 | 1346 | hasown@^2.0.2: 1347 | version "2.0.2" 1348 | resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" 1349 | integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== 1350 | dependencies: 1351 | function-bind "^1.1.2" 1352 | 1353 | iconv-lite@^0.4.24: 1354 | version "0.4.24" 1355 | resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" 1356 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1357 | dependencies: 1358 | safer-buffer ">= 2.1.2 < 3" 1359 | 1360 | ieee754@^1.1.13: 1361 | version "1.2.1" 1362 | resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" 1363 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 1364 | 1365 | ignore-by-default@^1.0.1: 1366 | version "1.0.1" 1367 | resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz" 1368 | integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== 1369 | 1370 | inflight@^1.0.4: 1371 | version "1.0.6" 1372 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 1373 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1374 | dependencies: 1375 | once "^1.3.0" 1376 | wrappy "1" 1377 | 1378 | inherits@^2.0.3, inherits@^2.0.4, inherits@2: 1379 | version "2.0.4" 1380 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 1381 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1382 | 1383 | inquirer@^8.2.6: 1384 | version "8.2.6" 1385 | resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz" 1386 | integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== 1387 | dependencies: 1388 | ansi-escapes "^4.2.1" 1389 | chalk "^4.1.1" 1390 | cli-cursor "^3.1.0" 1391 | cli-width "^3.0.0" 1392 | external-editor "^3.0.3" 1393 | figures "^3.0.0" 1394 | lodash "^4.17.21" 1395 | mute-stream "0.0.8" 1396 | ora "^5.4.1" 1397 | run-async "^2.4.0" 1398 | rxjs "^7.5.5" 1399 | string-width "^4.1.0" 1400 | strip-ansi "^6.0.0" 1401 | through "^2.3.6" 1402 | wrap-ansi "^6.0.1" 1403 | 1404 | is-binary-path@~2.1.0: 1405 | version "2.1.0" 1406 | resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" 1407 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1408 | dependencies: 1409 | binary-extensions "^2.0.0" 1410 | 1411 | is-core-module@^2.16.0: 1412 | version "2.16.1" 1413 | resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz" 1414 | integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== 1415 | dependencies: 1416 | hasown "^2.0.2" 1417 | 1418 | is-extglob@^2.1.1: 1419 | version "2.1.1" 1420 | resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 1421 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1422 | 1423 | is-fullwidth-code-point@^3.0.0: 1424 | version "3.0.0" 1425 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" 1426 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1427 | 1428 | is-glob@^4.0.1, is-glob@~4.0.1: 1429 | version "4.0.3" 1430 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" 1431 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1432 | dependencies: 1433 | is-extglob "^2.1.1" 1434 | 1435 | is-interactive@^1.0.0: 1436 | version "1.0.0" 1437 | resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" 1438 | integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== 1439 | 1440 | is-number@^7.0.0: 1441 | version "7.0.0" 1442 | resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" 1443 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1444 | 1445 | is-unicode-supported@^0.1.0: 1446 | version "0.1.0" 1447 | resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" 1448 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 1449 | 1450 | js-tokens@^4.0.0: 1451 | version "4.0.0" 1452 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" 1453 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1454 | 1455 | jsesc@^3.0.2: 1456 | version "3.1.0" 1457 | resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz" 1458 | integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== 1459 | 1460 | jsesc@~3.0.2: 1461 | version "3.0.2" 1462 | resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz" 1463 | integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== 1464 | 1465 | json5@^2.2.3: 1466 | version "2.2.3" 1467 | resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" 1468 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== 1469 | 1470 | lodash.debounce@^4.0.8: 1471 | version "4.0.8" 1472 | resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" 1473 | integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== 1474 | 1475 | lodash@^4.17.21: 1476 | version "4.17.21" 1477 | resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" 1478 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1479 | 1480 | log-symbols@^4.1.0: 1481 | version "4.1.0" 1482 | resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" 1483 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 1484 | dependencies: 1485 | chalk "^4.1.0" 1486 | is-unicode-supported "^0.1.0" 1487 | 1488 | lru-cache@^5.1.1: 1489 | version "5.1.1" 1490 | resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" 1491 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== 1492 | dependencies: 1493 | yallist "^3.0.2" 1494 | 1495 | make-dir@^2.1.0: 1496 | version "2.1.0" 1497 | resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" 1498 | integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== 1499 | dependencies: 1500 | pify "^4.0.1" 1501 | semver "^5.6.0" 1502 | 1503 | math-intrinsics@^1.1.0: 1504 | version "1.1.0" 1505 | resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" 1506 | integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== 1507 | 1508 | mime-db@1.52.0: 1509 | version "1.52.0" 1510 | resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" 1511 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1512 | 1513 | mime-types@^2.1.12: 1514 | version "2.1.35" 1515 | resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" 1516 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1517 | dependencies: 1518 | mime-db "1.52.0" 1519 | 1520 | mimic-fn@^2.1.0: 1521 | version "2.1.0" 1522 | resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" 1523 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1524 | 1525 | minimatch@^3.1.1, minimatch@^3.1.2: 1526 | version "3.1.2" 1527 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" 1528 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1529 | dependencies: 1530 | brace-expansion "^1.1.7" 1531 | 1532 | ms@^2.1.3: 1533 | version "2.1.3" 1534 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 1535 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1536 | 1537 | mute-stream@0.0.8: 1538 | version "0.0.8" 1539 | resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" 1540 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== 1541 | 1542 | node-releases@^2.0.19: 1543 | version "2.0.19" 1544 | resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz" 1545 | integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== 1546 | 1547 | nodemon@^3.1.0: 1548 | version "3.1.9" 1549 | resolved "https://registry.npmjs.org/nodemon/-/nodemon-3.1.9.tgz" 1550 | integrity sha512-hdr1oIb2p6ZSxu3PB2JWWYS7ZQ0qvaZsc3hK8DR8f02kRzc8rjYmxAIvdz+aYC+8F2IjNaB7HMcSDg8nQpJxyg== 1551 | dependencies: 1552 | chokidar "^3.5.2" 1553 | debug "^4" 1554 | ignore-by-default "^1.0.1" 1555 | minimatch "^3.1.2" 1556 | pstree.remy "^1.1.8" 1557 | semver "^7.5.3" 1558 | simple-update-notifier "^2.0.0" 1559 | supports-color "^5.5.0" 1560 | touch "^3.1.0" 1561 | undefsafe "^2.0.5" 1562 | 1563 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1564 | version "3.0.0" 1565 | resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" 1566 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1567 | 1568 | once@^1.3.0: 1569 | version "1.4.0" 1570 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 1571 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1572 | dependencies: 1573 | wrappy "1" 1574 | 1575 | onetime@^5.1.0: 1576 | version "5.1.2" 1577 | resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" 1578 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 1579 | dependencies: 1580 | mimic-fn "^2.1.0" 1581 | 1582 | ora@^5.4.1: 1583 | version "5.4.1" 1584 | resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" 1585 | integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== 1586 | dependencies: 1587 | bl "^4.1.0" 1588 | chalk "^4.1.0" 1589 | cli-cursor "^3.1.0" 1590 | cli-spinners "^2.5.0" 1591 | is-interactive "^1.0.0" 1592 | is-unicode-supported "^0.1.0" 1593 | log-symbols "^4.1.0" 1594 | strip-ansi "^6.0.0" 1595 | wcwidth "^1.0.1" 1596 | 1597 | os-tmpdir@~1.0.2: 1598 | version "1.0.2" 1599 | resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" 1600 | integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== 1601 | 1602 | path-is-absolute@^1.0.0: 1603 | version "1.0.1" 1604 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 1605 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1606 | 1607 | path-parse@^1.0.7: 1608 | version "1.0.7" 1609 | resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" 1610 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1611 | 1612 | picocolors@^1.0.0, picocolors@^1.1.1: 1613 | version "1.1.1" 1614 | resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" 1615 | integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== 1616 | 1617 | picomatch@^2.0.4, picomatch@^2.2.1: 1618 | version "2.3.1" 1619 | resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" 1620 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1621 | 1622 | pify@^4.0.1: 1623 | version "4.0.1" 1624 | resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" 1625 | integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== 1626 | 1627 | proxy-from-env@^1.1.0: 1628 | version "1.1.0" 1629 | resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" 1630 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== 1631 | 1632 | pstree.remy@^1.1.8: 1633 | version "1.1.8" 1634 | resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz" 1635 | integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== 1636 | 1637 | ramda@^0.29.1: 1638 | version "0.29.1" 1639 | resolved "https://registry.npmjs.org/ramda/-/ramda-0.29.1.tgz" 1640 | integrity sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA== 1641 | 1642 | readable-stream@^3.4.0: 1643 | version "3.6.2" 1644 | resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" 1645 | integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== 1646 | dependencies: 1647 | inherits "^2.0.3" 1648 | string_decoder "^1.1.1" 1649 | util-deprecate "^1.0.1" 1650 | 1651 | readdirp@~3.6.0: 1652 | version "3.6.0" 1653 | resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" 1654 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1655 | dependencies: 1656 | picomatch "^2.2.1" 1657 | 1658 | regenerate-unicode-properties@^10.2.0: 1659 | version "10.2.0" 1660 | resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz" 1661 | integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== 1662 | dependencies: 1663 | regenerate "^1.4.2" 1664 | 1665 | regenerate@^1.4.2: 1666 | version "1.4.2" 1667 | resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" 1668 | integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== 1669 | 1670 | regenerator-runtime@^0.14.0: 1671 | version "0.14.1" 1672 | resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" 1673 | integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== 1674 | 1675 | regenerator-transform@^0.15.2: 1676 | version "0.15.2" 1677 | resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz" 1678 | integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== 1679 | dependencies: 1680 | "@babel/runtime" "^7.8.4" 1681 | 1682 | regexpu-core@^6.2.0: 1683 | version "6.2.0" 1684 | resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz" 1685 | integrity sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA== 1686 | dependencies: 1687 | regenerate "^1.4.2" 1688 | regenerate-unicode-properties "^10.2.0" 1689 | regjsgen "^0.8.0" 1690 | regjsparser "^0.12.0" 1691 | unicode-match-property-ecmascript "^2.0.0" 1692 | unicode-match-property-value-ecmascript "^2.1.0" 1693 | 1694 | regjsgen@^0.8.0: 1695 | version "0.8.0" 1696 | resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz" 1697 | integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== 1698 | 1699 | regjsparser@^0.12.0: 1700 | version "0.12.0" 1701 | resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz" 1702 | integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== 1703 | dependencies: 1704 | jsesc "~3.0.2" 1705 | 1706 | require-directory@^2.1.1: 1707 | version "2.1.1" 1708 | resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" 1709 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 1710 | 1711 | resolve@^1.14.2: 1712 | version "1.22.10" 1713 | resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz" 1714 | integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== 1715 | dependencies: 1716 | is-core-module "^2.16.0" 1717 | path-parse "^1.0.7" 1718 | supports-preserve-symlinks-flag "^1.0.0" 1719 | 1720 | restore-cursor@^3.1.0: 1721 | version "3.1.0" 1722 | resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" 1723 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 1724 | dependencies: 1725 | onetime "^5.1.0" 1726 | signal-exit "^3.0.2" 1727 | 1728 | run-async@^2.4.0: 1729 | version "2.4.1" 1730 | resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" 1731 | integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== 1732 | 1733 | rxjs@^7.5.5: 1734 | version "7.8.2" 1735 | resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz" 1736 | integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== 1737 | dependencies: 1738 | tslib "^2.1.0" 1739 | 1740 | safe-buffer@~5.2.0: 1741 | version "5.2.1" 1742 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" 1743 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1744 | 1745 | "safer-buffer@>= 2.1.2 < 3": 1746 | version "2.1.2" 1747 | resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" 1748 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1749 | 1750 | semver@^5.6.0: 1751 | version "5.7.2" 1752 | resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" 1753 | integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== 1754 | 1755 | semver@^6.3.1: 1756 | version "6.3.1" 1757 | resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" 1758 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== 1759 | 1760 | semver@^7.5.3: 1761 | version "7.7.1" 1762 | resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz" 1763 | integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== 1764 | 1765 | signal-exit@^3.0.2: 1766 | version "3.0.7" 1767 | resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" 1768 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 1769 | 1770 | simple-update-notifier@^2.0.0: 1771 | version "2.0.0" 1772 | resolved "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz" 1773 | integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== 1774 | dependencies: 1775 | semver "^7.5.3" 1776 | 1777 | slash@^2.0.0: 1778 | version "2.0.0" 1779 | resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" 1780 | integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== 1781 | 1782 | string_decoder@^1.1.1: 1783 | version "1.3.0" 1784 | resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" 1785 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1786 | dependencies: 1787 | safe-buffer "~5.2.0" 1788 | 1789 | string-width@^4.0.0: 1790 | version "4.2.3" 1791 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" 1792 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1793 | dependencies: 1794 | emoji-regex "^8.0.0" 1795 | is-fullwidth-code-point "^3.0.0" 1796 | strip-ansi "^6.0.1" 1797 | 1798 | string-width@^4.1.0: 1799 | version "4.2.3" 1800 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" 1801 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1802 | dependencies: 1803 | emoji-regex "^8.0.0" 1804 | is-fullwidth-code-point "^3.0.0" 1805 | strip-ansi "^6.0.1" 1806 | 1807 | string-width@^4.2.0: 1808 | version "4.2.3" 1809 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" 1810 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1811 | dependencies: 1812 | emoji-regex "^8.0.0" 1813 | is-fullwidth-code-point "^3.0.0" 1814 | strip-ansi "^6.0.1" 1815 | 1816 | string-width@^4.2.3: 1817 | version "4.2.3" 1818 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" 1819 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1820 | dependencies: 1821 | emoji-regex "^8.0.0" 1822 | is-fullwidth-code-point "^3.0.0" 1823 | strip-ansi "^6.0.1" 1824 | 1825 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1826 | version "6.0.1" 1827 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" 1828 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1829 | dependencies: 1830 | ansi-regex "^5.0.1" 1831 | 1832 | supports-color@^5.5.0: 1833 | version "5.5.0" 1834 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" 1835 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1836 | dependencies: 1837 | has-flag "^3.0.0" 1838 | 1839 | supports-color@^7.1.0: 1840 | version "7.2.0" 1841 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" 1842 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1843 | dependencies: 1844 | has-flag "^4.0.0" 1845 | 1846 | supports-preserve-symlinks-flag@^1.0.0: 1847 | version "1.0.0" 1848 | resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" 1849 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1850 | 1851 | term-size@^2.1.0: 1852 | version "2.2.1" 1853 | resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz" 1854 | integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== 1855 | 1856 | through@^2.3.6: 1857 | version "2.3.8" 1858 | resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" 1859 | integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== 1860 | 1861 | tmp@^0.0.33: 1862 | version "0.0.33" 1863 | resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" 1864 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 1865 | dependencies: 1866 | os-tmpdir "~1.0.2" 1867 | 1868 | to-regex-range@^5.0.1: 1869 | version "5.0.1" 1870 | resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" 1871 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1872 | dependencies: 1873 | is-number "^7.0.0" 1874 | 1875 | touch@^3.1.0: 1876 | version "3.1.1" 1877 | resolved "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz" 1878 | integrity sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA== 1879 | 1880 | tslib@^2.1.0: 1881 | version "2.8.1" 1882 | resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" 1883 | integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== 1884 | 1885 | type-fest@^0.21.3: 1886 | version "0.21.3" 1887 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" 1888 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== 1889 | 1890 | type-fest@^0.8.1: 1891 | version "0.8.1" 1892 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" 1893 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1894 | 1895 | undefsafe@^2.0.5: 1896 | version "2.0.5" 1897 | resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz" 1898 | integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== 1899 | 1900 | unicode-canonical-property-names-ecmascript@^2.0.0: 1901 | version "2.0.1" 1902 | resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz" 1903 | integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg== 1904 | 1905 | unicode-match-property-ecmascript@^2.0.0: 1906 | version "2.0.0" 1907 | resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" 1908 | integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== 1909 | dependencies: 1910 | unicode-canonical-property-names-ecmascript "^2.0.0" 1911 | unicode-property-aliases-ecmascript "^2.0.0" 1912 | 1913 | unicode-match-property-value-ecmascript@^2.1.0: 1914 | version "2.2.0" 1915 | resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz" 1916 | integrity sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg== 1917 | 1918 | unicode-property-aliases-ecmascript@^2.0.0: 1919 | version "2.1.0" 1920 | resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" 1921 | integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== 1922 | 1923 | update-browserslist-db@^1.1.1: 1924 | version "1.1.3" 1925 | resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz" 1926 | integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== 1927 | dependencies: 1928 | escalade "^3.2.0" 1929 | picocolors "^1.1.1" 1930 | 1931 | util-deprecate@^1.0.1: 1932 | version "1.0.2" 1933 | resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 1934 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1935 | 1936 | wcwidth@^1.0.1: 1937 | version "1.0.1" 1938 | resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" 1939 | integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== 1940 | dependencies: 1941 | defaults "^1.0.3" 1942 | 1943 | widest-line@^3.1.0: 1944 | version "3.1.0" 1945 | resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" 1946 | integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== 1947 | dependencies: 1948 | string-width "^4.0.0" 1949 | 1950 | wrap-ansi@^6.0.1: 1951 | version "6.2.0" 1952 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" 1953 | integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== 1954 | dependencies: 1955 | ansi-styles "^4.0.0" 1956 | string-width "^4.1.0" 1957 | strip-ansi "^6.0.0" 1958 | 1959 | wrap-ansi@^7.0.0: 1960 | version "7.0.0" 1961 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" 1962 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1963 | dependencies: 1964 | ansi-styles "^4.0.0" 1965 | string-width "^4.1.0" 1966 | strip-ansi "^6.0.0" 1967 | 1968 | wrappy@1: 1969 | version "1.0.2" 1970 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 1971 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1972 | 1973 | y18n@^5.0.5: 1974 | version "5.0.8" 1975 | resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" 1976 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1977 | 1978 | yallist@^3.0.2: 1979 | version "3.1.1" 1980 | resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" 1981 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 1982 | 1983 | yargs-parser@^21.1.1: 1984 | version "21.1.1" 1985 | resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" 1986 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 1987 | 1988 | yargs@^17.7.2: 1989 | version "17.7.2" 1990 | resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" 1991 | integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== 1992 | dependencies: 1993 | cliui "^8.0.1" 1994 | escalade "^3.1.1" 1995 | get-caller-file "^2.0.5" 1996 | require-directory "^2.1.1" 1997 | string-width "^4.2.3" 1998 | y18n "^5.0.5" 1999 | yargs-parser "^21.1.1" 2000 | --------------------------------------------------------------------------------