create-web3-dapp-dev
Version:
<p align="center"> <br /> <a href="https://createweb3dapp.alchemy.com"> <img src=".github/images/cw3d-logo.png" width="200" alt=""/></a> <br /> </p>
152 lines • 7.22 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
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) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import open from "open";
import path from "path";
import prompts from "prompts";
import kill from "../../utils/kill.js";
import { validateProjectName } from "../../utils/validation.js";
import context from "../context.js";
import { generateDapp } from "../generateDapp.js";
import { selfDestroy, setRoot } from "../selfDestroy.js";
export function startTemplatesWorkflow(useBackend = false, projectName) {
var _a, _b;
return __awaiter(this, void 0, void 0, function* () {
context.dappInfo.isTemplate = true;
context.dappInfo.useBackend = useBackend;
context.dappInfo.backendProvider = "hardhat-template";
let step = 0;
let quit = false;
while (!quit) {
let exit = 0;
switch (step) {
case 0:
try {
context.projectName = projectName;
while (!((_a = context.projectName) === null || _a === void 0 ? void 0 : _a.length)) {
if (exit >= 2) {
kill();
}
exit++;
const projectPath = yield prompts({
type: "text",
name: "projectPath",
message: "Please, insert a project name",
initial: "my-create-web3-dapp",
validate: (value) => validateProjectName(value),
}).then((data) => data.projectPath.trim());
if (projectPath) {
context.resolvedProjectPath =
path.resolve(projectPath);
context.projectName = path.basename(context.resolvedProjectPath);
setRoot(context.resolvedProjectPath);
}
}
}
catch (e) {
selfDestroy(e);
}
step++;
break;
case 1:
yield prompts({
type: "select",
name: "chain",
message: "Choose your chain",
choices: [
{ title: "Ethereum", value: "ETH_MAINNET" },
{ title: "Polygon", value: "MATIC_MAINNET" },
{ title: "Polygon zkEVM", value: "POLYGON_ZKEVM_MAINNET" },
{ title: "Arbitrum", value: "ARB_MAINNET" },
{ title: "Optimism", value: "OPT_MAINNET" },
{ title: "Back", value: "back" },
],
initial: 0,
hint: "- We’ll install all the right dependencies for you :)",
}).then((data) => (context.dappInfo.chain = data.chain));
if (context.dappInfo.chain == "back") {
step--;
break;
}
if (!((_b = context.dappInfo.chain) === null || _b === void 0 ? void 0 : _b.length)) {
process.exit();
}
context.dappInfo.isEVM =
context.dappInfo.chain == "ETH_MAINNET" ||
context.dappInfo.chain == "MATIC_MAINNET" ||
context.dappInfo.chain == "ARB_MAINNET" ||
context.dappInfo.chain == "OPT_MAINNET" ||
context.dappInfo.chain == "SOL_MAINNET"
? true
: false;
switch (context.dappInfo.chain) {
case "ETH_MAINNET":
context.dappInfo.testnet = "ETH_GOERLI";
break;
case "MATIC_MAINNET":
context.dappInfo.testnet = "MATIC_MUMBAI";
break;
case "ARB_MAINNET":
context.dappInfo.testnet = "ARB_GOERLI";
break;
case "OPT_MAINNET":
context.dappInfo.testnet = "OPT_GOERLI";
break;
}
step++;
break;
case 2:
try {
const hasAccount = yield prompts({
type: "toggle",
name: "hasAccount",
message: "Do you already have an Alchemy account?",
initial: true,
active: "yes",
inactive: "no",
}).then((data) => data.hasAccount);
if (typeof hasAccount == "boolean") {
open("https://auth.alchemy.com/?a=create-web3-dapp");
step++;
break;
}
else {
process.exit();
}
}
catch (e) {
selfDestroy(e);
}
break;
case 3:
try {
const alchemyAPIKey = yield prompts({
type: "text",
name: "apiKey",
message: "Insert your Alchemy API Key (Copy from https://auth.alchemy.com/?a=create-web3-dapp):",
initial: "",
}).then((data) => data.apiKey);
if (alchemyAPIKey.length < 32 ||
alchemyAPIKey.length > 33) {
break;
}
context.dappInfo.apiKeys.ALCHEMY_API_KEY =
alchemyAPIKey.length ? alchemyAPIKey : "demo";
quit = true;
}
catch (e) {
selfDestroy(e);
}
break;
}
}
generateDapp();
});
}
//# sourceMappingURL=templatesWorkflow.js.map