├── .env.example ├── .gitignore ├── Dockerfile ├── LICENSE ├── README.md ├── config.ts ├── deploy_gcloud.sh ├── example_fly_io.toml ├── index.ts ├── nodemon.json ├── package.json ├── routes └── messages.ts ├── server.ts ├── src ├── chatHistory.ts └── gpt3.ts ├── tsconfig.json ├── types └── request.ts └── yarn.lock /.env.example: -------------------------------------------------------------------------------- 1 | TWILIO_ACCOUNT_SID= 2 | TWILIO_AUTH_TOKEN= 3 | TWILIO_PHONE_NUMBER= 4 | OPENAI_API_KEY= 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # Snowpack dependency directory (https://snowpack.dev/) 45 | web_modules/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | .env.prod 75 | 76 | # parcel-bundler cache (https://parceljs.org/) 77 | .cache 78 | .parcel-cache 79 | 80 | # Next.js build output 81 | .next 82 | out 83 | 84 | # Nuxt.js build / generate output 85 | .nuxt 86 | dist 87 | 88 | # Gatsby files 89 | .cache/ 90 | # Comment in the public line in if your project uses Gatsby and not Next.js 91 | # https://nextjs.org/blog/next-9-1#public-directory-support 92 | # public 93 | 94 | # vuepress build output 95 | .vuepress/dist 96 | 97 | # Serverless directories 98 | .serverless/ 99 | 100 | # FuseBox cache 101 | .fusebox/ 102 | 103 | # DynamoDB Local files 104 | .dynamodb/ 105 | 106 | # TernJS port file 107 | .tern-port 108 | 109 | # Stores VSCode versions used for testing VSCode extensions 110 | .vscode-test 111 | 112 | # yarn v2 113 | .yarn/cache 114 | .yarn/unplugged 115 | .yarn/build-state.yml 116 | .yarn/install-state.gz 117 | .pnp.* 118 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # https://hub.docker.com/_/node 2 | FROM node:18-slim 3 | 4 | # Create and change to the app directory. 5 | WORKDIR /usr/src/app 6 | 7 | # Copy application dependency manifests to the container image. 8 | # A wildcard is used to ensure copying both package.json AND package-lock.json (when available). 9 | # Copying this first prevents re-running npm install on every code change. 10 | COPY package*.json ./ 11 | 12 | # Install production dependencies. 13 | # If you add a package-lock.json, speed your build by switching to 'npm ci'. 14 | # RUN npm ci --only=production 15 | RUN npm install 16 | 17 | # Copy local code to the container image. 18 | COPY . ./ 19 | 20 | # Build project 21 | RUN npm run gcp-build 22 | 23 | EXPOSE 3000 24 | 25 | # Run the web service on container startup. 26 | CMD [ "npm", "start" ] -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) 2021 Phil Nash 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 19 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE 20 | OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GPT3 SMS Bot Starter Kit 2 | 3 | GPT3 SMS Bot Starter Kit using Twilio. Based on this [tutorial](https://www.twilio.com/blog/sms-stocks-bot-twilio-typescript). 4 | 5 | ## Running this project 6 | 7 | ### Things you will need 8 | 9 | * [Node.js](https://nodejs.org/en/) installed on your machine 10 | * A Twilio account (if you don't have one yet, [sign up for a free Twilio account here and receive $10 credit when you upgrade](https://twil.io/philnash)) 11 | * A Twilio phone number that can receive SMS messages 12 | * [ngrok](https://ngrok.com/) so that you can [respond to webhooks in your local development environment](https://www.twilio.com/blog/2015/09/6-awesome-reasons-to-use-ngrok-when-testing-webhooks.html) 13 | * (Optional) A [Promptable](https://promptable.ai) account for creating / managing prompts. 14 | * (Optional) A Fly.io account for deploying the app 15 | 16 | 17 | ### Create a Twilio Account / Phone Number 18 | 19 | Based on this [tutorial](https://www.twilio.com/blog/sms-stocks-bot-twilio-typescript). After your account is created, use this command to create a phone number that can receive SMS messages: 20 | 21 | ``` 22 | twilio phone-numbers:update PHONE_NUMBER --sms-url https://RANDOM_STRING.ngrok.io/messages 23 | ``` 24 | 25 | You'll need the Twilio CLI installed. You'll need to "upgrade" to paid if you want to remove the Twilio branding from the SMS replies. 26 | 27 | ### Dependencies 28 | 29 | Install the dependencies: 30 | 31 | ```bash 32 | npm install 33 | ``` 34 | 35 | ### Environment Variables 36 | 37 | Copy the `.env.example` file to `.env`: 38 | 39 | ```bash 40 | cp .env.example .env 41 | ``` 42 | 43 | Fill in your TWILIO and OPENAI Keys, and your personal PHONE_NUMBER. 44 | 45 | ### Compile the TypeScript to JavaScript 46 | 47 | Compile the project: 48 | 49 | ```bash 50 | npm run build 51 | ``` 52 | 53 | Note that this runs the TypeScript compiler, `tsc`, you could also run `npx tsc` to get the same output. 54 | 55 | The TypeScript project will be compiled into the `dist` directory. You can also continuously compile the project as it changes with: 56 | 57 | ```bash 58 | npm run watch 59 | ``` 60 | 61 | ### Run the project 62 | 63 | Start the web server with: 64 | 65 | ```bash 66 | npm start 67 | ``` 68 | 69 | ### Expose the local server with ngrok 70 | 71 | To respond to an incoming webhook you will need a publicly available URL. [ngrok](https://ngrok.com) is a tool that can tunnel through from a public URL to your machine. Once you've [downloaded and installed ngrok](https://ngrok.com/download) you can run it like so: 72 | 73 | ```bash 74 | ngrok http 3000 75 | ``` 76 | 77 | The ngrok terminal will show you a URL, like `https://RANDOM_STRING.ngrok.io`. 78 | 79 | ### Connect your phone number to your app 80 | 81 | Using the ngrok URL from the last part, you can set up your Twilio phone number with your application. [Edit your phone number](https://www.twilio.com/console/phone-numbers/incoming) and in the Messaging section, next to when "A message comes in" enter your ngrok URL with the path `/messages`. 82 | 83 | ``` 84 | https://RANDOM_STRING.ngrok.io/messages 85 | ``` 86 | 87 | Save the phone number and you are ready. Send your number a message and receive a reply. Type "reset" to reset the chat thread history and bdeing again. 88 | 89 | ## Deploy with FLy.io 90 | 91 | ``` 92 | fly launch (if it's the first time) 93 | # update fly.toml internal port to 3000 94 | fly deploy 95 | # Set your secrets from .env 96 | fly secrets set --app gpt3-chat TWILIO_ACCOUNT_SID= TWILIO_AUTH_TOKEN= TWILIO_PHONE_NUMBER= OPENAI_API_KEY= 97 | ``` 98 | 99 | ## GPT3 Example Integration 100 | 101 | ```ts 102 | const { Configuration, OpenAIApi } = require("openai"); 103 | 104 | const configuration = new Configuration({ 105 | apiKey: process.env.OPENAI_API_KEY, 106 | }); 107 | const openai = new OpenAIApi(configuration); 108 | 109 | const response = await openai.createCompletion({ 110 | model: "text-davinci-003", 111 | prompt: "Please reply to the chat below:\n", 112 | temperature: 0.7, 113 | max_tokens: 256, 114 | top_p: 1, 115 | frequency_penalty: 0, 116 | presence_penalty: 0, 117 | }); 118 | ``` 119 | 120 | ## Promptable Integration 121 | To get started using Promptable to create and fetch your prompts, go to https://promptable.ai! 122 | 123 | Then, create and deploy a prompt and fetch it like this 124 | ``` 125 | const { data } = await axios.get(`https://promptable.ai/api/prompt//deployment/active`); 126 | const { text, configs } = data // get your prompt text and configs 127 | //... now use it in the chat bot! 128 | ``` 129 | 130 | ## Other 131 | 132 | Get sms messages on your mac. 133 | https://support.apple.com/guide/messages/get-sms-texts-from-iphone-on-your-mac-icht8a28bb9a/mac 134 | 135 | ## TODOs/ Feature Requests 136 | 137 | TODO: Add Voice Chats: 138 | - https://www.twilio.com/docs/voice/twiml/say/text-speech 139 | - https://www.twilio.com/blog/programmable-voice-javascript-quickstart-demo-node 140 | -------------------------------------------------------------------------------- /config.ts: -------------------------------------------------------------------------------- 1 | export const port = process.env.PORT || 3000; 2 | export const openaiApiKey = process.env.OPENAI_API_KEY; 3 | 4 | -------------------------------------------------------------------------------- /deploy_gcloud.sh: -------------------------------------------------------------------------------- 1 | # This file can be used to deploy to gcloud run 2 | # However, we recommend Fly.io as it is much easier to use 3 | # Instructions in README for Fly.io 4 | 5 | echo "!!!DEPLOYING!!!" 6 | 7 | echo "TWILIO_ACCOUNT_SID is set to: $TWILIO_ACCOUNT_SID" 8 | echo "TWILIO_AUTH_TOKEN is set to: $TWILIO_AUTH_TOKEN" 9 | echo "TWILIO_PHONE_NUMBER is set to: $TWILIO_PHONE_NUMBER" 10 | echo "OPENAI_API_KEY is set to: $OPENAI_API_KEY" 11 | 12 | gcloud run deploy gpt \ 13 | --source . \ 14 | --set-env-vars="TWILIO_ACCOUNT_SID=$TWILIO_ACCOUNT_SID" \ 15 | --set-env-vars="TWILIO_AUTH_TOKEN=$TWILIO_AUTH_TOKEN" \ 16 | --set-env-vars="TWILIO_PHONE_NUMBER=$TWILIO_PHONE_NUMBER" \ 17 | --set-env-vars="OPENAI_API_KEY=$OPENAI_API_KEY" \ 18 | --allow-unauthenticated -------------------------------------------------------------------------------- /example_fly_io.toml: -------------------------------------------------------------------------------- 1 | app = "twilio-gpt-sms-chat" 2 | kill_signal = "SIGINT" 3 | kill_timeout = 5 4 | processes = [] 5 | 6 | [env] 7 | 8 | [experimental] 9 | allowed_public_ports = [] 10 | auto_rollback = true 11 | 12 | [[services]] 13 | http_checks = [] 14 | internal_port = 3000 15 | processes = ["app"] 16 | protocol = "tcp" 17 | script_checks = [] 18 | [services.concurrency] 19 | hard_limit = 25 20 | soft_limit = 20 21 | type = "connections" 22 | 23 | [[services.ports]] 24 | force_https = true 25 | handlers = ["http"] 26 | port = 80 27 | 28 | [[services.ports]] 29 | handlers = ["tls", "http"] 30 | port = 443 31 | 32 | [[services.tcp_checks]] 33 | grace_period = "1s" 34 | interval = "15s" 35 | restart_limit = 0 36 | timeout = "2s" 37 | -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | import app from "./server"; 2 | import { port } from "./config"; 3 | 4 | app.listen(port, () => { 5 | console.log(`Server listening on http://localhost:${port}`); 6 | }); 7 | -------------------------------------------------------------------------------- /nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "watch": [ 3 | "**", 4 | "src", 5 | ".env" 6 | ], 7 | "ext": ".ts,.json,.js", 8 | "ignore": [ 9 | "node_modules", 10 | "dist", 11 | "src/**/*.spec.ts", 12 | "src/**/*.test.ts", 13 | "src/**/*.spec.js", 14 | "src/**/*.test.js" 15 | ], 16 | "exec": "ts-node -r dotenv/config ./index.ts" 17 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gpt3-chat", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "dist/index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "build": "tsc", 9 | "watch": "tsc --watch", 10 | "start": "node --require dotenv/config .", 11 | "dev": "nodemon", 12 | "gcp-build": "npm run build", 13 | "deploy": "export $(cat .env | xargs) && ./deploy_gcloud.sh" 14 | }, 15 | "keywords": [], 16 | "author": "Phil Nash (https://philna.sh)", 17 | "license": "MIT", 18 | "dependencies": { 19 | "express": "^4.17.1", 20 | "got": "^11.8.6", 21 | "gpt3-tokenizer": "^1.1.4", 22 | "openai": "^3.1.0", 23 | "promptable": "^0.0.5", 24 | "ts-node": "^10.9.1", 25 | "twilio": "^3.57.0" 26 | }, 27 | "devDependencies": { 28 | "@types/express": "^4.17.11", 29 | "@types/node": "^14.14.31", 30 | "dotenv": "^8.2.0", 31 | "nodemon": "^2.0.7", 32 | "typescript": "^4.2.2" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /routes/messages.ts: -------------------------------------------------------------------------------- 1 | import { twiml } from "twilio"; 2 | import { urlencoded, Router, Response } from "express"; 3 | import { MessagingRequest } from "../types/request"; 4 | import { getReply } from "../src/gpt3"; 5 | 6 | const { MessagingResponse } = twiml; 7 | const router = Router(); 8 | router.use(urlencoded({ extended: false })); 9 | 10 | router.post("/", async (req: MessagingRequest, res: Response) => { 11 | const userMessage = req.body.Body; 12 | const response = new MessagingResponse(); 13 | try { 14 | const reply = await getReply(userMessage, req.body.From); 15 | console.log("msg", req.body.From, req.body.To, req.body.Body) 16 | response.message(reply.text); 17 | } catch (error) { 18 | console.error(error); 19 | response.message(`Failed to reply for ${userMessage}.`); 20 | } 21 | res.contentType("application/xml"); 22 | res.send(response.toString()); 23 | }); 24 | 25 | export default router; 26 | -------------------------------------------------------------------------------- /server.ts: -------------------------------------------------------------------------------- 1 | import express from "express"; 2 | import messageRouter from "./routes/messages"; 3 | 4 | const app = express(); 5 | 6 | app.use("/messages", messageRouter); 7 | app.get('/', (req, res) => { 8 | res.send('200 OK!'); 9 | }); 10 | 11 | export default app; 12 | -------------------------------------------------------------------------------- /src/chatHistory.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Memory for storing chat history by phone number 3 | 4 | promptId is a Promptable.ai thing. If you're using your own local prompt, 5 | you can just hard-code the promptId (which is used to identify the prompt) 6 | if you want to reset/switch between prompts in the chat using the 7 | "reset " command. 8 | 9 | */ 10 | 11 | export type Turn = { 12 | speaker: string; 13 | text: string; 14 | } 15 | 16 | 17 | export interface ChatHistory { 18 | agentName: string; 19 | promptId: string; 20 | phone: string; 21 | turns: Turn[]; 22 | } 23 | 24 | export class ChatHistoryStore { 25 | private history: { [chatId: string]: ChatHistory } = {}; 26 | 27 | create(phone: string, agentName: string, promptId: string): ChatHistory { 28 | this.history[phone] = { 29 | agentName: agentName, 30 | promptId: promptId, 31 | phone: phone, 32 | turns: [] 33 | } 34 | return this.history[phone]; 35 | } 36 | 37 | add(phone: string, message: string, speaker: string) { 38 | const turn = { 39 | speaker: speaker, 40 | text: message 41 | } 42 | this.history[phone].turns.push(turn); 43 | } 44 | 45 | get(phone: string): ChatHistory { 46 | return this.history[phone]; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/gpt3.ts: -------------------------------------------------------------------------------- 1 | /* 2 | This is a sample GPT-3 bot that uses the Promptable API to get a prompt and config 3 | and then uses the OpenAI API to generate a response. 4 | 5 | If you don't want to use Promptable, you can just hard-code your prompt and config 6 | somewhere in this file and replace the call to the Promptable API with a local call. 7 | */ 8 | 9 | const { Configuration, OpenAIApi } = require("openai"); 10 | import GPT3Tokenizer from "gpt3-tokenizer"; 11 | import axios from "axios"; 12 | import { ChatHistory, ChatHistoryStore, Turn } from "./chatHistory"; 13 | import { PromptableApi } from "promptable"; 14 | 15 | // AI ASSISTANT BOT: 16 | const DEFAULT_AGENT_NAME = "Assistant"; 17 | const DEFAULT_PROMPT_ID = "clbilb0kh0008h7eg8jv8owdu"; 18 | 19 | const tokenizer = new GPT3Tokenizer({ type: "gpt3" }); 20 | 21 | function countBPETokens(text: string): number { 22 | const encoded = tokenizer.encode(text); 23 | return encoded.bpe.length; 24 | } 25 | 26 | const store = new ChatHistoryStore(); 27 | 28 | const configuration = new Configuration({ 29 | apiKey: process.env.OPENAI_API_KEY, 30 | }); 31 | 32 | const openai = new OpenAIApi(configuration); 33 | 34 | type OpenAIResponse = { 35 | text: string; 36 | }; 37 | 38 | function leftTruncateTranscript(text: string, maxTokens: number): string { 39 | const encoded = tokenizer.encode(text); 40 | const numTokens = encoded.bpe.length; 41 | const truncated = encoded.bpe.slice(numTokens - maxTokens); 42 | const decoded = tokenizer.decode(truncated); 43 | return decoded; 44 | } 45 | 46 | function injectValuesIntoPrompt( 47 | template: string, 48 | values: { [key: string]: any } 49 | ): string { 50 | let result = template; 51 | for (const key in values) { 52 | result = result.replace(new RegExp(`{{${key}}}`, "g"), values[key]); 53 | } 54 | return result; 55 | } 56 | 57 | /* 58 | * If the message is "reset" or "reset ", then reset the chat history 59 | * and return the new chat history. Otherwise, return null. 60 | */ 61 | function handlePossibleReset( 62 | phone: string, 63 | message: string 64 | ): ChatHistory | null { 65 | if (message.trim().toLowerCase() === "reset") { 66 | const promptId = DEFAULT_PROMPT_ID; 67 | const agentName = DEFAULT_AGENT_NAME; 68 | store.create(phone, agentName, promptId); 69 | return store.get(phone); 70 | } 71 | const pattern = /reset (\w+) (\w+)/; 72 | const match = message.toLowerCase().match(pattern); 73 | if (match) { 74 | const promptId = match[1]; 75 | const agentName = match[2]; 76 | store.create(phone, agentName, promptId); 77 | return store.get(phone); 78 | } 79 | return null; 80 | } 81 | 82 | /* 83 | Get or create a chat history for a phone number 84 | */ 85 | function getOrCreateChatHistory(phone: string, message: string) { 86 | let chatHistory = handlePossibleReset(phone, message); 87 | if (chatHistory == null) { 88 | chatHistory = store.get(phone); 89 | if (chatHistory == null) { 90 | chatHistory = store.create(phone, DEFAULT_AGENT_NAME, DEFAULT_PROMPT_ID); 91 | } 92 | } else { 93 | console.log("RESETTING CHAT HISTORY!"); 94 | console.log(chatHistory); 95 | } 96 | } 97 | 98 | function formatChatHistoryTurns(turns: Turn[]) { 99 | return turns.map((turn) => `${turn.speaker}: ${turn.text}`).join("\n"); 100 | } 101 | 102 | function formatPromptText(chatHistory: ChatHistory, promptTemplate: string) { 103 | console.log("PromptTemplate", promptTemplate); 104 | const numTokens = countBPETokens(promptTemplate); 105 | let turnsText = formatChatHistoryTurns(chatHistory.turns); 106 | console.log("turnsText", turnsText); 107 | console.log("Pre Truncation", turnsText); 108 | turnsText = leftTruncateTranscript(turnsText, 4000 - numTokens); 109 | console.log("Post Truncation", turnsText); 110 | const prompt = injectValuesIntoPrompt(promptTemplate, { input: turnsText }); 111 | console.log("Prompt", prompt); 112 | return prompt; 113 | } 114 | 115 | export const getReply = async ( 116 | message: string, 117 | phoneNumber: string 118 | ): Promise => { 119 | console.log("Number", phoneNumber, "Message", message.trim()); 120 | // strip whitespace! 121 | message = message.trim(); 122 | getOrCreateChatHistory(phoneNumber, message); 123 | store.add(phoneNumber, message, "User"); 124 | const chatHistory = store.get(phoneNumber); 125 | console.log("Chat History", chatHistory); 126 | 127 | // Get the prompt and config from the Promptable API 128 | // (Optionally) replace this call with a local hard-coded prompt and config 129 | const data = await PromptableApi.getActiveDeployment({ 130 | promptId: chatHistory.promptId, 131 | }); 132 | 133 | console.log(data); 134 | 135 | const prompt = formatPromptText(chatHistory, data.text); 136 | console.log("PROMPT", prompt); 137 | const params = { 138 | prompt, 139 | model: data.config.model, 140 | max_tokens: data.config.max_tokens, 141 | temperature: data.config.temperature, 142 | stop: data.config.stop, 143 | }; 144 | console.log(params); 145 | const response = await openai.createCompletion(params); 146 | console.log(response.data); 147 | const agentText = response.data.choices[0].text.trim(); 148 | store.add(phoneNumber, agentText, chatHistory.agentName); 149 | console.log(`${chatHistory.agentName}: ${agentText}`); 150 | return { 151 | text: agentText, 152 | } as OpenAIResponse; 153 | }; 154 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 | 5 | /* Basic Options */ 6 | // "incremental": true, /* Enable incremental compilation */ 7 | "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ 8 | "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ 9 | // "lib": [], /* Specify library files to be included in the compilation. */ 10 | // "allowJs": true, /* Allow javascript files to be compiled. */ 11 | // "checkJs": true, /* Report errors in .js files. */ 12 | // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ 13 | // "declaration": true, /* Generates corresponding '.d.ts' file. */ 14 | // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ 15 | // "sourceMap": true, /* Generates corresponding '.map' file. */ 16 | // "outFile": "./", /* Concatenate and emit output to single file. */ 17 | "outDir": "./dist", /* Redirect output structure to the directory. */ 18 | // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ 19 | // "composite": true, /* Enable project compilation */ 20 | // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ 21 | // "removeComments": true, /* Do not emit comments to output. */ 22 | // "noEmit": true, /* Do not emit outputs. */ 23 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */ 24 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ 25 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ 26 | 27 | /* Strict Type-Checking Options */ 28 | "strict": true, /* Enable all strict type-checking options. */ 29 | // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ 30 | // "strictNullChecks": true, /* Enable strict null checks. */ 31 | // "strictFunctionTypes": true, /* Enable strict checking of function types. */ 32 | // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ 33 | // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ 34 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ 35 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ 36 | 37 | /* Additional Checks */ 38 | // "noUnusedLocals": true, /* Report errors on unused locals. */ 39 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 40 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 41 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 42 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ 43 | // "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */ 44 | 45 | /* Module Resolution Options */ 46 | // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ 47 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ 48 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ 49 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ 50 | // "typeRoots": [], /* List of folders to include type definitions from. */ 51 | // "types": [], /* Type declaration files to be included in compilation. */ 52 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ 53 | "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ 54 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ 55 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 56 | 57 | /* Source Map Options */ 58 | // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ 59 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 60 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ 61 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ 62 | 63 | /* Experimental Options */ 64 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ 65 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ 66 | 67 | /* Advanced Options */ 68 | "skipLibCheck": true, /* Skip type checking of declaration files. */ 69 | "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /types/request.ts: -------------------------------------------------------------------------------- 1 | import { ParamsDictionary, Query } from "express-serve-static-core"; 2 | import { Request } from "express"; 3 | 4 | type MessagingWebhookBody = { 5 | MessageSid: string; 6 | Body: string; 7 | From: string; 8 | To: string; 9 | }; 10 | 11 | export type MessagingRequest = Request< 12 | ParamsDictionary, 13 | any, 14 | MessagingWebhookBody, 15 | Query 16 | >; 17 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@cspotcode/source-map-support@^0.8.0": 6 | version "0.8.1" 7 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" 8 | integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== 9 | dependencies: 10 | "@jridgewell/trace-mapping" "0.3.9" 11 | 12 | "@jridgewell/resolve-uri@^3.0.3": 13 | version "3.1.0" 14 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 15 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 16 | 17 | "@jridgewell/sourcemap-codec@^1.4.10": 18 | version "1.4.14" 19 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" 20 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 21 | 22 | "@jridgewell/trace-mapping@0.3.9": 23 | version "0.3.9" 24 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" 25 | integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== 26 | dependencies: 27 | "@jridgewell/resolve-uri" "^3.0.3" 28 | "@jridgewell/sourcemap-codec" "^1.4.10" 29 | 30 | "@microsoft/fetch-event-source@^2.0.1": 31 | version "2.0.1" 32 | resolved "https://registry.yarnpkg.com/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz#9ceecc94b49fbaa15666e38ae8587f64acce007d" 33 | integrity sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA== 34 | 35 | "@sindresorhus/is@^4.0.0": 36 | version "4.6.0" 37 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" 38 | integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== 39 | 40 | "@szmarczak/http-timer@^4.0.5": 41 | version "4.0.6" 42 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" 43 | integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== 44 | dependencies: 45 | defer-to-connect "^2.0.0" 46 | 47 | "@tsconfig/node10@^1.0.7": 48 | version "1.0.9" 49 | resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" 50 | integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== 51 | 52 | "@tsconfig/node12@^1.0.7": 53 | version "1.0.11" 54 | resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" 55 | integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== 56 | 57 | "@tsconfig/node14@^1.0.0": 58 | version "1.0.3" 59 | resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" 60 | integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== 61 | 62 | "@tsconfig/node16@^1.0.2": 63 | version "1.0.3" 64 | resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" 65 | integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== 66 | 67 | "@types/body-parser@*": 68 | version "1.19.2" 69 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" 70 | integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== 71 | dependencies: 72 | "@types/connect" "*" 73 | "@types/node" "*" 74 | 75 | "@types/cacheable-request@^6.0.1": 76 | version "6.0.3" 77 | resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" 78 | integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== 79 | dependencies: 80 | "@types/http-cache-semantics" "*" 81 | "@types/keyv" "^3.1.4" 82 | "@types/node" "*" 83 | "@types/responselike" "^1.0.0" 84 | 85 | "@types/connect@*": 86 | version "3.4.35" 87 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" 88 | integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== 89 | dependencies: 90 | "@types/node" "*" 91 | 92 | "@types/express-serve-static-core@^4.17.31": 93 | version "4.17.31" 94 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f" 95 | integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q== 96 | dependencies: 97 | "@types/node" "*" 98 | "@types/qs" "*" 99 | "@types/range-parser" "*" 100 | 101 | "@types/express@^4.17.11": 102 | version "4.17.15" 103 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.15.tgz#9290e983ec8b054b65a5abccb610411953d417ff" 104 | integrity sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ== 105 | dependencies: 106 | "@types/body-parser" "*" 107 | "@types/express-serve-static-core" "^4.17.31" 108 | "@types/qs" "*" 109 | "@types/serve-static" "*" 110 | 111 | "@types/http-cache-semantics@*": 112 | version "4.0.1" 113 | resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" 114 | integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== 115 | 116 | "@types/keyv@^3.1.4": 117 | version "3.1.4" 118 | resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" 119 | integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== 120 | dependencies: 121 | "@types/node" "*" 122 | 123 | "@types/mime@*": 124 | version "3.0.1" 125 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" 126 | integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== 127 | 128 | "@types/node@*": 129 | version "18.11.18" 130 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" 131 | integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== 132 | 133 | "@types/node@^14.14.31": 134 | version "14.18.36" 135 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.36.tgz#c414052cb9d43fab67d679d5f3c641be911f5835" 136 | integrity sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ== 137 | 138 | "@types/qs@*": 139 | version "6.9.7" 140 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" 141 | integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== 142 | 143 | "@types/range-parser@*": 144 | version "1.2.4" 145 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" 146 | integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== 147 | 148 | "@types/responselike@^1.0.0": 149 | version "1.0.0" 150 | resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" 151 | integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== 152 | dependencies: 153 | "@types/node" "*" 154 | 155 | "@types/serve-static@*": 156 | version "1.15.0" 157 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" 158 | integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== 159 | dependencies: 160 | "@types/mime" "*" 161 | "@types/node" "*" 162 | 163 | abbrev@1: 164 | version "1.1.1" 165 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 166 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 167 | 168 | accepts@~1.3.8: 169 | version "1.3.8" 170 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 171 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 172 | dependencies: 173 | mime-types "~2.1.34" 174 | negotiator "0.6.3" 175 | 176 | acorn-walk@^8.1.1: 177 | version "8.2.0" 178 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" 179 | integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== 180 | 181 | acorn@^8.4.1: 182 | version "8.8.1" 183 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" 184 | integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== 185 | 186 | agent-base@6: 187 | version "6.0.2" 188 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 189 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 190 | dependencies: 191 | debug "4" 192 | 193 | anymatch@~3.1.2: 194 | version "3.1.3" 195 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 196 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 197 | dependencies: 198 | normalize-path "^3.0.0" 199 | picomatch "^2.0.4" 200 | 201 | arg@^4.1.0: 202 | version "4.1.3" 203 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 204 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 205 | 206 | array-flatten@1.1.1: 207 | version "1.1.1" 208 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 209 | integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== 210 | 211 | array-keyed-map@^2.1.2: 212 | version "2.1.3" 213 | resolved "https://registry.yarnpkg.com/array-keyed-map/-/array-keyed-map-2.1.3.tgz#0d5c06ed58ccba2755a4f5bfb7a935a31f395b18" 214 | integrity sha512-JIUwuFakO+jHjxyp4YgSiKXSZeC0U+R1jR94bXWBcVlFRBycqXlb+kH9JHxBGcxnVuSqx5bnn0Qz9xtSeKOjiA== 215 | 216 | asap@^2.0.0: 217 | version "2.0.6" 218 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" 219 | integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== 220 | 221 | asynckit@^0.4.0: 222 | version "0.4.0" 223 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 224 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 225 | 226 | axios@^0.26.0, axios@^0.26.1: 227 | version "0.26.1" 228 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" 229 | integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== 230 | dependencies: 231 | follow-redirects "^1.14.8" 232 | 233 | axios@^1.2.1: 234 | version "1.2.1" 235 | resolved "https://registry.yarnpkg.com/axios/-/axios-1.2.1.tgz#44cf04a3c9f0c2252ebd85975361c026cb9f864a" 236 | integrity sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A== 237 | dependencies: 238 | follow-redirects "^1.15.0" 239 | form-data "^4.0.0" 240 | proxy-from-env "^1.1.0" 241 | 242 | balanced-match@^1.0.0: 243 | version "1.0.2" 244 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 245 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 246 | 247 | binary-extensions@^2.0.0: 248 | version "2.2.0" 249 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 250 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 251 | 252 | body-parser@1.20.1: 253 | version "1.20.1" 254 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" 255 | integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== 256 | dependencies: 257 | bytes "3.1.2" 258 | content-type "~1.0.4" 259 | debug "2.6.9" 260 | depd "2.0.0" 261 | destroy "1.2.0" 262 | http-errors "2.0.0" 263 | iconv-lite "0.4.24" 264 | on-finished "2.4.1" 265 | qs "6.11.0" 266 | raw-body "2.5.1" 267 | type-is "~1.6.18" 268 | unpipe "1.0.0" 269 | 270 | brace-expansion@^1.1.7: 271 | version "1.1.11" 272 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 273 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 274 | dependencies: 275 | balanced-match "^1.0.0" 276 | concat-map "0.0.1" 277 | 278 | braces@~3.0.2: 279 | version "3.0.2" 280 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 281 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 282 | dependencies: 283 | fill-range "^7.0.1" 284 | 285 | buffer-equal-constant-time@1.0.1: 286 | version "1.0.1" 287 | resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" 288 | integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== 289 | 290 | bytes@3.1.2: 291 | version "3.1.2" 292 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 293 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 294 | 295 | cacheable-lookup@^5.0.3: 296 | version "5.0.4" 297 | resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" 298 | integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== 299 | 300 | cacheable-request@^7.0.2: 301 | version "7.0.2" 302 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" 303 | integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== 304 | dependencies: 305 | clone-response "^1.0.2" 306 | get-stream "^5.1.0" 307 | http-cache-semantics "^4.0.0" 308 | keyv "^4.0.0" 309 | lowercase-keys "^2.0.0" 310 | normalize-url "^6.0.1" 311 | responselike "^2.0.0" 312 | 313 | call-bind@^1.0.0: 314 | version "1.0.2" 315 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 316 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 317 | dependencies: 318 | function-bind "^1.1.1" 319 | get-intrinsic "^1.0.2" 320 | 321 | chokidar@^3.5.2: 322 | version "3.5.3" 323 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 324 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 325 | dependencies: 326 | anymatch "~3.1.2" 327 | braces "~3.0.2" 328 | glob-parent "~5.1.2" 329 | is-binary-path "~2.1.0" 330 | is-glob "~4.0.1" 331 | normalize-path "~3.0.0" 332 | readdirp "~3.6.0" 333 | optionalDependencies: 334 | fsevents "~2.3.2" 335 | 336 | clone-response@^1.0.2: 337 | version "1.0.3" 338 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" 339 | integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== 340 | dependencies: 341 | mimic-response "^1.0.0" 342 | 343 | combined-stream@^1.0.8: 344 | version "1.0.8" 345 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 346 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 347 | dependencies: 348 | delayed-stream "~1.0.0" 349 | 350 | concat-map@0.0.1: 351 | version "0.0.1" 352 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 353 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 354 | 355 | content-disposition@0.5.4: 356 | version "0.5.4" 357 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" 358 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== 359 | dependencies: 360 | safe-buffer "5.2.1" 361 | 362 | content-type@~1.0.4: 363 | version "1.0.4" 364 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 365 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 366 | 367 | cookie-signature@1.0.6: 368 | version "1.0.6" 369 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 370 | integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== 371 | 372 | cookie@0.5.0: 373 | version "0.5.0" 374 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" 375 | integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== 376 | 377 | create-require@^1.1.0: 378 | version "1.1.1" 379 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 380 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 381 | 382 | dayjs@^1.8.29: 383 | version "1.11.7" 384 | resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" 385 | integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== 386 | 387 | debug@2.6.9: 388 | version "2.6.9" 389 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 390 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 391 | dependencies: 392 | ms "2.0.0" 393 | 394 | debug@4: 395 | version "4.3.4" 396 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 397 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 398 | dependencies: 399 | ms "2.1.2" 400 | 401 | debug@^3.2.7: 402 | version "3.2.7" 403 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 404 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 405 | dependencies: 406 | ms "^2.1.1" 407 | 408 | decompress-response@^6.0.0: 409 | version "6.0.0" 410 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" 411 | integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== 412 | dependencies: 413 | mimic-response "^3.1.0" 414 | 415 | defer-to-connect@^2.0.0: 416 | version "2.0.1" 417 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" 418 | integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== 419 | 420 | delayed-stream@~1.0.0: 421 | version "1.0.0" 422 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 423 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 424 | 425 | depd@2.0.0: 426 | version "2.0.0" 427 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 428 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 429 | 430 | destroy@1.2.0: 431 | version "1.2.0" 432 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 433 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 434 | 435 | diff@^4.0.1: 436 | version "4.0.2" 437 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 438 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 439 | 440 | dotenv@^8.2.0: 441 | version "8.6.0" 442 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" 443 | integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== 444 | 445 | ecdsa-sig-formatter@1.0.11: 446 | version "1.0.11" 447 | resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" 448 | integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== 449 | dependencies: 450 | safe-buffer "^5.0.1" 451 | 452 | ee-first@1.1.1: 453 | version "1.1.1" 454 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 455 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 456 | 457 | encodeurl@~1.0.2: 458 | version "1.0.2" 459 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 460 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 461 | 462 | end-of-stream@^1.1.0: 463 | version "1.4.4" 464 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 465 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 466 | dependencies: 467 | once "^1.4.0" 468 | 469 | escape-html@~1.0.3: 470 | version "1.0.3" 471 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 472 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 473 | 474 | etag@~1.8.1: 475 | version "1.8.1" 476 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 477 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== 478 | 479 | express@^4.17.1: 480 | version "4.18.2" 481 | resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" 482 | integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== 483 | dependencies: 484 | accepts "~1.3.8" 485 | array-flatten "1.1.1" 486 | body-parser "1.20.1" 487 | content-disposition "0.5.4" 488 | content-type "~1.0.4" 489 | cookie "0.5.0" 490 | cookie-signature "1.0.6" 491 | debug "2.6.9" 492 | depd "2.0.0" 493 | encodeurl "~1.0.2" 494 | escape-html "~1.0.3" 495 | etag "~1.8.1" 496 | finalhandler "1.2.0" 497 | fresh "0.5.2" 498 | http-errors "2.0.0" 499 | merge-descriptors "1.0.1" 500 | methods "~1.1.2" 501 | on-finished "2.4.1" 502 | parseurl "~1.3.3" 503 | path-to-regexp "0.1.7" 504 | proxy-addr "~2.0.7" 505 | qs "6.11.0" 506 | range-parser "~1.2.1" 507 | safe-buffer "5.2.1" 508 | send "0.18.0" 509 | serve-static "1.15.0" 510 | setprototypeof "1.2.0" 511 | statuses "2.0.1" 512 | type-is "~1.6.18" 513 | utils-merge "1.0.1" 514 | vary "~1.1.2" 515 | 516 | fill-range@^7.0.1: 517 | version "7.0.1" 518 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 519 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 520 | dependencies: 521 | to-regex-range "^5.0.1" 522 | 523 | finalhandler@1.2.0: 524 | version "1.2.0" 525 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" 526 | integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== 527 | dependencies: 528 | debug "2.6.9" 529 | encodeurl "~1.0.2" 530 | escape-html "~1.0.3" 531 | on-finished "2.4.1" 532 | parseurl "~1.3.3" 533 | statuses "2.0.1" 534 | unpipe "~1.0.0" 535 | 536 | follow-redirects@^1.14.8, follow-redirects@^1.15.0: 537 | version "1.15.2" 538 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" 539 | integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== 540 | 541 | form-data@^4.0.0: 542 | version "4.0.0" 543 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" 544 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== 545 | dependencies: 546 | asynckit "^0.4.0" 547 | combined-stream "^1.0.8" 548 | mime-types "^2.1.12" 549 | 550 | forwarded@0.2.0: 551 | version "0.2.0" 552 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" 553 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 554 | 555 | fresh@0.5.2: 556 | version "0.5.2" 557 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 558 | integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== 559 | 560 | fsevents@~2.3.2: 561 | version "2.3.2" 562 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 563 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 564 | 565 | function-bind@^1.1.1: 566 | version "1.1.1" 567 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 568 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 569 | 570 | get-intrinsic@^1.0.2: 571 | version "1.1.3" 572 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" 573 | integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== 574 | dependencies: 575 | function-bind "^1.1.1" 576 | has "^1.0.3" 577 | has-symbols "^1.0.3" 578 | 579 | get-stream@^5.1.0: 580 | version "5.2.0" 581 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 582 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 583 | dependencies: 584 | pump "^3.0.0" 585 | 586 | glob-parent@~5.1.2: 587 | version "5.1.2" 588 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 589 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 590 | dependencies: 591 | is-glob "^4.0.1" 592 | 593 | got@^11.8.6: 594 | version "11.8.6" 595 | resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" 596 | integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== 597 | dependencies: 598 | "@sindresorhus/is" "^4.0.0" 599 | "@szmarczak/http-timer" "^4.0.5" 600 | "@types/cacheable-request" "^6.0.1" 601 | "@types/responselike" "^1.0.0" 602 | cacheable-lookup "^5.0.3" 603 | cacheable-request "^7.0.2" 604 | decompress-response "^6.0.0" 605 | http2-wrapper "^1.0.0-beta.5.2" 606 | lowercase-keys "^2.0.0" 607 | p-cancelable "^2.0.0" 608 | responselike "^2.0.0" 609 | 610 | gpt3-tokenizer@^1.1.4: 611 | version "1.1.4" 612 | resolved "https://registry.yarnpkg.com/gpt3-tokenizer/-/gpt3-tokenizer-1.1.4.tgz#987e896c57fa59a1f58a88e3a74b5913425d6fe3" 613 | integrity sha512-qfkRgE9ZvJjx9vWD0/R3xdH35SCINykliIF0+OP9BObiqwGhJA8BWs3laHyhNA92OPCwlQLhCxQuWjYMeyqAUw== 614 | dependencies: 615 | array-keyed-map "^2.1.2" 616 | 617 | has-flag@^3.0.0: 618 | version "3.0.0" 619 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 620 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 621 | 622 | has-symbols@^1.0.3: 623 | version "1.0.3" 624 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 625 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 626 | 627 | has@^1.0.3: 628 | version "1.0.3" 629 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 630 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 631 | dependencies: 632 | function-bind "^1.1.1" 633 | 634 | http-cache-semantics@^4.0.0: 635 | version "4.1.0" 636 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 637 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== 638 | 639 | http-errors@2.0.0: 640 | version "2.0.0" 641 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 642 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 643 | dependencies: 644 | depd "2.0.0" 645 | inherits "2.0.4" 646 | setprototypeof "1.2.0" 647 | statuses "2.0.1" 648 | toidentifier "1.0.1" 649 | 650 | http2-wrapper@^1.0.0-beta.5.2: 651 | version "1.0.3" 652 | resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" 653 | integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== 654 | dependencies: 655 | quick-lru "^5.1.1" 656 | resolve-alpn "^1.0.0" 657 | 658 | https-proxy-agent@^5.0.0: 659 | version "5.0.1" 660 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" 661 | integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== 662 | dependencies: 663 | agent-base "6" 664 | debug "4" 665 | 666 | iconv-lite@0.4.24: 667 | version "0.4.24" 668 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 669 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 670 | dependencies: 671 | safer-buffer ">= 2.1.2 < 3" 672 | 673 | ignore-by-default@^1.0.1: 674 | version "1.0.1" 675 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 676 | integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== 677 | 678 | inherits@2.0.4: 679 | version "2.0.4" 680 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 681 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 682 | 683 | ipaddr.js@1.9.1: 684 | version "1.9.1" 685 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 686 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 687 | 688 | is-binary-path@~2.1.0: 689 | version "2.1.0" 690 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 691 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 692 | dependencies: 693 | binary-extensions "^2.0.0" 694 | 695 | is-extglob@^2.1.1: 696 | version "2.1.1" 697 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 698 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 699 | 700 | is-glob@^4.0.1, is-glob@~4.0.1: 701 | version "4.0.3" 702 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 703 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 704 | dependencies: 705 | is-extglob "^2.1.1" 706 | 707 | is-number@^7.0.0: 708 | version "7.0.0" 709 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 710 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 711 | 712 | json-buffer@3.0.1: 713 | version "3.0.1" 714 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" 715 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 716 | 717 | jsonwebtoken@^8.5.1: 718 | version "8.5.1" 719 | resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" 720 | integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== 721 | dependencies: 722 | jws "^3.2.2" 723 | lodash.includes "^4.3.0" 724 | lodash.isboolean "^3.0.3" 725 | lodash.isinteger "^4.0.4" 726 | lodash.isnumber "^3.0.3" 727 | lodash.isplainobject "^4.0.6" 728 | lodash.isstring "^4.0.1" 729 | lodash.once "^4.0.0" 730 | ms "^2.1.1" 731 | semver "^5.6.0" 732 | 733 | jwa@^1.4.1: 734 | version "1.4.1" 735 | resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" 736 | integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== 737 | dependencies: 738 | buffer-equal-constant-time "1.0.1" 739 | ecdsa-sig-formatter "1.0.11" 740 | safe-buffer "^5.0.1" 741 | 742 | jws@^3.2.2: 743 | version "3.2.2" 744 | resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" 745 | integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== 746 | dependencies: 747 | jwa "^1.4.1" 748 | safe-buffer "^5.0.1" 749 | 750 | keyv@^4.0.0: 751 | version "4.5.2" 752 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" 753 | integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== 754 | dependencies: 755 | json-buffer "3.0.1" 756 | 757 | lodash.includes@^4.3.0: 758 | version "4.3.0" 759 | resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" 760 | integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== 761 | 762 | lodash.isboolean@^3.0.3: 763 | version "3.0.3" 764 | resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" 765 | integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== 766 | 767 | lodash.isinteger@^4.0.4: 768 | version "4.0.4" 769 | resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" 770 | integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== 771 | 772 | lodash.isnumber@^3.0.3: 773 | version "3.0.3" 774 | resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" 775 | integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== 776 | 777 | lodash.isplainobject@^4.0.6: 778 | version "4.0.6" 779 | resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" 780 | integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== 781 | 782 | lodash.isstring@^4.0.1: 783 | version "4.0.1" 784 | resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" 785 | integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== 786 | 787 | lodash.once@^4.0.0: 788 | version "4.1.1" 789 | resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" 790 | integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== 791 | 792 | lodash@^4.17.21: 793 | version "4.17.21" 794 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 795 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 796 | 797 | lowercase-keys@^2.0.0: 798 | version "2.0.0" 799 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 800 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== 801 | 802 | make-error@^1.1.1: 803 | version "1.3.6" 804 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 805 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 806 | 807 | media-typer@0.3.0: 808 | version "0.3.0" 809 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 810 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== 811 | 812 | merge-descriptors@1.0.1: 813 | version "1.0.1" 814 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 815 | integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== 816 | 817 | methods@~1.1.2: 818 | version "1.1.2" 819 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 820 | integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== 821 | 822 | mime-db@1.52.0: 823 | version "1.52.0" 824 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 825 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 826 | 827 | mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: 828 | version "2.1.35" 829 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 830 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 831 | dependencies: 832 | mime-db "1.52.0" 833 | 834 | mime@1.6.0: 835 | version "1.6.0" 836 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 837 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 838 | 839 | mimic-response@^1.0.0: 840 | version "1.0.1" 841 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 842 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 843 | 844 | mimic-response@^3.1.0: 845 | version "3.1.0" 846 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" 847 | integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== 848 | 849 | minimatch@^3.1.2: 850 | version "3.1.2" 851 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 852 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 853 | dependencies: 854 | brace-expansion "^1.1.7" 855 | 856 | ms@2.0.0: 857 | version "2.0.0" 858 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 859 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 860 | 861 | ms@2.1.2: 862 | version "2.1.2" 863 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 864 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 865 | 866 | ms@2.1.3, ms@^2.1.1: 867 | version "2.1.3" 868 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 869 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 870 | 871 | negotiator@0.6.3: 872 | version "0.6.3" 873 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 874 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 875 | 876 | nodemon@^2.0.7: 877 | version "2.0.20" 878 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.20.tgz#e3537de768a492e8d74da5c5813cb0c7486fc701" 879 | integrity sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw== 880 | dependencies: 881 | chokidar "^3.5.2" 882 | debug "^3.2.7" 883 | ignore-by-default "^1.0.1" 884 | minimatch "^3.1.2" 885 | pstree.remy "^1.1.8" 886 | semver "^5.7.1" 887 | simple-update-notifier "^1.0.7" 888 | supports-color "^5.5.0" 889 | touch "^3.1.0" 890 | undefsafe "^2.0.5" 891 | 892 | nopt@~1.0.10: 893 | version "1.0.10" 894 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 895 | integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== 896 | dependencies: 897 | abbrev "1" 898 | 899 | normalize-path@^3.0.0, normalize-path@~3.0.0: 900 | version "3.0.0" 901 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 902 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 903 | 904 | normalize-url@^6.0.1: 905 | version "6.1.0" 906 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" 907 | integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== 908 | 909 | object-inspect@^1.9.0: 910 | version "1.12.2" 911 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" 912 | integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== 913 | 914 | on-finished@2.4.1: 915 | version "2.4.1" 916 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 917 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 918 | dependencies: 919 | ee-first "1.1.1" 920 | 921 | once@^1.3.1, once@^1.4.0: 922 | version "1.4.0" 923 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 924 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 925 | dependencies: 926 | wrappy "1" 927 | 928 | openai@^3.1.0: 929 | version "3.1.0" 930 | resolved "https://registry.yarnpkg.com/openai/-/openai-3.1.0.tgz#13bfb228cf777155b882c2deb3a03bc5094cb7b3" 931 | integrity sha512-v5kKFH5o+8ld+t0arudj833Mgm3GcgBnbyN9946bj6u7bvel4Yg6YFz2A4HLIYDzmMjIo0s6vSG9x73kOwvdCg== 932 | dependencies: 933 | axios "^0.26.0" 934 | form-data "^4.0.0" 935 | 936 | p-cancelable@^2.0.0: 937 | version "2.1.1" 938 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" 939 | integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== 940 | 941 | parseurl@~1.3.3: 942 | version "1.3.3" 943 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 944 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 945 | 946 | path-to-regexp@0.1.7: 947 | version "0.1.7" 948 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 949 | integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== 950 | 951 | picomatch@^2.0.4, picomatch@^2.2.1: 952 | version "2.3.1" 953 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 954 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 955 | 956 | pop-iterate@^1.0.1: 957 | version "1.0.1" 958 | resolved "https://registry.yarnpkg.com/pop-iterate/-/pop-iterate-1.0.1.tgz#ceacfdab4abf353d7a0f2aaa2c1fc7b3f9413ba3" 959 | integrity sha512-HRCx4+KJE30JhX84wBN4+vja9bNfysxg1y28l0DuJmkoaICiv2ZSilKddbS48pq50P8d2erAhqDLbp47yv3MbQ== 960 | 961 | promptable@^0.0.5: 962 | version "0.0.5" 963 | resolved "https://registry.yarnpkg.com/promptable/-/promptable-0.0.5.tgz#523acf88c8049d78fc41454be8827d52edbfb3e5" 964 | integrity sha512-qZ/rauiL2EZBjuCvWInrSedNpzlSNCItTZrIZwwUslvPBLHGT9AAMI+ZNpaXcuZRXFmTODpkT/PqKNeUgzLB+w== 965 | dependencies: 966 | "@microsoft/fetch-event-source" "^2.0.1" 967 | axios "^1.2.1" 968 | 969 | proxy-addr@~2.0.7: 970 | version "2.0.7" 971 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" 972 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 973 | dependencies: 974 | forwarded "0.2.0" 975 | ipaddr.js "1.9.1" 976 | 977 | proxy-from-env@^1.1.0: 978 | version "1.1.0" 979 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" 980 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== 981 | 982 | pstree.remy@^1.1.8: 983 | version "1.1.8" 984 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" 985 | integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== 986 | 987 | pump@^3.0.0: 988 | version "3.0.0" 989 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 990 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 991 | dependencies: 992 | end-of-stream "^1.1.0" 993 | once "^1.3.1" 994 | 995 | q@2.0.x: 996 | version "2.0.3" 997 | resolved "https://registry.yarnpkg.com/q/-/q-2.0.3.tgz#75b8db0255a1a5af82f58c3f3aaa1efec7d0d134" 998 | integrity sha512-gv6vLGcmAOg96/fgo3d9tvA4dJNZL3fMyBqVRrGxQ+Q/o4k9QzbJ3NQF9cOO/71wRodoXhaPgphvMFU68qVAJQ== 999 | dependencies: 1000 | asap "^2.0.0" 1001 | pop-iterate "^1.0.1" 1002 | weak-map "^1.0.5" 1003 | 1004 | qs@6.11.0, qs@^6.9.4: 1005 | version "6.11.0" 1006 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" 1007 | integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== 1008 | dependencies: 1009 | side-channel "^1.0.4" 1010 | 1011 | querystringify@^2.1.1: 1012 | version "2.2.0" 1013 | resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" 1014 | integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== 1015 | 1016 | quick-lru@^5.1.1: 1017 | version "5.1.1" 1018 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" 1019 | integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== 1020 | 1021 | range-parser@~1.2.1: 1022 | version "1.2.1" 1023 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1024 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1025 | 1026 | raw-body@2.5.1: 1027 | version "2.5.1" 1028 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" 1029 | integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== 1030 | dependencies: 1031 | bytes "3.1.2" 1032 | http-errors "2.0.0" 1033 | iconv-lite "0.4.24" 1034 | unpipe "1.0.0" 1035 | 1036 | readdirp@~3.6.0: 1037 | version "3.6.0" 1038 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1039 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1040 | dependencies: 1041 | picomatch "^2.2.1" 1042 | 1043 | requires-port@^1.0.0: 1044 | version "1.0.0" 1045 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 1046 | integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== 1047 | 1048 | resolve-alpn@^1.0.0: 1049 | version "1.2.1" 1050 | resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" 1051 | integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== 1052 | 1053 | responselike@^2.0.0: 1054 | version "2.0.1" 1055 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" 1056 | integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== 1057 | dependencies: 1058 | lowercase-keys "^2.0.0" 1059 | 1060 | rootpath@^0.1.2: 1061 | version "0.1.2" 1062 | resolved "https://registry.yarnpkg.com/rootpath/-/rootpath-0.1.2.tgz#5b379a87dca906e9b91d690a599439bef267ea6b" 1063 | integrity sha512-R3wLbuAYejpxQjL/SjXo1Cjv4wcJECnMRT/FlcCfTwCBhaji9rWaRCoVEQ1SPiTJ4kKK+yh+bZLAV7SCafoDDw== 1064 | 1065 | safe-buffer@5.2.1, safe-buffer@^5.0.1: 1066 | version "5.2.1" 1067 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1068 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1069 | 1070 | "safer-buffer@>= 2.1.2 < 3": 1071 | version "2.1.2" 1072 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1073 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1074 | 1075 | scmp@^2.1.0: 1076 | version "2.1.0" 1077 | resolved "https://registry.yarnpkg.com/scmp/-/scmp-2.1.0.tgz#37b8e197c425bdeb570ab91cc356b311a11f9c9a" 1078 | integrity sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q== 1079 | 1080 | semver@^5.6.0, semver@^5.7.1: 1081 | version "5.7.1" 1082 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1083 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1084 | 1085 | semver@~7.0.0: 1086 | version "7.0.0" 1087 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" 1088 | integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== 1089 | 1090 | send@0.18.0: 1091 | version "0.18.0" 1092 | resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" 1093 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== 1094 | dependencies: 1095 | debug "2.6.9" 1096 | depd "2.0.0" 1097 | destroy "1.2.0" 1098 | encodeurl "~1.0.2" 1099 | escape-html "~1.0.3" 1100 | etag "~1.8.1" 1101 | fresh "0.5.2" 1102 | http-errors "2.0.0" 1103 | mime "1.6.0" 1104 | ms "2.1.3" 1105 | on-finished "2.4.1" 1106 | range-parser "~1.2.1" 1107 | statuses "2.0.1" 1108 | 1109 | serve-static@1.15.0: 1110 | version "1.15.0" 1111 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" 1112 | integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== 1113 | dependencies: 1114 | encodeurl "~1.0.2" 1115 | escape-html "~1.0.3" 1116 | parseurl "~1.3.3" 1117 | send "0.18.0" 1118 | 1119 | setprototypeof@1.2.0: 1120 | version "1.2.0" 1121 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 1122 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 1123 | 1124 | side-channel@^1.0.4: 1125 | version "1.0.4" 1126 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1127 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1128 | dependencies: 1129 | call-bind "^1.0.0" 1130 | get-intrinsic "^1.0.2" 1131 | object-inspect "^1.9.0" 1132 | 1133 | simple-update-notifier@^1.0.7: 1134 | version "1.1.0" 1135 | resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" 1136 | integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== 1137 | dependencies: 1138 | semver "~7.0.0" 1139 | 1140 | statuses@2.0.1: 1141 | version "2.0.1" 1142 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 1143 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 1144 | 1145 | supports-color@^5.5.0: 1146 | version "5.5.0" 1147 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1148 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1149 | dependencies: 1150 | has-flag "^3.0.0" 1151 | 1152 | to-regex-range@^5.0.1: 1153 | version "5.0.1" 1154 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1155 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1156 | dependencies: 1157 | is-number "^7.0.0" 1158 | 1159 | toidentifier@1.0.1: 1160 | version "1.0.1" 1161 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 1162 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 1163 | 1164 | touch@^3.1.0: 1165 | version "3.1.0" 1166 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" 1167 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== 1168 | dependencies: 1169 | nopt "~1.0.10" 1170 | 1171 | ts-node@^10.9.1: 1172 | version "10.9.1" 1173 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" 1174 | integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== 1175 | dependencies: 1176 | "@cspotcode/source-map-support" "^0.8.0" 1177 | "@tsconfig/node10" "^1.0.7" 1178 | "@tsconfig/node12" "^1.0.7" 1179 | "@tsconfig/node14" "^1.0.0" 1180 | "@tsconfig/node16" "^1.0.2" 1181 | acorn "^8.4.1" 1182 | acorn-walk "^8.1.1" 1183 | arg "^4.1.0" 1184 | create-require "^1.1.0" 1185 | diff "^4.0.1" 1186 | make-error "^1.1.1" 1187 | v8-compile-cache-lib "^3.0.1" 1188 | yn "3.1.1" 1189 | 1190 | twilio@^3.57.0: 1191 | version "3.84.0" 1192 | resolved "https://registry.yarnpkg.com/twilio/-/twilio-3.84.0.tgz#57e035a7034e4c278cdd03d3e88c05f507b9d84e" 1193 | integrity sha512-XL+RR1SdfGExC51cE22unM/r7lEFzfDYUA3FecHEe5cLF+LzxmZGB9O9BXfqZu/sZ5YlGeltJfMA5j3TRLzhLw== 1194 | dependencies: 1195 | axios "^0.26.1" 1196 | dayjs "^1.8.29" 1197 | https-proxy-agent "^5.0.0" 1198 | jsonwebtoken "^8.5.1" 1199 | lodash "^4.17.21" 1200 | q "2.0.x" 1201 | qs "^6.9.4" 1202 | rootpath "^0.1.2" 1203 | scmp "^2.1.0" 1204 | url-parse "^1.5.9" 1205 | xmlbuilder "^13.0.2" 1206 | 1207 | type-is@~1.6.18: 1208 | version "1.6.18" 1209 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1210 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1211 | dependencies: 1212 | media-typer "0.3.0" 1213 | mime-types "~2.1.24" 1214 | 1215 | typescript@^4.2.2: 1216 | version "4.9.4" 1217 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" 1218 | integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== 1219 | 1220 | undefsafe@^2.0.5: 1221 | version "2.0.5" 1222 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" 1223 | integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== 1224 | 1225 | unpipe@1.0.0, unpipe@~1.0.0: 1226 | version "1.0.0" 1227 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1228 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 1229 | 1230 | url-parse@^1.5.9: 1231 | version "1.5.10" 1232 | resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" 1233 | integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== 1234 | dependencies: 1235 | querystringify "^2.1.1" 1236 | requires-port "^1.0.0" 1237 | 1238 | utils-merge@1.0.1: 1239 | version "1.0.1" 1240 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1241 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== 1242 | 1243 | v8-compile-cache-lib@^3.0.1: 1244 | version "3.0.1" 1245 | resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" 1246 | integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== 1247 | 1248 | vary@~1.1.2: 1249 | version "1.1.2" 1250 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1251 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== 1252 | 1253 | weak-map@^1.0.5: 1254 | version "1.0.8" 1255 | resolved "https://registry.yarnpkg.com/weak-map/-/weak-map-1.0.8.tgz#394c18a9e8262e790544ed8b55c6a4ddad1cb1a3" 1256 | integrity sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw== 1257 | 1258 | wrappy@1: 1259 | version "1.0.2" 1260 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1261 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1262 | 1263 | xmlbuilder@^13.0.2: 1264 | version "13.0.2" 1265 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-13.0.2.tgz#02ae33614b6a047d1c32b5389c1fdacb2bce47a7" 1266 | integrity sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ== 1267 | 1268 | yn@3.1.1: 1269 | version "3.1.1" 1270 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 1271 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 1272 | --------------------------------------------------------------------------------