create-mn-app 0.3.19 → 0.3.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -40
- package/dist/cli.js +13 -1
- package/dist/cli.js.map +1 -1
- package/dist/create-app.d.ts +3 -0
- package/dist/create-app.d.ts.map +1 -1
- package/dist/create-app.js +300 -102
- package/dist/create-app.js.map +1 -1
- package/dist/installers/package-installer.d.ts.map +1 -1
- package/dist/installers/package-installer.js.map +1 -1
- package/dist/utils/git-cloner.d.ts +2 -2
- package/dist/utils/git-cloner.d.ts.map +1 -1
- package/dist/utils/git-cloner.js +34 -13
- package/dist/utils/git-cloner.js.map +1 -1
- package/dist/utils/git-utils.d.ts.map +1 -1
- package/dist/utils/git-utils.js.map +1 -1
- package/dist/utils/setup-guide.d.ts +4 -14
- package/dist/utils/setup-guide.d.ts.map +1 -1
- package/dist/utils/setup-guide.js +50 -93
- package/dist/utils/setup-guide.js.map +1 -1
- package/dist/utils/templates.d.ts +27 -5
- package/dist/utils/templates.d.ts.map +1 -1
- package/dist/utils/templates.js +158 -2
- package/dist/utils/templates.js.map +1 -1
- package/package.json +18 -4
package/dist/utils/git-cloner.js
CHANGED
|
@@ -21,31 +21,52 @@ exports.GitCloner = void 0;
|
|
|
21
21
|
const child_process_1 = require("child_process");
|
|
22
22
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
23
23
|
const path_1 = __importDefault(require("path"));
|
|
24
|
+
const debug_js_1 = require("./debug.js");
|
|
24
25
|
class GitCloner {
|
|
25
26
|
/**
|
|
26
|
-
* Clone a GitHub repository
|
|
27
|
+
* Clone a GitHub repository with retry logic
|
|
27
28
|
*/
|
|
28
|
-
static async clone(repo, targetPath, branch = "main") {
|
|
29
|
+
static async clone(repo, targetPath, branch = "main", retries = 3) {
|
|
30
|
+
// Sanitize inputs to prevent command injection
|
|
31
|
+
if (!/^[a-zA-Z0-9_.\-\/]+$/.test(repo)) {
|
|
32
|
+
throw new Error(`Invalid repository name: ${repo}`);
|
|
33
|
+
}
|
|
34
|
+
if (!/^[a-zA-Z0-9_.\-]+$/.test(branch)) {
|
|
35
|
+
throw new Error(`Invalid branch name: ${branch}`);
|
|
36
|
+
}
|
|
29
37
|
const repoUrl = `https://github.com/${repo}.git`;
|
|
30
38
|
try {
|
|
31
|
-
// Check if git is available
|
|
32
39
|
(0, child_process_1.execSync)("git --version", { stdio: "ignore" });
|
|
33
40
|
}
|
|
34
41
|
catch {
|
|
35
42
|
throw new Error("Git is not installed. Please install Git from https://git-scm.com");
|
|
36
43
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
let lastError;
|
|
45
|
+
for (let attempt = 1; attempt <= retries; attempt++) {
|
|
46
|
+
try {
|
|
47
|
+
// Clean up partial clone from previous attempt
|
|
48
|
+
if (attempt > 1 && fs_extra_1.default.existsSync(targetPath)) {
|
|
49
|
+
await fs_extra_1.default.remove(targetPath);
|
|
50
|
+
}
|
|
51
|
+
(0, child_process_1.execSync)(`git clone --depth 1 --branch "${branch}" "${repoUrl}" "${targetPath}"`, { stdio: "pipe" });
|
|
52
|
+
// Remove .git directory to make it a fresh project
|
|
53
|
+
const gitDir = path_1.default.join(targetPath, ".git");
|
|
54
|
+
if (fs_extra_1.default.existsSync(gitDir)) {
|
|
55
|
+
await fs_extra_1.default.remove(gitDir);
|
|
56
|
+
}
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
61
|
+
(0, debug_js_1.debug)(`Clone attempt ${attempt}/${retries} failed: ${lastError.message}`);
|
|
62
|
+
if (attempt < retries) {
|
|
63
|
+
const delay = Math.pow(2, attempt) * 1000;
|
|
64
|
+
(0, debug_js_1.debug)(`Retrying in ${delay}ms...`);
|
|
65
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
66
|
+
}
|
|
44
67
|
}
|
|
45
68
|
}
|
|
46
|
-
|
|
47
|
-
throw new Error(`Failed to clone repository ${repo}. Please check your internet connection and try again.`);
|
|
48
|
-
}
|
|
69
|
+
throw new Error(`Failed to clone repository ${repo} after ${retries} attempts. Please check your internet connection and try again.`);
|
|
49
70
|
}
|
|
50
71
|
/**
|
|
51
72
|
* Check if git is available
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-cloner.js","sourceRoot":"","sources":["../../src/utils/git-cloner.ts"],"names":[],"mappings":";AAAA,sCAAsC;AACtC,yCAAyC;AACzC,sCAAsC;AACtC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,kDAAkD;AAClD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;;;;;;AAEjC,iDAAyC;AACzC,wDAA0B;AAC1B,gDAAwB;
|
|
1
|
+
{"version":3,"file":"git-cloner.js","sourceRoot":"","sources":["../../src/utils/git-cloner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-utils.d.ts","sourceRoot":"","sources":["../../src/utils/git-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"git-utils.d.ts","sourceRoot":"","sources":["../../src/utils/git-utils.ts"],"names":[],"mappings":"AAiBA,qBAAa,QAAQ;WACN,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;mBAqBhC,cAAc;mBASd,aAAa;CAqBnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-utils.js","sourceRoot":"","sources":["../../src/utils/git-utils.ts"],"names":[],"mappings":";AAAA,sCAAsC;AACtC,yCAAyC;AACzC,sCAAsC;AACtC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,kDAAkD;AAClD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;;;AAEjC,6CAAoC;
|
|
1
|
+
{"version":3,"file":"git-utils.js","sourceRoot":"","sources":["../../src/utils/git-utils.ts"],"names":[],"mappings":";AAAA,sCAAsC;AACtC,yCAAyC;AACzC,sCAAsC;AACtC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,kDAAkD;AAClD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;;;AAEjC,6CAAoC;AAEpC,MAAa,QAAQ;IACnB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAmB;QACnC,4BAA4B;QAC5B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QACjD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,4BAA4B;QAC5B,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAEhD,gBAAgB;QAChB,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAEpD,wBAAwB;QACxB,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;YACpC,QAAQ;YACR,IAAI;YACJ,mCAAmC;SACpC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,cAAc;QACjC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,aAAa,CAChC,GAAW,EACX,IAAc;QAEd,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,IAAA,mBAAK,EAAC,KAAK,EAAE,IAAI,EAAE;gBAC/B,GAAG;gBACH,KAAK,EAAE,MAAM;aACd,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AApDD,4BAoDC"}
|
|
@@ -1,23 +1,13 @@
|
|
|
1
|
-
import type
|
|
2
|
-
export interface SetupStep {
|
|
3
|
-
title: string;
|
|
4
|
-
commands: string[];
|
|
5
|
-
cwd?: string;
|
|
6
|
-
optional?: boolean;
|
|
7
|
-
}
|
|
1
|
+
import { type PackageManager } from "./package-manager.js";
|
|
8
2
|
export declare class SetupGuide {
|
|
9
3
|
/**
|
|
10
|
-
*
|
|
4
|
+
* Display setup instructions for a template (data-driven)
|
|
11
5
|
*/
|
|
12
6
|
static getInstructions(templateName: string, projectName: string, packageManager: PackageManager): void;
|
|
13
7
|
/**
|
|
14
|
-
*
|
|
15
|
-
*/
|
|
16
|
-
private static displayCounterInstructions;
|
|
17
|
-
/**
|
|
18
|
-
* Display Bboard template instructions
|
|
8
|
+
* Render setup steps from template metadata
|
|
19
9
|
*/
|
|
20
|
-
private static
|
|
10
|
+
private static displaySteps;
|
|
21
11
|
/**
|
|
22
12
|
* Display post-clone message
|
|
23
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-guide.d.ts","sourceRoot":"","sources":["../../src/utils/setup-guide.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"setup-guide.d.ts","sourceRoot":"","sources":["../../src/utils/setup-guide.ts"],"names":[],"mappings":"AAiBA,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAe9B,qBAAa,UAAU;IACrB;;OAEG;IACH,MAAM,CAAC,eAAe,CACpB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,GAC7B,IAAI;IA0BP;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAmC3B;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CAY3D"}
|
|
@@ -20,108 +20,65 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
20
20
|
exports.SetupGuide = void 0;
|
|
21
21
|
const chalk_1 = __importDefault(require("chalk"));
|
|
22
22
|
const templates_js_1 = require("./templates.js");
|
|
23
|
+
const package_manager_js_1 = require("./package-manager.js");
|
|
24
|
+
function resolveCommand(cmd, projectName, pm) {
|
|
25
|
+
const pmInfo = (0, package_manager_js_1.getPackageManagerInfo)(pm);
|
|
26
|
+
return cmd
|
|
27
|
+
.replace(/\{\{projectName\}\}/g, projectName)
|
|
28
|
+
.replace(/\{\{installCmd\}\}/g, pmInfo.installCommand)
|
|
29
|
+
.replace(/\{\{runCmd\}\}/g, pmInfo.runCommand);
|
|
30
|
+
}
|
|
23
31
|
class SetupGuide {
|
|
24
32
|
/**
|
|
25
|
-
*
|
|
33
|
+
* Display setup instructions for a template (data-driven)
|
|
26
34
|
*/
|
|
27
35
|
static getInstructions(templateName, projectName, packageManager) {
|
|
28
36
|
const template = (0, templates_js_1.getTemplate)(templateName);
|
|
29
37
|
if (!template || template.type !== "remote")
|
|
30
38
|
return;
|
|
31
|
-
console.log(
|
|
32
|
-
|
|
33
|
-
|
|
39
|
+
console.log();
|
|
40
|
+
console.log(chalk_1.default.green("◇") + chalk_1.default.bold(" Next steps"));
|
|
41
|
+
console.log(chalk_1.default.dim("│"));
|
|
42
|
+
// Display project structure if defined
|
|
43
|
+
if (template.projectStructure && template.projectStructure.length > 0) {
|
|
44
|
+
console.log(chalk_1.default.dim("│ ") + chalk_1.default.bold("Project structure"));
|
|
45
|
+
for (const line of template.projectStructure) {
|
|
46
|
+
console.log(chalk_1.default.dim("│ ") + chalk_1.default.dim(line));
|
|
47
|
+
}
|
|
48
|
+
console.log(chalk_1.default.dim("│"));
|
|
34
49
|
}
|
|
35
|
-
|
|
36
|
-
|
|
50
|
+
// Display setup steps if defined
|
|
51
|
+
if (template.setupSteps) {
|
|
52
|
+
this.displaySteps(template, projectName, packageManager);
|
|
37
53
|
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Display Counter template instructions
|
|
41
|
-
*/
|
|
42
|
-
static displayCounterInstructions(projectName, pm) {
|
|
43
|
-
const installCmd = pm === "npm"
|
|
44
|
-
? "npm install"
|
|
45
|
-
: pm === "yarn"
|
|
46
|
-
? "yarn"
|
|
47
|
-
: pm === "pnpm"
|
|
48
|
-
? "pnpm install"
|
|
49
|
-
: "bun install";
|
|
50
|
-
const runCmd = pm === "npm" ? "npm run" : pm;
|
|
51
|
-
console.log(chalk_1.default.gray(" project structure:"));
|
|
52
|
-
console.log(chalk_1.default.gray(" ├─ contract/ smart contract (compact)"));
|
|
53
|
-
console.log(chalk_1.default.gray(" └─ counter-cli/ cli interface"));
|
|
54
|
-
console.log();
|
|
55
|
-
console.log(chalk_1.default.gray(" $ ") + chalk_1.default.cyan(`cd ${projectName}`));
|
|
56
|
-
console.log(chalk_1.default.gray(" $ ") + chalk_1.default.cyan(installCmd));
|
|
57
|
-
console.log(chalk_1.default.gray(" $ ") + chalk_1.default.cyan(`cd contract && ${runCmd} compact`));
|
|
58
|
-
console.log(chalk_1.default.gray(" (downloads ~500MB zk parameters on first run)"));
|
|
59
|
-
console.log(chalk_1.default.gray(" $ ") + chalk_1.default.cyan(`${runCmd} build`));
|
|
60
|
-
console.log(chalk_1.default.gray(" $ ") + chalk_1.default.cyan(`cd ../counter-cli && ${runCmd} build`));
|
|
61
|
-
console.log();
|
|
62
|
-
console.log(chalk_1.default.bold("[" + chalk_1.default.magenta("i") + "] Proof Server\n"));
|
|
63
|
-
console.log(chalk_1.default.gray(" $ ") +
|
|
64
|
-
chalk_1.default.cyan("docker run -d -p 6300:6300 -e PORT=6300 midnightntwrk/proof-server:7.0.0"));
|
|
65
|
-
console.log(chalk_1.default.gray(" (runs in background)"));
|
|
66
|
-
console.log();
|
|
67
|
-
console.log(chalk_1.default.bold("[" + chalk_1.default.green("▶") + "] Run Application\n"));
|
|
68
|
-
console.log(chalk_1.default.gray(" $ ") + chalk_1.default.cyan(`cd counter-cli && ${runCmd} start`));
|
|
69
|
-
console.log();
|
|
70
|
-
console.log(chalk_1.default.bold("[" + chalk_1.default.yellow("!") + "] Important\n"));
|
|
71
|
-
console.log(chalk_1.default.gray(" • create wallet and fund from faucet"));
|
|
72
|
-
console.log(chalk_1.default.gray(" • Preprod faucet: https://faucet.preprod.midnight.network/"));
|
|
73
|
-
console.log(chalk_1.default.gray(" • funding takes 2-3 minutes"));
|
|
74
|
-
console.log(chalk_1.default.gray(" • see README.md for detailed guide"));
|
|
54
|
+
console.log(chalk_1.default.dim("└"));
|
|
75
55
|
console.log();
|
|
76
56
|
}
|
|
77
57
|
/**
|
|
78
|
-
*
|
|
58
|
+
* Render setup steps from template metadata
|
|
79
59
|
*/
|
|
80
|
-
static
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
console.log(chalk_1.default.
|
|
102
|
-
console.log(chalk_1.default.gray(" $ ") +
|
|
103
|
-
chalk_1.default.cyan(`cd bboard-cli && ${installCmd} && ${runCmd} build && cd ..`));
|
|
104
|
-
console.log();
|
|
105
|
-
console.log(chalk_1.default.bold("[" + chalk_1.default.magenta("i") + "] Proof Server\n"));
|
|
106
|
-
console.log(chalk_1.default.gray(" $ ") +
|
|
107
|
-
chalk_1.default.cyan("docker run -d -p 6300:6300 -e PORT=6300 midnightntwrk/proof-server:7.0.0"));
|
|
108
|
-
console.log(chalk_1.default.gray(" (runs in background)"));
|
|
109
|
-
console.log();
|
|
110
|
-
console.log(chalk_1.default.bold("[" + chalk_1.default.green("▶") + "] Run CLI\n"));
|
|
111
|
-
console.log(chalk_1.default.gray(" $ ") +
|
|
112
|
-
chalk_1.default.cyan(`cd bboard-cli && ${runCmd} preprod-remote`));
|
|
113
|
-
console.log();
|
|
114
|
-
console.log(chalk_1.default.bold("[" + chalk_1.default.blue("◎") + "] Run Web UI (optional)\n"));
|
|
115
|
-
console.log(chalk_1.default.gray(" $ ") +
|
|
116
|
-
chalk_1.default.cyan(`cd bboard-ui && ${installCmd} && ${runCmd} build:start`));
|
|
117
|
-
console.log(chalk_1.default.gray(" requires Lace wallet browser extension"));
|
|
118
|
-
console.log();
|
|
119
|
-
console.log(chalk_1.default.bold("[" + chalk_1.default.yellow("!") + "] Important\n"));
|
|
120
|
-
console.log(chalk_1.default.gray(" • create wallet and fund from faucet"));
|
|
121
|
-
console.log(chalk_1.default.gray(" • Preprod faucet: https://faucet.preprod.midnight.network/"));
|
|
122
|
-
console.log(chalk_1.default.gray(" • funding takes 2-3 minutes"));
|
|
123
|
-
console.log(chalk_1.default.gray(" • see README.md for detailed guide"));
|
|
124
|
-
console.log();
|
|
60
|
+
static displaySteps(template, projectName, pm) {
|
|
61
|
+
if (!template.setupSteps)
|
|
62
|
+
return;
|
|
63
|
+
template.setupSteps.forEach((step, index) => {
|
|
64
|
+
const isLast = index === template.setupSteps.length - 1;
|
|
65
|
+
const icon = step.commands.length > 0 ? "●" : "▲";
|
|
66
|
+
console.log(chalk_1.default.dim("│ ") + chalk_1.default.blue(icon) + chalk_1.default.bold(` ${step.title}`));
|
|
67
|
+
for (const cmd of step.commands) {
|
|
68
|
+
const resolved = resolveCommand(cmd, projectName, pm);
|
|
69
|
+
console.log(chalk_1.default.dim("│ ") + chalk_1.default.cyan(resolved));
|
|
70
|
+
}
|
|
71
|
+
if (step.note) {
|
|
72
|
+
const lines = step.note.split("\n");
|
|
73
|
+
for (const line of lines) {
|
|
74
|
+
console.log(chalk_1.default.dim("│ ") + chalk_1.default.dim(line));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (!isLast) {
|
|
78
|
+
console.log(chalk_1.default.dim("│"));
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
console.log(chalk_1.default.dim("│"));
|
|
125
82
|
}
|
|
126
83
|
/**
|
|
127
84
|
* Display post-clone message
|
|
@@ -130,11 +87,11 @@ class SetupGuide {
|
|
|
130
87
|
const template = (0, templates_js_1.getTemplate)(templateName);
|
|
131
88
|
if (!template)
|
|
132
89
|
return;
|
|
133
|
-
console.log(
|
|
90
|
+
console.log();
|
|
91
|
+
console.log(chalk_1.default.green("◆") + chalk_1.default.bold(" Clone complete"));
|
|
134
92
|
if (template.requiresCompactCompiler) {
|
|
135
|
-
console.log(chalk_1.default.
|
|
136
|
-
console.log(chalk_1.default.
|
|
137
|
-
console.log();
|
|
93
|
+
console.log(chalk_1.default.dim("│"));
|
|
94
|
+
console.log(chalk_1.default.dim("│ ") + chalk_1.default.dim("Compact compiler required"));
|
|
138
95
|
}
|
|
139
96
|
}
|
|
140
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-guide.js","sourceRoot":"","sources":["../../src/utils/setup-guide.ts"],"names":[],"mappings":";AAAA,sCAAsC;AACtC,yCAAyC;AACzC,sCAAsC;AACtC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,kDAAkD;AAClD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;;;;;;AAEjC,kDAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"setup-guide.js","sourceRoot":"","sources":["../../src/utils/setup-guide.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export type TemplateCategory = "contract" | "dapp" | "connector";
|
|
2
|
+
export interface CategoryInfo {
|
|
3
|
+
title: string;
|
|
4
4
|
description: string;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
}
|
|
6
|
+
export interface TemplateSetupStep {
|
|
7
|
+
title: string;
|
|
8
|
+
commands: string[];
|
|
9
|
+
note?: string;
|
|
7
10
|
}
|
|
8
11
|
export interface Template {
|
|
9
12
|
name: string;
|
|
@@ -12,10 +15,13 @@ export interface Template {
|
|
|
12
15
|
available: boolean;
|
|
13
16
|
comingSoon?: boolean;
|
|
14
17
|
type: "bundled" | "remote";
|
|
18
|
+
category: TemplateCategory;
|
|
15
19
|
repo?: string;
|
|
16
20
|
nodeVersion?: number;
|
|
17
21
|
requiresCompactCompiler?: boolean;
|
|
18
22
|
compactVersion?: string;
|
|
23
|
+
projectStructure?: string[];
|
|
24
|
+
setupSteps?: TemplateSetupStep[];
|
|
19
25
|
}
|
|
20
26
|
export declare const templates: Template[];
|
|
21
27
|
/**
|
|
@@ -34,4 +40,20 @@ export declare function getTemplate(name: string): Template | undefined;
|
|
|
34
40
|
* Validate template name
|
|
35
41
|
*/
|
|
36
42
|
export declare function isValidTemplate(name: string): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Get all defined categories (includes empty ones for discoverability)
|
|
45
|
+
*/
|
|
46
|
+
export declare function getCategories(): TemplateCategory[];
|
|
47
|
+
/**
|
|
48
|
+
* Get templates filtered by category
|
|
49
|
+
*/
|
|
50
|
+
export declare function getTemplatesByCategory(category: TemplateCategory): Template[];
|
|
51
|
+
/**
|
|
52
|
+
* Get display info for a category
|
|
53
|
+
*/
|
|
54
|
+
export declare function getCategoryDisplay(category: TemplateCategory): CategoryInfo;
|
|
55
|
+
/**
|
|
56
|
+
* List all templates grouped by category
|
|
57
|
+
*/
|
|
58
|
+
export declare function listTemplates(): void;
|
|
37
59
|
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,CAAC;AAEjE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC3B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAClC;AAiBD,eAAO,MAAM,SAAS,EAAE,QAAQ,EAkI/B,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,EAAE,CAElD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,QAAQ,EAAE,CAE5C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAE9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,gBAAgB,EAAE,CAElD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,EAAE,CAE7E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,YAAY,CAE3E;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CA4CpC"}
|
package/dist/utils/templates.js
CHANGED
|
@@ -13,12 +13,34 @@
|
|
|
13
13
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
14
|
// See the License for the specific language governing permissions and
|
|
15
15
|
// limitations under the License.
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
16
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
20
|
exports.templates = void 0;
|
|
18
21
|
exports.getAvailableTemplates = getAvailableTemplates;
|
|
19
22
|
exports.getAllTemplates = getAllTemplates;
|
|
20
23
|
exports.getTemplate = getTemplate;
|
|
21
24
|
exports.isValidTemplate = isValidTemplate;
|
|
25
|
+
exports.getCategories = getCategories;
|
|
26
|
+
exports.getTemplatesByCategory = getTemplatesByCategory;
|
|
27
|
+
exports.getCategoryDisplay = getCategoryDisplay;
|
|
28
|
+
exports.listTemplates = listTemplates;
|
|
29
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
30
|
+
const categoryInfo = {
|
|
31
|
+
contract: {
|
|
32
|
+
title: "Contract",
|
|
33
|
+
description: "Deploy and test contracts",
|
|
34
|
+
},
|
|
35
|
+
dapp: {
|
|
36
|
+
title: "Full DApp",
|
|
37
|
+
description: "Complete application with UI and contract",
|
|
38
|
+
},
|
|
39
|
+
connector: {
|
|
40
|
+
title: "Connector",
|
|
41
|
+
description: "Integration examples and patterns",
|
|
42
|
+
},
|
|
43
|
+
};
|
|
22
44
|
exports.templates = [
|
|
23
45
|
{
|
|
24
46
|
name: "hello-world",
|
|
@@ -26,6 +48,7 @@ exports.templates = [
|
|
|
26
48
|
description: "Simple starter template with basic contract deployment",
|
|
27
49
|
available: true,
|
|
28
50
|
type: "bundled",
|
|
51
|
+
category: "contract",
|
|
29
52
|
},
|
|
30
53
|
{
|
|
31
54
|
name: "counter",
|
|
@@ -33,10 +56,44 @@ exports.templates = [
|
|
|
33
56
|
description: "Increment/decrement app demonstrating state management",
|
|
34
57
|
available: true,
|
|
35
58
|
type: "remote",
|
|
59
|
+
category: "dapp",
|
|
36
60
|
repo: "midnightntwrk/example-counter",
|
|
37
61
|
nodeVersion: 22,
|
|
38
62
|
requiresCompactCompiler: true,
|
|
39
|
-
compactVersion: "0.
|
|
63
|
+
compactVersion: "0.28.0",
|
|
64
|
+
projectStructure: [
|
|
65
|
+
"contract/ smart contract (compact)",
|
|
66
|
+
"counter-cli/ cli interface",
|
|
67
|
+
],
|
|
68
|
+
setupSteps: [
|
|
69
|
+
{
|
|
70
|
+
title: "Build",
|
|
71
|
+
commands: [
|
|
72
|
+
"cd {{projectName}}",
|
|
73
|
+
"{{installCmd}}",
|
|
74
|
+
"cd contract && {{runCmd}} compact",
|
|
75
|
+
"{{runCmd}} build",
|
|
76
|
+
"cd ../counter-cli && {{runCmd}} build",
|
|
77
|
+
],
|
|
78
|
+
note: "downloads ~500MB zk parameters on first run",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
title: "Proof Server",
|
|
82
|
+
commands: [
|
|
83
|
+
"docker run -d -p 6300:6300 -e PORT=6300 midnightntwrk/proof-server:7.0.0",
|
|
84
|
+
],
|
|
85
|
+
note: "runs in background",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
title: "Run Application",
|
|
89
|
+
commands: ["cd counter-cli && {{runCmd}} start"],
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
title: "Important",
|
|
93
|
+
commands: [],
|
|
94
|
+
note: "create wallet and fund from faucet\nPreprod faucet: https://faucet.preprod.midnight.network/\nfunding takes 2-3 minutes\nsee README.md for detailed guide",
|
|
95
|
+
},
|
|
96
|
+
],
|
|
40
97
|
},
|
|
41
98
|
{
|
|
42
99
|
name: "bboard",
|
|
@@ -44,10 +101,53 @@ exports.templates = [
|
|
|
44
101
|
description: "Bulletin board with multi-user interactions and privacy patterns",
|
|
45
102
|
available: true,
|
|
46
103
|
type: "remote",
|
|
104
|
+
category: "dapp",
|
|
47
105
|
repo: "midnightntwrk/example-bboard",
|
|
48
106
|
nodeVersion: 22,
|
|
49
107
|
requiresCompactCompiler: true,
|
|
50
|
-
compactVersion: "0.
|
|
108
|
+
compactVersion: "0.28.0",
|
|
109
|
+
projectStructure: [
|
|
110
|
+
"contract/ smart contract (compact)",
|
|
111
|
+
"api/ shared api methods",
|
|
112
|
+
"bboard-cli/ cli interface",
|
|
113
|
+
"bboard-ui/ web browser interface",
|
|
114
|
+
],
|
|
115
|
+
setupSteps: [
|
|
116
|
+
{
|
|
117
|
+
title: "Build",
|
|
118
|
+
commands: [
|
|
119
|
+
"cd {{projectName}}",
|
|
120
|
+
"{{installCmd}}",
|
|
121
|
+
"cd api && {{installCmd}} && cd ..",
|
|
122
|
+
"cd contract && {{installCmd}}",
|
|
123
|
+
"{{runCmd}} compact",
|
|
124
|
+
"{{runCmd}} build && cd ..",
|
|
125
|
+
"cd bboard-cli && {{installCmd}} && {{runCmd}} build && cd ..",
|
|
126
|
+
],
|
|
127
|
+
note: "downloads ~500MB zk parameters on first run",
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
title: "Proof Server",
|
|
131
|
+
commands: [
|
|
132
|
+
"docker run -d -p 6300:6300 -e PORT=6300 midnightntwrk/proof-server:7.0.0",
|
|
133
|
+
],
|
|
134
|
+
note: "runs in background",
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
title: "Run CLI",
|
|
138
|
+
commands: ["cd bboard-cli && {{runCmd}} preprod-remote"],
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
title: "Run Web UI (optional)",
|
|
142
|
+
commands: ["cd bboard-ui && {{installCmd}} && {{runCmd}} build:start"],
|
|
143
|
+
note: "requires Lace wallet browser extension",
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
title: "Important",
|
|
147
|
+
commands: [],
|
|
148
|
+
note: "create wallet and fund from faucet\nPreprod faucet: https://faucet.preprod.midnight.network/\nfunding takes 2-3 minutes\nsee README.md for detailed guide",
|
|
149
|
+
},
|
|
150
|
+
],
|
|
51
151
|
},
|
|
52
152
|
{
|
|
53
153
|
name: "dex",
|
|
@@ -56,6 +156,7 @@ exports.templates = [
|
|
|
56
156
|
available: false,
|
|
57
157
|
comingSoon: true,
|
|
58
158
|
type: "remote",
|
|
159
|
+
category: "dapp",
|
|
59
160
|
repo: "midnightntwrk/example-dex",
|
|
60
161
|
},
|
|
61
162
|
{
|
|
@@ -65,6 +166,7 @@ exports.templates = [
|
|
|
65
166
|
available: false,
|
|
66
167
|
comingSoon: true,
|
|
67
168
|
type: "remote",
|
|
169
|
+
category: "dapp",
|
|
68
170
|
repo: "midnightntwrk/midnight-kitties",
|
|
69
171
|
},
|
|
70
172
|
];
|
|
@@ -93,4 +195,58 @@ function isValidTemplate(name) {
|
|
|
93
195
|
const template = getTemplate(name);
|
|
94
196
|
return template !== undefined && template.available;
|
|
95
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Get all defined categories (includes empty ones for discoverability)
|
|
200
|
+
*/
|
|
201
|
+
function getCategories() {
|
|
202
|
+
return Object.keys(categoryInfo);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Get templates filtered by category
|
|
206
|
+
*/
|
|
207
|
+
function getTemplatesByCategory(category) {
|
|
208
|
+
return exports.templates.filter((t) => t.category === category);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Get display info for a category
|
|
212
|
+
*/
|
|
213
|
+
function getCategoryDisplay(category) {
|
|
214
|
+
return categoryInfo[category];
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* List all templates grouped by category
|
|
218
|
+
*/
|
|
219
|
+
function listTemplates() {
|
|
220
|
+
const categories = getCategories();
|
|
221
|
+
console.log(chalk_1.default.dim("│"));
|
|
222
|
+
for (const category of categories) {
|
|
223
|
+
const info = getCategoryDisplay(category);
|
|
224
|
+
const categoryTemplates = getTemplatesByCategory(category);
|
|
225
|
+
const available = categoryTemplates.filter((t) => t.available);
|
|
226
|
+
const comingSoon = categoryTemplates.filter((t) => t.comingSoon);
|
|
227
|
+
console.log(chalk_1.default.dim("│ ") + chalk_1.default.bold(info.title));
|
|
228
|
+
console.log(chalk_1.default.dim("│ ") + chalk_1.default.dim(info.description));
|
|
229
|
+
console.log(chalk_1.default.dim("│"));
|
|
230
|
+
if (available.length === 0 && comingSoon.length === 0) {
|
|
231
|
+
console.log(chalk_1.default.dim("│ ") + chalk_1.default.yellow("Coming soon"));
|
|
232
|
+
console.log(chalk_1.default.dim("│"));
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
for (const t of available) {
|
|
236
|
+
const nameCol = t.name.padEnd(20);
|
|
237
|
+
console.log(chalk_1.default.dim("│ ") + chalk_1.default.green(nameCol) + chalk_1.default.dim(t.description));
|
|
238
|
+
}
|
|
239
|
+
for (const t of comingSoon) {
|
|
240
|
+
const nameCol = t.name.padEnd(20);
|
|
241
|
+
console.log(chalk_1.default.dim("│ ") +
|
|
242
|
+
chalk_1.default.dim(nameCol) +
|
|
243
|
+
chalk_1.default.dim(t.description) +
|
|
244
|
+
" " +
|
|
245
|
+
chalk_1.default.yellow("(coming soon)"));
|
|
246
|
+
}
|
|
247
|
+
console.log(chalk_1.default.dim("│"));
|
|
248
|
+
}
|
|
249
|
+
console.log(chalk_1.default.dim("└"));
|
|
250
|
+
console.log();
|
|
251
|
+
}
|
|
96
252
|
//# sourceMappingURL=templates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":";AAAA,sCAAsC;AACtC,yCAAyC;AACzC,sCAAsC;AACtC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,kDAAkD;AAClD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"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"}
|