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 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,6 +1,6 @@
1
1
  {
2
2
  "name": "create-mn-app",
3
- "version": "0.3.20",
3
+ "version": "0.3.21",
4
4
  "description": "Create Midnight Network applications with zero configuration",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=error-handler.test.d.ts.map
@@ -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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=package-manager.test.d.ts.map
@@ -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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=template-manager.test.d.ts.map
@@ -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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=templates.test.d.ts.map
@@ -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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=validation.test.d.ts.map
@@ -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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"}