create-mn-app 0.3.18 → 0.3.20
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 +52 -26
- package/dist/__tests__/error-handler.test.d.ts +2 -0
- package/dist/__tests__/error-handler.test.d.ts.map +1 -0
- package/dist/__tests__/error-handler.test.js +47 -0
- package/dist/__tests__/error-handler.test.js.map +1 -0
- package/dist/__tests__/package-manager.test.d.ts +2 -0
- package/dist/__tests__/package-manager.test.d.ts.map +1 -0
- package/dist/__tests__/package-manager.test.js +39 -0
- package/dist/__tests__/package-manager.test.js.map +1 -0
- package/dist/__tests__/template-manager.test.d.ts +2 -0
- package/dist/__tests__/template-manager.test.d.ts.map +1 -0
- package/dist/__tests__/template-manager.test.js +50 -0
- package/dist/__tests__/template-manager.test.js.map +1 -0
- package/dist/__tests__/templates.test.d.ts +2 -0
- package/dist/__tests__/templates.test.d.ts.map +1 -0
- package/dist/__tests__/templates.test.js +119 -0
- package/dist/__tests__/templates.test.js.map +1 -0
- package/dist/__tests__/validation.test.d.ts +2 -0
- package/dist/__tests__/validation.test.d.ts.map +1 -0
- package/dist/__tests__/validation.test.js +43 -0
- package/dist/__tests__/validation.test.js.map +1 -0
- 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 -10
- package/dist/utils/setup-guide.d.ts.map +1 -1
- package/dist/utils/setup-guide.js +52 -44
- 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 +161 -3
- package/dist/utils/templates.js.map +1 -1
- package/package.json +18 -4
package/README.md
CHANGED
|
@@ -33,9 +33,18 @@ The `setup` command:
|
|
|
33
33
|
|
|
34
34
|
## Templates
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
Templates are organized by category. The interactive flow guides you through category → template selection.
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
```bash
|
|
39
|
+
npx create-mn-app my-app # interactive: pick category then template
|
|
40
|
+
npx create-mn-app my-app --list # list all templates grouped by category
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Contract
|
|
44
|
+
|
|
45
|
+
| Template | Description |
|
|
46
|
+
| -------- | ----------- |
|
|
47
|
+
| `hello-world` (default) | Basic message storage contract demonstrating state management |
|
|
39
48
|
|
|
40
49
|
```bash
|
|
41
50
|
npx create-mn-app my-app
|
|
@@ -44,32 +53,33 @@ npm run setup # starts proof server, compiles, deploys
|
|
|
44
53
|
npm run cli # interact with deployed contract
|
|
45
54
|
```
|
|
46
55
|
|
|
47
|
-
###
|
|
56
|
+
### Full DApp
|
|
48
57
|
|
|
49
|
-
|
|
58
|
+
| Template | Description |
|
|
59
|
+
| -------- | ----------- |
|
|
60
|
+
| `counter` | Increment/decrement app with zkProofs ([source](https://github.com/midnightntwrk/example-counter)) |
|
|
61
|
+
| `bboard` | Multi-user bulletin board with privacy patterns ([source](https://github.com/midnightntwrk/example-bboard)) |
|
|
62
|
+
| `dex` | Decentralized exchange using FungibleToken *(coming soon)* |
|
|
63
|
+
| `midnight-kitties` | NFT-based full stack DApp *(coming soon)* |
|
|
50
64
|
|
|
51
65
|
```bash
|
|
52
66
|
npx create-mn-app my-app --template counter
|
|
53
|
-
|
|
54
|
-
npm install
|
|
55
|
-
# follow displayed instructions
|
|
67
|
+
npx create-mn-app my-app --template bboard
|
|
56
68
|
```
|
|
57
69
|
|
|
58
|
-
Requires Compact compiler
|
|
70
|
+
Requires Compact compiler — the CLI will check and offer to install it.
|
|
59
71
|
|
|
60
|
-
###
|
|
72
|
+
### Connector
|
|
61
73
|
|
|
62
|
-
|
|
63
|
-
- DEX - Decentralized exchange using FungibleToken
|
|
64
|
-
- Midnight Kitties - NFT-based full stack DApp
|
|
74
|
+
Integration examples and patterns *(coming soon)*.
|
|
65
75
|
|
|
66
76
|
## Requirements
|
|
67
77
|
|
|
68
|
-
| Requirement | Version | Notes
|
|
69
|
-
| ---------------- | ------- |
|
|
70
|
-
| Node.js | 22+ | Required for all templates
|
|
71
|
-
| Docker | Latest | Runs proof server
|
|
72
|
-
| Compact Compiler | 0.
|
|
78
|
+
| Requirement | Version | Notes |
|
|
79
|
+
| ---------------- | ------- | -------------------------------------------------- |
|
|
80
|
+
| Node.js | 22+ | Required for all templates |
|
|
81
|
+
| Docker | Latest | Runs proof server |
|
|
82
|
+
| Compact Compiler | 0.28.0+ | Counter and Bboard templates (auto-install offered)|
|
|
73
83
|
|
|
74
84
|
## CLI Options
|
|
75
85
|
|
|
@@ -77,15 +87,31 @@ Requires Compact compiler - the CLI will check and offer to install it.
|
|
|
77
87
|
npx create-mn-app [project-name] [options]
|
|
78
88
|
```
|
|
79
89
|
|
|
80
|
-
| Option | Description
|
|
81
|
-
| ------------------------- |
|
|
82
|
-
| `-t, --template <name>` | Template: `hello-world`, `counter`
|
|
83
|
-
| `--
|
|
84
|
-
|
|
|
85
|
-
| `--
|
|
86
|
-
| `--
|
|
87
|
-
|
|
|
88
|
-
|
|
|
90
|
+
| Option | Description |
|
|
91
|
+
| ------------------------- | ---------------------------------------------------- |
|
|
92
|
+
| `-t, --template <name>` | Template: `hello-world`, `counter`, `bboard` |
|
|
93
|
+
| `--list` | List all available templates grouped by category |
|
|
94
|
+
| `-y, --yes` | Accept all defaults (non-interactive mode) |
|
|
95
|
+
| `--dry-run` | Preview what will be created without writing files |
|
|
96
|
+
| `--from <owner/repo>` | Create from a custom GitHub repository |
|
|
97
|
+
| `--use-npm/yarn/pnpm/bun` | Force package manager |
|
|
98
|
+
| `--skip-install` | Skip dependency installation |
|
|
99
|
+
| `--skip-git` | Skip git initialization |
|
|
100
|
+
| `--verbose` | Show detailed output |
|
|
101
|
+
| `-h, --help` | Show help |
|
|
102
|
+
| `-V, --version` | Show version |
|
|
103
|
+
|
|
104
|
+
### Non-Interactive / CI Mode
|
|
105
|
+
|
|
106
|
+
Use `-y` or set `CI=true` / `GITHUB_ACTIONS=true` to skip all prompts:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
npx create-mn-app my-app -y -t counter # defaults, no prompts
|
|
110
|
+
CI=true npx create-mn-app my-app # auto-detected in CI
|
|
111
|
+
|
|
112
|
+
npx create-mn-app my-app --dry-run # preview without writing files
|
|
113
|
+
npx create-mn-app my-app --from user/repo # clone any GitHub repo
|
|
114
|
+
```
|
|
89
115
|
|
|
90
116
|
## Project Structure
|
|
91
117
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/error-handler.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const error_handler_1 = require("../utils/error-handler");
|
|
5
|
+
(0, vitest_1.describe)("ErrorHandler.formatError", () => {
|
|
6
|
+
(0, vitest_1.it)("formats error with context", () => {
|
|
7
|
+
const result = error_handler_1.ErrorHandler.formatError(new Error("something failed"), "creating app");
|
|
8
|
+
(0, vitest_1.expect)(result).toContain("something failed");
|
|
9
|
+
(0, vitest_1.expect)(result).toContain("creating app");
|
|
10
|
+
});
|
|
11
|
+
(0, vitest_1.it)("formats error without context", () => {
|
|
12
|
+
const result = error_handler_1.ErrorHandler.formatError(new Error("oops"));
|
|
13
|
+
(0, vitest_1.expect)(result).toContain("oops");
|
|
14
|
+
(0, vitest_1.expect)(result).toContain("Error");
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
(0, vitest_1.describe)("ErrorHandler.suggestSolution", () => {
|
|
18
|
+
(0, vitest_1.it)("suggests permission fixes for EACCES errors", () => {
|
|
19
|
+
const consoleSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
20
|
+
error_handler_1.ErrorHandler.suggestSolution(new Error("EACCES: permission denied"));
|
|
21
|
+
const output = consoleSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
22
|
+
(0, vitest_1.expect)(output).toContain("npm permissions");
|
|
23
|
+
consoleSpy.mockRestore();
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.it)("suggests network fixes for timeout errors", () => {
|
|
26
|
+
const consoleSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
27
|
+
error_handler_1.ErrorHandler.suggestSolution(new Error("network timeout occurred"));
|
|
28
|
+
const output = consoleSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
29
|
+
(0, vitest_1.expect)(output).toContain("internet connection");
|
|
30
|
+
consoleSpy.mockRestore();
|
|
31
|
+
});
|
|
32
|
+
(0, vitest_1.it)("suggests Docker fixes for docker errors", () => {
|
|
33
|
+
const consoleSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
34
|
+
error_handler_1.ErrorHandler.suggestSolution(new Error("docker daemon not running"));
|
|
35
|
+
const output = consoleSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
36
|
+
(0, vitest_1.expect)(output).toContain("Docker");
|
|
37
|
+
consoleSpy.mockRestore();
|
|
38
|
+
});
|
|
39
|
+
(0, vitest_1.it)("suggests generic fixes for unknown errors", () => {
|
|
40
|
+
const consoleSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
41
|
+
error_handler_1.ErrorHandler.suggestSolution(new Error("unexpected error xyz"));
|
|
42
|
+
const output = consoleSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
43
|
+
(0, vitest_1.expect)(output).toContain("--verbose");
|
|
44
|
+
consoleSpy.mockRestore();
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=error-handler.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.test.js","sourceRoot":"","sources":["../../src/__tests__/error-handler.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/package-manager.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const package_manager_1 = require("../utils/package-manager");
|
|
5
|
+
(0, vitest_1.describe)("getPackageManagerInfo", () => {
|
|
6
|
+
(0, vitest_1.it)("returns correct info for npm", () => {
|
|
7
|
+
const info = (0, package_manager_1.getPackageManagerInfo)("npm");
|
|
8
|
+
(0, vitest_1.expect)(info.name).toBe("npm");
|
|
9
|
+
(0, vitest_1.expect)(info.lockFile).toBe("package-lock.json");
|
|
10
|
+
(0, vitest_1.expect)(info.installCommand).toBe("npm install");
|
|
11
|
+
(0, vitest_1.expect)(info.runCommand).toBe("npm run");
|
|
12
|
+
(0, vitest_1.expect)(info.addCommand).toBe("npm install");
|
|
13
|
+
});
|
|
14
|
+
(0, vitest_1.it)("returns correct info for yarn", () => {
|
|
15
|
+
const info = (0, package_manager_1.getPackageManagerInfo)("yarn");
|
|
16
|
+
(0, vitest_1.expect)(info.name).toBe("yarn");
|
|
17
|
+
(0, vitest_1.expect)(info.lockFile).toBe("yarn.lock");
|
|
18
|
+
(0, vitest_1.expect)(info.installCommand).toBe("yarn");
|
|
19
|
+
(0, vitest_1.expect)(info.runCommand).toBe("yarn");
|
|
20
|
+
(0, vitest_1.expect)(info.addCommand).toBe("yarn add");
|
|
21
|
+
});
|
|
22
|
+
(0, vitest_1.it)("returns correct info for pnpm", () => {
|
|
23
|
+
const info = (0, package_manager_1.getPackageManagerInfo)("pnpm");
|
|
24
|
+
(0, vitest_1.expect)(info.name).toBe("pnpm");
|
|
25
|
+
(0, vitest_1.expect)(info.lockFile).toBe("pnpm-lock.yaml");
|
|
26
|
+
(0, vitest_1.expect)(info.installCommand).toBe("pnpm install");
|
|
27
|
+
(0, vitest_1.expect)(info.runCommand).toBe("pnpm");
|
|
28
|
+
(0, vitest_1.expect)(info.addCommand).toBe("pnpm add");
|
|
29
|
+
});
|
|
30
|
+
(0, vitest_1.it)("returns correct info for bun", () => {
|
|
31
|
+
const info = (0, package_manager_1.getPackageManagerInfo)("bun");
|
|
32
|
+
(0, vitest_1.expect)(info.name).toBe("bun");
|
|
33
|
+
(0, vitest_1.expect)(info.lockFile).toBe("bun.lockb");
|
|
34
|
+
(0, vitest_1.expect)(info.installCommand).toBe("bun install");
|
|
35
|
+
(0, vitest_1.expect)(info.runCommand).toBe("bun run");
|
|
36
|
+
(0, vitest_1.expect)(info.addCommand).toBe("bun add");
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=package-manager.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.test.js","sourceRoot":"","sources":["../../src/__tests__/package-manager.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,8DAAiE;AAEjE,IAAA,iBAAQ,EAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAA,WAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,IAAI,GAAG,IAAA,uCAAqB,EAAC,KAAK,CAAC,CAAC;QAC1C,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAA,eAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChD,IAAA,eAAM,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChD,IAAA,eAAM,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,IAAI,GAAG,IAAA,uCAAqB,EAAC,MAAM,CAAC,CAAC;QAC3C,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAA,eAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,IAAA,eAAM,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,IAAI,GAAG,IAAA,uCAAqB,EAAC,MAAM,CAAC,CAAC;QAC3C,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAA,eAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7C,IAAA,eAAM,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,IAAA,eAAM,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,IAAI,GAAG,IAAA,uCAAqB,EAAC,KAAK,CAAC,CAAC;QAC1C,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAA,eAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChD,IAAA,eAAM,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-manager.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/template-manager.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const vitest_1 = require("vitest");
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
10
|
+
const template_manager_1 = require("../utils/template-manager");
|
|
11
|
+
(0, vitest_1.describe)("TemplateManager", () => {
|
|
12
|
+
const tmpDirs = [];
|
|
13
|
+
function createTmpDir() {
|
|
14
|
+
const dir = fs_extra_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), "mn-test-"));
|
|
15
|
+
tmpDirs.push(dir);
|
|
16
|
+
return dir;
|
|
17
|
+
}
|
|
18
|
+
(0, vitest_1.afterEach)(async () => {
|
|
19
|
+
for (const dir of tmpDirs) {
|
|
20
|
+
await fs_extra_1.default.remove(dir);
|
|
21
|
+
}
|
|
22
|
+
tmpDirs.length = 0;
|
|
23
|
+
});
|
|
24
|
+
(0, vitest_1.it)("scaffolds hello-world template with variable interpolation", async () => {
|
|
25
|
+
const targetDir = createTmpDir();
|
|
26
|
+
const manager = new template_manager_1.TemplateManager("hello-world");
|
|
27
|
+
await manager.scaffold(targetDir, "test-project");
|
|
28
|
+
// Check key files exist
|
|
29
|
+
(0, vitest_1.expect)(fs_extra_1.default.existsSync(path_1.default.join(targetDir, "package.json"))).toBe(true);
|
|
30
|
+
(0, vitest_1.expect)(fs_extra_1.default.existsSync(path_1.default.join(targetDir, "tsconfig.json"))).toBe(true);
|
|
31
|
+
(0, vitest_1.expect)(fs_extra_1.default.existsSync(path_1.default.join(targetDir, ".gitignore"))).toBe(true);
|
|
32
|
+
(0, vitest_1.expect)(fs_extra_1.default.existsSync(path_1.default.join(targetDir, "README.md"))).toBe(true);
|
|
33
|
+
(0, vitest_1.expect)(fs_extra_1.default.existsSync(path_1.default.join(targetDir, "contracts", "hello-world.compact"))).toBe(true);
|
|
34
|
+
(0, vitest_1.expect)(fs_extra_1.default.existsSync(path_1.default.join(targetDir, "src", "deploy.ts"))).toBe(true);
|
|
35
|
+
(0, vitest_1.expect)(fs_extra_1.default.existsSync(path_1.default.join(targetDir, "src", "cli.ts"))).toBe(true);
|
|
36
|
+
// Check .template files are NOT present (should be stripped)
|
|
37
|
+
(0, vitest_1.expect)(fs_extra_1.default.existsSync(path_1.default.join(targetDir, "package.json.template"))).toBe(false);
|
|
38
|
+
// Check variable interpolation in package.json
|
|
39
|
+
const pkg = JSON.parse(fs_extra_1.default.readFileSync(path_1.default.join(targetDir, "package.json"), "utf-8"));
|
|
40
|
+
(0, vitest_1.expect)(pkg.name).toBe("test-project");
|
|
41
|
+
});
|
|
42
|
+
(0, vitest_1.it)("renames _gitignore to .gitignore", async () => {
|
|
43
|
+
const targetDir = createTmpDir();
|
|
44
|
+
const manager = new template_manager_1.TemplateManager("hello-world");
|
|
45
|
+
await manager.scaffold(targetDir, "my-app");
|
|
46
|
+
(0, vitest_1.expect)(fs_extra_1.default.existsSync(path_1.default.join(targetDir, ".gitignore"))).toBe(true);
|
|
47
|
+
(0, vitest_1.expect)(fs_extra_1.default.existsSync(path_1.default.join(targetDir, "_gitignore"))).toBe(false);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=template-manager.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-manager.test.js","sourceRoot":"","sources":["../../src/__tests__/template-manager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/templates.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const templates_1 = require("../utils/templates");
|
|
5
|
+
(0, vitest_1.describe)("getAllTemplates", () => {
|
|
6
|
+
(0, vitest_1.it)("returns all templates including coming soon", () => {
|
|
7
|
+
const templates = (0, templates_1.getAllTemplates)();
|
|
8
|
+
(0, vitest_1.expect)(templates.length).toBeGreaterThanOrEqual(5);
|
|
9
|
+
(0, vitest_1.expect)(templates.some((t) => t.comingSoon)).toBe(true);
|
|
10
|
+
});
|
|
11
|
+
});
|
|
12
|
+
(0, vitest_1.describe)("getAvailableTemplates", () => {
|
|
13
|
+
(0, vitest_1.it)("returns only available templates", () => {
|
|
14
|
+
const templates = (0, templates_1.getAvailableTemplates)();
|
|
15
|
+
(0, vitest_1.expect)(templates.length).toBeGreaterThan(0);
|
|
16
|
+
(0, vitest_1.expect)(templates.every((t) => t.available)).toBe(true);
|
|
17
|
+
});
|
|
18
|
+
(0, vitest_1.it)("does not include coming soon templates", () => {
|
|
19
|
+
const templates = (0, templates_1.getAvailableTemplates)();
|
|
20
|
+
(0, vitest_1.expect)(templates.every((t) => !t.comingSoon)).toBe(true);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
(0, vitest_1.describe)("getTemplate", () => {
|
|
24
|
+
(0, vitest_1.it)("returns template by name", () => {
|
|
25
|
+
const template = (0, templates_1.getTemplate)("hello-world");
|
|
26
|
+
(0, vitest_1.expect)(template).toBeDefined();
|
|
27
|
+
(0, vitest_1.expect)(template.name).toBe("hello-world");
|
|
28
|
+
(0, vitest_1.expect)(template.type).toBe("bundled");
|
|
29
|
+
});
|
|
30
|
+
(0, vitest_1.it)("returns remote template by name", () => {
|
|
31
|
+
const template = (0, templates_1.getTemplate)("counter");
|
|
32
|
+
(0, vitest_1.expect)(template).toBeDefined();
|
|
33
|
+
(0, vitest_1.expect)(template.type).toBe("remote");
|
|
34
|
+
(0, vitest_1.expect)(template.repo).toBeDefined();
|
|
35
|
+
});
|
|
36
|
+
(0, vitest_1.it)("returns undefined for unknown template", () => {
|
|
37
|
+
(0, vitest_1.expect)((0, templates_1.getTemplate)("nonexistent")).toBeUndefined();
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
(0, vitest_1.describe)("isValidTemplate", () => {
|
|
41
|
+
(0, vitest_1.it)("returns true for available templates", () => {
|
|
42
|
+
(0, vitest_1.expect)((0, templates_1.isValidTemplate)("hello-world")).toBe(true);
|
|
43
|
+
(0, vitest_1.expect)((0, templates_1.isValidTemplate)("counter")).toBe(true);
|
|
44
|
+
});
|
|
45
|
+
(0, vitest_1.it)("returns false for coming soon templates", () => {
|
|
46
|
+
(0, vitest_1.expect)((0, templates_1.isValidTemplate)("dex")).toBe(false);
|
|
47
|
+
(0, vitest_1.expect)((0, templates_1.isValidTemplate)("midnight-kitties")).toBe(false);
|
|
48
|
+
});
|
|
49
|
+
(0, vitest_1.it)("returns false for nonexistent templates", () => {
|
|
50
|
+
(0, vitest_1.expect)((0, templates_1.isValidTemplate)("nonexistent")).toBe(false);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
(0, vitest_1.describe)("getCategories", () => {
|
|
54
|
+
(0, vitest_1.it)("returns all defined categories including empty ones", () => {
|
|
55
|
+
const categories = (0, templates_1.getCategories)();
|
|
56
|
+
(0, vitest_1.expect)(categories).toContain("contract");
|
|
57
|
+
(0, vitest_1.expect)(categories).toContain("dapp");
|
|
58
|
+
(0, vitest_1.expect)(categories).toContain("connector");
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
(0, vitest_1.describe)("getTemplatesByCategory", () => {
|
|
62
|
+
(0, vitest_1.it)("returns contract templates", () => {
|
|
63
|
+
const templates = (0, templates_1.getTemplatesByCategory)("contract");
|
|
64
|
+
(0, vitest_1.expect)(templates.length).toBeGreaterThan(0);
|
|
65
|
+
(0, vitest_1.expect)(templates.every((t) => t.category === "contract")).toBe(true);
|
|
66
|
+
});
|
|
67
|
+
(0, vitest_1.it)("returns dapp templates", () => {
|
|
68
|
+
const templates = (0, templates_1.getTemplatesByCategory)("dapp");
|
|
69
|
+
(0, vitest_1.expect)(templates.length).toBeGreaterThan(0);
|
|
70
|
+
(0, vitest_1.expect)(templates.every((t) => t.category === "dapp")).toBe(true);
|
|
71
|
+
});
|
|
72
|
+
(0, vitest_1.it)("returns empty array for category with no templates", () => {
|
|
73
|
+
const templates = (0, templates_1.getTemplatesByCategory)("connector");
|
|
74
|
+
(0, vitest_1.expect)(templates).toEqual([]);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
(0, vitest_1.describe)("getCategoryDisplay", () => {
|
|
78
|
+
(0, vitest_1.it)("returns display info for contract category", () => {
|
|
79
|
+
const info = (0, templates_1.getCategoryDisplay)("contract");
|
|
80
|
+
(0, vitest_1.expect)(info.title).toBeTruthy();
|
|
81
|
+
(0, vitest_1.expect)(info.description).toBeTruthy();
|
|
82
|
+
});
|
|
83
|
+
(0, vitest_1.it)("returns display info for dapp category", () => {
|
|
84
|
+
const info = (0, templates_1.getCategoryDisplay)("dapp");
|
|
85
|
+
(0, vitest_1.expect)(info.title).toBeTruthy();
|
|
86
|
+
(0, vitest_1.expect)(info.description).toBeTruthy();
|
|
87
|
+
});
|
|
88
|
+
(0, vitest_1.it)("returns display info for connector category", () => {
|
|
89
|
+
const info = (0, templates_1.getCategoryDisplay)("connector");
|
|
90
|
+
(0, vitest_1.expect)(info.title).toBeTruthy();
|
|
91
|
+
(0, vitest_1.expect)(info.description).toBeTruthy();
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
(0, vitest_1.describe)("template structure", () => {
|
|
95
|
+
(0, vitest_1.it)("all templates have required fields", () => {
|
|
96
|
+
const templates = (0, templates_1.getAllTemplates)();
|
|
97
|
+
for (const t of templates) {
|
|
98
|
+
(0, vitest_1.expect)(t.name).toBeTruthy();
|
|
99
|
+
(0, vitest_1.expect)(t.display).toBeTruthy();
|
|
100
|
+
(0, vitest_1.expect)(t.description).toBeTruthy();
|
|
101
|
+
(0, vitest_1.expect)(typeof t.available).toBe("boolean");
|
|
102
|
+
(0, vitest_1.expect)(["bundled", "remote"]).toContain(t.type);
|
|
103
|
+
(0, vitest_1.expect)(["contract", "dapp", "connector"]).toContain(t.category);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
(0, vitest_1.it)("remote templates have a repo", () => {
|
|
107
|
+
const templates = (0, templates_1.getAllTemplates)().filter((t) => t.type === "remote");
|
|
108
|
+
for (const t of templates) {
|
|
109
|
+
(0, vitest_1.expect)(t.repo).toBeTruthy();
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
(0, vitest_1.it)("templates with compact compiler requirement have a version", () => {
|
|
113
|
+
const templates = (0, templates_1.getAllTemplates)().filter((t) => t.requiresCompactCompiler);
|
|
114
|
+
for (const t of templates) {
|
|
115
|
+
(0, vitest_1.expect)(t.compactVersion).toBeTruthy();
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
//# sourceMappingURL=templates.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.test.js","sourceRoot":"","sources":["../../src/__tests__/templates.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/validation.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const validation_1 = require("../utils/validation");
|
|
5
|
+
(0, vitest_1.describe)("validateProjectName", () => {
|
|
6
|
+
(0, vitest_1.it)("accepts valid kebab-case names", () => {
|
|
7
|
+
(0, vitest_1.expect)((0, validation_1.validateProjectName)("my-midnight-app")).toEqual({ valid: true });
|
|
8
|
+
(0, vitest_1.expect)((0, validation_1.validateProjectName)("hello-world")).toEqual({ valid: true });
|
|
9
|
+
(0, vitest_1.expect)((0, validation_1.validateProjectName)("test")).toEqual({ valid: true });
|
|
10
|
+
});
|
|
11
|
+
(0, vitest_1.it)("accepts names with numbers", () => {
|
|
12
|
+
(0, vitest_1.expect)((0, validation_1.validateProjectName)("app-v2")).toEqual({ valid: true });
|
|
13
|
+
(0, vitest_1.expect)((0, validation_1.validateProjectName)("my-app-123")).toEqual({ valid: true });
|
|
14
|
+
});
|
|
15
|
+
(0, vitest_1.it)("rejects uppercase letters", () => {
|
|
16
|
+
const result = (0, validation_1.validateProjectName)("MyApp");
|
|
17
|
+
(0, vitest_1.expect)(result.valid).toBe(false);
|
|
18
|
+
(0, vitest_1.expect)(result.problems).toBeDefined();
|
|
19
|
+
(0, vitest_1.expect)(result.problems.some((p) => p.includes("uppercase"))).toBe(true);
|
|
20
|
+
});
|
|
21
|
+
(0, vitest_1.it)("rejects empty names", () => {
|
|
22
|
+
const result = (0, validation_1.validateProjectName)("");
|
|
23
|
+
(0, vitest_1.expect)(result.valid).toBe(false);
|
|
24
|
+
(0, vitest_1.expect)(result.problems).toBeDefined();
|
|
25
|
+
});
|
|
26
|
+
(0, vitest_1.it)("rejects names starting with a dot", () => {
|
|
27
|
+
const result = (0, validation_1.validateProjectName)(".hidden-app");
|
|
28
|
+
(0, vitest_1.expect)(result.valid).toBe(false);
|
|
29
|
+
});
|
|
30
|
+
(0, vitest_1.it)("rejects names starting with underscore", () => {
|
|
31
|
+
const result = (0, validation_1.validateProjectName)("_private-app");
|
|
32
|
+
(0, vitest_1.expect)(result.valid).toBe(false);
|
|
33
|
+
});
|
|
34
|
+
(0, vitest_1.it)("rejects names with spaces", () => {
|
|
35
|
+
const result = (0, validation_1.validateProjectName)("my app");
|
|
36
|
+
(0, vitest_1.expect)(result.valid).toBe(false);
|
|
37
|
+
});
|
|
38
|
+
(0, vitest_1.it)("rejects names with special characters", () => {
|
|
39
|
+
const result = (0, validation_1.validateProjectName)("my@app");
|
|
40
|
+
(0, vitest_1.expect)(result.valid).toBe(false);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=validation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../src/__tests__/validation.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -55,6 +55,7 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
55
55
|
const update_notifier_1 = __importDefault(require("update-notifier"));
|
|
56
56
|
const create_app_1 = require("./create-app");
|
|
57
57
|
const error_handler_1 = require("./utils/error-handler");
|
|
58
|
+
const templates_1 = require("./utils/templates");
|
|
58
59
|
const path = __importStar(require("path"));
|
|
59
60
|
const fs = __importStar(require("fs"));
|
|
60
61
|
const pkg = JSON.parse(fs.readFileSync(path.join(__dirname, "../package.json"), "utf-8"));
|
|
@@ -78,8 +79,19 @@ program
|
|
|
78
79
|
.option("--skip-install", "Skip package installation")
|
|
79
80
|
.option("--skip-git", "Skip git repository initialization")
|
|
80
81
|
.option("--verbose", "Show detailed output")
|
|
82
|
+
.option("--list", "List all available templates")
|
|
83
|
+
.option("-y, --yes", "Accept all defaults (non-interactive mode)")
|
|
84
|
+
.option("--dry-run", "Preview what will be created without writing files")
|
|
85
|
+
.option("--from <repo>", "Create from a custom GitHub repository (e.g., user/repo)")
|
|
81
86
|
.action(async (projectDirectory, options) => {
|
|
82
|
-
console.log(
|
|
87
|
+
console.log();
|
|
88
|
+
console.log(chalk_1.default.bgCyan(chalk_1.default.black(" create-mn-app ")) +
|
|
89
|
+
chalk_1.default.dim(` v${pkg.version}`));
|
|
90
|
+
console.log();
|
|
91
|
+
if (options.list) {
|
|
92
|
+
(0, templates_1.listTemplates)();
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
83
95
|
try {
|
|
84
96
|
await (0, create_app_1.createApp)(projectDirectory, options);
|
|
85
97
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.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,yCAAoC;AACpC,kDAA0B;AAC1B,sEAA6C;AAC7C,6CAAyC;AACzC,yDAAqD;AACrD,2CAA6B;AAC7B,uCAAyB;AAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAClE,CAAC;AAEF,oBAAoB;AACpB,IAAA,yBAAc,EAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;IACvE,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,2DAA2D;AAC3D,4BAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAElC,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,QAAQ,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;KAClE,MAAM,CACL,uBAAuB,EACvB,uEAAuE,CACxE;KACA,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC;KACzC,MAAM,CAAC,YAAY,EAAE,qBAAqB,CAAC;KAC3C,MAAM,CAAC,YAAY,EAAE,qBAAqB,CAAC;KAC3C,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC;KACzC,MAAM,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;KACrD,MAAM,CAAC,YAAY,EAAE,oCAAoC,CAAC;KAC1D,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE;IAC1C,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/create-app.d.ts
CHANGED
|
@@ -7,6 +7,9 @@ export interface CreateAppOptions {
|
|
|
7
7
|
skipInstall?: boolean;
|
|
8
8
|
skipGit?: boolean;
|
|
9
9
|
verbose?: boolean;
|
|
10
|
+
yes?: boolean;
|
|
11
|
+
dryRun?: boolean;
|
|
12
|
+
from?: string;
|
|
10
13
|
}
|
|
11
14
|
export declare function createApp(projectDirectory: string | undefined, options: CreateAppOptions): Promise<void>;
|
|
12
15
|
//# sourceMappingURL=create-app.d.ts.map
|
package/dist/create-app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-app.d.ts","sourceRoot":"","sources":["../src/create-app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-app.d.ts","sourceRoot":"","sources":["../src/create-app.ts"],"names":[],"mappings":"AAoEA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAyBD,wBAAsB,SAAS,CAC7B,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAqRf"}
|