├── .editorconfig ├── .gitignore ├── .vscode └── settings.json ├── HTML ├── README.md └── index.html ├── README.md ├── deno ├── .vscode │ └── settings.json ├── README.md └── main.ts ├── logo.png ├── nim ├── .gitignore ├── README.md ├── nim.cfg ├── src │ └── voiceflow.nim └── voiceflow.nimble ├── nodeJS ├── README.md ├── index.js ├── package-lock.json └── package.json ├── python ├── README.md └── index.py ├── react ├── App.js └── README.md ├── renovate.json └── rust ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── README.md └── src └── main.rs /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_size = 2 7 | indent_style = space 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [vcbuild.bat] 12 | end_of_line = crlf 13 | 14 | [Makefile] 15 | indent_size = 8 16 | indent_style = tab 17 | 18 | [{deps}/**] 19 | charset = ignore 20 | end_of_line = ignore 21 | indent_size = ignore 22 | indent_style = ignore 23 | trim_trailing_whitespace = ignore 24 | 25 | [{test/fixtures,deps,tools/node_modules,tools/gyp,tools/icu,tools/msvs}/**] 26 | insert_final_newline = false 27 | 28 | [*.js] 29 | trim_trailing_whitespace = false 30 | max_line_length = 150 31 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "nim.nimprettyIndent": 2, 3 | "nim.nimprettyMaxLineLen": 180 4 | } 5 | -------------------------------------------------------------------------------- /HTML/README.md: -------------------------------------------------------------------------------- 1 | # Voiceflow API HTML/JQuery Example 2 | 3 | Set up your Voiceflow project on a simple webpage in a matter of minutes. 4 | This example is not meant to be run in production. 5 | 6 | > ⚠️ - It is not recommended to allow anyone to see your API Key, keep this a secret and implement it on the backend instead. 7 | > Voiceflow may create public keys in the future. 8 | 9 | ## Documentation 10 | 11 | For additional information about the Voiceflow API, visit the [documentation](https://www.voiceflow.com/api/dialog-manager). 12 | 13 | ## Setup 14 | 15 | 1. Replace `'YOUR_API_KEY_HERE'` in `index.html` with your Dialog Manager API Key. You can find it under the integrations tab: 16 | 17 | 18 | 19 | 2. Open `index.html` on any browser to start your chat! 20 | 21 | ## Example 22 | 23 | What it might look like in action: 24 | 25 | 26 | -------------------------------------------------------------------------------- /HTML/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Voiceflow API examples 2 | 3 | ![Voiceflow logo](./logo.png) 4 | 5 | Getting started with the [Voiceflow API](https://www.voiceflow.com/developer) has never been easier. 6 | Use one of our examples to get setup in a matter of minutes: 7 | 8 | - [Node.js](./nodeJS/README.md) - A Node.js app that lets you interact with your project from the terminal 9 | - [Deno](./deno/README.md) - A Deno app that lets you interact with your project from the terminal 10 | - [HTML and jQuery](./HTML/README.md) - A simple webpage that displays messages in your browser 11 | - [Nim](./nim/README.md) - A Nim app that lets you interact with your project from the terminal 12 | - [Rust](./rust/README.md) - A Rust app that lets you interact with your project from the terminal 13 | - [Python](./python/README.md) - A Python app that lets you interact with your project from the terminal 14 | 15 | Want an example that isn't listed? 16 | [Open a GitHub issue](https://github.com/voiceflow/api-examples/issues/new) and we'll add it to the list. 17 | -------------------------------------------------------------------------------- /deno/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "deno.enable": true, 3 | "deno.lint": true, 4 | "deno.unstable": false 5 | } 6 | -------------------------------------------------------------------------------- /deno/README.md: -------------------------------------------------------------------------------- 1 | # Voiceflow API Deno Example 2 | 3 | Set up your Voiceflow project with Deno in a matter of minutes. 4 | This example can be adapted to run as an HTTP server. 5 | 6 | This example lets you chat with your project via the terminal. 7 | 8 | ## Documentation 9 | 10 | For additional information about the Voiceflow API, visit the [documentation](https://www.voiceflow.com/api/dialog-manager). 11 | 12 | ## Setup 13 | 14 | 1. Download and install [Deno](https://deno.land/#installation) 15 | 1. Replace `'YOUR_API_KEY_HERE'` in `main.ts` with your Dialog Manager API Key. You can find it under the integrations tab: 16 | 17 | 1. Run `deno run --allow-net main.ts` to start your chat 18 | 19 | ## Example 20 | 21 | What it might look like in action: 22 | 23 | ``` 24 | $ deno run --allow-net main.ts 25 | 26 | > What is your name?: tyler 27 | what can I do for you? 28 | ... 29 | > Say something: send email 30 | who is the recipient? 31 | ... 32 | > Say something: tyler@voiceflow.com 33 | what is the title of your email? 34 | ... 35 | > Say something: How was your day? 36 | sending the email for tyler@voiceflow.com called "How was your day?". Is that correct? 37 | ... 38 | > Say something: yes 39 | successfully sent the email for tyler@voiceflow.com called "How was your day?" 40 | The end! 41 | ``` -------------------------------------------------------------------------------- /deno/main.ts: -------------------------------------------------------------------------------- 1 | // Import types using skypack for deno support 2 | import { Request } from "https://cdn.skypack.dev/@voiceflow/base-types"; 3 | 4 | const API_KEY = "YOUR_API_KEY_HERE"; // it should look like this: VF.DM.XXXXXXX.XXXXXX... keep this a secret! 5 | 6 | const API_URL = `https://general-runtime.voiceflow.com/`; 7 | 8 | // send an interaction to the Voiceflow API, and log the response, returns true if there is a next step 9 | async function interact( 10 | userID: string, 11 | request: R, 12 | ): Promise { 13 | const url = new URL(`state/user/${userID}/interact`, API_URL); 14 | 15 | // call the Voiceflow API with the user's name & request, get back a response 16 | const response = await fetch(url, { 17 | method: "POST", 18 | headers: { 19 | Authorization: API_KEY, 20 | "Content-Type": "application/json", 21 | }, 22 | body: JSON.stringify({request}), 23 | }); 24 | 25 | if (!response.ok) { 26 | console.log("Uh oh", response.status, response.statusText); 27 | return false; 28 | } 29 | 30 | const json = await response.json(); 31 | console.log('response', json); 32 | // loop through the response 33 | for (const trace of json) { 34 | switch (trace.type) { 35 | case "text": 36 | case "speak": { 37 | console.log(trace.payload.message); 38 | break; 39 | } 40 | case "end": { 41 | // an end trace means the the Voiceflow dialog has ended 42 | return false; 43 | } 44 | } 45 | } 46 | 47 | return true; 48 | } 49 | 50 | const userID = prompt("> What is your name?"); 51 | if (userID) { 52 | // send a simple launch request starting the dialog 53 | let isRunning = await interact(userID, { 54 | type: Request.RequestType.LAUNCH, 55 | }); 56 | 57 | while (isRunning) { 58 | const nextInput = prompt("> Say something"); 59 | if (!nextInput) break; 60 | 61 | // send a simple text type request with the user input 62 | isRunning = await interact(userID, { 63 | type: Request.RequestType.TEXT, 64 | payload: nextInput, 65 | }); 66 | } 67 | } 68 | 69 | console.log("The end!"); 70 | -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/voiceflow/api-examples/c3d8ba9ee8eced7ec8d241973b1eb0284aaec212/logo.png -------------------------------------------------------------------------------- /nim/.gitignore: -------------------------------------------------------------------------------- 1 | # compiled binary 2 | voiceflow 3 | -------------------------------------------------------------------------------- /nim/README.md: -------------------------------------------------------------------------------- 1 | # Voiceflow API Nim Example 2 | 3 | Set up your Voiceflow project with Nim in a matter of minutes. 4 | [Nim](https://nim-lang.org/) is a statically typed compiled systems programming language. 5 | 6 | This example lets you chat with your project via the terminal. 7 | 8 | ## Documentation 9 | 10 | For additional information about the Voiceflow API, visit the [documentation](https://www.voiceflow.com/api/dialog-manager). 11 | 12 | ## Setup 13 | 14 | 1. If you do not yet have Nim installed, [install it from here](https://nim-lang.org/install.html). 15 | 2. Replace `'YOUR_API_KEY_HERE'` in `src/voiceflow.nim` with your Dialog Manager API Key. You can find it under the integrations tab: 16 | 17 | 18 | 19 | 3. Run `nimble run` to compile and run the app. 20 | 21 | ## Example 22 | 23 | What it might look like in action: 24 | 25 | ``` 26 | $ nimble run 27 | 28 | > What is your name?: tyler 29 | what can I do for you? 30 | ... 31 | > Say something: send email 32 | who is the recipient? 33 | ... 34 | > Say something: tyler@voiceflow.com 35 | what is the title of your email? 36 | ... 37 | > Say something: How was your day? 38 | sending the email for tyler@voiceflow.com called "How was your day?". Is that correct? 39 | ... 40 | > Say something: yes 41 | successfully sent the email for tyler@voiceflow.com called "How was your day?" 42 | The end! 43 | ``` 44 | -------------------------------------------------------------------------------- /nim/nim.cfg: -------------------------------------------------------------------------------- 1 | # Enable SSL 2 | -d:ssl 3 | -------------------------------------------------------------------------------- /nim/src/voiceflow.nim: -------------------------------------------------------------------------------- 1 | # view the README.md file for additional instructions 2 | 3 | import httpclient 4 | import rdstdin 5 | import json 6 | import strformat 7 | 8 | const apiKey = "YOUR_API_KEY_HERE" # it should look like this: VF.DM.XXXXXXX.XXXXXX... keep this a secret! 9 | 10 | var http = newHttpClient() 11 | 12 | proc interact(userID: string, request: JsonNode): bool = 13 | echo "..." 14 | 15 | let headers = newHttpHeaders({"Content-Type": "application/json", "Authorization": apiKey}) 16 | let url = fmt"https://general-runtime.voiceflow.com/state/user/{userID}/interact" 17 | 18 | # call the Voiceflow API with the user's name & request, get back a response 19 | let response = http.request(url, HttpPost, $(%*request), headers) 20 | 21 | let body = response.body().parseJson() 22 | 23 | if response.status != $Http200: 24 | # quit on errors 25 | quit(fmt"HTTP error: {body}", QuitFailure) 26 | 27 | let traces = body.getElems() 28 | for trace in traces: 29 | case trace["type"].getStr(): 30 | of "speak": 31 | echo trace["payload"]["message"].getStr() 32 | of "text": 33 | echo trace["payload"]["text"].getStr() 34 | of "end": 35 | # an end trace means the the Voiceflow dialog has ended 36 | return false 37 | 38 | return true 39 | 40 | let userID = readLineFromStdin("> What is your name?: ") 41 | # send a simple launch request starting the dialog 42 | var isRunning = userID.interact(%*{"type": "launch"}) 43 | 44 | while isRunning: 45 | # send a simple text type request with the user input 46 | let nextInput = readLineFromStdin("> Say something: ") 47 | isRunning = userID.interact(%*{"type": "text", "payload": nextInput}) 48 | 49 | echo "The end!" 50 | -------------------------------------------------------------------------------- /nim/voiceflow.nimble: -------------------------------------------------------------------------------- 1 | # Package 2 | 3 | version = "0.1.0" 4 | author = "Jonah Snider" 5 | description = "Interact with the Voiceflow API from Nim" 6 | license = "MIT" 7 | srcDir = "src" 8 | bin = @["voiceflow"] 9 | 10 | 11 | # Dependencies 12 | 13 | requires "nim >= 1.4.8" 14 | 15 | -------------------------------------------------------------------------------- /nodeJS/README.md: -------------------------------------------------------------------------------- 1 | # Voiceflow API Node.js Example 2 | 3 | Set up your Voiceflow project with Node.js in a matter of minutes. 4 | Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. 5 | This example can be adapted to run as an HTTP server. 6 | 7 | This example lets you chat with your project via the terminal. 8 | 9 | ## Documentation 10 | 11 | For additional information about the Voiceflow API, visit the [documentation](https://www.voiceflow.com/api/dialog-manager). 12 | 13 | ## Setup 14 | 15 | 1. If you do not have node, install _Node.js_ and _npm_ from [nodejs.org](https://nodejs.org/), or follow an equivalent guide. 16 | 2. In this folder, run `npm install`. 17 | 3. Replace `'YOUR_API_KEY_HERE'` in `index.js` with your Dialog Manager API Key. You can find it under the integrations tab: 18 | 19 | 20 | 21 | 4. run `npm start` to start your chat! 22 | 23 | ## Example 24 | 25 | What it might look like in action: 26 | 27 | ``` 28 | $ npm start 29 | 30 | > What is your name?: tyler 31 | what can I do for you? 32 | ... 33 | > Say something: send email 34 | who is the recipient? 35 | ... 36 | > Say something: tyler@voiceflow.com 37 | what is the title of your email? 38 | ... 39 | > Say something: How was your day? 40 | sending the email for tyler@voiceflow.com called "How was your day?". Is that correct? 41 | ... 42 | > Say something: yes 43 | successfully sent the email for tyler@voiceflow.com called "How was your day?" 44 | The end! Start me again with `npm start` 45 | ``` 46 | -------------------------------------------------------------------------------- /nodeJS/index.js: -------------------------------------------------------------------------------- 1 | // view the README.md file for additional instructions 2 | const axios = require("axios"); 3 | const { cli } = require("cli-ux"); 4 | 5 | const API_KEY = "YOUR_API_KEY_HERE"; // it should look like this: VF.DM.XXXXXXX.XXXXXX... keep this a secret! 6 | 7 | // send an interaction to the Voiceflow API, and log the response, returns true if there is a next step 8 | async function interact(userID, request) { 9 | console.log("..."); 10 | 11 | // call the Voiceflow API with the user's name & request, get back a response 12 | const response = await axios({ 13 | method: "POST", 14 | url: `https://general-runtime.voiceflow.com/state/user/${userID}/interact`, 15 | headers: { Authorization: API_KEY }, 16 | data: { request }, 17 | }); 18 | 19 | // loop through the response 20 | for (const trace of response.data) { 21 | switch (trace.type) { 22 | case "text": 23 | case "speak": { 24 | console.log(trace.payload.message); 25 | break; 26 | } 27 | case "end": { 28 | // an end trace means the the Voiceflow dialog has ended 29 | return false; 30 | } 31 | } 32 | } 33 | 34 | return true; 35 | } 36 | 37 | async function main() { 38 | const userID = await cli.prompt("> What is your name?"); 39 | // send a simple launch request starting the dialog 40 | let isRunning = await interact(userID, { type: "launch" }); 41 | 42 | while (isRunning) { 43 | const nextInput = await cli.prompt("> Say something"); 44 | // send a simple text type request with the user input 45 | isRunning = await interact(userID, { type: "text", payload: nextInput }); 46 | } 47 | console.log("The end! Start me again with `npm start`"); 48 | } 49 | 50 | main(); 51 | -------------------------------------------------------------------------------- /nodeJS/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "voiceflow-api-nodejs-example", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "voiceflow-api-nodejs-example", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "axios": "^0.21.2", 13 | "cli-ux": "^5.6.3" 14 | } 15 | }, 16 | "node_modules/@nodelib/fs.scandir": { 17 | "version": "2.1.5", 18 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 19 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 20 | "dependencies": { 21 | "@nodelib/fs.stat": "2.0.5", 22 | "run-parallel": "^1.1.9" 23 | }, 24 | "engines": { 25 | "node": ">= 8" 26 | } 27 | }, 28 | "node_modules/@nodelib/fs.stat": { 29 | "version": "2.0.5", 30 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 31 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 32 | "engines": { 33 | "node": ">= 8" 34 | } 35 | }, 36 | "node_modules/@nodelib/fs.walk": { 37 | "version": "1.2.8", 38 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 39 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 40 | "dependencies": { 41 | "@nodelib/fs.scandir": "2.1.5", 42 | "fastq": "^1.6.0" 43 | }, 44 | "engines": { 45 | "node": ">= 8" 46 | } 47 | }, 48 | "node_modules/@oclif/command": { 49 | "version": "1.8.0", 50 | "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.0.tgz", 51 | "integrity": "sha512-5vwpq6kbvwkQwKqAoOU3L72GZ3Ta8RRrewKj9OJRolx28KLJJ8Dg9Rf7obRwt5jQA9bkYd8gqzMTrI7H3xLfaw==", 52 | "dependencies": { 53 | "@oclif/config": "^1.15.1", 54 | "@oclif/errors": "^1.3.3", 55 | "@oclif/parser": "^3.8.3", 56 | "@oclif/plugin-help": "^3", 57 | "debug": "^4.1.1", 58 | "semver": "^7.3.2" 59 | }, 60 | "engines": { 61 | "node": ">=8.0.0" 62 | }, 63 | "peerDependencies": { 64 | "@oclif/config": "^1" 65 | } 66 | }, 67 | "node_modules/@oclif/config": { 68 | "version": "1.17.0", 69 | "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.17.0.tgz", 70 | "integrity": "sha512-Lmfuf6ubjQ4ifC/9bz1fSCHc6F6E653oyaRXxg+lgT4+bYf9bk+nqrUpAbrXyABkCqgIBiFr3J4zR/kiFdE1PA==", 71 | "dependencies": { 72 | "@oclif/errors": "^1.3.3", 73 | "@oclif/parser": "^3.8.0", 74 | "debug": "^4.1.1", 75 | "globby": "^11.0.1", 76 | "is-wsl": "^2.1.1", 77 | "tslib": "^2.0.0" 78 | }, 79 | "engines": { 80 | "node": ">=8.0.0" 81 | } 82 | }, 83 | "node_modules/@oclif/errors": { 84 | "version": "1.3.5", 85 | "resolved": "https://registry.npmjs.org/@oclif/errors/-/errors-1.3.5.tgz", 86 | "integrity": "sha512-OivucXPH/eLLlOT7FkCMoZXiaVYf8I/w1eTAM1+gKzfhALwWTusxEx7wBmW0uzvkSg/9ovWLycPaBgJbM3LOCQ==", 87 | "dependencies": { 88 | "clean-stack": "^3.0.0", 89 | "fs-extra": "^8.1", 90 | "indent-string": "^4.0.0", 91 | "strip-ansi": "^6.0.0", 92 | "wrap-ansi": "^7.0.0" 93 | }, 94 | "engines": { 95 | "node": ">=8.0.0" 96 | } 97 | }, 98 | "node_modules/@oclif/linewrap": { 99 | "version": "1.0.0", 100 | "resolved": "https://registry.npmjs.org/@oclif/linewrap/-/linewrap-1.0.0.tgz", 101 | "integrity": "sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw==" 102 | }, 103 | "node_modules/@oclif/parser": { 104 | "version": "3.8.5", 105 | "resolved": "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.5.tgz", 106 | "integrity": "sha512-yojzeEfmSxjjkAvMRj0KzspXlMjCfBzNRPkWw8ZwOSoNWoJn+OCS/m/S+yfV6BvAM4u2lTzX9Y5rCbrFIgkJLg==", 107 | "dependencies": { 108 | "@oclif/errors": "^1.2.2", 109 | "@oclif/linewrap": "^1.0.0", 110 | "chalk": "^2.4.2", 111 | "tslib": "^1.9.3" 112 | }, 113 | "engines": { 114 | "node": ">=8.0.0" 115 | } 116 | }, 117 | "node_modules/@oclif/parser/node_modules/ansi-styles": { 118 | "version": "3.2.1", 119 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 120 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 121 | "dependencies": { 122 | "color-convert": "^1.9.0" 123 | }, 124 | "engines": { 125 | "node": ">=4" 126 | } 127 | }, 128 | "node_modules/@oclif/parser/node_modules/chalk": { 129 | "version": "2.4.2", 130 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 131 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 132 | "dependencies": { 133 | "ansi-styles": "^3.2.1", 134 | "escape-string-regexp": "^1.0.5", 135 | "supports-color": "^5.3.0" 136 | }, 137 | "engines": { 138 | "node": ">=4" 139 | } 140 | }, 141 | "node_modules/@oclif/parser/node_modules/color-convert": { 142 | "version": "1.9.3", 143 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 144 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 145 | "dependencies": { 146 | "color-name": "1.1.3" 147 | } 148 | }, 149 | "node_modules/@oclif/parser/node_modules/color-name": { 150 | "version": "1.1.3", 151 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 152 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 153 | }, 154 | "node_modules/@oclif/parser/node_modules/escape-string-regexp": { 155 | "version": "1.0.5", 156 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 157 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 158 | "engines": { 159 | "node": ">=0.8.0" 160 | } 161 | }, 162 | "node_modules/@oclif/parser/node_modules/has-flag": { 163 | "version": "3.0.0", 164 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 165 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 166 | "engines": { 167 | "node": ">=4" 168 | } 169 | }, 170 | "node_modules/@oclif/parser/node_modules/supports-color": { 171 | "version": "5.5.0", 172 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 173 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 174 | "dependencies": { 175 | "has-flag": "^3.0.0" 176 | }, 177 | "engines": { 178 | "node": ">=4" 179 | } 180 | }, 181 | "node_modules/@oclif/parser/node_modules/tslib": { 182 | "version": "1.14.1", 183 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 184 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 185 | }, 186 | "node_modules/@oclif/plugin-help": { 187 | "version": "3.2.3", 188 | "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-3.2.3.tgz", 189 | "integrity": "sha512-l2Pd0lbOMq4u/7xsl9hqISFqyR9gWEz/8+05xmrXFr67jXyS6EUCQB+mFBa0wepltrmJu0sAFg9AvA2mLaMMqQ==", 190 | "dependencies": { 191 | "@oclif/command": "^1.5.20", 192 | "@oclif/config": "^1.15.1", 193 | "@oclif/errors": "^1.2.2", 194 | "chalk": "^4.1.0", 195 | "indent-string": "^4.0.0", 196 | "lodash.template": "^4.4.0", 197 | "string-width": "^4.2.0", 198 | "strip-ansi": "^6.0.0", 199 | "widest-line": "^3.1.0", 200 | "wrap-ansi": "^4.0.0" 201 | }, 202 | "engines": { 203 | "node": ">=8.0.0" 204 | } 205 | }, 206 | "node_modules/@oclif/plugin-help/node_modules/ansi-regex": { 207 | "version": "3.0.1", 208 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", 209 | "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", 210 | "engines": { 211 | "node": ">=4" 212 | } 213 | }, 214 | "node_modules/@oclif/plugin-help/node_modules/ansi-styles": { 215 | "version": "3.2.1", 216 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 217 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 218 | "dependencies": { 219 | "color-convert": "^1.9.0" 220 | }, 221 | "engines": { 222 | "node": ">=4" 223 | } 224 | }, 225 | "node_modules/@oclif/plugin-help/node_modules/color-convert": { 226 | "version": "1.9.3", 227 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 228 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 229 | "dependencies": { 230 | "color-name": "1.1.3" 231 | } 232 | }, 233 | "node_modules/@oclif/plugin-help/node_modules/color-name": { 234 | "version": "1.1.3", 235 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 236 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 237 | }, 238 | "node_modules/@oclif/plugin-help/node_modules/is-fullwidth-code-point": { 239 | "version": "2.0.0", 240 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 241 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 242 | "engines": { 243 | "node": ">=4" 244 | } 245 | }, 246 | "node_modules/@oclif/plugin-help/node_modules/wrap-ansi": { 247 | "version": "4.0.0", 248 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-4.0.0.tgz", 249 | "integrity": "sha512-uMTsj9rDb0/7kk1PbcbCcwvHUxp60fGDB/NNXpVa0Q+ic/e7y5+BwTxKfQ33VYgDppSwi/FBzpetYzo8s6tfbg==", 250 | "dependencies": { 251 | "ansi-styles": "^3.2.0", 252 | "string-width": "^2.1.1", 253 | "strip-ansi": "^4.0.0" 254 | }, 255 | "engines": { 256 | "node": ">=6" 257 | } 258 | }, 259 | "node_modules/@oclif/plugin-help/node_modules/wrap-ansi/node_modules/string-width": { 260 | "version": "2.1.1", 261 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 262 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 263 | "dependencies": { 264 | "is-fullwidth-code-point": "^2.0.0", 265 | "strip-ansi": "^4.0.0" 266 | }, 267 | "engines": { 268 | "node": ">=4" 269 | } 270 | }, 271 | "node_modules/@oclif/plugin-help/node_modules/wrap-ansi/node_modules/strip-ansi": { 272 | "version": "4.0.0", 273 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 274 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 275 | "dependencies": { 276 | "ansi-regex": "^3.0.0" 277 | }, 278 | "engines": { 279 | "node": ">=4" 280 | } 281 | }, 282 | "node_modules/@oclif/screen": { 283 | "version": "1.0.4", 284 | "resolved": "https://registry.npmjs.org/@oclif/screen/-/screen-1.0.4.tgz", 285 | "integrity": "sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw==", 286 | "engines": { 287 | "node": ">=8.0.0" 288 | } 289 | }, 290 | "node_modules/ansi-escapes": { 291 | "version": "4.3.2", 292 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 293 | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 294 | "dependencies": { 295 | "type-fest": "^0.21.3" 296 | }, 297 | "engines": { 298 | "node": ">=8" 299 | }, 300 | "funding": { 301 | "url": "https://github.com/sponsors/sindresorhus" 302 | } 303 | }, 304 | "node_modules/ansi-regex": { 305 | "version": "5.0.1", 306 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 307 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 308 | "engines": { 309 | "node": ">=8" 310 | } 311 | }, 312 | "node_modules/ansi-styles": { 313 | "version": "4.3.0", 314 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 315 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 316 | "dependencies": { 317 | "color-convert": "^2.0.1" 318 | }, 319 | "engines": { 320 | "node": ">=8" 321 | }, 322 | "funding": { 323 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 324 | } 325 | }, 326 | "node_modules/ansicolors": { 327 | "version": "0.3.2", 328 | "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", 329 | "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=" 330 | }, 331 | "node_modules/argparse": { 332 | "version": "1.0.10", 333 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 334 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 335 | "dependencies": { 336 | "sprintf-js": "~1.0.2" 337 | } 338 | }, 339 | "node_modules/array-union": { 340 | "version": "2.1.0", 341 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 342 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 343 | "engines": { 344 | "node": ">=8" 345 | } 346 | }, 347 | "node_modules/axios": { 348 | "version": "0.21.2", 349 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.2.tgz", 350 | "integrity": "sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg==", 351 | "dependencies": { 352 | "follow-redirects": "^1.14.0" 353 | } 354 | }, 355 | "node_modules/braces": { 356 | "version": "3.0.2", 357 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 358 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 359 | "dependencies": { 360 | "fill-range": "^7.0.1" 361 | }, 362 | "engines": { 363 | "node": ">=8" 364 | } 365 | }, 366 | "node_modules/cardinal": { 367 | "version": "2.1.1", 368 | "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", 369 | "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", 370 | "dependencies": { 371 | "ansicolors": "~0.3.2", 372 | "redeyed": "~2.1.0" 373 | }, 374 | "bin": { 375 | "cdl": "bin/cdl.js" 376 | } 377 | }, 378 | "node_modules/chalk": { 379 | "version": "4.1.2", 380 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 381 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 382 | "dependencies": { 383 | "ansi-styles": "^4.1.0", 384 | "supports-color": "^7.1.0" 385 | }, 386 | "engines": { 387 | "node": ">=10" 388 | }, 389 | "funding": { 390 | "url": "https://github.com/chalk/chalk?sponsor=1" 391 | } 392 | }, 393 | "node_modules/chalk/node_modules/supports-color": { 394 | "version": "7.2.0", 395 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 396 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 397 | "dependencies": { 398 | "has-flag": "^4.0.0" 399 | }, 400 | "engines": { 401 | "node": ">=8" 402 | } 403 | }, 404 | "node_modules/clean-stack": { 405 | "version": "3.0.1", 406 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.1.tgz", 407 | "integrity": "sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==", 408 | "dependencies": { 409 | "escape-string-regexp": "4.0.0" 410 | }, 411 | "engines": { 412 | "node": ">=10" 413 | }, 414 | "funding": { 415 | "url": "https://github.com/sponsors/sindresorhus" 416 | } 417 | }, 418 | "node_modules/cli-progress": { 419 | "version": "3.9.0", 420 | "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.9.0.tgz", 421 | "integrity": "sha512-g7rLWfhAo/7pF+a/STFH/xPyosaL1zgADhI0OM83hl3c7S43iGvJWEAV2QuDOnQ8i6EMBj/u4+NTd0d5L+4JfA==", 422 | "dependencies": { 423 | "colors": "^1.1.2", 424 | "string-width": "^4.2.0" 425 | }, 426 | "engines": { 427 | "node": ">=4" 428 | } 429 | }, 430 | "node_modules/cli-ux": { 431 | "version": "5.6.3", 432 | "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-5.6.3.tgz", 433 | "integrity": "sha512-/oDU4v8BiDjX2OKcSunGH0iGDiEtj2rZaGyqNuv9IT4CgcSMyVWAMfn0+rEHaOc4n9ka78B0wo1+N1QX89f7mw==", 434 | "dependencies": { 435 | "@oclif/command": "^1.6.0", 436 | "@oclif/errors": "^1.2.1", 437 | "@oclif/linewrap": "^1.0.0", 438 | "@oclif/screen": "^1.0.3", 439 | "ansi-escapes": "^4.3.0", 440 | "ansi-styles": "^4.2.0", 441 | "cardinal": "^2.1.1", 442 | "chalk": "^4.1.0", 443 | "clean-stack": "^3.0.0", 444 | "cli-progress": "^3.4.0", 445 | "extract-stack": "^2.0.0", 446 | "fs-extra": "^8.1", 447 | "hyperlinker": "^1.0.0", 448 | "indent-string": "^4.0.0", 449 | "is-wsl": "^2.2.0", 450 | "js-yaml": "^3.13.1", 451 | "lodash": "^4.17.11", 452 | "natural-orderby": "^2.0.1", 453 | "object-treeify": "^1.1.4", 454 | "password-prompt": "^1.1.2", 455 | "semver": "^7.3.2", 456 | "string-width": "^4.2.0", 457 | "strip-ansi": "^6.0.0", 458 | "supports-color": "^8.1.0", 459 | "supports-hyperlinks": "^2.1.0", 460 | "tslib": "^2.0.0" 461 | }, 462 | "engines": { 463 | "node": ">=8.0.0" 464 | } 465 | }, 466 | "node_modules/color-convert": { 467 | "version": "2.0.1", 468 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 469 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 470 | "dependencies": { 471 | "color-name": "~1.1.4" 472 | }, 473 | "engines": { 474 | "node": ">=7.0.0" 475 | } 476 | }, 477 | "node_modules/color-name": { 478 | "version": "1.1.4", 479 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 480 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 481 | }, 482 | "node_modules/colors": { 483 | "version": "1.4.0", 484 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 485 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", 486 | "engines": { 487 | "node": ">=0.1.90" 488 | } 489 | }, 490 | "node_modules/cross-spawn": { 491 | "version": "6.0.5", 492 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 493 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 494 | "dependencies": { 495 | "nice-try": "^1.0.4", 496 | "path-key": "^2.0.1", 497 | "semver": "^5.5.0", 498 | "shebang-command": "^1.2.0", 499 | "which": "^1.2.9" 500 | }, 501 | "engines": { 502 | "node": ">=4.8" 503 | } 504 | }, 505 | "node_modules/cross-spawn/node_modules/semver": { 506 | "version": "5.7.1", 507 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 508 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 509 | "bin": { 510 | "semver": "bin/semver" 511 | } 512 | }, 513 | "node_modules/debug": { 514 | "version": "4.3.2", 515 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 516 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 517 | "dependencies": { 518 | "ms": "2.1.2" 519 | }, 520 | "engines": { 521 | "node": ">=6.0" 522 | }, 523 | "peerDependenciesMeta": { 524 | "supports-color": { 525 | "optional": true 526 | } 527 | } 528 | }, 529 | "node_modules/dir-glob": { 530 | "version": "3.0.1", 531 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 532 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 533 | "dependencies": { 534 | "path-type": "^4.0.0" 535 | }, 536 | "engines": { 537 | "node": ">=8" 538 | } 539 | }, 540 | "node_modules/emoji-regex": { 541 | "version": "8.0.0", 542 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 543 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 544 | }, 545 | "node_modules/escape-string-regexp": { 546 | "version": "4.0.0", 547 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 548 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 549 | "engines": { 550 | "node": ">=10" 551 | }, 552 | "funding": { 553 | "url": "https://github.com/sponsors/sindresorhus" 554 | } 555 | }, 556 | "node_modules/esprima": { 557 | "version": "4.0.1", 558 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 559 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 560 | "bin": { 561 | "esparse": "bin/esparse.js", 562 | "esvalidate": "bin/esvalidate.js" 563 | }, 564 | "engines": { 565 | "node": ">=4" 566 | } 567 | }, 568 | "node_modules/extract-stack": { 569 | "version": "2.0.0", 570 | "resolved": "https://registry.npmjs.org/extract-stack/-/extract-stack-2.0.0.tgz", 571 | "integrity": "sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ==", 572 | "engines": { 573 | "node": ">=8" 574 | } 575 | }, 576 | "node_modules/fast-glob": { 577 | "version": "3.2.7", 578 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", 579 | "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", 580 | "dependencies": { 581 | "@nodelib/fs.stat": "^2.0.2", 582 | "@nodelib/fs.walk": "^1.2.3", 583 | "glob-parent": "^5.1.2", 584 | "merge2": "^1.3.0", 585 | "micromatch": "^4.0.4" 586 | }, 587 | "engines": { 588 | "node": ">=8" 589 | } 590 | }, 591 | "node_modules/fastq": { 592 | "version": "1.11.1", 593 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", 594 | "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", 595 | "dependencies": { 596 | "reusify": "^1.0.4" 597 | } 598 | }, 599 | "node_modules/fill-range": { 600 | "version": "7.0.1", 601 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 602 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 603 | "dependencies": { 604 | "to-regex-range": "^5.0.1" 605 | }, 606 | "engines": { 607 | "node": ">=8" 608 | } 609 | }, 610 | "node_modules/follow-redirects": { 611 | "version": "1.14.8", 612 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", 613 | "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", 614 | "funding": [ 615 | { 616 | "type": "individual", 617 | "url": "https://github.com/sponsors/RubenVerborgh" 618 | } 619 | ], 620 | "engines": { 621 | "node": ">=4.0" 622 | }, 623 | "peerDependenciesMeta": { 624 | "debug": { 625 | "optional": true 626 | } 627 | } 628 | }, 629 | "node_modules/fs-extra": { 630 | "version": "8.1.0", 631 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 632 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 633 | "dependencies": { 634 | "graceful-fs": "^4.2.0", 635 | "jsonfile": "^4.0.0", 636 | "universalify": "^0.1.0" 637 | }, 638 | "engines": { 639 | "node": ">=6 <7 || >=8" 640 | } 641 | }, 642 | "node_modules/glob-parent": { 643 | "version": "5.1.2", 644 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 645 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 646 | "dependencies": { 647 | "is-glob": "^4.0.1" 648 | }, 649 | "engines": { 650 | "node": ">= 6" 651 | } 652 | }, 653 | "node_modules/globby": { 654 | "version": "11.0.4", 655 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", 656 | "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", 657 | "dependencies": { 658 | "array-union": "^2.1.0", 659 | "dir-glob": "^3.0.1", 660 | "fast-glob": "^3.1.1", 661 | "ignore": "^5.1.4", 662 | "merge2": "^1.3.0", 663 | "slash": "^3.0.0" 664 | }, 665 | "engines": { 666 | "node": ">=10" 667 | }, 668 | "funding": { 669 | "url": "https://github.com/sponsors/sindresorhus" 670 | } 671 | }, 672 | "node_modules/graceful-fs": { 673 | "version": "4.2.8", 674 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", 675 | "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" 676 | }, 677 | "node_modules/has-flag": { 678 | "version": "4.0.0", 679 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 680 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 681 | "engines": { 682 | "node": ">=8" 683 | } 684 | }, 685 | "node_modules/hyperlinker": { 686 | "version": "1.0.0", 687 | "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", 688 | "integrity": "sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==", 689 | "engines": { 690 | "node": ">=4" 691 | } 692 | }, 693 | "node_modules/ignore": { 694 | "version": "5.1.8", 695 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", 696 | "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", 697 | "engines": { 698 | "node": ">= 4" 699 | } 700 | }, 701 | "node_modules/indent-string": { 702 | "version": "4.0.0", 703 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 704 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 705 | "engines": { 706 | "node": ">=8" 707 | } 708 | }, 709 | "node_modules/is-docker": { 710 | "version": "2.2.1", 711 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", 712 | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", 713 | "bin": { 714 | "is-docker": "cli.js" 715 | }, 716 | "engines": { 717 | "node": ">=8" 718 | }, 719 | "funding": { 720 | "url": "https://github.com/sponsors/sindresorhus" 721 | } 722 | }, 723 | "node_modules/is-extglob": { 724 | "version": "2.1.1", 725 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 726 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 727 | "engines": { 728 | "node": ">=0.10.0" 729 | } 730 | }, 731 | "node_modules/is-fullwidth-code-point": { 732 | "version": "3.0.0", 733 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 734 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 735 | "engines": { 736 | "node": ">=8" 737 | } 738 | }, 739 | "node_modules/is-glob": { 740 | "version": "4.0.1", 741 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 742 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 743 | "dependencies": { 744 | "is-extglob": "^2.1.1" 745 | }, 746 | "engines": { 747 | "node": ">=0.10.0" 748 | } 749 | }, 750 | "node_modules/is-number": { 751 | "version": "7.0.0", 752 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 753 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 754 | "engines": { 755 | "node": ">=0.12.0" 756 | } 757 | }, 758 | "node_modules/is-wsl": { 759 | "version": "2.2.0", 760 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", 761 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", 762 | "dependencies": { 763 | "is-docker": "^2.0.0" 764 | }, 765 | "engines": { 766 | "node": ">=8" 767 | } 768 | }, 769 | "node_modules/isexe": { 770 | "version": "2.0.0", 771 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 772 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" 773 | }, 774 | "node_modules/js-yaml": { 775 | "version": "3.14.1", 776 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 777 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 778 | "dependencies": { 779 | "argparse": "^1.0.7", 780 | "esprima": "^4.0.0" 781 | }, 782 | "bin": { 783 | "js-yaml": "bin/js-yaml.js" 784 | } 785 | }, 786 | "node_modules/jsonfile": { 787 | "version": "4.0.0", 788 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 789 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 790 | "optionalDependencies": { 791 | "graceful-fs": "^4.1.6" 792 | } 793 | }, 794 | "node_modules/lodash": { 795 | "version": "4.17.21", 796 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 797 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 798 | }, 799 | "node_modules/lodash._reinterpolate": { 800 | "version": "3.0.0", 801 | "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", 802 | "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" 803 | }, 804 | "node_modules/lodash.template": { 805 | "version": "4.5.0", 806 | "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", 807 | "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", 808 | "dependencies": { 809 | "lodash._reinterpolate": "^3.0.0", 810 | "lodash.templatesettings": "^4.0.0" 811 | } 812 | }, 813 | "node_modules/lodash.templatesettings": { 814 | "version": "4.2.0", 815 | "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", 816 | "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", 817 | "dependencies": { 818 | "lodash._reinterpolate": "^3.0.0" 819 | } 820 | }, 821 | "node_modules/lru-cache": { 822 | "version": "6.0.0", 823 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 824 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 825 | "dependencies": { 826 | "yallist": "^4.0.0" 827 | }, 828 | "engines": { 829 | "node": ">=10" 830 | } 831 | }, 832 | "node_modules/merge2": { 833 | "version": "1.4.1", 834 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 835 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 836 | "engines": { 837 | "node": ">= 8" 838 | } 839 | }, 840 | "node_modules/micromatch": { 841 | "version": "4.0.4", 842 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", 843 | "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", 844 | "dependencies": { 845 | "braces": "^3.0.1", 846 | "picomatch": "^2.2.3" 847 | }, 848 | "engines": { 849 | "node": ">=8.6" 850 | } 851 | }, 852 | "node_modules/ms": { 853 | "version": "2.1.2", 854 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 855 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 856 | }, 857 | "node_modules/natural-orderby": { 858 | "version": "2.0.3", 859 | "resolved": "https://registry.npmjs.org/natural-orderby/-/natural-orderby-2.0.3.tgz", 860 | "integrity": "sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==", 861 | "engines": { 862 | "node": "*" 863 | } 864 | }, 865 | "node_modules/nice-try": { 866 | "version": "1.0.5", 867 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 868 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" 869 | }, 870 | "node_modules/object-treeify": { 871 | "version": "1.1.33", 872 | "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", 873 | "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==", 874 | "engines": { 875 | "node": ">= 10" 876 | } 877 | }, 878 | "node_modules/password-prompt": { 879 | "version": "1.1.2", 880 | "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz", 881 | "integrity": "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==", 882 | "dependencies": { 883 | "ansi-escapes": "^3.1.0", 884 | "cross-spawn": "^6.0.5" 885 | } 886 | }, 887 | "node_modules/password-prompt/node_modules/ansi-escapes": { 888 | "version": "3.2.0", 889 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 890 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", 891 | "engines": { 892 | "node": ">=4" 893 | } 894 | }, 895 | "node_modules/path-key": { 896 | "version": "2.0.1", 897 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 898 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 899 | "engines": { 900 | "node": ">=4" 901 | } 902 | }, 903 | "node_modules/path-type": { 904 | "version": "4.0.0", 905 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 906 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 907 | "engines": { 908 | "node": ">=8" 909 | } 910 | }, 911 | "node_modules/picomatch": { 912 | "version": "2.3.0", 913 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", 914 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", 915 | "engines": { 916 | "node": ">=8.6" 917 | }, 918 | "funding": { 919 | "url": "https://github.com/sponsors/jonschlinkert" 920 | } 921 | }, 922 | "node_modules/queue-microtask": { 923 | "version": "1.2.3", 924 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 925 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 926 | "funding": [ 927 | { 928 | "type": "github", 929 | "url": "https://github.com/sponsors/feross" 930 | }, 931 | { 932 | "type": "patreon", 933 | "url": "https://www.patreon.com/feross" 934 | }, 935 | { 936 | "type": "consulting", 937 | "url": "https://feross.org/support" 938 | } 939 | ] 940 | }, 941 | "node_modules/redeyed": { 942 | "version": "2.1.1", 943 | "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", 944 | "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", 945 | "dependencies": { 946 | "esprima": "~4.0.0" 947 | } 948 | }, 949 | "node_modules/reusify": { 950 | "version": "1.0.4", 951 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 952 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 953 | "engines": { 954 | "iojs": ">=1.0.0", 955 | "node": ">=0.10.0" 956 | } 957 | }, 958 | "node_modules/run-parallel": { 959 | "version": "1.2.0", 960 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 961 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 962 | "funding": [ 963 | { 964 | "type": "github", 965 | "url": "https://github.com/sponsors/feross" 966 | }, 967 | { 968 | "type": "patreon", 969 | "url": "https://www.patreon.com/feross" 970 | }, 971 | { 972 | "type": "consulting", 973 | "url": "https://feross.org/support" 974 | } 975 | ], 976 | "dependencies": { 977 | "queue-microtask": "^1.2.2" 978 | } 979 | }, 980 | "node_modules/semver": { 981 | "version": "7.3.5", 982 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 983 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 984 | "dependencies": { 985 | "lru-cache": "^6.0.0" 986 | }, 987 | "bin": { 988 | "semver": "bin/semver.js" 989 | }, 990 | "engines": { 991 | "node": ">=10" 992 | } 993 | }, 994 | "node_modules/shebang-command": { 995 | "version": "1.2.0", 996 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 997 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 998 | "dependencies": { 999 | "shebang-regex": "^1.0.0" 1000 | }, 1001 | "engines": { 1002 | "node": ">=0.10.0" 1003 | } 1004 | }, 1005 | "node_modules/shebang-regex": { 1006 | "version": "1.0.0", 1007 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 1008 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 1009 | "engines": { 1010 | "node": ">=0.10.0" 1011 | } 1012 | }, 1013 | "node_modules/slash": { 1014 | "version": "3.0.0", 1015 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 1016 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 1017 | "engines": { 1018 | "node": ">=8" 1019 | } 1020 | }, 1021 | "node_modules/sprintf-js": { 1022 | "version": "1.0.3", 1023 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1024 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 1025 | }, 1026 | "node_modules/string-width": { 1027 | "version": "4.2.2", 1028 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 1029 | "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 1030 | "dependencies": { 1031 | "emoji-regex": "^8.0.0", 1032 | "is-fullwidth-code-point": "^3.0.0", 1033 | "strip-ansi": "^6.0.0" 1034 | }, 1035 | "engines": { 1036 | "node": ">=8" 1037 | } 1038 | }, 1039 | "node_modules/strip-ansi": { 1040 | "version": "6.0.0", 1041 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1042 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1043 | "dependencies": { 1044 | "ansi-regex": "^5.0.0" 1045 | }, 1046 | "engines": { 1047 | "node": ">=8" 1048 | } 1049 | }, 1050 | "node_modules/supports-color": { 1051 | "version": "8.1.1", 1052 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1053 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1054 | "dependencies": { 1055 | "has-flag": "^4.0.0" 1056 | }, 1057 | "engines": { 1058 | "node": ">=10" 1059 | }, 1060 | "funding": { 1061 | "url": "https://github.com/chalk/supports-color?sponsor=1" 1062 | } 1063 | }, 1064 | "node_modules/supports-hyperlinks": { 1065 | "version": "2.2.0", 1066 | "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", 1067 | "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", 1068 | "dependencies": { 1069 | "has-flag": "^4.0.0", 1070 | "supports-color": "^7.0.0" 1071 | }, 1072 | "engines": { 1073 | "node": ">=8" 1074 | } 1075 | }, 1076 | "node_modules/supports-hyperlinks/node_modules/supports-color": { 1077 | "version": "7.2.0", 1078 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1079 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1080 | "dependencies": { 1081 | "has-flag": "^4.0.0" 1082 | }, 1083 | "engines": { 1084 | "node": ">=8" 1085 | } 1086 | }, 1087 | "node_modules/to-regex-range": { 1088 | "version": "5.0.1", 1089 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1090 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1091 | "dependencies": { 1092 | "is-number": "^7.0.0" 1093 | }, 1094 | "engines": { 1095 | "node": ">=8.0" 1096 | } 1097 | }, 1098 | "node_modules/tslib": { 1099 | "version": "2.3.1", 1100 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", 1101 | "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" 1102 | }, 1103 | "node_modules/type-fest": { 1104 | "version": "0.21.3", 1105 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 1106 | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", 1107 | "engines": { 1108 | "node": ">=10" 1109 | }, 1110 | "funding": { 1111 | "url": "https://github.com/sponsors/sindresorhus" 1112 | } 1113 | }, 1114 | "node_modules/universalify": { 1115 | "version": "0.1.2", 1116 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 1117 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 1118 | "engines": { 1119 | "node": ">= 4.0.0" 1120 | } 1121 | }, 1122 | "node_modules/which": { 1123 | "version": "1.3.1", 1124 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 1125 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 1126 | "dependencies": { 1127 | "isexe": "^2.0.0" 1128 | }, 1129 | "bin": { 1130 | "which": "bin/which" 1131 | } 1132 | }, 1133 | "node_modules/widest-line": { 1134 | "version": "3.1.0", 1135 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", 1136 | "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", 1137 | "dependencies": { 1138 | "string-width": "^4.0.0" 1139 | }, 1140 | "engines": { 1141 | "node": ">=8" 1142 | } 1143 | }, 1144 | "node_modules/wrap-ansi": { 1145 | "version": "7.0.0", 1146 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1147 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1148 | "dependencies": { 1149 | "ansi-styles": "^4.0.0", 1150 | "string-width": "^4.1.0", 1151 | "strip-ansi": "^6.0.0" 1152 | }, 1153 | "engines": { 1154 | "node": ">=10" 1155 | }, 1156 | "funding": { 1157 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1158 | } 1159 | }, 1160 | "node_modules/yallist": { 1161 | "version": "4.0.0", 1162 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1163 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 1164 | } 1165 | }, 1166 | "dependencies": { 1167 | "@nodelib/fs.scandir": { 1168 | "version": "2.1.5", 1169 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 1170 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 1171 | "requires": { 1172 | "@nodelib/fs.stat": "2.0.5", 1173 | "run-parallel": "^1.1.9" 1174 | } 1175 | }, 1176 | "@nodelib/fs.stat": { 1177 | "version": "2.0.5", 1178 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 1179 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" 1180 | }, 1181 | "@nodelib/fs.walk": { 1182 | "version": "1.2.8", 1183 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 1184 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 1185 | "requires": { 1186 | "@nodelib/fs.scandir": "2.1.5", 1187 | "fastq": "^1.6.0" 1188 | } 1189 | }, 1190 | "@oclif/command": { 1191 | "version": "1.8.0", 1192 | "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.0.tgz", 1193 | "integrity": "sha512-5vwpq6kbvwkQwKqAoOU3L72GZ3Ta8RRrewKj9OJRolx28KLJJ8Dg9Rf7obRwt5jQA9bkYd8gqzMTrI7H3xLfaw==", 1194 | "requires": { 1195 | "@oclif/config": "^1.15.1", 1196 | "@oclif/errors": "^1.3.3", 1197 | "@oclif/parser": "^3.8.3", 1198 | "@oclif/plugin-help": "^3", 1199 | "debug": "^4.1.1", 1200 | "semver": "^7.3.2" 1201 | } 1202 | }, 1203 | "@oclif/config": { 1204 | "version": "1.17.0", 1205 | "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.17.0.tgz", 1206 | "integrity": "sha512-Lmfuf6ubjQ4ifC/9bz1fSCHc6F6E653oyaRXxg+lgT4+bYf9bk+nqrUpAbrXyABkCqgIBiFr3J4zR/kiFdE1PA==", 1207 | "requires": { 1208 | "@oclif/errors": "^1.3.3", 1209 | "@oclif/parser": "^3.8.0", 1210 | "debug": "^4.1.1", 1211 | "globby": "^11.0.1", 1212 | "is-wsl": "^2.1.1", 1213 | "tslib": "^2.0.0" 1214 | } 1215 | }, 1216 | "@oclif/errors": { 1217 | "version": "1.3.5", 1218 | "resolved": "https://registry.npmjs.org/@oclif/errors/-/errors-1.3.5.tgz", 1219 | "integrity": "sha512-OivucXPH/eLLlOT7FkCMoZXiaVYf8I/w1eTAM1+gKzfhALwWTusxEx7wBmW0uzvkSg/9ovWLycPaBgJbM3LOCQ==", 1220 | "requires": { 1221 | "clean-stack": "^3.0.0", 1222 | "fs-extra": "^8.1", 1223 | "indent-string": "^4.0.0", 1224 | "strip-ansi": "^6.0.0", 1225 | "wrap-ansi": "^7.0.0" 1226 | } 1227 | }, 1228 | "@oclif/linewrap": { 1229 | "version": "1.0.0", 1230 | "resolved": "https://registry.npmjs.org/@oclif/linewrap/-/linewrap-1.0.0.tgz", 1231 | "integrity": "sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw==" 1232 | }, 1233 | "@oclif/parser": { 1234 | "version": "3.8.5", 1235 | "resolved": "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.5.tgz", 1236 | "integrity": "sha512-yojzeEfmSxjjkAvMRj0KzspXlMjCfBzNRPkWw8ZwOSoNWoJn+OCS/m/S+yfV6BvAM4u2lTzX9Y5rCbrFIgkJLg==", 1237 | "requires": { 1238 | "@oclif/errors": "^1.2.2", 1239 | "@oclif/linewrap": "^1.0.0", 1240 | "chalk": "^2.4.2", 1241 | "tslib": "^1.9.3" 1242 | }, 1243 | "dependencies": { 1244 | "ansi-styles": { 1245 | "version": "3.2.1", 1246 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1247 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1248 | "requires": { 1249 | "color-convert": "^1.9.0" 1250 | } 1251 | }, 1252 | "chalk": { 1253 | "version": "2.4.2", 1254 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1255 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1256 | "requires": { 1257 | "ansi-styles": "^3.2.1", 1258 | "escape-string-regexp": "^1.0.5", 1259 | "supports-color": "^5.3.0" 1260 | } 1261 | }, 1262 | "color-convert": { 1263 | "version": "1.9.3", 1264 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1265 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1266 | "requires": { 1267 | "color-name": "1.1.3" 1268 | } 1269 | }, 1270 | "color-name": { 1271 | "version": "1.1.3", 1272 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1273 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 1274 | }, 1275 | "escape-string-regexp": { 1276 | "version": "1.0.5", 1277 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1278 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 1279 | }, 1280 | "has-flag": { 1281 | "version": "3.0.0", 1282 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1283 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 1284 | }, 1285 | "supports-color": { 1286 | "version": "5.5.0", 1287 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1288 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1289 | "requires": { 1290 | "has-flag": "^3.0.0" 1291 | } 1292 | }, 1293 | "tslib": { 1294 | "version": "1.14.1", 1295 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1296 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 1297 | } 1298 | } 1299 | }, 1300 | "@oclif/plugin-help": { 1301 | "version": "3.2.3", 1302 | "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-3.2.3.tgz", 1303 | "integrity": "sha512-l2Pd0lbOMq4u/7xsl9hqISFqyR9gWEz/8+05xmrXFr67jXyS6EUCQB+mFBa0wepltrmJu0sAFg9AvA2mLaMMqQ==", 1304 | "requires": { 1305 | "@oclif/command": "^1.5.20", 1306 | "@oclif/config": "^1.15.1", 1307 | "@oclif/errors": "^1.2.2", 1308 | "chalk": "^4.1.0", 1309 | "indent-string": "^4.0.0", 1310 | "lodash.template": "^4.4.0", 1311 | "string-width": "^4.2.0", 1312 | "strip-ansi": "^6.0.0", 1313 | "widest-line": "^3.1.0", 1314 | "wrap-ansi": "^4.0.0" 1315 | }, 1316 | "dependencies": { 1317 | "ansi-regex": { 1318 | "version": "3.0.1", 1319 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", 1320 | "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==" 1321 | }, 1322 | "ansi-styles": { 1323 | "version": "3.2.1", 1324 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1325 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1326 | "requires": { 1327 | "color-convert": "^1.9.0" 1328 | } 1329 | }, 1330 | "color-convert": { 1331 | "version": "1.9.3", 1332 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1333 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1334 | "requires": { 1335 | "color-name": "1.1.3" 1336 | } 1337 | }, 1338 | "color-name": { 1339 | "version": "1.1.3", 1340 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1341 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 1342 | }, 1343 | "is-fullwidth-code-point": { 1344 | "version": "2.0.0", 1345 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1346 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" 1347 | }, 1348 | "wrap-ansi": { 1349 | "version": "4.0.0", 1350 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-4.0.0.tgz", 1351 | "integrity": "sha512-uMTsj9rDb0/7kk1PbcbCcwvHUxp60fGDB/NNXpVa0Q+ic/e7y5+BwTxKfQ33VYgDppSwi/FBzpetYzo8s6tfbg==", 1352 | "requires": { 1353 | "ansi-styles": "^3.2.0", 1354 | "string-width": "^2.1.1", 1355 | "strip-ansi": "^4.0.0" 1356 | }, 1357 | "dependencies": { 1358 | "string-width": { 1359 | "version": "2.1.1", 1360 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 1361 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 1362 | "requires": { 1363 | "is-fullwidth-code-point": "^2.0.0", 1364 | "strip-ansi": "^4.0.0" 1365 | } 1366 | }, 1367 | "strip-ansi": { 1368 | "version": "4.0.0", 1369 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1370 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1371 | "requires": { 1372 | "ansi-regex": "^3.0.0" 1373 | } 1374 | } 1375 | } 1376 | } 1377 | } 1378 | }, 1379 | "@oclif/screen": { 1380 | "version": "1.0.4", 1381 | "resolved": "https://registry.npmjs.org/@oclif/screen/-/screen-1.0.4.tgz", 1382 | "integrity": "sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw==" 1383 | }, 1384 | "ansi-escapes": { 1385 | "version": "4.3.2", 1386 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 1387 | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 1388 | "requires": { 1389 | "type-fest": "^0.21.3" 1390 | } 1391 | }, 1392 | "ansi-regex": { 1393 | "version": "5.0.1", 1394 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1395 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 1396 | }, 1397 | "ansi-styles": { 1398 | "version": "4.3.0", 1399 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1400 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1401 | "requires": { 1402 | "color-convert": "^2.0.1" 1403 | } 1404 | }, 1405 | "ansicolors": { 1406 | "version": "0.3.2", 1407 | "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", 1408 | "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=" 1409 | }, 1410 | "argparse": { 1411 | "version": "1.0.10", 1412 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 1413 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 1414 | "requires": { 1415 | "sprintf-js": "~1.0.2" 1416 | } 1417 | }, 1418 | "array-union": { 1419 | "version": "2.1.0", 1420 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 1421 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" 1422 | }, 1423 | "axios": { 1424 | "version": "0.21.2", 1425 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.2.tgz", 1426 | "integrity": "sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg==", 1427 | "requires": { 1428 | "follow-redirects": "^1.14.0" 1429 | } 1430 | }, 1431 | "braces": { 1432 | "version": "3.0.2", 1433 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1434 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1435 | "requires": { 1436 | "fill-range": "^7.0.1" 1437 | } 1438 | }, 1439 | "cardinal": { 1440 | "version": "2.1.1", 1441 | "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", 1442 | "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", 1443 | "requires": { 1444 | "ansicolors": "~0.3.2", 1445 | "redeyed": "~2.1.0" 1446 | } 1447 | }, 1448 | "chalk": { 1449 | "version": "4.1.2", 1450 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1451 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1452 | "requires": { 1453 | "ansi-styles": "^4.1.0", 1454 | "supports-color": "^7.1.0" 1455 | }, 1456 | "dependencies": { 1457 | "supports-color": { 1458 | "version": "7.2.0", 1459 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1460 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1461 | "requires": { 1462 | "has-flag": "^4.0.0" 1463 | } 1464 | } 1465 | } 1466 | }, 1467 | "clean-stack": { 1468 | "version": "3.0.1", 1469 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.1.tgz", 1470 | "integrity": "sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==", 1471 | "requires": { 1472 | "escape-string-regexp": "4.0.0" 1473 | } 1474 | }, 1475 | "cli-progress": { 1476 | "version": "3.9.0", 1477 | "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.9.0.tgz", 1478 | "integrity": "sha512-g7rLWfhAo/7pF+a/STFH/xPyosaL1zgADhI0OM83hl3c7S43iGvJWEAV2QuDOnQ8i6EMBj/u4+NTd0d5L+4JfA==", 1479 | "requires": { 1480 | "colors": "^1.1.2", 1481 | "string-width": "^4.2.0" 1482 | } 1483 | }, 1484 | "cli-ux": { 1485 | "version": "5.6.3", 1486 | "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-5.6.3.tgz", 1487 | "integrity": "sha512-/oDU4v8BiDjX2OKcSunGH0iGDiEtj2rZaGyqNuv9IT4CgcSMyVWAMfn0+rEHaOc4n9ka78B0wo1+N1QX89f7mw==", 1488 | "requires": { 1489 | "@oclif/command": "^1.6.0", 1490 | "@oclif/errors": "^1.2.1", 1491 | "@oclif/linewrap": "^1.0.0", 1492 | "@oclif/screen": "^1.0.3", 1493 | "ansi-escapes": "^4.3.0", 1494 | "ansi-styles": "^4.2.0", 1495 | "cardinal": "^2.1.1", 1496 | "chalk": "^4.1.0", 1497 | "clean-stack": "^3.0.0", 1498 | "cli-progress": "^3.4.0", 1499 | "extract-stack": "^2.0.0", 1500 | "fs-extra": "^8.1", 1501 | "hyperlinker": "^1.0.0", 1502 | "indent-string": "^4.0.0", 1503 | "is-wsl": "^2.2.0", 1504 | "js-yaml": "^3.13.1", 1505 | "lodash": "^4.17.11", 1506 | "natural-orderby": "^2.0.1", 1507 | "object-treeify": "^1.1.4", 1508 | "password-prompt": "^1.1.2", 1509 | "semver": "^7.3.2", 1510 | "string-width": "^4.2.0", 1511 | "strip-ansi": "^6.0.0", 1512 | "supports-color": "^8.1.0", 1513 | "supports-hyperlinks": "^2.1.0", 1514 | "tslib": "^2.0.0" 1515 | } 1516 | }, 1517 | "color-convert": { 1518 | "version": "2.0.1", 1519 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1520 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1521 | "requires": { 1522 | "color-name": "~1.1.4" 1523 | } 1524 | }, 1525 | "color-name": { 1526 | "version": "1.1.4", 1527 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1528 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 1529 | }, 1530 | "colors": { 1531 | "version": "1.4.0", 1532 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 1533 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" 1534 | }, 1535 | "cross-spawn": { 1536 | "version": "6.0.5", 1537 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 1538 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 1539 | "requires": { 1540 | "nice-try": "^1.0.4", 1541 | "path-key": "^2.0.1", 1542 | "semver": "^5.5.0", 1543 | "shebang-command": "^1.2.0", 1544 | "which": "^1.2.9" 1545 | }, 1546 | "dependencies": { 1547 | "semver": { 1548 | "version": "5.7.1", 1549 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1550 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 1551 | } 1552 | } 1553 | }, 1554 | "debug": { 1555 | "version": "4.3.2", 1556 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 1557 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 1558 | "requires": { 1559 | "ms": "2.1.2" 1560 | } 1561 | }, 1562 | "dir-glob": { 1563 | "version": "3.0.1", 1564 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 1565 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 1566 | "requires": { 1567 | "path-type": "^4.0.0" 1568 | } 1569 | }, 1570 | "emoji-regex": { 1571 | "version": "8.0.0", 1572 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1573 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 1574 | }, 1575 | "escape-string-regexp": { 1576 | "version": "4.0.0", 1577 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1578 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" 1579 | }, 1580 | "esprima": { 1581 | "version": "4.0.1", 1582 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1583 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" 1584 | }, 1585 | "extract-stack": { 1586 | "version": "2.0.0", 1587 | "resolved": "https://registry.npmjs.org/extract-stack/-/extract-stack-2.0.0.tgz", 1588 | "integrity": "sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ==" 1589 | }, 1590 | "fast-glob": { 1591 | "version": "3.2.7", 1592 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", 1593 | "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", 1594 | "requires": { 1595 | "@nodelib/fs.stat": "^2.0.2", 1596 | "@nodelib/fs.walk": "^1.2.3", 1597 | "glob-parent": "^5.1.2", 1598 | "merge2": "^1.3.0", 1599 | "micromatch": "^4.0.4" 1600 | } 1601 | }, 1602 | "fastq": { 1603 | "version": "1.11.1", 1604 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", 1605 | "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", 1606 | "requires": { 1607 | "reusify": "^1.0.4" 1608 | } 1609 | }, 1610 | "fill-range": { 1611 | "version": "7.0.1", 1612 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1613 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1614 | "requires": { 1615 | "to-regex-range": "^5.0.1" 1616 | } 1617 | }, 1618 | "follow-redirects": { 1619 | "version": "1.14.8", 1620 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", 1621 | "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==" 1622 | }, 1623 | "fs-extra": { 1624 | "version": "8.1.0", 1625 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 1626 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 1627 | "requires": { 1628 | "graceful-fs": "^4.2.0", 1629 | "jsonfile": "^4.0.0", 1630 | "universalify": "^0.1.0" 1631 | } 1632 | }, 1633 | "glob-parent": { 1634 | "version": "5.1.2", 1635 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1636 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1637 | "requires": { 1638 | "is-glob": "^4.0.1" 1639 | } 1640 | }, 1641 | "globby": { 1642 | "version": "11.0.4", 1643 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", 1644 | "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", 1645 | "requires": { 1646 | "array-union": "^2.1.0", 1647 | "dir-glob": "^3.0.1", 1648 | "fast-glob": "^3.1.1", 1649 | "ignore": "^5.1.4", 1650 | "merge2": "^1.3.0", 1651 | "slash": "^3.0.0" 1652 | } 1653 | }, 1654 | "graceful-fs": { 1655 | "version": "4.2.8", 1656 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", 1657 | "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" 1658 | }, 1659 | "has-flag": { 1660 | "version": "4.0.0", 1661 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1662 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 1663 | }, 1664 | "hyperlinker": { 1665 | "version": "1.0.0", 1666 | "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", 1667 | "integrity": "sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==" 1668 | }, 1669 | "ignore": { 1670 | "version": "5.1.8", 1671 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", 1672 | "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" 1673 | }, 1674 | "indent-string": { 1675 | "version": "4.0.0", 1676 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 1677 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" 1678 | }, 1679 | "is-docker": { 1680 | "version": "2.2.1", 1681 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", 1682 | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" 1683 | }, 1684 | "is-extglob": { 1685 | "version": "2.1.1", 1686 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1687 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" 1688 | }, 1689 | "is-fullwidth-code-point": { 1690 | "version": "3.0.0", 1691 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1692 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 1693 | }, 1694 | "is-glob": { 1695 | "version": "4.0.1", 1696 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1697 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1698 | "requires": { 1699 | "is-extglob": "^2.1.1" 1700 | } 1701 | }, 1702 | "is-number": { 1703 | "version": "7.0.0", 1704 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1705 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 1706 | }, 1707 | "is-wsl": { 1708 | "version": "2.2.0", 1709 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", 1710 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", 1711 | "requires": { 1712 | "is-docker": "^2.0.0" 1713 | } 1714 | }, 1715 | "isexe": { 1716 | "version": "2.0.0", 1717 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1718 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" 1719 | }, 1720 | "js-yaml": { 1721 | "version": "3.14.1", 1722 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 1723 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 1724 | "requires": { 1725 | "argparse": "^1.0.7", 1726 | "esprima": "^4.0.0" 1727 | } 1728 | }, 1729 | "jsonfile": { 1730 | "version": "4.0.0", 1731 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 1732 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 1733 | "requires": { 1734 | "graceful-fs": "^4.1.6" 1735 | } 1736 | }, 1737 | "lodash": { 1738 | "version": "4.17.21", 1739 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1740 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1741 | }, 1742 | "lodash._reinterpolate": { 1743 | "version": "3.0.0", 1744 | "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", 1745 | "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" 1746 | }, 1747 | "lodash.template": { 1748 | "version": "4.5.0", 1749 | "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", 1750 | "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", 1751 | "requires": { 1752 | "lodash._reinterpolate": "^3.0.0", 1753 | "lodash.templatesettings": "^4.0.0" 1754 | } 1755 | }, 1756 | "lodash.templatesettings": { 1757 | "version": "4.2.0", 1758 | "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", 1759 | "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", 1760 | "requires": { 1761 | "lodash._reinterpolate": "^3.0.0" 1762 | } 1763 | }, 1764 | "lru-cache": { 1765 | "version": "6.0.0", 1766 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1767 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1768 | "requires": { 1769 | "yallist": "^4.0.0" 1770 | } 1771 | }, 1772 | "merge2": { 1773 | "version": "1.4.1", 1774 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1775 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" 1776 | }, 1777 | "micromatch": { 1778 | "version": "4.0.4", 1779 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", 1780 | "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", 1781 | "requires": { 1782 | "braces": "^3.0.1", 1783 | "picomatch": "^2.2.3" 1784 | } 1785 | }, 1786 | "ms": { 1787 | "version": "2.1.2", 1788 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1789 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1790 | }, 1791 | "natural-orderby": { 1792 | "version": "2.0.3", 1793 | "resolved": "https://registry.npmjs.org/natural-orderby/-/natural-orderby-2.0.3.tgz", 1794 | "integrity": "sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==" 1795 | }, 1796 | "nice-try": { 1797 | "version": "1.0.5", 1798 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 1799 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" 1800 | }, 1801 | "object-treeify": { 1802 | "version": "1.1.33", 1803 | "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", 1804 | "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==" 1805 | }, 1806 | "password-prompt": { 1807 | "version": "1.1.2", 1808 | "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz", 1809 | "integrity": "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==", 1810 | "requires": { 1811 | "ansi-escapes": "^3.1.0", 1812 | "cross-spawn": "^6.0.5" 1813 | }, 1814 | "dependencies": { 1815 | "ansi-escapes": { 1816 | "version": "3.2.0", 1817 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 1818 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" 1819 | } 1820 | } 1821 | }, 1822 | "path-key": { 1823 | "version": "2.0.1", 1824 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 1825 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" 1826 | }, 1827 | "path-type": { 1828 | "version": "4.0.0", 1829 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1830 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" 1831 | }, 1832 | "picomatch": { 1833 | "version": "2.3.0", 1834 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", 1835 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" 1836 | }, 1837 | "queue-microtask": { 1838 | "version": "1.2.3", 1839 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1840 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" 1841 | }, 1842 | "redeyed": { 1843 | "version": "2.1.1", 1844 | "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", 1845 | "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", 1846 | "requires": { 1847 | "esprima": "~4.0.0" 1848 | } 1849 | }, 1850 | "reusify": { 1851 | "version": "1.0.4", 1852 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1853 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" 1854 | }, 1855 | "run-parallel": { 1856 | "version": "1.2.0", 1857 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1858 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1859 | "requires": { 1860 | "queue-microtask": "^1.2.2" 1861 | } 1862 | }, 1863 | "semver": { 1864 | "version": "7.3.5", 1865 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 1866 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 1867 | "requires": { 1868 | "lru-cache": "^6.0.0" 1869 | } 1870 | }, 1871 | "shebang-command": { 1872 | "version": "1.2.0", 1873 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 1874 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 1875 | "requires": { 1876 | "shebang-regex": "^1.0.0" 1877 | } 1878 | }, 1879 | "shebang-regex": { 1880 | "version": "1.0.0", 1881 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 1882 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" 1883 | }, 1884 | "slash": { 1885 | "version": "3.0.0", 1886 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 1887 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" 1888 | }, 1889 | "sprintf-js": { 1890 | "version": "1.0.3", 1891 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1892 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 1893 | }, 1894 | "string-width": { 1895 | "version": "4.2.2", 1896 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 1897 | "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 1898 | "requires": { 1899 | "emoji-regex": "^8.0.0", 1900 | "is-fullwidth-code-point": "^3.0.0", 1901 | "strip-ansi": "^6.0.0" 1902 | } 1903 | }, 1904 | "strip-ansi": { 1905 | "version": "6.0.0", 1906 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1907 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1908 | "requires": { 1909 | "ansi-regex": "^5.0.0" 1910 | } 1911 | }, 1912 | "supports-color": { 1913 | "version": "8.1.1", 1914 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1915 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1916 | "requires": { 1917 | "has-flag": "^4.0.0" 1918 | } 1919 | }, 1920 | "supports-hyperlinks": { 1921 | "version": "2.2.0", 1922 | "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", 1923 | "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", 1924 | "requires": { 1925 | "has-flag": "^4.0.0", 1926 | "supports-color": "^7.0.0" 1927 | }, 1928 | "dependencies": { 1929 | "supports-color": { 1930 | "version": "7.2.0", 1931 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1932 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1933 | "requires": { 1934 | "has-flag": "^4.0.0" 1935 | } 1936 | } 1937 | } 1938 | }, 1939 | "to-regex-range": { 1940 | "version": "5.0.1", 1941 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1942 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1943 | "requires": { 1944 | "is-number": "^7.0.0" 1945 | } 1946 | }, 1947 | "tslib": { 1948 | "version": "2.3.1", 1949 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", 1950 | "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" 1951 | }, 1952 | "type-fest": { 1953 | "version": "0.21.3", 1954 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 1955 | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" 1956 | }, 1957 | "universalify": { 1958 | "version": "0.1.2", 1959 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 1960 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" 1961 | }, 1962 | "which": { 1963 | "version": "1.3.1", 1964 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 1965 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 1966 | "requires": { 1967 | "isexe": "^2.0.0" 1968 | } 1969 | }, 1970 | "widest-line": { 1971 | "version": "3.1.0", 1972 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", 1973 | "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", 1974 | "requires": { 1975 | "string-width": "^4.0.0" 1976 | } 1977 | }, 1978 | "wrap-ansi": { 1979 | "version": "7.0.0", 1980 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1981 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1982 | "requires": { 1983 | "ansi-styles": "^4.0.0", 1984 | "string-width": "^4.1.0", 1985 | "strip-ansi": "^6.0.0" 1986 | } 1987 | }, 1988 | "yallist": { 1989 | "version": "4.0.0", 1990 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1991 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 1992 | } 1993 | } 1994 | } 1995 | -------------------------------------------------------------------------------- /nodeJS/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "voiceflow-api-nodejs-example", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "axios": "^0.21.2", 13 | "cli-ux": "^5.6.3" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /python/README.md: -------------------------------------------------------------------------------- 1 | # Voiceflow API Python Example 2 | 3 | Set up your Voiceflow project with Python in a matter of minutes. This example can be adapted to run as a server with Django or Flask. 4 | 5 | This example enables you to chat with your project on the terminal. 6 | 7 | ## Documentation 8 | 9 | For additional information about the Voiceflow API, visit the [documentation](https://www.voiceflow.com/api/dialog-manager). 10 | 11 | ## Setup 12 | 13 | 1. If you do not have python, install Python from [python.org](https://www.python.org/downloads), or follow an equivalent guide. 14 | 2. Replace `'YOUR_API_KEY_HERE'` in `index.py` with your Dialog Manager API Key. You can find it under the integrations tab: 15 | 16 | 17 | 18 | 3. run `python index.py` to start your chat! 19 | 20 | (If you have both Python 2 and Python 3 on your computer, you might likely need to run `python3 index.py`). 21 | 22 | ## Example 23 | 24 | What it might look like in action: 25 | 26 | ``` 27 | ➜ python git:(master) ✗ python index.py 28 | > What is your name? 29 | Tyler 30 | what can I do for you? 31 | > Say something 32 | send email 33 | who is the recipient? 34 | > Say something 35 | tyler@voiceflow.com 36 | what is the title of your email? 37 | > Say something 38 | hello world 39 | sending the email for tyler@voiceflow.com called hello world , is that correct? 40 | > Say something 41 | yes 42 | successfully sent the email for tyler@voiceflow.com called hello world 43 | The end! Start me again with `python index.py` or `python3 index.py` 44 | ``` 45 | -------------------------------------------------------------------------------- /python/index.py: -------------------------------------------------------------------------------- 1 | # meant for Python 3, will not work with Python 2 2 | import requests # pip install requests 3 | 4 | api_key = 'YOUR_API_KEY_HERE' # it should look like this: VF.DM.XXXXXXX.XXXXXX... keep this a secret! 5 | 6 | # user_id defines who is having the conversation, e.g. steve, john.doe@gmail.com, username_464 7 | def interact(user_id, request): 8 | response = requests.post( 9 | f'https://general-runtime.voiceflow.com/state/user/{user_id}/interact', 10 | json={ 'request': request }, 11 | headers={ 'Authorization': api_key }, 12 | ) 13 | 14 | for trace in response.json(): 15 | if trace['type'] == 'speak' or trace['type'] == 'text': 16 | print(trace['payload']['message']) 17 | elif trace['type'] == 'end': 18 | # an end trace means the the voiceflow dialog has ended 19 | return False 20 | return True 21 | 22 | name = input('> What is your name?\n') 23 | isRunning = interact(name, { 'type': 'launch' }) 24 | 25 | while (isRunning): 26 | nextInput = input('> Say something\n') 27 | # send a simple text type request with the user input 28 | isRunning = interact(name, { 'type': 'text', 'payload': nextInput }) 29 | 30 | input('The end! Start me again with `python index.py` or `python3 index.py`') -------------------------------------------------------------------------------- /react/App.js: -------------------------------------------------------------------------------- 1 | import './App.css'; 2 | import React, {useState} from "react"; 3 | 4 | const API_KEY = 'YOUR_API_KEY_HERE'; // change this to YOUR API key, it should look like this: VF.DM.XXXXXXX.XXXXXX... keep this a secret! 5 | 6 | const RUNTIME_API_URL = 'https://general-runtime.voiceflow.com/' // change this to whatever your API URL is 7 | 8 | const App = props => { 9 | 10 | const [user, setUser] = useState(""); 11 | const [message, setMsg] = useState(""); 12 | const [resArr, updateArr] = useState([]); 13 | 14 | const handleClick = async() => { 15 | let data = await fetch(RUNTIME_API_URL, { 16 | headers: { Authorization: apiKey, 'Content-Type': 'application/json' }, 17 | method: "POST", 18 | body: JSON.stringify({ 19 | "request": { 20 | "type": "text", 21 | "payload": message 22 | } 23 | }) 24 | }) 25 | let postRes = await data.json(); 26 | console.log(postRes); 27 | for(let i=0; i < postRes.length; i++){ 28 | if(postRes[i].type === "text"){ 29 | updateArr(arr => [...arr, message + ">" + postRes[i].payload.message]); 30 | } 31 | } 32 | } 33 | 34 | 35 | const handleChangeUser = (event) => setUser(event.target.value); 36 | 37 | const handleChange = (event) => setMsg(event.target.value); 38 | 39 | return ( 40 | 41 |
42 | 45 | 49 |

{resArr.map(e => 50 |

{e}

51 | )} 52 |

53 |

{'>'} {message}

54 |
55 | ); 56 | }; 57 | 58 | export default App; 59 | -------------------------------------------------------------------------------- /react/README.md: -------------------------------------------------------------------------------- 1 | # Voiceflow React API Example 2 | 3 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). 4 | 5 | ### Setup 6 | 7 | 1. If you do not have node, install _Node.js_ and _npm_ from [nodejs.org](https://nodejs.org/), or follow an equivalent guide. 8 | 1. Run `npm install` 9 | 1. Run `npx create-react-app my-app` to get started 10 | 1. Do `cd my-app` 11 | 1. Replace `'YOUR_API_KEY_HERE'` in `App.js` with your API Key 12 | You can find them under the integrations tab: 13 | 14 | 1. Run `npm start` to start your chat! 15 | 16 | ### Example 17 | ``` 18 | /> Hello 19 | 20 | What can I do for you? > Send an email 21 | 22 | Who is the recipient? > Tyler@Voiceflow.com 23 | 24 | What is the title of your email? > Hello Tyler 25 | 26 | Sending the email to Tyler@Voiceflow.com called "Hello Tyler", is that correct? > yes 27 | 28 | Successfully sent the email to Tyler@Voiceflow.com called "Hello Tyler" 29 | ``` 30 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { "enabled": false } 2 | -------------------------------------------------------------------------------- /rust/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | debug/ 4 | target/ 5 | 6 | # These are backup files generated by rustfmt 7 | **/*.rs.bk 8 | -------------------------------------------------------------------------------- /rust/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "autocfg" 7 | version = "1.0.1" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" 10 | 11 | [[package]] 12 | name = "base64" 13 | version = "0.13.0" 14 | source = "registry+https://github.com/rust-lang/crates.io-index" 15 | checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" 16 | 17 | [[package]] 18 | name = "bitflags" 19 | version = "1.3.2" 20 | source = "registry+https://github.com/rust-lang/crates.io-index" 21 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 22 | 23 | [[package]] 24 | name = "bumpalo" 25 | version = "3.8.0" 26 | source = "registry+https://github.com/rust-lang/crates.io-index" 27 | checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c" 28 | 29 | [[package]] 30 | name = "bytes" 31 | version = "1.1.0" 32 | source = "registry+https://github.com/rust-lang/crates.io-index" 33 | checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" 34 | 35 | [[package]] 36 | name = "cc" 37 | version = "1.0.72" 38 | source = "registry+https://github.com/rust-lang/crates.io-index" 39 | checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" 40 | 41 | [[package]] 42 | name = "cfg-if" 43 | version = "0.1.10" 44 | source = "registry+https://github.com/rust-lang/crates.io-index" 45 | checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" 46 | 47 | [[package]] 48 | name = "cfg-if" 49 | version = "1.0.0" 50 | source = "registry+https://github.com/rust-lang/crates.io-index" 51 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 52 | 53 | [[package]] 54 | name = "core-foundation" 55 | version = "0.9.2" 56 | source = "registry+https://github.com/rust-lang/crates.io-index" 57 | checksum = "6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3" 58 | dependencies = [ 59 | "core-foundation-sys", 60 | "libc", 61 | ] 62 | 63 | [[package]] 64 | name = "core-foundation-sys" 65 | version = "0.8.3" 66 | source = "registry+https://github.com/rust-lang/crates.io-index" 67 | checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" 68 | 69 | [[package]] 70 | name = "dirs-next" 71 | version = "1.0.2" 72 | source = "registry+https://github.com/rust-lang/crates.io-index" 73 | checksum = "cf36e65a80337bea855cd4ef9b8401ffce06a7baedf2e85ec467b1ac3f6e82b6" 74 | dependencies = [ 75 | "cfg-if 1.0.0", 76 | "dirs-sys-next", 77 | ] 78 | 79 | [[package]] 80 | name = "dirs-sys-next" 81 | version = "0.1.2" 82 | source = "registry+https://github.com/rust-lang/crates.io-index" 83 | checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" 84 | dependencies = [ 85 | "libc", 86 | "redox_users", 87 | "winapi", 88 | ] 89 | 90 | [[package]] 91 | name = "encoding_rs" 92 | version = "0.8.30" 93 | source = "registry+https://github.com/rust-lang/crates.io-index" 94 | checksum = "7896dc8abb250ffdda33912550faa54c88ec8b998dec0b2c55ab224921ce11df" 95 | dependencies = [ 96 | "cfg-if 1.0.0", 97 | ] 98 | 99 | [[package]] 100 | name = "fnv" 101 | version = "1.0.7" 102 | source = "registry+https://github.com/rust-lang/crates.io-index" 103 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 104 | 105 | [[package]] 106 | name = "foreign-types" 107 | version = "0.3.2" 108 | source = "registry+https://github.com/rust-lang/crates.io-index" 109 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 110 | dependencies = [ 111 | "foreign-types-shared", 112 | ] 113 | 114 | [[package]] 115 | name = "foreign-types-shared" 116 | version = "0.1.1" 117 | source = "registry+https://github.com/rust-lang/crates.io-index" 118 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 119 | 120 | [[package]] 121 | name = "form_urlencoded" 122 | version = "1.0.1" 123 | source = "registry+https://github.com/rust-lang/crates.io-index" 124 | checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" 125 | dependencies = [ 126 | "matches", 127 | "percent-encoding", 128 | ] 129 | 130 | [[package]] 131 | name = "futures-channel" 132 | version = "0.3.18" 133 | source = "registry+https://github.com/rust-lang/crates.io-index" 134 | checksum = "7fc8cd39e3dbf865f7340dce6a2d401d24fd37c6fe6c4f0ee0de8bfca2252d27" 135 | dependencies = [ 136 | "futures-core", 137 | ] 138 | 139 | [[package]] 140 | name = "futures-core" 141 | version = "0.3.18" 142 | source = "registry+https://github.com/rust-lang/crates.io-index" 143 | checksum = "629316e42fe7c2a0b9a65b47d159ceaa5453ab14e8f0a3c5eedbb8cd55b4a445" 144 | 145 | [[package]] 146 | name = "futures-io" 147 | version = "0.3.18" 148 | source = "registry+https://github.com/rust-lang/crates.io-index" 149 | checksum = "e481354db6b5c353246ccf6a728b0c5511d752c08da7260546fc0933869daa11" 150 | 151 | [[package]] 152 | name = "futures-sink" 153 | version = "0.3.18" 154 | source = "registry+https://github.com/rust-lang/crates.io-index" 155 | checksum = "996c6442437b62d21a32cd9906f9c41e7dc1e19a9579843fad948696769305af" 156 | 157 | [[package]] 158 | name = "futures-task" 159 | version = "0.3.18" 160 | source = "registry+https://github.com/rust-lang/crates.io-index" 161 | checksum = "dabf1872aaab32c886832f2276d2f5399887e2bd613698a02359e4ea83f8de12" 162 | 163 | [[package]] 164 | name = "futures-util" 165 | version = "0.3.17" 166 | source = "registry+https://github.com/rust-lang/crates.io-index" 167 | checksum = "36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481" 168 | dependencies = [ 169 | "autocfg", 170 | "futures-core", 171 | "futures-io", 172 | "futures-task", 173 | "memchr", 174 | "pin-project-lite", 175 | "pin-utils", 176 | "slab", 177 | ] 178 | 179 | [[package]] 180 | name = "getrandom" 181 | version = "0.2.3" 182 | source = "registry+https://github.com/rust-lang/crates.io-index" 183 | checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" 184 | dependencies = [ 185 | "cfg-if 1.0.0", 186 | "libc", 187 | "wasi", 188 | ] 189 | 190 | [[package]] 191 | name = "h2" 192 | version = "0.3.9" 193 | source = "registry+https://github.com/rust-lang/crates.io-index" 194 | checksum = "8f072413d126e57991455e0a922b31e4c8ba7c2ffbebf6b78b4f8521397d65cd" 195 | dependencies = [ 196 | "bytes", 197 | "fnv", 198 | "futures-core", 199 | "futures-sink", 200 | "futures-util", 201 | "http", 202 | "indexmap", 203 | "slab", 204 | "tokio", 205 | "tokio-util", 206 | "tracing", 207 | ] 208 | 209 | [[package]] 210 | name = "hashbrown" 211 | version = "0.11.2" 212 | source = "registry+https://github.com/rust-lang/crates.io-index" 213 | checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" 214 | 215 | [[package]] 216 | name = "hermit-abi" 217 | version = "0.1.19" 218 | source = "registry+https://github.com/rust-lang/crates.io-index" 219 | checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" 220 | dependencies = [ 221 | "libc", 222 | ] 223 | 224 | [[package]] 225 | name = "http" 226 | version = "0.2.5" 227 | source = "registry+https://github.com/rust-lang/crates.io-index" 228 | checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b" 229 | dependencies = [ 230 | "bytes", 231 | "fnv", 232 | "itoa 0.4.8", 233 | ] 234 | 235 | [[package]] 236 | name = "http-body" 237 | version = "0.4.4" 238 | source = "registry+https://github.com/rust-lang/crates.io-index" 239 | checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" 240 | dependencies = [ 241 | "bytes", 242 | "http", 243 | "pin-project-lite", 244 | ] 245 | 246 | [[package]] 247 | name = "httparse" 248 | version = "1.5.1" 249 | source = "registry+https://github.com/rust-lang/crates.io-index" 250 | checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" 251 | 252 | [[package]] 253 | name = "httpdate" 254 | version = "1.0.2" 255 | source = "registry+https://github.com/rust-lang/crates.io-index" 256 | checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" 257 | 258 | [[package]] 259 | name = "hyper" 260 | version = "0.14.16" 261 | source = "registry+https://github.com/rust-lang/crates.io-index" 262 | checksum = "b7ec3e62bdc98a2f0393a5048e4c30ef659440ea6e0e572965103e72bd836f55" 263 | dependencies = [ 264 | "bytes", 265 | "futures-channel", 266 | "futures-core", 267 | "futures-util", 268 | "h2", 269 | "http", 270 | "http-body", 271 | "httparse", 272 | "httpdate", 273 | "itoa 0.4.8", 274 | "pin-project-lite", 275 | "socket2", 276 | "tokio", 277 | "tower-service", 278 | "tracing", 279 | "want", 280 | ] 281 | 282 | [[package]] 283 | name = "hyper-tls" 284 | version = "0.5.0" 285 | source = "registry+https://github.com/rust-lang/crates.io-index" 286 | checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" 287 | dependencies = [ 288 | "bytes", 289 | "hyper", 290 | "native-tls", 291 | "tokio", 292 | "tokio-native-tls", 293 | ] 294 | 295 | [[package]] 296 | name = "idna" 297 | version = "0.2.3" 298 | source = "registry+https://github.com/rust-lang/crates.io-index" 299 | checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" 300 | dependencies = [ 301 | "matches", 302 | "unicode-bidi", 303 | "unicode-normalization", 304 | ] 305 | 306 | [[package]] 307 | name = "indexmap" 308 | version = "1.7.0" 309 | source = "registry+https://github.com/rust-lang/crates.io-index" 310 | checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" 311 | dependencies = [ 312 | "autocfg", 313 | "hashbrown", 314 | ] 315 | 316 | [[package]] 317 | name = "ipnet" 318 | version = "2.3.1" 319 | source = "registry+https://github.com/rust-lang/crates.io-index" 320 | checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" 321 | 322 | [[package]] 323 | name = "itoa" 324 | version = "0.4.8" 325 | source = "registry+https://github.com/rust-lang/crates.io-index" 326 | checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" 327 | 328 | [[package]] 329 | name = "itoa" 330 | version = "1.0.1" 331 | source = "registry+https://github.com/rust-lang/crates.io-index" 332 | checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" 333 | 334 | [[package]] 335 | name = "js-sys" 336 | version = "0.3.55" 337 | source = "registry+https://github.com/rust-lang/crates.io-index" 338 | checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84" 339 | dependencies = [ 340 | "wasm-bindgen", 341 | ] 342 | 343 | [[package]] 344 | name = "lazy_static" 345 | version = "1.4.0" 346 | source = "registry+https://github.com/rust-lang/crates.io-index" 347 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 348 | 349 | [[package]] 350 | name = "libc" 351 | version = "0.2.112" 352 | source = "registry+https://github.com/rust-lang/crates.io-index" 353 | checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125" 354 | 355 | [[package]] 356 | name = "log" 357 | version = "0.4.14" 358 | source = "registry+https://github.com/rust-lang/crates.io-index" 359 | checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" 360 | dependencies = [ 361 | "cfg-if 1.0.0", 362 | ] 363 | 364 | [[package]] 365 | name = "matches" 366 | version = "0.1.9" 367 | source = "registry+https://github.com/rust-lang/crates.io-index" 368 | checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" 369 | 370 | [[package]] 371 | name = "memchr" 372 | version = "2.4.1" 373 | source = "registry+https://github.com/rust-lang/crates.io-index" 374 | checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" 375 | 376 | [[package]] 377 | name = "mime" 378 | version = "0.3.16" 379 | source = "registry+https://github.com/rust-lang/crates.io-index" 380 | checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" 381 | 382 | [[package]] 383 | name = "mio" 384 | version = "0.7.14" 385 | source = "registry+https://github.com/rust-lang/crates.io-index" 386 | checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" 387 | dependencies = [ 388 | "libc", 389 | "log", 390 | "miow", 391 | "ntapi", 392 | "winapi", 393 | ] 394 | 395 | [[package]] 396 | name = "miow" 397 | version = "0.3.7" 398 | source = "registry+https://github.com/rust-lang/crates.io-index" 399 | checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" 400 | dependencies = [ 401 | "winapi", 402 | ] 403 | 404 | [[package]] 405 | name = "native-tls" 406 | version = "0.2.8" 407 | source = "registry+https://github.com/rust-lang/crates.io-index" 408 | checksum = "48ba9f7719b5a0f42f338907614285fb5fd70e53858141f69898a1fb7203b24d" 409 | dependencies = [ 410 | "lazy_static", 411 | "libc", 412 | "log", 413 | "openssl", 414 | "openssl-probe", 415 | "openssl-sys", 416 | "schannel", 417 | "security-framework", 418 | "security-framework-sys", 419 | "tempfile", 420 | ] 421 | 422 | [[package]] 423 | name = "nix" 424 | version = "0.18.0" 425 | source = "registry+https://github.com/rust-lang/crates.io-index" 426 | checksum = "83450fe6a6142ddd95fb064b746083fc4ef1705fe81f64a64e1d4b39f54a1055" 427 | dependencies = [ 428 | "bitflags", 429 | "cc", 430 | "cfg-if 0.1.10", 431 | "libc", 432 | ] 433 | 434 | [[package]] 435 | name = "ntapi" 436 | version = "0.3.6" 437 | source = "registry+https://github.com/rust-lang/crates.io-index" 438 | checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" 439 | dependencies = [ 440 | "winapi", 441 | ] 442 | 443 | [[package]] 444 | name = "num_cpus" 445 | version = "1.13.0" 446 | source = "registry+https://github.com/rust-lang/crates.io-index" 447 | checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" 448 | dependencies = [ 449 | "hermit-abi", 450 | "libc", 451 | ] 452 | 453 | [[package]] 454 | name = "once_cell" 455 | version = "1.9.0" 456 | source = "registry+https://github.com/rust-lang/crates.io-index" 457 | checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" 458 | 459 | [[package]] 460 | name = "openssl" 461 | version = "0.10.38" 462 | source = "registry+https://github.com/rust-lang/crates.io-index" 463 | checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95" 464 | dependencies = [ 465 | "bitflags", 466 | "cfg-if 1.0.0", 467 | "foreign-types", 468 | "libc", 469 | "once_cell", 470 | "openssl-sys", 471 | ] 472 | 473 | [[package]] 474 | name = "openssl-probe" 475 | version = "0.1.4" 476 | source = "registry+https://github.com/rust-lang/crates.io-index" 477 | checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" 478 | 479 | [[package]] 480 | name = "openssl-sys" 481 | version = "0.9.72" 482 | source = "registry+https://github.com/rust-lang/crates.io-index" 483 | checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb" 484 | dependencies = [ 485 | "autocfg", 486 | "cc", 487 | "libc", 488 | "pkg-config", 489 | "vcpkg", 490 | ] 491 | 492 | [[package]] 493 | name = "percent-encoding" 494 | version = "2.1.0" 495 | source = "registry+https://github.com/rust-lang/crates.io-index" 496 | checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" 497 | 498 | [[package]] 499 | name = "pin-project-lite" 500 | version = "0.2.7" 501 | source = "registry+https://github.com/rust-lang/crates.io-index" 502 | checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" 503 | 504 | [[package]] 505 | name = "pin-utils" 506 | version = "0.1.0" 507 | source = "registry+https://github.com/rust-lang/crates.io-index" 508 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 509 | 510 | [[package]] 511 | name = "pkg-config" 512 | version = "0.3.24" 513 | source = "registry+https://github.com/rust-lang/crates.io-index" 514 | checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" 515 | 516 | [[package]] 517 | name = "ppv-lite86" 518 | version = "0.2.15" 519 | source = "registry+https://github.com/rust-lang/crates.io-index" 520 | checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba" 521 | 522 | [[package]] 523 | name = "proc-macro2" 524 | version = "1.0.34" 525 | source = "registry+https://github.com/rust-lang/crates.io-index" 526 | checksum = "2f84e92c0f7c9d58328b85a78557813e4bd845130db68d7184635344399423b1" 527 | dependencies = [ 528 | "unicode-xid", 529 | ] 530 | 531 | [[package]] 532 | name = "promptly" 533 | version = "0.3.0" 534 | source = "registry+https://github.com/rust-lang/crates.io-index" 535 | checksum = "b99cfb0289110d969dd21637cfbc922584329bc9e5037c5e576325c615658509" 536 | dependencies = [ 537 | "rustyline", 538 | ] 539 | 540 | [[package]] 541 | name = "quote" 542 | version = "1.0.10" 543 | source = "registry+https://github.com/rust-lang/crates.io-index" 544 | checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" 545 | dependencies = [ 546 | "proc-macro2", 547 | ] 548 | 549 | [[package]] 550 | name = "rand" 551 | version = "0.8.4" 552 | source = "registry+https://github.com/rust-lang/crates.io-index" 553 | checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" 554 | dependencies = [ 555 | "libc", 556 | "rand_chacha", 557 | "rand_core", 558 | "rand_hc", 559 | ] 560 | 561 | [[package]] 562 | name = "rand_chacha" 563 | version = "0.3.1" 564 | source = "registry+https://github.com/rust-lang/crates.io-index" 565 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 566 | dependencies = [ 567 | "ppv-lite86", 568 | "rand_core", 569 | ] 570 | 571 | [[package]] 572 | name = "rand_core" 573 | version = "0.6.3" 574 | source = "registry+https://github.com/rust-lang/crates.io-index" 575 | checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" 576 | dependencies = [ 577 | "getrandom", 578 | ] 579 | 580 | [[package]] 581 | name = "rand_hc" 582 | version = "0.3.1" 583 | source = "registry+https://github.com/rust-lang/crates.io-index" 584 | checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" 585 | dependencies = [ 586 | "rand_core", 587 | ] 588 | 589 | [[package]] 590 | name = "redox_syscall" 591 | version = "0.2.10" 592 | source = "registry+https://github.com/rust-lang/crates.io-index" 593 | checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" 594 | dependencies = [ 595 | "bitflags", 596 | ] 597 | 598 | [[package]] 599 | name = "redox_users" 600 | version = "0.4.0" 601 | source = "registry+https://github.com/rust-lang/crates.io-index" 602 | checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" 603 | dependencies = [ 604 | "getrandom", 605 | "redox_syscall", 606 | ] 607 | 608 | [[package]] 609 | name = "remove_dir_all" 610 | version = "0.5.3" 611 | source = "registry+https://github.com/rust-lang/crates.io-index" 612 | checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" 613 | dependencies = [ 614 | "winapi", 615 | ] 616 | 617 | [[package]] 618 | name = "reqwest" 619 | version = "0.11.7" 620 | source = "registry+https://github.com/rust-lang/crates.io-index" 621 | checksum = "07bea77bc708afa10e59905c3d4af7c8fd43c9214251673095ff8b14345fcbc5" 622 | dependencies = [ 623 | "base64", 624 | "bytes", 625 | "encoding_rs", 626 | "futures-core", 627 | "futures-util", 628 | "http", 629 | "http-body", 630 | "hyper", 631 | "hyper-tls", 632 | "ipnet", 633 | "js-sys", 634 | "lazy_static", 635 | "log", 636 | "mime", 637 | "native-tls", 638 | "percent-encoding", 639 | "pin-project-lite", 640 | "serde", 641 | "serde_json", 642 | "serde_urlencoded", 643 | "tokio", 644 | "tokio-native-tls", 645 | "url", 646 | "wasm-bindgen", 647 | "wasm-bindgen-futures", 648 | "web-sys", 649 | "winreg", 650 | ] 651 | 652 | [[package]] 653 | name = "rustyline" 654 | version = "6.3.0" 655 | source = "registry+https://github.com/rust-lang/crates.io-index" 656 | checksum = "6f0d5e7b0219a3eadd5439498525d4765c59b7c993ef0c12244865cd2d988413" 657 | dependencies = [ 658 | "cfg-if 0.1.10", 659 | "dirs-next", 660 | "libc", 661 | "log", 662 | "memchr", 663 | "nix", 664 | "scopeguard", 665 | "unicode-segmentation", 666 | "unicode-width", 667 | "utf8parse", 668 | "winapi", 669 | ] 670 | 671 | [[package]] 672 | name = "ryu" 673 | version = "1.0.9" 674 | source = "registry+https://github.com/rust-lang/crates.io-index" 675 | checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" 676 | 677 | [[package]] 678 | name = "schannel" 679 | version = "0.1.19" 680 | source = "registry+https://github.com/rust-lang/crates.io-index" 681 | checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" 682 | dependencies = [ 683 | "lazy_static", 684 | "winapi", 685 | ] 686 | 687 | [[package]] 688 | name = "scopeguard" 689 | version = "1.1.0" 690 | source = "registry+https://github.com/rust-lang/crates.io-index" 691 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 692 | 693 | [[package]] 694 | name = "security-framework" 695 | version = "2.4.2" 696 | source = "registry+https://github.com/rust-lang/crates.io-index" 697 | checksum = "525bc1abfda2e1998d152c45cf13e696f76d0a4972310b22fac1658b05df7c87" 698 | dependencies = [ 699 | "bitflags", 700 | "core-foundation", 701 | "core-foundation-sys", 702 | "libc", 703 | "security-framework-sys", 704 | ] 705 | 706 | [[package]] 707 | name = "security-framework-sys" 708 | version = "2.4.2" 709 | source = "registry+https://github.com/rust-lang/crates.io-index" 710 | checksum = "a9dd14d83160b528b7bfd66439110573efcfbe281b17fc2ca9f39f550d619c7e" 711 | dependencies = [ 712 | "core-foundation-sys", 713 | "libc", 714 | ] 715 | 716 | [[package]] 717 | name = "serde" 718 | version = "1.0.131" 719 | source = "registry+https://github.com/rust-lang/crates.io-index" 720 | checksum = "b4ad69dfbd3e45369132cc64e6748c2d65cdfb001a2b1c232d128b4ad60561c1" 721 | dependencies = [ 722 | "serde_derive", 723 | ] 724 | 725 | [[package]] 726 | name = "serde_derive" 727 | version = "1.0.131" 728 | source = "registry+https://github.com/rust-lang/crates.io-index" 729 | checksum = "b710a83c4e0dff6a3d511946b95274ad9ca9e5d3ae497b63fda866ac955358d2" 730 | dependencies = [ 731 | "proc-macro2", 732 | "quote", 733 | "syn", 734 | ] 735 | 736 | [[package]] 737 | name = "serde_json" 738 | version = "1.0.73" 739 | source = "registry+https://github.com/rust-lang/crates.io-index" 740 | checksum = "bcbd0344bc6533bc7ec56df11d42fb70f1b912351c0825ccb7211b59d8af7cf5" 741 | dependencies = [ 742 | "itoa 1.0.1", 743 | "ryu", 744 | "serde", 745 | ] 746 | 747 | [[package]] 748 | name = "serde_urlencoded" 749 | version = "0.7.0" 750 | source = "registry+https://github.com/rust-lang/crates.io-index" 751 | checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" 752 | dependencies = [ 753 | "form_urlencoded", 754 | "itoa 0.4.8", 755 | "ryu", 756 | "serde", 757 | ] 758 | 759 | [[package]] 760 | name = "slab" 761 | version = "0.4.5" 762 | source = "registry+https://github.com/rust-lang/crates.io-index" 763 | checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" 764 | 765 | [[package]] 766 | name = "socket2" 767 | version = "0.4.2" 768 | source = "registry+https://github.com/rust-lang/crates.io-index" 769 | checksum = "5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516" 770 | dependencies = [ 771 | "libc", 772 | "winapi", 773 | ] 774 | 775 | [[package]] 776 | name = "syn" 777 | version = "1.0.82" 778 | source = "registry+https://github.com/rust-lang/crates.io-index" 779 | checksum = "8daf5dd0bb60cbd4137b1b587d2fc0ae729bc07cf01cd70b36a1ed5ade3b9d59" 780 | dependencies = [ 781 | "proc-macro2", 782 | "quote", 783 | "unicode-xid", 784 | ] 785 | 786 | [[package]] 787 | name = "tempfile" 788 | version = "3.2.0" 789 | source = "registry+https://github.com/rust-lang/crates.io-index" 790 | checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" 791 | dependencies = [ 792 | "cfg-if 1.0.0", 793 | "libc", 794 | "rand", 795 | "redox_syscall", 796 | "remove_dir_all", 797 | "winapi", 798 | ] 799 | 800 | [[package]] 801 | name = "tinyvec" 802 | version = "1.5.1" 803 | source = "registry+https://github.com/rust-lang/crates.io-index" 804 | checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" 805 | dependencies = [ 806 | "tinyvec_macros", 807 | ] 808 | 809 | [[package]] 810 | name = "tinyvec_macros" 811 | version = "0.1.0" 812 | source = "registry+https://github.com/rust-lang/crates.io-index" 813 | checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" 814 | 815 | [[package]] 816 | name = "tokio" 817 | version = "1.14.0" 818 | source = "registry+https://github.com/rust-lang/crates.io-index" 819 | checksum = "70e992e41e0d2fb9f755b37446f20900f64446ef54874f40a60c78f021ac6144" 820 | dependencies = [ 821 | "autocfg", 822 | "bytes", 823 | "libc", 824 | "memchr", 825 | "mio", 826 | "num_cpus", 827 | "pin-project-lite", 828 | "winapi", 829 | ] 830 | 831 | [[package]] 832 | name = "tokio-native-tls" 833 | version = "0.3.0" 834 | source = "registry+https://github.com/rust-lang/crates.io-index" 835 | checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" 836 | dependencies = [ 837 | "native-tls", 838 | "tokio", 839 | ] 840 | 841 | [[package]] 842 | name = "tokio-util" 843 | version = "0.6.9" 844 | source = "registry+https://github.com/rust-lang/crates.io-index" 845 | checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" 846 | dependencies = [ 847 | "bytes", 848 | "futures-core", 849 | "futures-sink", 850 | "log", 851 | "pin-project-lite", 852 | "tokio", 853 | ] 854 | 855 | [[package]] 856 | name = "tower-service" 857 | version = "0.3.1" 858 | source = "registry+https://github.com/rust-lang/crates.io-index" 859 | checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" 860 | 861 | [[package]] 862 | name = "tracing" 863 | version = "0.1.29" 864 | source = "registry+https://github.com/rust-lang/crates.io-index" 865 | checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105" 866 | dependencies = [ 867 | "cfg-if 1.0.0", 868 | "pin-project-lite", 869 | "tracing-core", 870 | ] 871 | 872 | [[package]] 873 | name = "tracing-core" 874 | version = "0.1.21" 875 | source = "registry+https://github.com/rust-lang/crates.io-index" 876 | checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4" 877 | dependencies = [ 878 | "lazy_static", 879 | ] 880 | 881 | [[package]] 882 | name = "try-lock" 883 | version = "0.2.3" 884 | source = "registry+https://github.com/rust-lang/crates.io-index" 885 | checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" 886 | 887 | [[package]] 888 | name = "unicode-bidi" 889 | version = "0.3.7" 890 | source = "registry+https://github.com/rust-lang/crates.io-index" 891 | checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" 892 | 893 | [[package]] 894 | name = "unicode-normalization" 895 | version = "0.1.19" 896 | source = "registry+https://github.com/rust-lang/crates.io-index" 897 | checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" 898 | dependencies = [ 899 | "tinyvec", 900 | ] 901 | 902 | [[package]] 903 | name = "unicode-segmentation" 904 | version = "1.8.0" 905 | source = "registry+https://github.com/rust-lang/crates.io-index" 906 | checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" 907 | 908 | [[package]] 909 | name = "unicode-width" 910 | version = "0.1.9" 911 | source = "registry+https://github.com/rust-lang/crates.io-index" 912 | checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" 913 | 914 | [[package]] 915 | name = "unicode-xid" 916 | version = "0.2.2" 917 | source = "registry+https://github.com/rust-lang/crates.io-index" 918 | checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" 919 | 920 | [[package]] 921 | name = "url" 922 | version = "2.2.2" 923 | source = "registry+https://github.com/rust-lang/crates.io-index" 924 | checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" 925 | dependencies = [ 926 | "form_urlencoded", 927 | "idna", 928 | "matches", 929 | "percent-encoding", 930 | ] 931 | 932 | [[package]] 933 | name = "utf8parse" 934 | version = "0.2.0" 935 | source = "registry+https://github.com/rust-lang/crates.io-index" 936 | checksum = "936e4b492acfd135421d8dca4b1aa80a7bfc26e702ef3af710e0752684df5372" 937 | 938 | [[package]] 939 | name = "vcpkg" 940 | version = "0.2.15" 941 | source = "registry+https://github.com/rust-lang/crates.io-index" 942 | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 943 | 944 | [[package]] 945 | name = "voiceflow" 946 | version = "0.1.0" 947 | dependencies = [ 948 | "promptly", 949 | "reqwest", 950 | "serde", 951 | "serde_json", 952 | ] 953 | 954 | [[package]] 955 | name = "want" 956 | version = "0.3.0" 957 | source = "registry+https://github.com/rust-lang/crates.io-index" 958 | checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" 959 | dependencies = [ 960 | "log", 961 | "try-lock", 962 | ] 963 | 964 | [[package]] 965 | name = "wasi" 966 | version = "0.10.2+wasi-snapshot-preview1" 967 | source = "registry+https://github.com/rust-lang/crates.io-index" 968 | checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" 969 | 970 | [[package]] 971 | name = "wasm-bindgen" 972 | version = "0.2.78" 973 | source = "registry+https://github.com/rust-lang/crates.io-index" 974 | checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce" 975 | dependencies = [ 976 | "cfg-if 1.0.0", 977 | "wasm-bindgen-macro", 978 | ] 979 | 980 | [[package]] 981 | name = "wasm-bindgen-backend" 982 | version = "0.2.78" 983 | source = "registry+https://github.com/rust-lang/crates.io-index" 984 | checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b" 985 | dependencies = [ 986 | "bumpalo", 987 | "lazy_static", 988 | "log", 989 | "proc-macro2", 990 | "quote", 991 | "syn", 992 | "wasm-bindgen-shared", 993 | ] 994 | 995 | [[package]] 996 | name = "wasm-bindgen-futures" 997 | version = "0.4.28" 998 | source = "registry+https://github.com/rust-lang/crates.io-index" 999 | checksum = "8e8d7523cb1f2a4c96c1317ca690031b714a51cc14e05f712446691f413f5d39" 1000 | dependencies = [ 1001 | "cfg-if 1.0.0", 1002 | "js-sys", 1003 | "wasm-bindgen", 1004 | "web-sys", 1005 | ] 1006 | 1007 | [[package]] 1008 | name = "wasm-bindgen-macro" 1009 | version = "0.2.78" 1010 | source = "registry+https://github.com/rust-lang/crates.io-index" 1011 | checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9" 1012 | dependencies = [ 1013 | "quote", 1014 | "wasm-bindgen-macro-support", 1015 | ] 1016 | 1017 | [[package]] 1018 | name = "wasm-bindgen-macro-support" 1019 | version = "0.2.78" 1020 | source = "registry+https://github.com/rust-lang/crates.io-index" 1021 | checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab" 1022 | dependencies = [ 1023 | "proc-macro2", 1024 | "quote", 1025 | "syn", 1026 | "wasm-bindgen-backend", 1027 | "wasm-bindgen-shared", 1028 | ] 1029 | 1030 | [[package]] 1031 | name = "wasm-bindgen-shared" 1032 | version = "0.2.78" 1033 | source = "registry+https://github.com/rust-lang/crates.io-index" 1034 | checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc" 1035 | 1036 | [[package]] 1037 | name = "web-sys" 1038 | version = "0.3.55" 1039 | source = "registry+https://github.com/rust-lang/crates.io-index" 1040 | checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb" 1041 | dependencies = [ 1042 | "js-sys", 1043 | "wasm-bindgen", 1044 | ] 1045 | 1046 | [[package]] 1047 | name = "winapi" 1048 | version = "0.3.9" 1049 | source = "registry+https://github.com/rust-lang/crates.io-index" 1050 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1051 | dependencies = [ 1052 | "winapi-i686-pc-windows-gnu", 1053 | "winapi-x86_64-pc-windows-gnu", 1054 | ] 1055 | 1056 | [[package]] 1057 | name = "winapi-i686-pc-windows-gnu" 1058 | version = "0.4.0" 1059 | source = "registry+https://github.com/rust-lang/crates.io-index" 1060 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1061 | 1062 | [[package]] 1063 | name = "winapi-x86_64-pc-windows-gnu" 1064 | version = "0.4.0" 1065 | source = "registry+https://github.com/rust-lang/crates.io-index" 1066 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1067 | 1068 | [[package]] 1069 | name = "winreg" 1070 | version = "0.7.0" 1071 | source = "registry+https://github.com/rust-lang/crates.io-index" 1072 | checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" 1073 | dependencies = [ 1074 | "winapi", 1075 | ] 1076 | -------------------------------------------------------------------------------- /rust/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "voiceflow" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | reqwest = { version = "0.11", features = ["blocking", "json"] } 8 | serde = { version = "1.0", features = ["derive"] } 9 | serde_json = "1.0" 10 | promptly = "0.3" -------------------------------------------------------------------------------- /rust/README.md: -------------------------------------------------------------------------------- 1 | # Voiceflow API Rust Example 2 | 3 | Set up your Voiceflow project with Rust in a matter of minutes. 4 | Rust is a general-purpose programming language empowering everyone to build reliable and efficient software. 5 | This example can be adapted to run as an HTTP server. 6 | 7 | This example lets you chat with your project via the terminal. 8 | 9 | ## Documentation 10 | 11 | For additional information about the Voiceflow API, visit the [documentation](https://www.voiceflow.com/api/dialog-manager). 12 | 13 | ## Setup 14 | 15 | 1. If you do not have Rust, install _Rust_ from [https://www.rust-lang.org/learn/get-started](https://www.rust-lang.org/learn/get-started), or follow an equivalent guide. 16 | 1. Replace `'YOUR_API_KEY_HERE'` in `main.rs` with your API Key Dialog Manager API Key. You can find it under the integrations tab: 17 | 18 | 19 | 20 | 1. run `cargo run` to start your chat! 21 | 22 | ## Example 23 | 24 | What it might look like in action: 25 | 26 | ``` 27 | $ cargo run 28 | 29 | > What is your name?: tyler 30 | what can I do for you? 31 | ... 32 | > Say something: send email 33 | who is the recipient? 34 | ... 35 | > Say something: tyler@voiceflow.com 36 | what is the title of your email? 37 | ... 38 | > Say something: How was your day? 39 | sending the email for tyler@voiceflow.com called "How was your day?". Is that correct? 40 | ... 41 | > Say something: yes 42 | successfully sent the email for tyler@voiceflow.com called "How was your day?" 43 | The end! 44 | ``` 45 | -------------------------------------------------------------------------------- /rust/src/main.rs: -------------------------------------------------------------------------------- 1 | use promptly::prompt; 2 | use reqwest::{blocking, header}; 3 | use serde_json::{json, Value as JsonValue}; 4 | 5 | const API_KEY: &str = "YOUR_API_KEY_HERE"; // it should look like this: VF.DM.XXXXXXX.XXXXXX... keep this a secret! 6 | 7 | const API_URL: &str = "https://general-runtime.voiceflow.com"; 8 | 9 | fn interact(user_id: &str, request: JsonValue) -> Result> { 10 | let url = format!("{}/state/user/{}/interact", API_URL, user_id); 11 | 12 | // call the Voiceflow API with the user's name & request, get back a response 13 | let client = blocking::Client::new(); 14 | let response = client 15 | .post(url) 16 | .json(&request) 17 | .header(header::AUTHORIZATION, API_KEY) 18 | .send() 19 | .and_then(blocking::Response::error_for_status)?; 20 | 21 | let traces: Vec = response.json()?; 22 | 23 | for trace in traces { 24 | match trace["type"].to_string().as_str() { 25 | "\"text\"" | "\"speak\"" => println!("{}", trace["payload"]["message"]), 26 | "\"end\"" => return Ok(false), 27 | _ => {} 28 | } 29 | } 30 | 31 | Ok(true) 32 | } 33 | 34 | fn main() -> Result<(), Box> { 35 | let user_id: String = prompt("> What is your name?")?; 36 | // send a simple launch request starting the dialog 37 | let mut is_running = interact(&user_id, json!({"request": {"type": "launch"}}))?; 38 | 39 | while is_running { 40 | let next_input: String = prompt("> Say something")?; 41 | // send a simple text type request with the user input 42 | is_running = interact( 43 | &user_id, 44 | json!({"request": {"type": "text", "payload": next_input}}), 45 | )?; 46 | } 47 | 48 | println!("The end!"); 49 | 50 | Ok(()) 51 | } 52 | --------------------------------------------------------------------------------