create-mn-app 0.3.20 → 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 +11 -11
- package/package.json +1 -1
- package/dist/__tests__/error-handler.test.d.ts +0 -2
- package/dist/__tests__/error-handler.test.d.ts.map +0 -1
- package/dist/__tests__/error-handler.test.js +0 -47
- package/dist/__tests__/error-handler.test.js.map +0 -1
- package/dist/__tests__/package-manager.test.d.ts +0 -2
- package/dist/__tests__/package-manager.test.d.ts.map +0 -1
- package/dist/__tests__/package-manager.test.js +0 -39
- package/dist/__tests__/package-manager.test.js.map +0 -1
- package/dist/__tests__/template-manager.test.d.ts +0 -2
- package/dist/__tests__/template-manager.test.d.ts.map +0 -1
- package/dist/__tests__/template-manager.test.js +0 -50
- package/dist/__tests__/template-manager.test.js.map +0 -1
- package/dist/__tests__/templates.test.d.ts +0 -2
- package/dist/__tests__/templates.test.d.ts.map +0 -1
- package/dist/__tests__/templates.test.js +0 -119
- package/dist/__tests__/templates.test.js.map +0 -1
- package/dist/__tests__/validation.test.d.ts +0 -2
- package/dist/__tests__/validation.test.d.ts.map +0 -1
- package/dist/__tests__/validation.test.js +0 -43
- package/dist/__tests__/validation.test.js.map +0 -1
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ Scaffold Midnight Network applications on Preprod.
|
|
|
10
10
|
## Quick Start
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
|
-
npx create-mn-app my-app
|
|
13
|
+
npx create-mn-app@latest my-app
|
|
14
14
|
cd my-app
|
|
15
15
|
npm run setup
|
|
16
16
|
```
|
|
@@ -36,8 +36,8 @@ The `setup` command:
|
|
|
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
|
|
39
|
+
npx create-mn-app@latest my-app # interactive: pick category then template
|
|
40
|
+
npx create-mn-app@latest my-app --list # list all templates grouped by category
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
### Contract
|
|
@@ -47,7 +47,7 @@ npx create-mn-app my-app --list # list all templates grouped by category
|
|
|
47
47
|
| `hello-world` (default) | Basic message storage contract demonstrating state management |
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
|
-
npx create-mn-app my-app
|
|
50
|
+
npx create-mn-app@latest my-app
|
|
51
51
|
cd my-app
|
|
52
52
|
npm run setup # starts proof server, compiles, deploys
|
|
53
53
|
npm run cli # interact with deployed contract
|
|
@@ -63,8 +63,8 @@ npm run cli # interact with deployed contract
|
|
|
63
63
|
| `midnight-kitties` | NFT-based full stack DApp *(coming soon)* |
|
|
64
64
|
|
|
65
65
|
```bash
|
|
66
|
-
npx create-mn-app my-app --template counter
|
|
67
|
-
npx create-mn-app my-app --template bboard
|
|
66
|
+
npx create-mn-app@latest my-app --template counter
|
|
67
|
+
npx create-mn-app@latest my-app --template bboard
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
Requires Compact compiler — the CLI will check and offer to install it.
|
|
@@ -84,7 +84,7 @@ Integration examples and patterns *(coming soon)*.
|
|
|
84
84
|
## CLI Options
|
|
85
85
|
|
|
86
86
|
```bash
|
|
87
|
-
npx create-mn-app [project-name] [options]
|
|
87
|
+
npx create-mn-app@latest [project-name] [options]
|
|
88
88
|
```
|
|
89
89
|
|
|
90
90
|
| Option | Description |
|
|
@@ -106,11 +106,11 @@ npx create-mn-app [project-name] [options]
|
|
|
106
106
|
Use `-y` or set `CI=true` / `GITHUB_ACTIONS=true` to skip all prompts:
|
|
107
107
|
|
|
108
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
|
|
109
|
+
npx create-mn-app@latest my-app -y -t counter # defaults, no prompts
|
|
110
|
+
CI=true npx create-mn-app@latest my-app # auto-detected in CI
|
|
111
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
|
|
112
|
+
npx create-mn-app@latest my-app --dry-run # preview without writing files
|
|
113
|
+
npx create-mn-app@latest my-app --from user/repo # clone any GitHub repo
|
|
114
114
|
```
|
|
115
115
|
|
|
116
116
|
## Project Structure
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-handler.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/error-handler.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,47 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-handler.test.js","sourceRoot":"","sources":["../../src/__tests__/error-handler.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/package-manager.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,39 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"template-manager.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/template-manager.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,50 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"template-manager.test.js","sourceRoot":"","sources":["../../src/__tests__/template-manager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"templates.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/templates.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,119 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"templates.test.js","sourceRoot":"","sources":["../../src/__tests__/templates.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/validation.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,43 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../src/__tests__/validation.test.ts"],"names":[],"mappings":"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"}
|