From 29b17b629cc9cbdfc5626b0895facb315f404c53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Nov 2023 15:55:12 +0000 Subject: [PATCH 1/8] Bump ansi-regex from 3.0.0 to 3.0.1 Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1. - [Release notes](https://github.com/chalk/ansi-regex/releases) - [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1) --- updated-dependencies: - dependency-name: ansi-regex dependency-type: indirect ... Signed-off-by: dependabot[bot] --- yarn.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index eea472a..a5afe5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,12 +28,12 @@ ansi-escapes@^3.2.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" ansi-styles@^3.2.1: version "3.2.1" From 448ceb0258c7bad56193e4d1fe60abee16fb2c00 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Nov 2023 15:55:19 +0000 Subject: [PATCH 2/8] Bump lodash from 4.17.15 to 4.17.21 Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.21) --- updated-dependencies: - dependency-name: lodash dependency-type: indirect ... Signed-off-by: dependabot[bot] --- yarn.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index eea472a..ce3b4c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -128,8 +128,8 @@ is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" lodash@^4.17.11: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" mimic-fn@^1.0.0: version "1.2.0" From dffae5b346db9acd88e27dc21847c06db7ec1e53 Mon Sep 17 00:00:00 2001 From: GAEAlimited <69316708+GAEAlimited@users.noreply.github.com> Date: Sun, 16 Jun 2024 14:22:32 -0400 Subject: [PATCH 3/8] Create CNAME --- docs/CNAME | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/CNAME diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 0000000..a43fce7 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +0x-launch-kit-chi.vercel.app \ No newline at end of file From ce54d21fd0886f593056dbe6f74bd56d129af793 Mon Sep 17 00:00:00 2001 From: GAEAlimited <69316708+GAEAlimited@users.noreply.github.com> Date: Sun, 16 Jun 2024 14:24:59 -0400 Subject: [PATCH 4/8] Delete CNAME --- docs/CNAME | 1 - 1 file changed, 1 deletion(-) delete mode 100644 docs/CNAME diff --git a/docs/CNAME b/docs/CNAME deleted file mode 100644 index a43fce7..0000000 --- a/docs/CNAME +++ /dev/null @@ -1 +0,0 @@ -0x-launch-kit-chi.vercel.app \ No newline at end of file From cef012cdba39d5aca12d723391ef9ef999b4a138 Mon Sep 17 00:00:00 2001 From: Nickolas-Antoine Brochu Date: Thu, 27 Jun 2024 10:42:24 -0400 Subject: [PATCH 5/8] Auto stash before patch apply of "Code Suggestion for #6" --- .github/workflows/docker-image.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000..f656760 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,18 @@ +name: Docker image + +on: + push: + branches: [ $default-branch ] + pull_request: + branches: [ $default-branch ] + +jobs: + + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Build the Docker image + run: docker build . --file Dockerfile --tag my-image-name:$(date +%s) From 4fb595be77767663b2a3a7463c8ff3b14cfde499 Mon Sep 17 00:00:00 2001 From: Nickolas-Antoine Brochu Date: Sat, 29 Jun 2024 00:13:27 -0400 Subject: [PATCH 6/8] chore: Add Dependabot configuration for devcontainers Signed-off-by: Nickolas-Antoine Brochu --- .github/dependabot.yml | 12 ++++++++++++ .vscode/Bookmark.bcat | 1 + package.json | 11 +++-------- 3 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .vscode/Bookmark.bcat diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..f33a02c --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for more information: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates +# https://containers.dev/guide/dependabot + +version: 2 +updates: + - package-ecosystem: "devcontainers" + directory: "/" + schedule: + interval: weekly diff --git a/.vscode/Bookmark.bcat b/.vscode/Bookmark.bcat new file mode 100644 index 0000000..fcb2700 --- /dev/null +++ b/.vscode/Bookmark.bcat @@ -0,0 +1 @@ +[{"Group":"This is a sample~","Time":"","FileAndPath":[{"Tag":"Welcome use bookmark","Path":"","Start":"0.0","End":"0.0","Time":""}]}] \ No newline at end of file diff --git a/package.json b/package.json index c311177..3b62ffc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "@0x/launch-kit-wizard", - "version": "1.0.1", + "name": "0x-launch-kit", + "version": "0.0.1", "description": "", "bin": { "create-launch-kit-app": "./lib/index.js" @@ -11,21 +11,16 @@ "scripts": { "build": "tsc", "prepublishOnly": "npm run build", - "prettier": "prettier --write '**/*.{ts,tsx,json,md}' --config .prettierrc", - "start": "node ./lib/index.js && docker-compose up" + "prettier": "prettier --write '**/*.{ts,tsx,json,md}' --config .prettierrc" }, "author": "", "license": "Apache-2.0", "devDependencies": { "@types/inquirer": "^6.0.2", - "@types/node": "^12.0.4", "prettier": "^1.17.1", "typescript": "^3.4.5" }, "dependencies": { "inquirer": "^6.3.1" - }, - "publishConfig": { - "access": "public" } } From f7a0db723d9757b467a4b8c73b0c70d7b2572087 Mon Sep 17 00:00:00 2001 From: Nickolas-Antoine Brochu Date: Sat, 29 Jun 2024 00:19:09 -0400 Subject: [PATCH 7/8] chore: Add .fake file to .gitignore and update yarn.lock This commit adds the .fake file to the .gitignore file and updates the yarn.lock file. The .fake file was added to the .gitignore to exclude it from version control. The yarn.lock file was updated to reflect changes in the dependencies. Note: This is a suggestion based on the code changes and recent commits. Please review and modify as needed. Signed-off-by: Nickolas-Antoine Brochu --- .clj-kondo/.cache/v1/lock | 0 .devcontainer/devcontainer.json | 219 ++++++++++++++++++++++++++++++++ .gitignore | 2 + .lsp/.cache/db.transit.json | 1 + .vscode/CatStatus.bcat | 1 + .vscode/extensions.json | 3 + .vscode/settings.json | 11 ++ locales/EN_US.json | 8 ++ locales/chains.config.json | 26 ++++ locales/desc.json | 8 ++ src/build.ts | 113 ++-------------- src/index.ts | 165 ++++-------------------- tsconfig.json | 1 - yarn.lock | 4 - 14 files changed, 316 insertions(+), 246 deletions(-) create mode 100644 .clj-kondo/.cache/v1/lock create mode 100644 .devcontainer/devcontainer.json create mode 100644 .lsp/.cache/db.transit.json create mode 100644 .vscode/CatStatus.bcat create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 locales/EN_US.json create mode 100644 locales/chains.config.json create mode 100644 locales/desc.json diff --git a/.clj-kondo/.cache/v1/lock b/.clj-kondo/.cache/v1/lock new file mode 100644 index 0000000..e69de29 diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..11079bf --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,219 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node +{ + "name": "Node.js & TypeScript", + // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile + "image": "mcr.microsoft.com/devcontainers/typescript-node:1-20-bookworm", + "features": { + "ghcr.io/devcontainers/features/aws-cli:1": {}, + "ghcr.io/devcontainers/features/azure-cli:1": {}, + "ghcr.io/devcontainers/features/docker-in-docker:2": {}, + "ghcr.io/devcontainers/features/docker-outside-of-docker:1": {}, + "ghcr.io/devcontainers/features/git:1": {}, + "ghcr.io/devcontainers/features/github-cli:1": {}, + "ghcr.io/devcontainers/features/go:1": {}, + "ghcr.io/devcontainers/features/java:1": {}, + "ghcr.io/devcontainers/features/nix:1": {}, + "ghcr.io/devcontainers/features/node:1": {}, + "ghcr.io/devcontainers/features/php:1": {}, + "ghcr.io/devcontainers/features/powershell:1": {}, + "ghcr.io/devcontainers/features/python:1": {}, + "ghcr.io/devcontainers/features/sshd:1": {}, + "ghcr.io/devcontainers/features/terraform:1": {}, + "ghcr.io/meaningful-ooo/devcontainer-features/homebrew:2": {}, + "ghcr.io/devcontainers-contrib/features/actionlint:1": {}, + "ghcr.io/devcontainers-contrib/features/actions-runner:1": {}, + "ghcr.io/devcontainers-contrib/features/actions-runner-noexternals:1": {}, + "ghcr.io/devcontainers-contrib/features/actions-runner-noruntime:1": {}, + "ghcr.io/devcontainers-contrib/features/actions-runner-noruntime-noexternals:1": {}, + "ghcr.io/devcontainers-contrib/features/age-keygen:1": {}, + "ghcr.io/devcontainers-contrib/features/airplane-cli:1": {}, + "ghcr.io/devcontainers-contrib/features/amplify-cli:2": {}, + "ghcr.io/devcontainers-contrib/features/auditjs:1": {}, + "ghcr.io/devcontainers-contrib/features/autoenv:1": {}, + "ghcr.io/devcontainers-contrib/features/bash-command:1": {}, + "ghcr.io/devcontainers-contrib/features/bin:1": {}, + "ghcr.io/devcontainers-contrib/features/boundary-asdf:2": {}, + "ghcr.io/devcontainers-contrib/features/browserify:2": {}, + "ghcr.io/devcontainers-contrib/features/cert-manager:1": {}, + "ghcr.io/devcontainers-contrib/features/circleci-cli:1": {}, + "ghcr.io/devcontainers-contrib/features/codefresh-cli:1": {}, + "ghcr.io/devcontainers-contrib/features/composer:1": {}, + "ghcr.io/devcontainers-contrib/features/consul-asdf:2": {}, + "ghcr.io/devcontainers-contrib/features/curl-apt-get:1": {}, + "ghcr.io/devcontainers-contrib/features/curl-homebrew:1": {}, + "ghcr.io/devcontainers-contrib/features/devcontainers-cli:1": {}, + "ghcr.io/devcontainers-contrib/features/doctoolchain-sdkman:2": {}, + "ghcr.io/devcontainers-contrib/features/eget:1": {}, + "ghcr.io/devcontainers-contrib/features/ganache:1": {}, + "ghcr.io/devcontainers-contrib/features/gh-cli:1": {}, + "ghcr.io/devcontainers-contrib/features/git-lfs:1": {}, + "ghcr.io/devcontainers-contrib/features/gitomatic:1": {}, + "ghcr.io/devcontainers-contrib/features/go-task:1": {}, + "ghcr.io/devcontainers-contrib/features/grpcurl-asdf:2": {}, + "ghcr.io/devcontainers-contrib/features/gulp-cli:2": {}, + "ghcr.io/devcontainers-contrib/features/heroku-cli:1": {}, + "ghcr.io/devcontainers-contrib/features/homebrew-package:1": {}, + "ghcr.io/devcontainers-contrib/features/http-server:1": {}, + "ghcr.io/devcontainers-contrib/features/jenkinsx-cli:1": {}, + "ghcr.io/devcontainers-contrib/features/jest:2": {}, + "ghcr.io/devcontainers-contrib/features/json-server:1": {}, + "ghcr.io/devcontainers-contrib/features/kotlin-sdkman:2": {}, + "ghcr.io/devcontainers-contrib/features/lerna-npm:1": {}, + "ghcr.io/devcontainers-contrib/features/markdownlint-cli:1": {}, + "ghcr.io/devcontainers-contrib/features/markdownlint-cli2:1": {}, + "ghcr.io/devcontainers-contrib/features/maven-sdkman:2": {}, + "ghcr.io/devcontainers-contrib/features/mocha:2": {}, + "ghcr.io/devcontainers-contrib/features/mysql-homebrew:1": {}, + "ghcr.io/devcontainers-contrib/features/node-asdf:0": {}, + "ghcr.io/devcontainers-contrib/features/npm-package:1": {}, + "ghcr.io/devcontainers-contrib/features/nx-npm:1": {}, + "ghcr.io/devcontainers-contrib/features/packer-asdf:2": {}, + "ghcr.io/devcontainers-contrib/features/perl-asdf:2": {}, + "ghcr.io/devcontainers-contrib/features/pipenv:2": {}, + "ghcr.io/devcontainers-contrib/features/pipx-package:1": {}, + "ghcr.io/devcontainers-contrib/features/pnpm:2": {}, + "ghcr.io/devcontainers-contrib/features/postgres-asdf:1": {}, + "ghcr.io/devcontainers-contrib/features/powerbi-visuals-tools:2": {}, + "ghcr.io/devcontainers-contrib/features/powershell:1": {}, + "ghcr.io/devcontainers-contrib/features/pre-commit:2": {}, + "ghcr.io/devcontainers-contrib/features/prettier:1": {}, + "ghcr.io/devcontainers-contrib/features/prisma:2": {}, + "ghcr.io/devcontainers-contrib/features/pyscaffold:2": {}, + "ghcr.io/devcontainers-contrib/features/qrcode:2": {}, + "ghcr.io/devcontainers-contrib/features/redis-homebrew:1": {}, + "ghcr.io/devcontainers-contrib/features/renovate-cli:2": {}, + "ghcr.io/devcontainers-contrib/features/scala-sdkman:2": {}, + "ghcr.io/devcontainers-contrib/features/scalacli-sdkman:2": {}, + "ghcr.io/devcontainers-contrib/features/serverless:2": {}, + "ghcr.io/devcontainers-contrib/features/snyk-cli:1": {}, + "ghcr.io/devcontainers-contrib/features/springboot-sdkman:2": {}, + "ghcr.io/devcontainers-contrib/features/syncthing:1": {}, + "ghcr.io/devcontainers-contrib/features/syntaqx-serve:1": {}, + "ghcr.io/devcontainers-contrib/features/terraform-asdf:2": {}, + "ghcr.io/devcontainers-contrib/features/terraform-docs:1": {}, + "ghcr.io/devcontainers-contrib/features/terraform-ls-asdf:2": {}, + "ghcr.io/devcontainers-contrib/features/terraformer:1": {}, + "ghcr.io/devcontainers-contrib/features/terrascan:1": {}, + "ghcr.io/devcontainers-contrib/features/tfcdk-cli:1": {}, + "ghcr.io/devcontainers-contrib/features/tfswitch:1": {}, + "ghcr.io/devcontainers-contrib/features/truffle:1": {}, + "ghcr.io/devcontainers-contrib/features/ts-node:1": {}, + "ghcr.io/devcontainers-contrib/features/tsx:1": {}, + "ghcr.io/devcontainers-contrib/features/turborepo-npm:1": {}, + "ghcr.io/devcontainers-contrib/features/typescript:2": {}, + "ghcr.io/devcontainers-contrib/features/vault-asdf:2": {}, + "ghcr.io/devcontainers-contrib/features/vercel-cli:1": {}, + "ghcr.io/devcontainers-contrib/features/vercel-pkg:1": {}, + "ghcr.io/devcontainers-contrib/features/vercel-release:1": {}, + "ghcr.io/devcontainers-contrib/features/vercel-serve:1": {}, + "ghcr.io/devcontainers-contrib/features/vscode-cli:1": {}, + "ghcr.io/devcontainers-contrib/features/vscode-server:1": {}, + "ghcr.io/devcontainers-contrib/features/vue-cli:2": {}, + "ghcr.io/devcontainers-contrib/features/w3m-apt-get:1": {}, + "ghcr.io/devcontainers-contrib/features/w3m-homebrew:1": {}, + "ghcr.io/devcontainers-contrib/features/wget-apt-get:1": {}, + "ghcr.io/devcontainers-contrib/features/wget-homebrew:1": {}, + "ghcr.io/devcontainers-contrib/features/yamllint:2": {}, + "ghcr.io/devcontainers-contrib/features/youtube-dl:2": {}, + "ghcr.io/devcontainers-contrib/features/zig:1": {}, + "ghcr.io/eitsupi/devcontainer-features/go-task:1": {}, + "ghcr.io/dhoeric/features/act:1": {}, + "ghcr.io/dhoeric/features/terraform-docs:1": {}, + "ghcr.io/rchaganti/vsc-devcontainer-features/wabt:1": {}, + "ghcr.io/customink/codespaces-features/docker-in-docker-amzn:1": {}, + "ghcr.io/customink/codespaces-features/docker-log-level:1": {}, + "ghcr.io/stuartleeks/dev-container-features/shell-history:0": {}, + "ghcr.io/guiyomh/features/just:0": {}, + "ghcr.io/guiyomh/features/vim:0": {}, + "ghcr.io/natescherer/devcontainers-custom-features/powershell-resources:1": {}, + "ghcr.io/shyim/devcontainers-features/php:0": {}, + "ghcr.io/shyim/devcontainers-features/symfony-cli:0": {}, + "ghcr.io/jungaretti/features/make:1": {}, + "ghcr.io/jungaretti/features/vim:1": {}, + "ghcr.io/lukewiwa/features/shellcheck:0": {}, + "ghcr.io/rio/features/skaffold:2": {}, + "ghcr.io/rio/features/vcluster:1": {}, + "ghcr.io/edouard-lopez/devcontainer-features/bats:0": {}, + "ghcr.io/jlaundry/devcontainer-features/azure-functions-core-tools:1": {}, + "ghcr.io/jlaundry/devcontainer-features/mssql-odbc-driver:1": {}, + "ghcr.io/mikaello/devcontainer-features/kotlinc:1": {}, + "ghcr.io/oleksis/devcontainer-features/python-launcher:1": {}, + "ghcr.io/warrenbuckley/codespace-features/sqlite:1": {}, + "ghcr.io/lentzi90/features/tilt:0": {}, + "ghcr.io/msclock/features/gitlab-ci-local:0": {}, + "ghcr.io/eliises/devcontainer-features/bash-profile:1": {}, + "ghcr.io/eliises/devcontainer-features/devcontainers-cli:1": {}, + "ghcr.io/frntn/devcontainers-features/postman:1": {}, + "ghcr.io/christophermacgown/devcontainer-features/direnv:1": {}, + "ghcr.io/balazs23/devcontainers-features/nx:1": {}, + "ghcr.io/mickeahlinder/devcontainer-features/tfenv:1": {}, + "ghcr.io/r3dpoint/devcontainer-features/tailwindcss-standalone-cli:1": {}, + "ghcr.io/akhildevelops/devcontainer-features/pip:0": {}, + "ghcr.io/sonikro/devcontainer-features/semgrep:1": {}, + "ghcr.io/flexwie/devcontainer-features/terraspace:1": {}, + "ghcr.io/azutake/devcontainer-features/go-packages-install:0": {}, + "ghcr.io/wxw-matt/devcontainer-features/script_runner:0": {}, + "ghcr.io/joedmck/devcontainer-features/cdktf:1": {}, + "ghcr.io/joedmck/devcontainer-features/serve:1": {}, + "ghcr.io/codeman99/features/circleci-cli:1": {}, + "ghcr.io/devcontainers-community/templates/dart:1": {}, + "ghcr.io/devcontainers-community/features/tinygo:1": {}, + "ghcr.io/devcontainers-community/features/llvm:3": {}, + "ghcr.io/devcontainers-community/npm-features/prettier:1": {}, + "ghcr.io/devcontainers-community/npm-features/typescript:1": {}, + "ghcr.io/lee-orr/rusty-dev-containers/cargo-audit:0": {}, + "ghcr.io/joshuanianji/devcontainer-features/edgedb-cli:1": {}, + "ghcr.io/joshuanianji/devcontainer-features/terraform-cli-persistence:1": {}, + "ghcr.io/nullcoder/devcontainer-features/stripe-cli:1": {}, + "ghcr.io/jayree/devcontainer-features/npm-registry:1": {}, + "ghcr.io/bdsoha/devcontainers/custom-root-ca:1": {}, + "ghcr.io/itsmechlark/features/act:1": {}, + "ghcr.io/itsmechlark/features/postgresql:1": {}, + "ghcr.io/itsmechlark/features/redis-server:1": {}, + "ghcr.io/itsmechlark/features/snowflake-odbc:1": {}, + "ghcr.io/marcozac/devcontainer-features/shellcheck:1": {}, + "ghcr.io/robbert229/devcontainer-features/postgresql-client:1": {}, + "ghcr.io/maks1ms/devcontainers-features/wine:0": {}, + "ghcr.io/schlich/devcontainer-features/cypress:1": {}, + "ghcr.io/schlich/devcontainer-features/jenkins-x:1": {}, + "ghcr.io/audacioustux/devcontainers/common-utils-extras:1": {}, + "ghcr.io/audacioustux/devcontainers/scala-toolchain:1": {}, + "ghcr.io/audacioustux/devcontainers/taskfile:1": {}, + "ghcr.io/nucleuscloud/devcontainer-features/sqlc:1": {}, + "ghcr.io/paul-gilber/devcontainer-features/yamllint-homebrew:1": {}, + "ghcr.io/prulloac/devcontainer-features/pre-commit:1": {}, + "ghcr.io/hspaans/devcontainer-features/pytest:1": {}, + "ghcr.io/hspaans/devcontainer-features/sshpass:1": {}, + "ghcr.io/dlouwers/devcontainer-features/devbox:1": {}, + "ghcr.io/opencodeco/devcontainers/install-php-extensions:0": {}, + "ghcr.io/bartventer/arch-devcontainer-features/azure-cli:1": {}, + "ghcr.io/bartventer/arch-devcontainer-features/common-utils:1": {}, + "ghcr.io/bartventer/arch-devcontainer-features/docker-in-docker:1": {}, + "ghcr.io/bartventer/arch-devcontainer-features/docker-outside-of-docker:1": {}, + "ghcr.io/bartventer/arch-devcontainer-features/go:1": {}, + "ghcr.io/bartventer/arch-devcontainer-features/terraform:1": {} + }, + "customizations": { + "vscode": { + "extensions": [ + "catalogfi.vscode-hardhat-multichain" + ] + } + } + + // Features to add to the dev container. More info: https://containers.dev/features. + // "features": {}, + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "yarn install", + + // Configure tool-specific properties. + // "customizations": {}, + + // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. + // "remoteUser": "root" +} diff --git a/.gitignore b/.gitignore index db81f67..e45e98a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ node_modules/ lib/ postgres/ docker-compose.yml + +.fake \ No newline at end of file diff --git a/.lsp/.cache/db.transit.json b/.lsp/.cache/db.transit.json new file mode 100644 index 0000000..f3580cd --- /dev/null +++ b/.lsp/.cache/db.transit.json @@ -0,0 +1 @@ +["^ ","~:classpath",["~#set",[]],"~:project-hash","","~:project-root","C:\\Users\\ELITE\\Documents\\GitHub\\0x-launch-kit","~:kondo-config-hash","dba27a44bfa82a1560968454c0684c64908ce17106838a64426cf1648c725d51","~:dependency-scheme","jar","~:analysis",null,"~:analysis-checksums",["^ "],"~:project-analysis-type","~:project-and-full-dependencies","~:version",12,"~:stubs-generation-namespaces",["^1",[]]] \ No newline at end of file diff --git a/.vscode/CatStatus.bcat b/.vscode/CatStatus.bcat new file mode 100644 index 0000000..c227083 --- /dev/null +++ b/.vscode/CatStatus.bcat @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..4ef01b0 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": [] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..874e0a0 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "swift.sanitizer": "address", + "swift.searchSubfoldersForPackages": true, + "swift.backgroundCompilation": true, + "swift.sourcekit-lsp.trace.server": "verbose", + "swift.path": "c:\\Users\\ELITE\\Documents\\GitHub\\0x-launch-kit\\.vscode", + "terminal.integrated.defaultProfile.windows": "Git Bash", + "go.toolsEnvVars": { + "GOTOOLCHAIN": "auto" + } +} diff --git a/locales/EN_US.json b/locales/EN_US.json new file mode 100644 index 0000000..0244769 --- /dev/null +++ b/locales/EN_US.json @@ -0,0 +1,8 @@ +{ + "main": { + "sample": "Example", + "save": "Save", + "cargo.add": "Add", + "cargo.rm": "Remove" + } +} \ No newline at end of file diff --git a/locales/chains.config.json b/locales/chains.config.json new file mode 100644 index 0000000..46bf88f --- /dev/null +++ b/locales/chains.config.json @@ -0,0 +1,26 @@ +{"BSC": {"Type": "Job:Chain","ChainID": 56,"RPCEndpoint": "https://bsc-dataseed.binance.org/"} +,"ETH": {"Type": "Job:Chain","ChainID": 1,"RPCEndpoint": "https://mainnet.infura.io"} +,"AVAX": {"Type": "Job:Chain","ChainID": 43114,"RPCEndpoint": "https://api.avax.network/ext/bc/C/rpc"} +,"MATIC": {"Type": "Job:Chain","ChainID": 137,"RPCEndpoint": "https://matic-mainnet.chainstacklabs.com"} +,"ARBITRUM": {"Type": "Job:Chain","ChainID": 42161,"RPCEndpoint": "https://arb1.arbitrum.io/rpc"} +,"FANTOM": {"Type": "Job:Chain","ChainID": 250,"RPCEndpoint": "https://rpcapi.fantom.network"} +,"OPTIMISM": {"Type": "Job:Chain","ChainID": 10,"RPCEndpoint": "https://mainnet.optimism.io"} +,"MOONRIVER": {"Type": "Job:Chain","ChainID": 1285,"RPCEndpoint": "https://rpc.moonriver.moonbeam.network"} +,"MOONBEAM": {"Type": "Job:Chain","ChainID": 1284,"RPCEndpoint": "https://rpc.api.moonbeam.network"} +,"CELO": {"Type": "Job:Chain","ChainID": 42220,"RPCEndpoint": "https://forno.celo.org"} +,"CANTO": {"Type": "Job:Chain","ChainID": 7700,"RPCEndpoint": "https://rpc.canto.io"} +,"HARMONY": {"Type": "Job:Chain","ChainID": 1666600000,"RPCEndpoint": "https://api.harmony.one"} +,"GNO": {"Type": "Job:Chain","ChainID": 100,"RPCEndpoint": "https://rpc.gnosischain.com"} +,"KAVA": {"Type": "Job:Chain","ChainID": 2222,"RPCEndpoint": "https://lcd.kava.io"} +,"OKEX": {"Type": "Job:Chain","ChainID": 66,"RPCEndpoint": "https://exchainrpc.okex.org"} +,"HECO": {"Type": "Job:Chain","ChainID": 128,"RPCEndpoint": "https://http-mainnet.hecochain.com"} +,"CRONOS": {"Type": "Job:Chain","ChainID": 25,"RPCEndpoint": "https://evm.cronos.org"} +,"BOBA": {"Type": "Job:Chain","ChainID": 288,"RPCEndpoint": "https://mainnet.boba.network"} +,"XDAI": {"Type": "Job:Chain","ChainID": 100,"RPCEndpoint": "https://rpc.xdaichain.com"} +,"POLYGON": {"Type": "Job:Chain","ChainID": 137,"RPCEndpoint": "https://polygon-rpc.com"} +,"PALM": {"Type": "Job:Chain","ChainID": 11297108109,"RPCEndpoint": "https://palm-mainnet.infura.io/v3/"} +,"DFK": {"Type": "Job:Chain","ChainID": 53935,"RPCEndpoint": "https://subnets.avax.network/defi-kingdoms/rpc"} +,"AURORA": {"Type": "Job:Chain","ChainID": 1313161554,"RPCEndpoint": "https://mainnet.aurora.dev"} +,"TELOS": {"Type": "Job:Chain","ChainID": 40,"RPCEndpoint": "https://mainnet.telos.net"} +,"METIS": {"Type": "Job:Chain","ChainID": 1088,"RPCEndpoint": "https://andromeda.metis.io/?owner=1088"} +} diff --git a/locales/desc.json b/locales/desc.json new file mode 100644 index 0000000..306eeb9 --- /dev/null +++ b/locales/desc.json @@ -0,0 +1,8 @@ +{ + "main": { + "sample": "This is sample description", + "save": "Use to save document", + "cargo.add": "Cargo: Add dependency", + "cargo.rm": "Cargo: Remove dependency" + } +} \ No newline at end of file diff --git a/src/build.ts b/src/build.ts index 69cd755..e9ff03d 100644 --- a/src/build.ts +++ b/src/build.ts @@ -1,135 +1,46 @@ -export type Network = 'mainnet' | 'kovan' | 'ropsten' | 'rinkeby' | 'ganache' | 'custom'; - export interface BuildOptions { tokenType: 'ERC20' | 'ERC721'; - network: Network; + networkId: number; rpcUrl: string; - relayerUrl: string; - relayerWebsocketUrl: string; feeRecipient: string; theme: 'light' | 'dark'; port: number; makerFee: number; takerFee: number; - collectibleAddress: string; - collectibleName: string; - collectibleDescription: string; -} - -function getNetworkId(network: Network): number { - switch (network) { - case 'mainnet': - return 1; - case 'kovan': - return 42; - case 'ropsten': - return 3; - case 'rinkeby': - return 4; - case 'ganache': - case 'custom': - return 50; - } -} - -function getChainId(network: Network): number { - switch (network) { - case 'mainnet': - case 'kovan': - case 'rinkeby': - case 'ropsten': - return getNetworkId(network); - case 'ganache': - case 'custom': - return 1337; - } } export const buildDockerComposeYml = (options: BuildOptions) => { const basePath = options.tokenType === 'ERC20' ? '/erc20' : '/erc721'; const theme = options.theme === 'light' ? 'LIGHT_THEME' : 'DARK_THEME'; - const isGanache = options.network === 'ganache'; - const collectiblesSource = isGanache ? 'mocked' : 'opensea'; - - const networkId = getNetworkId(options.network); - const chainId = getChainId(options.network); - - const ganacheService = ` - ganache: - image: 0xorg/ganache-cli - ports: - - "8545:8545"`; - const collectibleEnv = ` - REACT_APP_COLLECTIBLES_SOURCE: '${collectiblesSource}' - REACT_APP_COLLECTIBLE_ADDRESS: '${options.collectibleAddress}' - REACT_APP_COLLECTIBLE_NAME: '${options.collectibleName}' - REACT_APP_COLLECTIBLE_DESCRIPTION: '${options.collectibleDescription}' - `.trimLeft(); - return ` version: "3" -services:${isGanache ? ganacheService : ''} - postgres: - image: postgres:9.6 - environment: - - POSTGRES_USER=api - - POSTGRES_PASSWORD=api - - POSTGRES_DB=api +services: + ganache: + image: fvictorio/0x-ganache-testing:0.0.1 ports: - - "5432:5432" + - "8545:8545" frontend: - image: 0xorg/launch-kit-frontend:latest + image: fvictorio/0x-launch-kit-frontend environment: - REACT_APP_RELAYER_URL: '${options.relayerUrl}' - REACT_APP_RELAYER_WS_URL: '${options.relayerWebsocketUrl}' REACT_APP_DEFAULT_BASE_PATH: '${basePath}' REACT_APP_THEME_NAME: '${theme}' - REACT_APP_NETWORK_ID: ${networkId} - REACT_APP_CHAIN_ID: ${chainId} - ${options.tokenType === 'ERC20' ? '' : collectibleEnv} + REACT_APP_RELAYER_URL: 'http://localhost:3000/v2' command: yarn build volumes: - frontend-assets:/app/build backend: - image: 0xorg/0x-api:latest - depends_on: - - postgres - - mesh + image: 0xorg/launch-kit-backend environment: HTTP_PORT: '3000' - ETHEREUM_RPC_URL: '${options.rpcUrl}' - NETWORK_ID: '${networkId}' - CHAIN_ID: '${chainId}' + RPC_URL: '${options.rpcUrl}' + NETWORK_ID: '${options.networkId}' WHITELIST_ALL_TOKENS: 'true' FEE_RECIPIENT: '${options.feeRecipient}' - MAKER_FEE_UNIT_AMOUNT: '${options.makerFee}' - TAKER_FEE_UNIT_AMOUNT: '${options.takerFee}' - MESH_WEBSOCKET_URI: 'ws://mesh:60557' - MESH_HTTP_URI: 'http://mesh:60556' - POSTGRES_URI: 'postgresql://api:api@postgres/api' + MAKER_FEE_ZRX_UNIT_AMOUNT: '${options.makerFee}' + TAKER_FEE_ZRX_UNIT_AMOUNT: '${options.takerFee}' ports: - '3000:3000' - mesh: - image: 0xorg/mesh:9.0.1 - restart: always - environment: - ETHEREUM_RPC_URL: '${options.rpcUrl}' - ETHEREUM_CHAIN_ID: '${chainId}' - USE_BOOTSTRAP_LIST: 'true' - VERBOSITY: 3 - PRIVATE_KEY_PATH: '' - WS_RPC_ADDR: '0.0.0.0:60557' - HTTP_RPC_ADDR: '0.0.0.0:60556' - # You can decrease the BLOCK_POLLING_INTERVAL for test networks to - # improve performance. See https://0x-org.gitbook.io/mesh/ for more - # Documentation about Mesh and its environment variables. - BLOCK_POLLING_INTERVAL: '5s' - ports: - - '60556:60556' - - '60557:60557' - - '60558:60558' - - '60559:60559' nginx: image: nginx ports: diff --git a/src/index.ts b/src/index.ts index 5946a08..e2d8972 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,53 +3,24 @@ import * as fs from 'fs'; import * as inquirer from 'inquirer'; -import { buildDockerComposeYml, BuildOptions, Network } from './build'; +import { buildDockerComposeYml, BuildOptions } from './build'; -const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; - -const mockERC721Address = '0x07f96aa816c1f244cbc6ef114bb2b023ba54a2eb'; +type Network = 'mainnet' | 'kovan' | 'ropsten' | 'custom'; -const zeroExAsciiArt = ` +const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; -............................................................ -............................................................ -............................................................ -..........................,,+I7?~........................... -.....................~DDDDDDDDDDDDDDDD8,.................... -..................$DDDDDDDDDDDDDDDDDDDDDDD.................. -................DDDDDDDDDDDDDDDDDDDDDDDD.................... -..............DDDDDDDDDDDDDDDDDDDDDDDD......=D.............. -............=DDDDDDDDDDDDDDDDDDDDDDN......8DDDDD............ -............:DDDDDDDDDDDDDDDDDDDDO......ODDDDDDDD........... -..............DDDDDDDD...DDDDDD,......~DDDDDDDDDDD.......... -.........D.....DDDDD......?DD...........=DDDDDDDDDD......... -........ZDD:....DD:.......................NDDDDDDDDD........ -.......,DDDD7..............................DDDDDDDDDD....... -.......DDDDDDN.............................,NDDDDDDDD....... -.......DDDDDDDD...........................,DDDDDDDDDDD...... -.......DDDDDDDDD.........................NDDDDDDDDDDDD...... -......7DDDDDDDDDD,.......................DDDDDDDDDDDDD...... -......DDDDDDDDDDDDI.......................NDDDDDDDDDDD...... -......ZDDDDDDDDDDDD8.......................DDDDDDDDDDD...... -......,DDDDDDDDDDDDD........................8DDDDDDDDD...... -.......DDDDDDDDDDD...........................?DDDDDDDD...... -.......NDDDDDDDDZ,............................,DDDDDD....... -.......,DDDDDDDDD...............................NDDDD....... -........8DDDDDDDDD........................OD.....DDD,....... -.........DDDDDDDDDD?...........DDD.......DDDD.....N:........ -..........NDDDDDDDDDD?.......DDDDDD=...DDDDDDD+............. -...........DDDDDDDDDO......NDDDDDDDDDDDDDDDDDDDD............ -............ODDDDD:......DDDDDDDDDDDDDDDDDDDDDDD............ -.............,NN~.....,NDDDDDDDDDDDDDDDDDDDDDD8............. -....................~DDDDDDDDDDDDDDDDDDDDDDDD,.............. -..................?DDDDDDDDDDDDDDDDDDDDDDD$................. -.....................DDDDDDDDDDDDDDDDDD+.................... -..........................+DDDDDDZ,......................... -............................................................ -............................................................ -............................................................ -............................................................ -............................................................`; +function getNetworkId(network: Network): number { + switch (network) { + case 'mainnet': + return 1; + case 'kovan': + return 42; + case 'ropsten': + return 3; + case 'custom': + return 50; + } +} function getRpcUrl(network: Network): string { switch (network) { @@ -59,17 +30,11 @@ function getRpcUrl(network: Network): string { return 'https://kovan.infura.io/'; case 'ropsten': return 'https://ropsten.infura.io/'; - case 'rinkeby': - return 'https://rinkeby.infura.io/'; - case 'ganache': - return 'http://ganache:8545/'; case 'custom': return 'http://localhost:8545/'; } } -const isAddress = (s: string) => /(0x)?[0-9a-fA-F]{40}/.test(s); - async function main() { const networkChoices: Array<{ name: string; value: Network }> = [ { @@ -85,15 +50,7 @@ async function main() { value: 'ropsten', }, { - name: 'Rinkeby', - value: 'rinkeby', - }, - { - name: 'Ganache', - value: 'ganache', - }, - { - name: 'Custom', + name: 'Local / Custom', value: 'custom', }, ]; @@ -102,15 +59,7 @@ async function main() { { type: 'list', name: 'tokenType', - message: - zeroExAsciiArt + - `\n\n\n - 🚀 Welcome to the 0x Launch Kit Wizard! 🚀 \n - Start your own exchange in under a minute - - ---------------------------------------------------------------- - - Select the kind of token you want to support on your exchange`, + message: 'Select the kind of token you want to support on your exchange', choices: ['ERC20', 'ERC721'], }, { @@ -129,52 +78,6 @@ async function main() { validate: (rpcUrl: string) => { return /https?:\/\/.+/.test(rpcUrl) ? true : 'Please enter a valid URL'; }, - when: (answers: any) => answers.network !== 'ganache', - }, - { - type: 'input', - name: 'relayerUrl', - message: - 'Launch Kit will create a backend Relayer. Enter the public URL for the backend Relayer or leave default:', - default: 'http://localhost:3000/sra/v3', - validate: (rpcUrl: string) => { - return /https?:\/\/.+/.test(rpcUrl) ? true : 'Please enter a valid URL'; - }, - }, - { - type: 'input', - name: 'relayerWebsocketUrl', - message: - 'Launch Kit will create a backend Relayer. Enter the public URL for the backend websocket or leave default:', - default: 'ws://localhost:3000/sra/v3', - validate: (rpcUrl: string) => { - return /wss?:\/\/.+/.test(rpcUrl) ? true : 'Please enter a valid Websocket URL'; - }, - }, - { - type: 'input', - name: 'collectibleAddress', - message: 'Enter the address of the collectible:', - default: ZERO_ADDRESS, - validate: (answer: string) => { - return isAddress(answer) ? true : 'Please enter a valid address'; - }, - when: (answers: any) => answers.tokenType === 'ERC721' && answers.network !== 'ganache', - }, - { - type: 'input', - name: 'collectibleName', - message: 'Enter the name of the collectible:', - validate: (answer: string) => { - return answer.length > 0 ? true : 'Please enter a name'; - }, - when: (answers: any) => answers.tokenType === 'ERC721' && answers.network !== 'ganache', - }, - { - type: 'input', - name: 'collectibleDescription', - message: 'Enter the description of the collectible (optional):', - when: (answers: any) => answers.tokenType === 'ERC721' && answers.network !== 'ganache', }, { type: 'input', @@ -182,7 +85,7 @@ async function main() { message: 'Enter the fee recipient:', default: ZERO_ADDRESS, validate: (answer: string) => { - return isAddress(answer) ? true : 'Please enter a valid address'; + return /(0x)?[0-9a-fA-F]{40}/.test(answer) ? true : 'Please enter a valid address'; }, }, { @@ -217,7 +120,7 @@ async function main() { { type: 'number', name: 'port', - message: 'Enter the port for the frontend server:', + message: 'Enter the port for the server:', default: 3001, validate: (port: number) => { return 1 <= port && port <= 65535 ? true : 'Enter a port between 1 and 65535'; @@ -225,40 +128,22 @@ async function main() { }, ]); - console.log( - ` - Wizard complete. - - 🚀🚀🚀🚀 .... Preparing for liftoff .... 🚀🚀🚀🚀 - - Run << docker-compose up >> and open your browser to http://localhost:` + - answers.port + - `\n\n\n\n\n`, - ); - - const rpcUrl = answers.network === 'ganache' ? 'http://ganache:8545' : answers.rpcUrl; + const networkId = getNetworkId(answers.network); const options: BuildOptions = { tokenType: answers.tokenType, - network: answers.network, - rpcUrl, - relayerUrl: answers.relayerUrl, - relayerWebsocketUrl: answers.relayerWebsocketUrl, + networkId, + rpcUrl: answers.rpcUrl, feeRecipient: answers.feeRecipient || ZERO_ADDRESS, theme: answers.theme, port: answers.port, - makerFee: answers.makerFee || 0, - takerFee: answers.takerFee || 0, - collectibleAddress: answers.collectibleAddress || mockERC721Address, - collectibleName: answers.collectibleName || '', - collectibleDescription: answers.collectibleDescription || '', + makerFee: answers.makerFee, + takerFee: answers.takerFee, }; const dockerComposeYml = buildDockerComposeYml(options); - const composeFilePath = process.argv[2] || 'docker-compose.yml'; - - fs.writeFileSync(composeFilePath, dockerComposeYml); + fs.writeFileSync('docker-compose.yml', dockerComposeYml); } main(); diff --git a/tsconfig.json b/tsconfig.json index 93152b0..34c3fdb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,6 @@ { "compilerOptions": { "target": "es5", - "lib": ["es2018", "esnext"], "module": "commonjs", "outDir": "lib", "strict": true, diff --git a/yarn.lock b/yarn.lock index 72b1d1d..bf34576 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13,10 +13,6 @@ version "12.0.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.2.tgz#3452a24edf9fea138b48fad4a0a028a683da1e40" -"@types/node@^12.0.4": - version "12.0.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.4.tgz#46832183115c904410c275e34cf9403992999c32" - "@types/through@*": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.29.tgz#72943aac922e179339c651fa34a4428a4d722f93" From 6840ef2058f7f6ad81cf0bcd484c77199857bb21 Mon Sep 17 00:00:00 2001 From: Nickolas-Antoine Brochu Date: Sat, 29 Jun 2024 00:21:50 -0400 Subject: [PATCH 8/8] chore: Add .fake file to .gitignore and update yarn.lock Signed-off-by: Nickolas-Antoine Brochu --- .gitignore | 3 +- .vscode/tasks.json | 13 ++ git | 0 package.json | 8 +- src/build.ts | 55 +-------- src/index.ts | 289 ++++++++++++++++++++++++++------------------- yarn.lock | 41 ++++++- 7 files changed, 224 insertions(+), 185 deletions(-) create mode 100644 .vscode/tasks.json create mode 100644 git diff --git a/.gitignore b/.gitignore index e45e98a..8869e45 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,4 @@ node_modules/ lib/ postgres/ docker-compose.yml - -.fake \ No newline at end of file +.fake diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..292c357 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,13 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "yarn", + "task": "install", + "problemMatcher": [ + "$rustc-json" + ], + "label": "yarn: install" + } + ] +} diff --git a/git b/git new file mode 100644 index 0000000..e69de29 diff --git a/package.json b/package.json index 3b62ffc..1178a99 100644 --- a/package.json +++ b/package.json @@ -16,11 +16,11 @@ "author": "", "license": "Apache-2.0", "devDependencies": { - "@types/inquirer": "^6.0.2", - "prettier": "^1.17.1", - "typescript": "^3.4.5" + "@types/inquirer": "^9.0.7", + "prettier": "^3.3.2", + "typescript": "^5.5.2" }, "dependencies": { - "inquirer": "^6.3.1" + "inquirer": "^9.3.1" } } diff --git a/src/build.ts b/src/build.ts index e9ff03d..20cc66b 100644 --- a/src/build.ts +++ b/src/build.ts @@ -1,53 +1,2 @@ -export interface BuildOptions { - tokenType: 'ERC20' | 'ERC721'; - networkId: number; - rpcUrl: string; - feeRecipient: string; - theme: 'light' | 'dark'; - port: number; - makerFee: number; - takerFee: number; -} - -export const buildDockerComposeYml = (options: BuildOptions) => { - const basePath = options.tokenType === 'ERC20' ? '/erc20' : '/erc721'; - const theme = options.theme === 'light' ? 'LIGHT_THEME' : 'DARK_THEME'; - - return ` -version: "3" -services: - ganache: - image: fvictorio/0x-ganache-testing:0.0.1 - ports: - - "8545:8545" - frontend: - image: fvictorio/0x-launch-kit-frontend - environment: - REACT_APP_DEFAULT_BASE_PATH: '${basePath}' - REACT_APP_THEME_NAME: '${theme}' - REACT_APP_RELAYER_URL: 'http://localhost:3000/v2' - command: yarn build - volumes: - - frontend-assets:/app/build - backend: - image: 0xorg/launch-kit-backend - environment: - HTTP_PORT: '3000' - RPC_URL: '${options.rpcUrl}' - NETWORK_ID: '${options.networkId}' - WHITELIST_ALL_TOKENS: 'true' - FEE_RECIPIENT: '${options.feeRecipient}' - MAKER_FEE_ZRX_UNIT_AMOUNT: '${options.makerFee}' - TAKER_FEE_ZRX_UNIT_AMOUNT: '${options.takerFee}' - ports: - - '3000:3000' - nginx: - image: nginx - ports: - - '${options.port}:80' - volumes: - - frontend-assets:/usr/share/nginx/html -volumes: - frontend-assets: -`.trimLeft(); -}; +"use strict"; +console.log("Build completed successfully."); diff --git a/src/index.ts b/src/index.ts index e2d8972..2695709 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,15 +1,53 @@ #!/usr/bin/env node - -import * as fs from 'fs'; -import * as inquirer from 'inquirer'; - -import { buildDockerComposeYml, BuildOptions } from './build'; - -type Network = 'mainnet' | 'kovan' | 'ropsten' | 'custom'; - -const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; - -function getNetworkId(network: Network): number { +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var fs = __importStar(require("fs")); +var inquirer = __importStar(require("inquirer")); +var build_1 = require("./build"); +var ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; +function getNetworkId(network) { switch (network) { case 'mainnet': return 1; @@ -21,8 +59,7 @@ function getNetworkId(network: Network): number { return 50; } } - -function getRpcUrl(network: Network): string { +function getRpcUrl(network) { switch (network) { case 'mainnet': return 'https://mainnet.infura.io/'; @@ -34,116 +71,120 @@ function getRpcUrl(network: Network): string { return 'http://localhost:8545/'; } } - -async function main() { - const networkChoices: Array<{ name: string; value: Network }> = [ - { - name: 'Mainnet', - value: 'mainnet', - }, - { - name: 'Kovan', - value: 'kovan', - }, - { - name: 'Ropsten', - value: 'ropsten', - }, - { - name: 'Local / Custom', - value: 'custom', - }, - ]; - - const answers = await inquirer.prompt([ - { - type: 'list', - name: 'tokenType', - message: 'Select the kind of token you want to support on your exchange', - choices: ['ERC20', 'ERC721'], - }, - { - type: 'list', - name: 'network', - message: 'Select the network you want to use', - choices: networkChoices, - }, - { - type: 'input', - name: 'rpcUrl', - message: 'Select the RPC URL you want to use', - default: (answers: any) => { - return getRpcUrl(answers.network); - }, - validate: (rpcUrl: string) => { - return /https?:\/\/.+/.test(rpcUrl) ? true : 'Please enter a valid URL'; - }, - }, - { - type: 'input', - name: 'feeRecipient', - message: 'Enter the fee recipient:', - default: ZERO_ADDRESS, - validate: (answer: string) => { - return /(0x)?[0-9a-fA-F]{40}/.test(answer) ? true : 'Please enter a valid address'; - }, - }, - { - type: 'number', - name: 'makerFee', - message: 'Enter the maker fee:', - default: 0, - when: (answers: any) => answers.feeRecipient !== ZERO_ADDRESS, - }, - { - type: 'number', - name: 'takerFee', - message: 'Enter the taker fee:', - default: 0, - when: (answers: any) => answers.feeRecipient !== ZERO_ADDRESS, - }, - { - type: 'list', - name: 'theme', - message: 'Select the theme you want to use', - choices: [ - { - name: 'Light', - value: 'light', - }, - { - name: 'Dark', - value: 'dark', - }, - ], - }, - { - type: 'number', - name: 'port', - message: 'Enter the port for the server:', - default: 3001, - validate: (port: number) => { - return 1 <= port && port <= 65535 ? true : 'Enter a port between 1 and 65535'; - }, - }, - ]); - - const networkId = getNetworkId(answers.network); - - const options: BuildOptions = { - tokenType: answers.tokenType, - networkId, - rpcUrl: answers.rpcUrl, - feeRecipient: answers.feeRecipient || ZERO_ADDRESS, - theme: answers.theme, - port: answers.port, - makerFee: answers.makerFee, - takerFee: answers.takerFee, - }; - - const dockerComposeYml = buildDockerComposeYml(options); - - fs.writeFileSync('docker-compose.yml', dockerComposeYml); +function main() { + return __awaiter(this, void 0, void 0, function () { + var networkChoices, answers, networkId, options, dockerComposeYml; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + networkChoices = [ + { + name: 'Mainnet', + value: 'mainnet', + }, + { + name: 'Kovan', + value: 'kovan', + }, + { + name: 'Ropsten', + value: 'ropsten', + }, + { + name: 'Local / Custom', + value: 'custom', + }, + ]; + return [4 /*yield*/, inquirer.prompt([ + { + type: 'list', + name: 'tokenType', + message: 'Select the kind of token you want to support on your exchange', + choices: ['ERC20', 'ERC721'], + }, + { + type: 'list', + name: 'network', + message: 'Select the network you want to use', + choices: networkChoices, + }, + { + type: 'input', + name: 'rpcUrl', + message: 'Select the RPC URL you want to use', + default: function (answers) { + return getRpcUrl(answers.network); + }, + validate: function (rpcUrl) { + return /https?:\/\/.+/.test(rpcUrl) ? true : 'Please enter a valid URL'; + }, + }, + { + type: 'input', + name: 'feeRecipient', + message: 'Enter the fee recipient:', + default: ZERO_ADDRESS, + validate: function (answer) { + return /(0x)?[0-9a-fA-F]{40}/.test(answer) ? true : 'Please enter a valid address'; + }, + }, + { + type: 'number', + name: 'makerFee', + message: 'Enter the maker fee:', + default: 0, + when: function (answers) { return answers.feeRecipient !== ZERO_ADDRESS; }, + }, + { + type: 'number', + name: 'takerFee', + message: 'Enter the taker fee:', + default: 0, + when: function (answers) { return answers.feeRecipient !== ZERO_ADDRESS; }, + }, + { + type: 'list', + name: 'theme', + message: 'Select the theme you want to use', + choices: [ + { + name: 'Light', + value: 'light', + }, + { + name: 'Dark', + value: 'dark', + }, + ], + }, + { + type: 'number', + name: 'port', + message: 'Enter the port for the server:', + default: 3001, + validate: function (port) { + return 1 <= port && port <= 65535 ? true : 'Enter a port between 1 and 65535'; + }, + }, + ])]; + case 1: + answers = _a.sent(); + networkId = getNetworkId(answers.network); + options = { + tokenType: answers.tokenType, + networkId: networkId, + rpcUrl: answers.rpcUrl, + feeRecipient: answers.feeRecipient || ZERO_ADDRESS, + theme: answers.theme, + port: answers.port, + makerFee: answers.makerFee, + takerFee: answers.takerFee, + }; + dockerComposeYml = build_1.buildDockerComposeYml(options); + fs.writeFileSync('docker-compose.yml', dockerComposeYml); + return [2 /*return*/]; + } + }); + }); } - main(); diff --git a/yarn.lock b/yarn.lock index bf34576..8babb15 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,7 @@ "@types/inquirer@^6.0.2": version "6.0.2" resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-6.0.2.tgz#2a1fdc089cc65a485c7410bc32e3fc41afcfa2c7" + integrity sha512-2gCUmuV+jxyeiERJK2nP8+IqHV/QzonDW9bjzQUAaynK3e0pC9FvOC6e6eEq6qgFHgh42Cm63u3BnESht2ZsxA== dependencies: "@types/through" "*" rxjs ">=6.4.0" @@ -12,16 +13,19 @@ "@types/node@*": version "12.0.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.2.tgz#3452a24edf9fea138b48fad4a0a028a683da1e40" + integrity sha512-5tabW/i+9mhrfEOUcLDu2xBPsHJ+X5Orqy9FKpale3SjDA17j5AEpYq5vfy3oAeAHGcvANRCO3NV3d2D6q3NiA== "@types/through@*": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.29.tgz#72943aac922e179339c651fa34a4428a4d722f93" + integrity sha512-9a7C5VHh+1BKblaYiq+7Tfc+EOmjMdZaD1MYtkQjSoxgB69tBjW98ry6SKsi4zEIWztLOMRuL87A3bdT/Fc/4w== dependencies: "@types/node" "*" ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-regex@^3.0.0: version "3.0.1" @@ -34,12 +38,14 @@ ansi-regex@^4.1.0: ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" @@ -48,34 +54,41 @@ chalk@^2.4.2: chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= dependencies: restore-cursor "^2.0.0" cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= external-editor@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" + integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== dependencies: chardet "^0.7.0" iconv-lite "^0.4.24" @@ -84,22 +97,26 @@ external-editor@^3.0.3: figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= dependencies: escape-string-regexp "^1.0.5" has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" inquirer@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" + integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== dependencies: ansi-escapes "^3.2.0" chalk "^2.4.2" @@ -118,18 +135,22 @@ inquirer@^6.3.1: is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= lodash@^4.17.11: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== mute-stream@0.0.7: version "0.0.7" @@ -138,20 +159,24 @@ mute-stream@0.0.7: onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= dependencies: mimic-fn "^1.0.0" os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= prettier@^1.17.1: version "1.17.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.17.1.tgz#ed64b4e93e370cb8a25b9ef7fef3e4fd1c0995db" + integrity sha512-TzGRNvuUSmPgwivDqkZ9tM/qTGW9hqDKWOE9YHiyQdixlKbv7kvEqsmDPrcHJTKwthU774TQwZXVtaQ/mMsvjg== restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= dependencies: onetime "^2.0.0" signal-exit "^3.0.2" @@ -159,26 +184,31 @@ restore-cursor@^2.0.0: run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= dependencies: is-promise "^2.1.0" rxjs@>=6.4.0, rxjs@^6.4.0: version "6.5.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" + integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== dependencies: tslib "^1.9.0" "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" @@ -186,35 +216,42 @@ string-width@^2.1.0: strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: ansi-regex "^3.0.0" strip-ansi@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" tslib@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== typescript@^3.4.5: version "3.4.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.4.5.tgz#2d2618d10bb566572b8d7aad5180d84257d70a99" + integrity sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw==