├── .gitignore ├── .template ├── config.json ├── tsx-next-page │ ├── __ROOT_UP__.hooks.ts │ ├── __ROOT_UP__.styles.ts │ ├── __ROOT_UP__.types.ts │ └── index.page.tsx ├── tsx-styled-hooks │ ├── __ROOT_UP__.hooks.ts │ ├── __ROOT_UP__.styles.ts │ ├── __ROOT_UP__.types.ts │ └── index.tsx └── tsx-styled │ ├── __ROOT_UP__.styles.ts │ ├── __ROOT_UP__.types.ts │ └── index.tsx ├── CHANGELOG.md ├── LICENSE ├── README.ko.md ├── README.md ├── package.json ├── src ├── @types │ └── index.d.ts ├── assets │ └── images │ │ ├── banner.png │ │ └── example │ │ ├── example-results-folder-structure.png │ │ └── example-results.png ├── constants │ ├── common.ts │ └── questions.ts ├── index.ts ├── lib │ ├── doc.ts │ ├── generate.ts │ └── readTemplates.ts └── scripts │ └── build.js ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | build 4 | yarn-error.log 5 | 6 | # for test 7 | .yarn -------------------------------------------------------------------------------- /.template/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "prefix": "__ROOT_UP__", 3 | "output": "./src/components", 4 | "excludePath": [".yarn"] 5 | } 6 | -------------------------------------------------------------------------------- /.template/tsx-next-page/__ROOT_UP__.hooks.ts: -------------------------------------------------------------------------------- 1 | export const use__ROOT_UP__hooks = () => { 2 | return null; 3 | }; 4 | -------------------------------------------------------------------------------- /.template/tsx-next-page/__ROOT_UP__.styles.ts: -------------------------------------------------------------------------------- 1 | import styled from "styled-components"; 2 | 3 | export const Container = styled.div``; 4 | -------------------------------------------------------------------------------- /.template/tsx-next-page/__ROOT_UP__.types.ts: -------------------------------------------------------------------------------- 1 | export interface __ROOT_UP__Props { 2 | dummy?: any; 3 | } 4 | -------------------------------------------------------------------------------- /.template/tsx-next-page/index.page.tsx: -------------------------------------------------------------------------------- 1 | import { GetServerSideProps } from "next"; 2 | import { use__ROOT_UP__hooks } from "./__ROOT_UP__.hooks"; 3 | import * as Styled from "./__ROOT_UP__.styles"; 4 | import type { __ROOT_UP__Props } from "./__ROOT_UP__.types"; 5 | 6 | export const __ROOT_UP__ = ({ dummy }: __ROOT_UP__Props) => { 7 | const app = use__ROOT_UP__hooks(); 8 | 9 | return hi; 10 | }; 11 | 12 | export const getServerSideProps: GetServerSideProps = async context => { 13 | const query = context.query; 14 | 15 | return {}; 16 | }; 17 | -------------------------------------------------------------------------------- /.template/tsx-styled-hooks/__ROOT_UP__.hooks.ts: -------------------------------------------------------------------------------- 1 | export const use__ROOT_UP__hooks = () => { 2 | return null; 3 | }; 4 | -------------------------------------------------------------------------------- /.template/tsx-styled-hooks/__ROOT_UP__.styles.ts: -------------------------------------------------------------------------------- 1 | import styled from "styled-components"; 2 | 3 | export const Container = styled.div``; 4 | -------------------------------------------------------------------------------- /.template/tsx-styled-hooks/__ROOT_UP__.types.ts: -------------------------------------------------------------------------------- 1 | export interface __ROOT_UP__Props { 2 | dummy?: any; 3 | } 4 | -------------------------------------------------------------------------------- /.template/tsx-styled-hooks/index.tsx: -------------------------------------------------------------------------------- 1 | import { use__ROOT_UP__hooks } from "./__ROOT_UP__.hooks"; 2 | import * as Styled from "./__ROOT_UP__.styles"; 3 | import type { __ROOT_UP__Props } from "./__ROOT_UP__.types"; 4 | 5 | export const __ROOT_UP__ = ({ dummy }: __ROOT_UP__Props) => { 6 | const app = use__ROOT_UP__hooks(); 7 | 8 | return hi; 9 | }; 10 | -------------------------------------------------------------------------------- /.template/tsx-styled/__ROOT_UP__.styles.ts: -------------------------------------------------------------------------------- 1 | import styled from "styled-components"; 2 | 3 | export const Container = styled.div``; 4 | -------------------------------------------------------------------------------- /.template/tsx-styled/__ROOT_UP__.types.ts: -------------------------------------------------------------------------------- 1 | export interface __ROOT_UP__Props { 2 | dummy?: any; 3 | } 4 | -------------------------------------------------------------------------------- /.template/tsx-styled/index.tsx: -------------------------------------------------------------------------------- 1 | import * as Styled from "./__ROOT_UP__.styles"; 2 | import type { __ROOT_UP__Props } from "./__ROOT_UP__.types"; 3 | 4 | export const __ROOT_UP__ = ({ dummy }: __ROOT_UP__Props) => { 5 | return hi; 6 | }; 7 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # CHANGELOG 2 | 3 | ## v0 4 | 5 | ### 0.1.0 / 2022-02-27 6 | 7 | - Initial release 8 | 9 | ### 0.1.1 / 2022-02-27 10 | 11 | - command change 12 | - m-rcg to m-rfcg 13 | - write readme 14 | 15 | ### 0.2.0 16 | 17 | - add doc command 18 | - change template config 19 | - add template.json file 20 | 21 | ### 0.2.3 22 | 23 | - hotfix 24 | - doc command not working 25 | - apply to template path -> path.resolve 26 | 27 | ## v2 28 | 29 | ### 2.0.0 30 | 31 | ### 2.0.5 32 | 33 | - Add output path input 34 | 35 | ### 2.0.6 36 | 37 | - Remove doc generate config 38 | - It will be work next time (2.1.0) 39 | 40 | ### 2.0.7 41 | 42 | - Refactoring (with @jgjgill) 43 | - refactoring: 에러 관련 코드 위치 변경 (#3) 44 | 45 | ### 2.0.8 46 | 47 | - feat: Add Edge case cover for no exists config.json 48 | - Add exclude path config 49 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 [fullname] Minsoo Kim 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.ko.md: -------------------------------------------------------------------------------- 1 | # Root Up 2 | 3 | ![banner](./src/assets/images/banner.png) 4 | 5 | [English](https://github.com/minsoo-web/root-up/blob/main/README.md) | 한국어 6 | 7 | ## 목차 8 | 9 | - [🗂 Root Up이 뭔데?](#🗂-root-up이-뭔데) 10 | - [🚗 설치](#🚗-설치) 11 | - [Global](#global) 12 | - [Local](#local) 13 | - [🛑 시작하기 전에](#🛑-시작하기-전에) 14 | - [templateFolder](#templateFolder) 15 | - [config.json](#config.json) 16 | - [🚀 실행 방법](#🚀-실행-방법) 17 | - [🚕 예제](#🚕-예제) 18 | - [Contributing](#contributing) 19 | 20 | ## 🗂 Root Up이 뭔데? 21 | 22 | `Root Up` 이란, 반복되어 사용되는 폴더 템플릿이 있는 사람들에게 손쉽게 폴더 구조를 생성할 수 있게 해주는 패키지입니다. 23 | 24 | ## 🚗 설치 25 | 26 | ### 전역 설치 27 | 28 | ```bash 29 | # yarn을 사용할 경우 30 | yarn global add root-up 31 | ``` 32 | 33 | ```bash 34 | # npm을 사용할 경우 35 | npm install -g root-up 36 | ``` 37 | 38 | ### 로컬 설치 39 | 40 | ```bash 41 | # yarn을 사용할 경우 42 | yarn add -D root-up 43 | ``` 44 | 45 | ```bash 46 | # npm을 사용할 경우 47 | npm install -D root-up 48 | ``` 49 | 50 | > 주의: 만약 npm 버전 5.0.0 이전의 버전을 사용할 경우 --save 옵션을 꼭 넣어주어야 합니다. 51 | 52 | 아래와 같이 `package.json`의 scripts에 추가해줍니다. 53 | 54 | ```json 55 | "scripts": { 56 | "root-up": "root-up" 57 | }, 58 | ``` 59 | 60 | ## 🛑 시작하기 전에 61 | 62 | 시작하기 전에, 워크스페이스의 루트 경로에 `.template`라는 폴더를 꼭 생성해야 합니다. 63 | `.template`폴더는 아래와 같이 구성되어야 합니다. 64 | 65 | ```txt 66 | /.template 67 | / 68 | / 69 | ... 70 | config.json 71 | ``` 72 | 73 | [`.template`폴더 예시 확인하기](https://github.com/minsoo-web/root-up/tree/main/.template) 74 | 75 | ### templateFolder 76 | 77 | `/` 은 자주 사용되는 템플릿 폴더입니다. 78 | prefix가 제대로 설정되었는지, config.json에 명시되어있는 내용과 일치하는지를 꼭 확인하세요 79 | 80 | ### config.json 81 | 82 | `.config.json` 파일은 다음과 같이 구성되어야 합니다. 83 | 84 | ```json 85 | { 86 | "prefix": "내가_좋아하는_PREFIX", 87 | "output": "내가_자주_사용하는_output_path", 88 | "excludePath": "내가_무시하고_싶은_folder_name_prefix" 89 | } 90 | ``` 91 | 92 | **prefix**: 93 | `prefix` 속성은 이름으로 대체되는 속성입니다. 파일의 이름과 코드 내부에서 사용되었을 때, 94 | 입력된 `name`으로 대체됩니다. 95 | 96 | **output**: 97 | `output` 속성은 템플릿을 통해 생성된 폴더가 위치할 경로를 명시합니다. 98 | 명령어가 실행된 workspace를 기준으로 상대경로를 명시합니다. 99 | 100 | **excludePath**: 101 | excludePath 속성은 생성할 폴더를 검색할 때 무시하고 싶은 폴더 이름을 설정할 수 있습니다. 102 | (예를 들면, .yarn 폴더와 같이요!) 103 | default로 `node_modules`와 `.git`이 설정되어있습니다. 104 | 105 | ## 🚀 실행 방법 106 | 107 | ```bash 108 | # 전역으로 설치된 경우 109 | root-up 110 | 111 | # 로컬로 설치된 경우 112 | yarn # package.json에 명시된 명령어를 입력합니다. 113 | ``` 114 | 115 | ## 🚕 예제 116 | 117 | > npx를 사용할 수도 있습니다. 118 | 119 | https://user-images.githubusercontent.com/57122180/218425678-eabb9b8d-f7a2-4048-bec1-e32f2da900b0.mov 120 | 121 | ## Contributing 122 | 123 | 기여는 언제든지 환영입니다! 124 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Root Up 2 | 3 | ![banner](./src/assets/images/banner.png) 4 | 5 | English | [한국어](https://github.com/minsoo-web/root-up/blob/main/README.ko.md) 6 | 7 | ## Table of contents 8 | 9 | - [🗂 What is Root Up?](#-what-is-root-up) 10 | - [🚗 Installation](#-installation) 11 | - [Global](#global) 12 | - [Local](#local) 13 | - [🛑 Before you start](#-before-you-start) 14 | - [templateFolder](#templateFolder) 15 | - [config.json](#config.json) 16 | - [🚀 How to run](#-how-to-run) 17 | - [🚕 Demo](#-demo) 18 | - [Contributing](#contributing) 19 | 20 | ## 🗂 What is Root Up? 21 | 22 | This package is built for folder structure generator who has specific folder template. 23 | 24 | ## 🚗 Installation 25 | 26 | ### Global 27 | 28 | ```bash 29 | # using yarn 30 | yarn global add root-up 31 | ``` 32 | 33 | ```bash 34 | # using npm 35 | npm install -g root-up 36 | ``` 37 | 38 | ### Local 39 | 40 | ```bash 41 | # using yarn 42 | yarn add -D root-up 43 | ``` 44 | 45 | ```bash 46 | # using npm 47 | npm install -D root-up 48 | ``` 49 | 50 | > Note: add --save if you are using npm < 5.0.0 51 | 52 | Add script in your `package.json` 53 | 54 | ```json 55 | "scripts": { 56 | "root-up": "root-up" 57 | }, 58 | ``` 59 | 60 | ## 🛑 Before you start 61 | 62 | You must make `.template` folder to your root path in workspace 63 | The `.template` folder must be configured as follows 64 | 65 | ```txt 66 | /.template 67 | / 68 | / 69 | ... 70 | config.json 71 | ``` 72 | 73 | [Checkout `.template` folder demo](https://github.com/minsoo-web/root-up/tree/main/.template) 74 | 75 | ### templateFolder 76 | 77 | `/` ... is your own template. 78 | Make sure check prefix in your config.json 79 | 80 | ### config.json 81 | 82 | The `.config.json` file must be configured as follows 83 | 84 | ```json 85 | { 86 | "prefix": "YOUR_FAVORITE_PREFIX", 87 | "output": "YOUR_DEFAULT_OUTPUT_PATH_IN_YOUR_WORKSPACE", 88 | "excludePath": ["YOUR_IGNORE_PREFIX"] 89 | } 90 | ``` 91 | 92 | **prefix**: 93 | The `prefix` property is the property that sets the alternate text to be replaced by the name of the folder. 94 | Write down the name of the file, the code used in the template. 95 | 96 | **output**: 97 | The `output` property is the property that path to template folder generated _related path_ to your command is executed path 98 | 99 | **excludePath**: 100 | The `excludePath` property is the property that can ignore path finding in searching path to generate folder (e.g: .yarn folder) 101 | Default is `node_modules` and `.git` 102 | 103 | ## 🚀 How to run 104 | 105 | ```bash 106 | # Global installed 107 | root-up 108 | 109 | # or local installed 110 | yarn # specified in your package.json 111 | ``` 112 | 113 | ## 🚕 Demo 114 | 115 | > You can use npx 116 | 117 | https://user-images.githubusercontent.com/57122180/218425678-eabb9b8d-f7a2-4048-bec1-e32f2da900b0.mov 118 | 119 | ## Contributing 120 | 121 | We welcome contribution from everyone in the community. 122 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "root-up", 3 | "version": "2.0.8", 4 | "description": "generator for template folder by boilerplate", 5 | "homepage": "https://github.com/minsoo-web/root-up", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/minsoo-web/root-up" 9 | }, 10 | "bugs": { 11 | "email": "zlemzlem5656@naver.com", 12 | "url": "https://github.com/minsoo-web/root-up/issues" 13 | }, 14 | "bin": { 15 | "root-up": "./build/index.js" 16 | }, 17 | "scripts": { 18 | "prepublishOnly": "tsc && node src/scripts/build.js", 19 | "build": "tsc && node src/scripts/build.js", 20 | "dev": "npx tsx ./src/index.ts" 21 | }, 22 | "author": "minsoo-web ", 23 | "keywords": [ 24 | "boilerplate", 25 | "template generate", 26 | "folder generate", 27 | "template", 28 | "template folder auto generate" 29 | ], 30 | "license": "MIT", 31 | "dependencies": { 32 | "inquirer": "^9.1.4" 33 | }, 34 | "devDependencies": { 35 | "@types/inquirer": "^9.0.3", 36 | "@types/node": "^18.8.0", 37 | "esbuild": "^0.17.7", 38 | "inquirer-fuzzy-path": "^2.3.0", 39 | "typescript": "^4.9.5" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/@types/index.d.ts: -------------------------------------------------------------------------------- 1 | declare module Common { 2 | interface Config { 3 | prefix: string; 4 | output: string; 5 | excludePath: string[]; 6 | } 7 | 8 | interface UserInput { 9 | name: string; 10 | template: string; 11 | outputPath: string; 12 | } 13 | 14 | interface GenerateParam extends Pick, Omit { 15 | templatePath: string; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/assets/images/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minsoo-web/root-up/bd1cac2b994e5f320f1c635b48981cebca6b4674/src/assets/images/banner.png -------------------------------------------------------------------------------- /src/assets/images/example/example-results-folder-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minsoo-web/root-up/bd1cac2b994e5f320f1c635b48981cebca6b4674/src/assets/images/example/example-results-folder-structure.png -------------------------------------------------------------------------------- /src/assets/images/example/example-results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minsoo-web/root-up/bd1cac2b994e5f320f1c635b48981cebca6b4674/src/assets/images/example/example-results.png -------------------------------------------------------------------------------- /src/constants/common.ts: -------------------------------------------------------------------------------- 1 | export const TEMPLATE_PATH = "./.template"; 2 | -------------------------------------------------------------------------------- /src/constants/questions.ts: -------------------------------------------------------------------------------- 1 | import { Question } from "inquirer"; 2 | 3 | type QuestionWithChoices = Question & { choices?: string[] } & Partial<{ 4 | excludePath: (path: string) => boolean; 5 | excludeFilter: (path: string) => boolean; 6 | itemType: "any" | "directory" | "file"; 7 | rootPath: string; 8 | suggestOnly: boolean; 9 | depthLimit: number; 10 | }>; 11 | 12 | export const componentNameQuestion: QuestionWithChoices[] = []; 13 | 14 | export const questions = ( 15 | templates: string[], 16 | configFile: Common.Config 17 | ): QuestionWithChoices[] => [ 18 | { 19 | name: "name", 20 | message: "What is your folder name?", 21 | askAnswered: true 22 | }, 23 | { 24 | name: "template", 25 | message: "Chose your template", 26 | type: "list", 27 | choices: templates 28 | }, 29 | { 30 | type: "fuzzypath", 31 | name: "outputPath", 32 | excludePath: nodePath => { 33 | return configFile.excludePath.some(exclude => { 34 | return ( 35 | nodePath.startsWith("node_modules") || 36 | nodePath.startsWith(".git") || 37 | nodePath.startsWith(exclude) 38 | ); 39 | }); 40 | }, 41 | // excludePath :: (String) -> Bool 42 | // excludePath to exclude some paths from the file-system scan 43 | excludeFilter: nodePath => nodePath === ".", 44 | // excludeFilter :: (String) -> Bool 45 | // excludeFilter to exclude some paths from the final list, e.g. '.' 46 | itemType: "directory", 47 | // itemType :: 'any' | 'directory' | 'file' 48 | // specify the type of nodes to display 49 | // default value: 'any' 50 | // example: itemType: 'file' - hides directories from the item list 51 | rootPath: ".", 52 | // rootPath :: String 53 | // Root search directory 54 | message: "Select a target directory for your component:", 55 | default: configFile.output, 56 | suggestOnly: false, 57 | // suggestOnly :: Bool 58 | // Restrict prompt answer to available choices or use them as suggestions 59 | depthLimit: 5 60 | // depthLimit :: integer >= 0 61 | // Limit the depth of sub-folders to scan 62 | // Defaults to infinite depth if undefined 63 | } 64 | ]; 65 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import { TEMPLATE_PATH } from "constants/common"; 4 | import inquirer from "inquirer"; 5 | import { questions } from "./constants/questions"; 6 | import { generate } from "./lib/generate"; 7 | import { readTemplates } from "./lib/readTemplates"; 8 | 9 | inquirer.registerPrompt("fuzzypath", require("inquirer-fuzzy-path")); 10 | 11 | const main = async () => { 12 | const { templateList, configFile } = readTemplates(); 13 | 14 | const { name, template, outputPath } = await inquirer.prompt( 15 | questions(templateList, configFile) 16 | ); 17 | 18 | generate({ 19 | name, 20 | templatePath: `${TEMPLATE_PATH}/${template}`, 21 | prefix: configFile.prefix, 22 | outputPath 23 | }); 24 | }; 25 | 26 | main(); 27 | -------------------------------------------------------------------------------- /src/lib/doc.ts: -------------------------------------------------------------------------------- 1 | import { TEMPLATE_PATH } from "constants/common"; 2 | import fs from "fs"; 3 | import path from "path"; 4 | 5 | export const doc = () => { 6 | const exampleTemplateFolderPath = path.resolve(__dirname, "../assets/data/.template"); 7 | 8 | if (!fs.existsSync(TEMPLATE_PATH)) { 9 | fs.mkdirSync(TEMPLATE_PATH); 10 | 11 | const fileList = fs.readdirSync(exampleTemplateFolderPath); 12 | fileList.forEach(fileName => { 13 | const data = fs.readFileSync(`${exampleTemplateFolderPath}/${fileName}`, "utf-8"); 14 | fs.writeFileSync(`.template/${fileName}`, data); 15 | }); 16 | 17 | console.log( 18 | "🚀 Generate template folder with doc file! \nif you want specify custom template check https://github.com/minsoo-web/react-component-folder-generator#case-of-your-own-template" 19 | ); 20 | } else { 21 | console.log( 22 | `".template" folder is already exists😢\nmake sure folder name ".template" is not exists` 23 | ); 24 | } 25 | }; 26 | -------------------------------------------------------------------------------- /src/lib/generate.ts: -------------------------------------------------------------------------------- 1 | import fs from "fs"; 2 | 3 | export const generate = ({ prefix, templatePath, name, outputPath }: Common.GenerateParam) => { 4 | if (!fs.existsSync(outputPath)) { 5 | fs.mkdirSync(outputPath, { recursive: true }); 6 | } 7 | 8 | if (!fs.existsSync(`${outputPath}/${name}`)) { 9 | fs.mkdirSync(`${outputPath}/${name}`); 10 | } 11 | 12 | const reg = new RegExp(prefix, "gi"); 13 | 14 | const fileList = fs.readdirSync(templatePath); 15 | 16 | fileList.forEach(fileName => { 17 | const fileString = fs.readFileSync(`${templatePath}/${fileName}`, "utf-8").toString(); 18 | 19 | fs.writeFileSync( 20 | `${outputPath}/${name}/${fileName.replace(reg, name)}`, 21 | fileString.replace(reg, name) 22 | ); 23 | }); 24 | 25 | console.log(`🚀 ${name} folder is made with root-up!!!\n\n😎Happy Hacking`); 26 | }; 27 | -------------------------------------------------------------------------------- /src/lib/readTemplates.ts: -------------------------------------------------------------------------------- 1 | import { TEMPLATE_PATH } from "constants/common"; 2 | import fs from "fs"; 3 | 4 | const readConfigFile = (path = TEMPLATE_PATH) => { 5 | let configFile; 6 | 7 | try { 8 | configFile = fs.readFileSync(`${path}/config.json`); 9 | } catch (error) { 10 | throw new Error( 11 | "config.json is not found please checkout https://github.com/minsoo-web/root-up/blob/main/README.md" 12 | ); 13 | } 14 | 15 | return JSON.parse(configFile.toString()); 16 | }; 17 | 18 | export const readTemplates = () => { 19 | let templateList = []; 20 | try { 21 | templateList = fs.readdirSync(TEMPLATE_PATH); 22 | } catch (error) { 23 | throw new Error( 24 | "`/.template` folder is not found please checkout https://github.com/minsoo-web/root-up/blob/main/README.md" 25 | ); 26 | } 27 | 28 | const configFileIndex = templateList.findIndex(template => template === "config.json"); 29 | let configFile: Common.Config = readConfigFile(); 30 | 31 | if (configFileIndex === -1) { 32 | throw new Error("🔥 No Exist config.json file in .template folder"); 33 | } 34 | 35 | if (configFileIndex >= 0) { 36 | templateList.splice(configFileIndex, 1); 37 | } 38 | 39 | if (templateList.length === 0) { 40 | throw new Error("🔥 No Exist template in .template folder"); 41 | } 42 | 43 | return { templateList, configFile }; 44 | }; 45 | -------------------------------------------------------------------------------- /src/scripts/build.js: -------------------------------------------------------------------------------- 1 | require("esbuild") 2 | .build({ 3 | entryPoints: ["src/index.ts"], 4 | outdir: "build", 5 | bundle: true, 6 | platform: "node" 7 | }) 8 | .catch(() => process.exit(1)); 9 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "CommonJS", 4 | "target": "ESNext", 5 | "outDir": "build", 6 | "baseUrl": "./src", 7 | "declaration": true, 8 | "emitDeclarationOnly": true, 9 | "sourceMap": true, 10 | "strict": true, 11 | "esModuleInterop": true, 12 | "experimentalDecorators": true, 13 | "skipLibCheck": true // node_modules 타입 검증 skip 14 | }, 15 | "moduleResolution": "node", 16 | "include": ["./src/**/*"], 17 | "exclude": ["node_modules", "assets"] 18 | } 19 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@esbuild/android-arm64@0.17.8": 6 | version "0.17.8" 7 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.8.tgz#b3d5b65a3b2e073a6c7ee36b1f3c30c8f000315b" 8 | integrity sha512-oa/N5j6v1svZQs7EIRPqR8f+Bf8g6HBDjD/xHC02radE/NjKHK7oQmtmLxPs1iVwYyvE+Kolo6lbpfEQ9xnhxQ== 9 | 10 | "@esbuild/android-arm@0.17.8": 11 | version "0.17.8" 12 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.8.tgz#c41e496af541e175369d48164d0cf01a5f656cf6" 13 | integrity sha512-0/rb91GYKhrtbeglJXOhAv9RuYimgI8h623TplY2X+vA4EXnk3Zj1fXZreJ0J3OJJu1bwmb0W7g+2cT/d8/l/w== 14 | 15 | "@esbuild/android-x64@0.17.8": 16 | version "0.17.8" 17 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.8.tgz#080fa67c29be77f5a3ca5ee4cc78d5bf927e3a3b" 18 | integrity sha512-bTliMLqD7pTOoPg4zZkXqCDuzIUguEWLpeqkNfC41ODBHwoUgZ2w5JBeYimv4oP6TDVocoYmEhZrCLQTrH89bg== 19 | 20 | "@esbuild/darwin-arm64@0.17.8": 21 | version "0.17.8" 22 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.8.tgz#053622bf9a82f43d5c075b7818e02618f7b4a397" 23 | integrity sha512-ghAbV3ia2zybEefXRRm7+lx8J/rnupZT0gp9CaGy/3iolEXkJ6LYRq4IpQVI9zR97ID80KJVoUlo3LSeA/sMAg== 24 | 25 | "@esbuild/darwin-x64@0.17.8": 26 | version "0.17.8" 27 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.8.tgz#8a1aadb358d537d8efad817bb1a5bff91b84734b" 28 | integrity sha512-n5WOpyvZ9TIdv2V1K3/iIkkJeKmUpKaCTdun9buhGRWfH//osmUjlv4Z5mmWdPWind/VGcVxTHtLfLCOohsOXw== 29 | 30 | "@esbuild/freebsd-arm64@0.17.8": 31 | version "0.17.8" 32 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.8.tgz#e6738d0081ba0721a5c6c674e84c6e7fcea61989" 33 | integrity sha512-a/SATTaOhPIPFWvHZDoZYgxaZRVHn0/LX1fHLGfZ6C13JqFUZ3K6SMD6/HCtwOQ8HnsNaEeokdiDSFLuizqv5A== 34 | 35 | "@esbuild/freebsd-x64@0.17.8": 36 | version "0.17.8" 37 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.8.tgz#1855e562f2b730f4483f6e94086e9e2597feb4c3" 38 | integrity sha512-xpFJb08dfXr5+rZc4E+ooZmayBW6R3q59daCpKZ/cDU96/kvDM+vkYzNeTJCGd8rtO6fHWMq5Rcv/1cY6p6/0Q== 39 | 40 | "@esbuild/linux-arm64@0.17.8": 41 | version "0.17.8" 42 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.8.tgz#481da38952721a3fdb77c17a36ceaacc4270b5c5" 43 | integrity sha512-v3iwDQuDljLTxpsqQDl3fl/yihjPAyOguxuloON9kFHYwopeJEf1BkDXODzYyXEI19gisEsQlG1bM65YqKSIww== 44 | 45 | "@esbuild/linux-arm@0.17.8": 46 | version "0.17.8" 47 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.8.tgz#18127072b270bb6321c6d11be20bfd30e0d6ad17" 48 | integrity sha512-6Ij8gfuGszcEwZpi5jQIJCVIACLS8Tz2chnEBfYjlmMzVsfqBP1iGmHQPp7JSnZg5xxK9tjCc+pJ2WtAmPRFVA== 49 | 50 | "@esbuild/linux-ia32@0.17.8": 51 | version "0.17.8" 52 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.8.tgz#ee400af7b3bc69e8ca2e593ca35156ffb9abd54f" 53 | integrity sha512-8svILYKhE5XetuFk/B6raFYIyIqydQi+GngEXJgdPdI7OMKUbSd7uzR02wSY4kb53xBrClLkhH4Xs8P61Q2BaA== 54 | 55 | "@esbuild/linux-loong64@0.17.8": 56 | version "0.17.8" 57 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.8.tgz#8c509d8a454693d39824b83b3f66c400872fce82" 58 | integrity sha512-B6FyMeRJeV0NpyEOYlm5qtQfxbdlgmiGdD+QsipzKfFky0K5HW5Td6dyK3L3ypu1eY4kOmo7wW0o94SBqlqBSA== 59 | 60 | "@esbuild/linux-mips64el@0.17.8": 61 | version "0.17.8" 62 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.8.tgz#f2b0d36e63fb26bc3f95b203b6a80638292101ca" 63 | integrity sha512-CCb67RKahNobjm/eeEqeD/oJfJlrWyw29fgiyB6vcgyq97YAf3gCOuP6qMShYSPXgnlZe/i4a8WFHBw6N8bYAA== 64 | 65 | "@esbuild/linux-ppc64@0.17.8": 66 | version "0.17.8" 67 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.8.tgz#1e628be003e036e90423716028cc884fe5ba25bd" 68 | integrity sha512-bytLJOi55y55+mGSdgwZ5qBm0K9WOCh0rx+vavVPx+gqLLhxtSFU0XbeYy/dsAAD6xECGEv4IQeFILaSS2auXw== 69 | 70 | "@esbuild/linux-riscv64@0.17.8": 71 | version "0.17.8" 72 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.8.tgz#419a815cb4c3fb9f1b78ef5295f5b48b8bf6427a" 73 | integrity sha512-2YpRyQJmKVBEHSBLa8kBAtbhucaclb6ex4wchfY0Tj3Kg39kpjeJ9vhRU7x4mUpq8ISLXRXH1L0dBYjAeqzZAw== 74 | 75 | "@esbuild/linux-s390x@0.17.8": 76 | version "0.17.8" 77 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.8.tgz#291c49ae5c3d11d226352755c0835911fe1a9e5c" 78 | integrity sha512-QgbNY/V3IFXvNf11SS6exkpVcX0LJcob+0RWCgV9OiDAmVElnxciHIisoSix9uzYzScPmS6dJFbZULdSAEkQVw== 79 | 80 | "@esbuild/linux-x64@0.17.8": 81 | version "0.17.8" 82 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.8.tgz#03199d91c76faf80bd54104f5cbf0a489bc39f6a" 83 | integrity sha512-mM/9S0SbAFDBc4OPoyP6SEOo5324LpUxdpeIUUSrSTOfhHU9hEfqRngmKgqILqwx/0DVJBzeNW7HmLEWp9vcOA== 84 | 85 | "@esbuild/netbsd-x64@0.17.8": 86 | version "0.17.8" 87 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.8.tgz#b436d767e1b21852f9ed212e2bb57f77203b0ae2" 88 | integrity sha512-eKUYcWaWTaYr9zbj8GertdVtlt1DTS1gNBWov+iQfWuWyuu59YN6gSEJvFzC5ESJ4kMcKR0uqWThKUn5o8We6Q== 89 | 90 | "@esbuild/openbsd-x64@0.17.8": 91 | version "0.17.8" 92 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.8.tgz#d1481d8539e21d4729cd04a0450a26c2c8789e89" 93 | integrity sha512-Vc9J4dXOboDyMXKD0eCeW0SIeEzr8K9oTHJU+Ci1mZc5njPfhKAqkRt3B/fUNU7dP+mRyralPu8QUkiaQn7iIg== 94 | 95 | "@esbuild/sunos-x64@0.17.8": 96 | version "0.17.8" 97 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.8.tgz#2cfb8126e079b2c00fd1bf095541e9f5c47877e4" 98 | integrity sha512-0xvOTNuPXI7ft1LYUgiaXtpCEjp90RuBBYovdd2lqAFxje4sEucurg30M1WIm03+3jxByd3mfo+VUmPtRSVuOw== 99 | 100 | "@esbuild/win32-arm64@0.17.8": 101 | version "0.17.8" 102 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.8.tgz#7c6ecfd097ca23b82119753bf7072bbaefe51e3a" 103 | integrity sha512-G0JQwUI5WdEFEnYNKzklxtBheCPkuDdu1YrtRrjuQv30WsYbkkoixKxLLv8qhJmNI+ATEWquZe/N0d0rpr55Mg== 104 | 105 | "@esbuild/win32-ia32@0.17.8": 106 | version "0.17.8" 107 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.8.tgz#cffec63c3cb0ef8563a04df4e09fa71056171d00" 108 | integrity sha512-Fqy63515xl20OHGFykjJsMnoIWS+38fqfg88ClvPXyDbLtgXal2DTlhb1TfTX34qWi3u4I7Cq563QcHpqgLx8w== 109 | 110 | "@esbuild/win32-x64@0.17.8": 111 | version "0.17.8" 112 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.8.tgz#200a0965cf654ac28b971358ecdca9cc5b44c335" 113 | integrity sha512-1iuezdyDNngPnz8rLRDO2C/ZZ/emJLb72OsZeqQ6gL6Avko/XCXZw+NuxBSNhBAP13Hie418V7VMt9et1FMvpg== 114 | 115 | "@types/inquirer@^9.0.3": 116 | version "9.0.3" 117 | resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-9.0.3.tgz#dc99da4f2f6de9d26c284b4f6aaab4d98c456db1" 118 | integrity sha512-CzNkWqQftcmk2jaCWdBTf9Sm7xSw4rkI1zpU/Udw3HX5//adEZUIm9STtoRP1qgWj0CWQtJ9UTvqmO2NNjhMJw== 119 | dependencies: 120 | "@types/through" "*" 121 | rxjs "^7.2.0" 122 | 123 | "@types/node@*", "@types/node@^18.8.0": 124 | version "18.13.0" 125 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.13.0.tgz#0400d1e6ce87e9d3032c19eb6c58205b0d3f7850" 126 | integrity sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg== 127 | 128 | "@types/through@*": 129 | version "0.0.30" 130 | resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895" 131 | integrity sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg== 132 | dependencies: 133 | "@types/node" "*" 134 | 135 | ansi-escapes@^3.2.0: 136 | version "3.2.0" 137 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" 138 | integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== 139 | 140 | ansi-escapes@^4.3.1: 141 | version "4.3.2" 142 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" 143 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== 144 | dependencies: 145 | type-fest "^0.21.3" 146 | 147 | ansi-escapes@^6.0.0: 148 | version "6.0.0" 149 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-6.0.0.tgz#68c580e87a489f6df3d761028bb93093fde6bd8a" 150 | integrity sha512-IG23inYII3dWlU2EyiAiGj6Bwal5GzsgPMwjYGvc1HPE2dgbj4ZB5ToWBKSquKw74nB3TIuOwaI6/jSULzfgrw== 151 | dependencies: 152 | type-fest "^3.0.0" 153 | 154 | ansi-regex@^3.0.0: 155 | version "3.0.1" 156 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" 157 | integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== 158 | 159 | ansi-regex@^4.1.0: 160 | version "4.1.1" 161 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" 162 | integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== 163 | 164 | ansi-regex@^6.0.1: 165 | version "6.0.1" 166 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" 167 | integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== 168 | 169 | ansi-styles@^3.2.1: 170 | version "3.2.1" 171 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 172 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 173 | dependencies: 174 | color-convert "^1.9.0" 175 | 176 | ansi-styles@^4.1.0: 177 | version "4.3.0" 178 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 179 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 180 | dependencies: 181 | color-convert "^2.0.1" 182 | 183 | ansi-styles@^6.1.0: 184 | version "6.2.1" 185 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" 186 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== 187 | 188 | base64-js@^1.3.1: 189 | version "1.5.1" 190 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 191 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 192 | 193 | bl@^5.0.0: 194 | version "5.1.0" 195 | resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" 196 | integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== 197 | dependencies: 198 | buffer "^6.0.3" 199 | inherits "^2.0.4" 200 | readable-stream "^3.4.0" 201 | 202 | buffer@^6.0.3: 203 | version "6.0.3" 204 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" 205 | integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== 206 | dependencies: 207 | base64-js "^1.3.1" 208 | ieee754 "^1.2.1" 209 | 210 | chalk@^2.4.2: 211 | version "2.4.2" 212 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 213 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 214 | dependencies: 215 | ansi-styles "^3.2.1" 216 | escape-string-regexp "^1.0.5" 217 | supports-color "^5.3.0" 218 | 219 | chalk@^4.0.0: 220 | version "4.1.2" 221 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 222 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 223 | dependencies: 224 | ansi-styles "^4.1.0" 225 | supports-color "^7.1.0" 226 | 227 | chalk@^5.0.0, chalk@^5.1.2: 228 | version "5.2.0" 229 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3" 230 | integrity sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA== 231 | 232 | chardet@^0.7.0: 233 | version "0.7.0" 234 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 235 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 236 | 237 | cli-cursor@^2.1.0: 238 | version "2.1.0" 239 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 240 | integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== 241 | dependencies: 242 | restore-cursor "^2.0.0" 243 | 244 | cli-cursor@^4.0.0: 245 | version "4.0.0" 246 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" 247 | integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== 248 | dependencies: 249 | restore-cursor "^4.0.0" 250 | 251 | cli-spinners@^2.6.1: 252 | version "2.7.0" 253 | resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" 254 | integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== 255 | 256 | cli-width@^2.0.0: 257 | version "2.2.1" 258 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" 259 | integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== 260 | 261 | cli-width@^4.0.0: 262 | version "4.0.0" 263 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.0.0.tgz#a5622f6a3b0a9e3e711a25f099bf2399f608caf6" 264 | integrity sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw== 265 | 266 | clone@^1.0.2: 267 | version "1.0.4" 268 | resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" 269 | integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== 270 | 271 | color-convert@^1.9.0: 272 | version "1.9.3" 273 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 274 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 275 | dependencies: 276 | color-name "1.1.3" 277 | 278 | color-convert@^2.0.1: 279 | version "2.0.1" 280 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 281 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 282 | dependencies: 283 | color-name "~1.1.4" 284 | 285 | color-name@1.1.3: 286 | version "1.1.3" 287 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 288 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 289 | 290 | color-name@~1.1.4: 291 | version "1.1.4" 292 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 293 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 294 | 295 | defaults@^1.0.3: 296 | version "1.0.4" 297 | resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" 298 | integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== 299 | dependencies: 300 | clone "^1.0.2" 301 | 302 | eastasianwidth@^0.2.0: 303 | version "0.2.0" 304 | resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" 305 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 306 | 307 | emoji-regex@^9.2.2: 308 | version "9.2.2" 309 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" 310 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 311 | 312 | esbuild@^0.17.7: 313 | version "0.17.8" 314 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.8.tgz#f7f799abc7cdce3f0f2e3e0c01f120d4d55193b4" 315 | integrity sha512-g24ybC3fWhZddZK6R3uD2iF/RIPnRpwJAqLov6ouX3hMbY4+tKolP0VMF3zuIYCaXun+yHwS5IPQ91N2BT191g== 316 | optionalDependencies: 317 | "@esbuild/android-arm" "0.17.8" 318 | "@esbuild/android-arm64" "0.17.8" 319 | "@esbuild/android-x64" "0.17.8" 320 | "@esbuild/darwin-arm64" "0.17.8" 321 | "@esbuild/darwin-x64" "0.17.8" 322 | "@esbuild/freebsd-arm64" "0.17.8" 323 | "@esbuild/freebsd-x64" "0.17.8" 324 | "@esbuild/linux-arm" "0.17.8" 325 | "@esbuild/linux-arm64" "0.17.8" 326 | "@esbuild/linux-ia32" "0.17.8" 327 | "@esbuild/linux-loong64" "0.17.8" 328 | "@esbuild/linux-mips64el" "0.17.8" 329 | "@esbuild/linux-ppc64" "0.17.8" 330 | "@esbuild/linux-riscv64" "0.17.8" 331 | "@esbuild/linux-s390x" "0.17.8" 332 | "@esbuild/linux-x64" "0.17.8" 333 | "@esbuild/netbsd-x64" "0.17.8" 334 | "@esbuild/openbsd-x64" "0.17.8" 335 | "@esbuild/sunos-x64" "0.17.8" 336 | "@esbuild/win32-arm64" "0.17.8" 337 | "@esbuild/win32-ia32" "0.17.8" 338 | "@esbuild/win32-x64" "0.17.8" 339 | 340 | escape-string-regexp@^1.0.5: 341 | version "1.0.5" 342 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 343 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 344 | 345 | escape-string-regexp@^5.0.0: 346 | version "5.0.0" 347 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" 348 | integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== 349 | 350 | external-editor@^3.0.3: 351 | version "3.1.0" 352 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" 353 | integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== 354 | dependencies: 355 | chardet "^0.7.0" 356 | iconv-lite "^0.4.24" 357 | tmp "^0.0.33" 358 | 359 | figures@^2.0.0: 360 | version "2.0.0" 361 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 362 | integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== 363 | dependencies: 364 | escape-string-regexp "^1.0.5" 365 | 366 | figures@^3.2.0: 367 | version "3.2.0" 368 | resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" 369 | integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== 370 | dependencies: 371 | escape-string-regexp "^1.0.5" 372 | 373 | figures@^5.0.0: 374 | version "5.0.0" 375 | resolved "https://registry.yarnpkg.com/figures/-/figures-5.0.0.tgz#126cd055052dea699f8a54e8c9450e6ecfc44d5f" 376 | integrity sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg== 377 | dependencies: 378 | escape-string-regexp "^5.0.0" 379 | is-unicode-supported "^1.2.0" 380 | 381 | fuzzy@^0.1.3: 382 | version "0.1.3" 383 | resolved "https://registry.yarnpkg.com/fuzzy/-/fuzzy-0.1.3.tgz#4c76ec2ff0ac1a36a9dccf9a00df8623078d4ed8" 384 | integrity sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w== 385 | 386 | has-flag@^3.0.0: 387 | version "3.0.0" 388 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 389 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 390 | 391 | has-flag@^4.0.0: 392 | version "4.0.0" 393 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 394 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 395 | 396 | iconv-lite@^0.4.24: 397 | version "0.4.24" 398 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 399 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 400 | dependencies: 401 | safer-buffer ">= 2.1.2 < 3" 402 | 403 | ieee754@^1.2.1: 404 | version "1.2.1" 405 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 406 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 407 | 408 | inherits@^2.0.3, inherits@^2.0.4: 409 | version "2.0.4" 410 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 411 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 412 | 413 | inquirer-autocomplete-prompt@^1.0.2: 414 | version "1.4.0" 415 | resolved "https://registry.yarnpkg.com/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.4.0.tgz#e767592f747e3d5bb6336fe71fb4094352e4c317" 416 | integrity sha512-qHgHyJmbULt4hI+kCmwX92MnSxDs/Yhdt4wPA30qnoa01OF6uTXV8yvH4hKXgdaTNmkZ9D01MHjqKYEuJN+ONw== 417 | dependencies: 418 | ansi-escapes "^4.3.1" 419 | chalk "^4.0.0" 420 | figures "^3.2.0" 421 | run-async "^2.4.0" 422 | rxjs "^6.6.2" 423 | 424 | inquirer-fuzzy-path@^2.3.0: 425 | version "2.3.0" 426 | resolved "https://registry.yarnpkg.com/inquirer-fuzzy-path/-/inquirer-fuzzy-path-2.3.0.tgz#9bc51dc47d7d9c7eb53daac7fd7c9e615eb040c5" 427 | integrity sha512-zfHC/97GSkxKKM7IctZM22x1sVi+FYBh9oaHTmI7Er/GKFpNykUgtviTmqqpiFQs5yJoSowxbT0PHy6N+H+QRg== 428 | dependencies: 429 | ansi-styles "^3.2.1" 430 | fuzzy "^0.1.3" 431 | inquirer "^6.0.0" 432 | inquirer-autocomplete-prompt "^1.0.2" 433 | strip-ansi "^4.0.0" 434 | 435 | inquirer@^6.0.0: 436 | version "6.5.2" 437 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" 438 | integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== 439 | dependencies: 440 | ansi-escapes "^3.2.0" 441 | chalk "^2.4.2" 442 | cli-cursor "^2.1.0" 443 | cli-width "^2.0.0" 444 | external-editor "^3.0.3" 445 | figures "^2.0.0" 446 | lodash "^4.17.12" 447 | mute-stream "0.0.7" 448 | run-async "^2.2.0" 449 | rxjs "^6.4.0" 450 | string-width "^2.1.0" 451 | strip-ansi "^5.1.0" 452 | through "^2.3.6" 453 | 454 | inquirer@^9.1.4: 455 | version "9.1.4" 456 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-9.1.4.tgz#482da8803670a64bd942bc5166a9547a19d41474" 457 | integrity sha512-9hiJxE5gkK/cM2d1mTEnuurGTAoHebbkX0BYl3h7iEg7FYfuNIom+nDfBCSWtvSnoSrWCeBxqqBZu26xdlJlXA== 458 | dependencies: 459 | ansi-escapes "^6.0.0" 460 | chalk "^5.1.2" 461 | cli-cursor "^4.0.0" 462 | cli-width "^4.0.0" 463 | external-editor "^3.0.3" 464 | figures "^5.0.0" 465 | lodash "^4.17.21" 466 | mute-stream "0.0.8" 467 | ora "^6.1.2" 468 | run-async "^2.4.0" 469 | rxjs "^7.5.7" 470 | string-width "^5.1.2" 471 | strip-ansi "^7.0.1" 472 | through "^2.3.6" 473 | wrap-ansi "^8.0.1" 474 | 475 | is-fullwidth-code-point@^2.0.0: 476 | version "2.0.0" 477 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 478 | integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== 479 | 480 | is-interactive@^2.0.0: 481 | version "2.0.0" 482 | resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90" 483 | integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== 484 | 485 | is-unicode-supported@^1.1.0, is-unicode-supported@^1.2.0: 486 | version "1.3.0" 487 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714" 488 | integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== 489 | 490 | lodash@^4.17.12, lodash@^4.17.21: 491 | version "4.17.21" 492 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 493 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 494 | 495 | log-symbols@^5.1.0: 496 | version "5.1.0" 497 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-5.1.0.tgz#a20e3b9a5f53fac6aeb8e2bb22c07cf2c8f16d93" 498 | integrity sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA== 499 | dependencies: 500 | chalk "^5.0.0" 501 | is-unicode-supported "^1.1.0" 502 | 503 | mimic-fn@^1.0.0: 504 | version "1.2.0" 505 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 506 | integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== 507 | 508 | mimic-fn@^2.1.0: 509 | version "2.1.0" 510 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 511 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 512 | 513 | mute-stream@0.0.7: 514 | version "0.0.7" 515 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 516 | integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== 517 | 518 | mute-stream@0.0.8: 519 | version "0.0.8" 520 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 521 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== 522 | 523 | onetime@^2.0.0: 524 | version "2.0.1" 525 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 526 | integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== 527 | dependencies: 528 | mimic-fn "^1.0.0" 529 | 530 | onetime@^5.1.0: 531 | version "5.1.2" 532 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 533 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 534 | dependencies: 535 | mimic-fn "^2.1.0" 536 | 537 | ora@^6.1.2: 538 | version "6.1.2" 539 | resolved "https://registry.yarnpkg.com/ora/-/ora-6.1.2.tgz#7b3c1356b42fd90fb1dad043d5dbe649388a0bf5" 540 | integrity sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw== 541 | dependencies: 542 | bl "^5.0.0" 543 | chalk "^5.0.0" 544 | cli-cursor "^4.0.0" 545 | cli-spinners "^2.6.1" 546 | is-interactive "^2.0.0" 547 | is-unicode-supported "^1.1.0" 548 | log-symbols "^5.1.0" 549 | strip-ansi "^7.0.1" 550 | wcwidth "^1.0.1" 551 | 552 | os-tmpdir@~1.0.2: 553 | version "1.0.2" 554 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 555 | integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== 556 | 557 | readable-stream@^3.4.0: 558 | version "3.6.0" 559 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 560 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 561 | dependencies: 562 | inherits "^2.0.3" 563 | string_decoder "^1.1.1" 564 | util-deprecate "^1.0.1" 565 | 566 | restore-cursor@^2.0.0: 567 | version "2.0.0" 568 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 569 | integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== 570 | dependencies: 571 | onetime "^2.0.0" 572 | signal-exit "^3.0.2" 573 | 574 | restore-cursor@^4.0.0: 575 | version "4.0.0" 576 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" 577 | integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== 578 | dependencies: 579 | onetime "^5.1.0" 580 | signal-exit "^3.0.2" 581 | 582 | run-async@^2.2.0, run-async@^2.4.0: 583 | version "2.4.1" 584 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" 585 | integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== 586 | 587 | rxjs@^6.4.0, rxjs@^6.6.2: 588 | version "6.6.7" 589 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" 590 | integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== 591 | dependencies: 592 | tslib "^1.9.0" 593 | 594 | rxjs@^7.2.0, rxjs@^7.5.7: 595 | version "7.8.0" 596 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" 597 | integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== 598 | dependencies: 599 | tslib "^2.1.0" 600 | 601 | safe-buffer@~5.2.0: 602 | version "5.2.1" 603 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 604 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 605 | 606 | "safer-buffer@>= 2.1.2 < 3": 607 | version "2.1.2" 608 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 609 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 610 | 611 | signal-exit@^3.0.2: 612 | version "3.0.7" 613 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 614 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 615 | 616 | string-width@^2.1.0: 617 | version "2.1.1" 618 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 619 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 620 | dependencies: 621 | is-fullwidth-code-point "^2.0.0" 622 | strip-ansi "^4.0.0" 623 | 624 | string-width@^5.0.1, string-width@^5.1.2: 625 | version "5.1.2" 626 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" 627 | integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== 628 | dependencies: 629 | eastasianwidth "^0.2.0" 630 | emoji-regex "^9.2.2" 631 | strip-ansi "^7.0.1" 632 | 633 | string_decoder@^1.1.1: 634 | version "1.3.0" 635 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 636 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 637 | dependencies: 638 | safe-buffer "~5.2.0" 639 | 640 | strip-ansi@^4.0.0: 641 | version "4.0.0" 642 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 643 | integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== 644 | dependencies: 645 | ansi-regex "^3.0.0" 646 | 647 | strip-ansi@^5.1.0: 648 | version "5.2.0" 649 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 650 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 651 | dependencies: 652 | ansi-regex "^4.1.0" 653 | 654 | strip-ansi@^7.0.1: 655 | version "7.0.1" 656 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" 657 | integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== 658 | dependencies: 659 | ansi-regex "^6.0.1" 660 | 661 | supports-color@^5.3.0: 662 | version "5.5.0" 663 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 664 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 665 | dependencies: 666 | has-flag "^3.0.0" 667 | 668 | supports-color@^7.1.0: 669 | version "7.2.0" 670 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 671 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 672 | dependencies: 673 | has-flag "^4.0.0" 674 | 675 | through@^2.3.6: 676 | version "2.3.8" 677 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 678 | integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== 679 | 680 | tmp@^0.0.33: 681 | version "0.0.33" 682 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 683 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 684 | dependencies: 685 | os-tmpdir "~1.0.2" 686 | 687 | tslib@^1.9.0: 688 | version "1.14.1" 689 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 690 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 691 | 692 | tslib@^2.1.0: 693 | version "2.5.0" 694 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" 695 | integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== 696 | 697 | type-fest@^0.21.3: 698 | version "0.21.3" 699 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" 700 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== 701 | 702 | type-fest@^3.0.0: 703 | version "3.5.7" 704 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.5.7.tgz#1ee9efc9a172f4002c40b896689928a7bba537f2" 705 | integrity sha512-6J4bYzb4sdkcLBty4XW7F18VPI66M4boXNE+CY40532oq2OJe6AVMB5NmjOp6skt/jw5mRjz/hLRpuglz0U+FA== 706 | 707 | typescript@^4.9.5: 708 | version "4.9.5" 709 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" 710 | integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== 711 | 712 | util-deprecate@^1.0.1: 713 | version "1.0.2" 714 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 715 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 716 | 717 | wcwidth@^1.0.1: 718 | version "1.0.1" 719 | resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" 720 | integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== 721 | dependencies: 722 | defaults "^1.0.3" 723 | 724 | wrap-ansi@^8.0.1: 725 | version "8.1.0" 726 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" 727 | integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== 728 | dependencies: 729 | ansi-styles "^6.1.0" 730 | string-width "^5.0.1" 731 | strip-ansi "^7.0.1" 732 | --------------------------------------------------------------------------------