create-mn-app 1.0.0

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.
Files changed (50) hide show
  1. package/README.md +45 -0
  2. package/bin/create-midnight-app.js +47 -0
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +35 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/create-app.d.ts +10 -0
  8. package/dist/create-app.d.ts.map +1 -0
  9. package/dist/create-app.js +169 -0
  10. package/dist/create-app.js.map +1 -0
  11. package/dist/installers/package-installer.d.ts +8 -0
  12. package/dist/installers/package-installer.d.ts.map +1 -0
  13. package/dist/installers/package-installer.js +62 -0
  14. package/dist/installers/package-installer.js.map +1 -0
  15. package/dist/installers/proof-server-setup.d.ts +6 -0
  16. package/dist/installers/proof-server-setup.d.ts.map +1 -0
  17. package/dist/installers/proof-server-setup.js +54 -0
  18. package/dist/installers/proof-server-setup.js.map +1 -0
  19. package/dist/installers/wallet-generator.d.ts +4 -0
  20. package/dist/installers/wallet-generator.d.ts.map +1 -0
  21. package/dist/installers/wallet-generator.js +64 -0
  22. package/dist/installers/wallet-generator.js.map +1 -0
  23. package/dist/test.d.ts +2 -0
  24. package/dist/test.d.ts.map +1 -0
  25. package/dist/test.js +53 -0
  26. package/dist/test.js.map +1 -0
  27. package/dist/utils/git-utils.d.ts +6 -0
  28. package/dist/utils/git-utils.d.ts.map +1 -0
  29. package/dist/utils/git-utils.js +51 -0
  30. package/dist/utils/git-utils.js.map +1 -0
  31. package/dist/utils/template-manager.d.ts +7 -0
  32. package/dist/utils/template-manager.d.ts.map +1 -0
  33. package/dist/utils/template-manager.js +61 -0
  34. package/dist/utils/template-manager.js.map +1 -0
  35. package/dist/utils/validation.d.ts +6 -0
  36. package/dist/utils/validation.d.ts.map +1 -0
  37. package/dist/utils/validation.js +32 -0
  38. package/dist/utils/validation.js.map +1 -0
  39. package/package.json +60 -0
  40. package/templates/hello-world/README.md.template +100 -0
  41. package/templates/hello-world/_env.template +0 -0
  42. package/templates/hello-world/_gitignore +52 -0
  43. package/templates/hello-world/contracts/hello-world.compact.template +12 -0
  44. package/templates/hello-world/nodemon.json.template +7 -0
  45. package/templates/hello-world/package.json.template +49 -0
  46. package/templates/hello-world/src/cli.ts.template +194 -0
  47. package/templates/hello-world/src/deploy.ts.template +181 -0
  48. package/templates/hello-world/src/providers/midnight-providers.ts.template +46 -0
  49. package/templates/hello-world/src/utils/environment.ts.template +51 -0
  50. package/templates/hello-world/tsconfig.json.template +20 -0
package/README.md ADDED
@@ -0,0 +1,45 @@
1
+ # create-midnight-app
2
+
3
+ Create Midnight Network applications with zero configuration.
4
+
5
+ ```bash
6
+ npx create-midnight-app my-app
7
+ cd my-app
8
+ npm run dev
9
+ ```
10
+
11
+ ## Features
12
+
13
+ - โšก **Zero configuration** - Works out of the box
14
+ - ๐Ÿ”ง **Modern tooling** - TypeScript, hot reloading, auto-compilation
15
+ - ๐Ÿ›ก๏ธ **Best practices** - Secure wallet generation, proper project structure
16
+ - ๐Ÿš€ **Fast setup** - From zero to working app in 60 seconds
17
+ - ๐ŸŽฏ **Developer friendly** - Clear error messages, helpful guides
18
+
19
+ ## Quick Start
20
+
21
+ ```bash
22
+ # Create new app
23
+ npx create-midnight-app my-midnight-app
24
+
25
+ # Enter directory
26
+ cd my-midnight-app
27
+
28
+ # Start development
29
+ npm run dev
30
+ ```
31
+
32
+ ## Templates
33
+
34
+ - **hello-world** (default) - Simple message storage contract
35
+ - More templates coming soon!
36
+
37
+ ## Requirements
38
+
39
+ - Node.js 18+
40
+ - Docker (for proof server)
41
+
42
+ ## Learn More
43
+
44
+ - [Midnight Documentation](https://docs.midnight.network)
45
+ - [Getting Started Guide](https://docs.midnight.network/getting-started)
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { spawn } = require("cross-spawn");
4
+ const path = require("path");
5
+ const semver = require("semver");
6
+
7
+ // Check Node.js version
8
+ const currentNodeVersion = process.versions.node;
9
+
10
+ if (!semver.satisfies(currentNodeVersion, ">=18.0.0")) {
11
+ console.error(
12
+ "\x1b[31m" + // Red
13
+ "You are running Node " +
14
+ currentNodeVersion +
15
+ ".\n" +
16
+ "Create Midnight App requires Node 18 or higher.\n" +
17
+ "Please update your version of Node." +
18
+ "\x1b[0m" // Reset
19
+ );
20
+ process.exit(1);
21
+ }
22
+
23
+ // Run the main CLI
24
+ const result = spawn.sync(
25
+ process.execPath,
26
+ [path.resolve(__dirname, "../dist/cli.js"), ...process.argv.slice(2)],
27
+ { stdio: "inherit" }
28
+ );
29
+
30
+ if (result.signal) {
31
+ if (result.signal === "SIGKILL") {
32
+ console.log(
33
+ "The build failed because the process exited too early. " +
34
+ "This probably means the system ran out of memory or someone called " +
35
+ "`kill -9` on the process."
36
+ );
37
+ } else if (result.signal === "SIGTERM") {
38
+ console.log(
39
+ "The build failed because the process exited too early. " +
40
+ "Someone might have called `kill` or `killall`, or the system could " +
41
+ "be shutting down."
42
+ );
43
+ }
44
+ process.exit(1);
45
+ }
46
+
47
+ process.exit(result.status || 0);
package/dist/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,35 @@
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 commander_1 = require("commander");
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const create_app_1 = require("./create-app");
9
+ const program = new commander_1.Command();
10
+ program
11
+ .name("create-midnight-app")
12
+ .description("Create a new Midnight Network application")
13
+ .version("1.0.0")
14
+ .argument("[project-directory]", "Directory name for your project")
15
+ .option("-t, --template <name>", "Template to use", "hello-world")
16
+ .option("--use-npm", "Use npm instead of yarn")
17
+ .option("--use-pnpm", "Use pnpm instead of yarn")
18
+ .option("--skip-install", "Skip package installation")
19
+ .option("--skip-git", "Skip git repository initialization")
20
+ .option("--verbose", "Show detailed output")
21
+ .action(async (projectDirectory, options) => {
22
+ console.log(chalk_1.default.blue.bold("๐ŸŒ™ Create Midnight App\n"));
23
+ try {
24
+ await (0, create_app_1.createApp)(projectDirectory, options);
25
+ }
26
+ catch (error) {
27
+ console.error(chalk_1.default.red("โœ– Error creating app:"), error instanceof Error ? error.message : error);
28
+ if (options.verbose && error instanceof Error) {
29
+ console.error(chalk_1.default.gray(error.stack));
30
+ }
31
+ process.exit(1);
32
+ }
33
+ });
34
+ program.parse();
35
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,6CAAyC;AAEzC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,qBAAqB,CAAC;KAC3B,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;KAClE,MAAM,CAAC,uBAAuB,EAAE,iBAAiB,EAAE,aAAa,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,yBAAyB,CAAC;KAC9C,MAAM,CAAC,YAAY,EAAE,0BAA0B,CAAC;KAChD,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,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,MAAM,IAAA,sBAAS,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAClC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAC;QACF,IAAI,OAAO,CAAC,OAAO,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface CreateAppOptions {
2
+ template: string;
3
+ useNpm?: boolean;
4
+ usePnpm?: boolean;
5
+ skipInstall?: boolean;
6
+ skipGit?: boolean;
7
+ verbose?: boolean;
8
+ }
9
+ export declare function createApp(projectDirectory: string | undefined, options: CreateAppOptions): Promise<void>;
10
+ //# sourceMappingURL=create-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-app.d.ts","sourceRoot":"","sources":["../src/create-app.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,SAAS,CAC7B,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAiFf"}
@@ -0,0 +1,169 @@
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
+ exports.createApp = createApp;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const ora_1 = __importDefault(require("ora"));
11
+ const prompts_1 = __importDefault(require("prompts"));
12
+ const validation_1 = require("./utils/validation");
13
+ const package_installer_1 = require("./installers/package-installer");
14
+ const template_manager_1 = require("./utils/template-manager");
15
+ const wallet_generator_1 = require("./installers/wallet-generator");
16
+ const proof_server_setup_1 = require("./installers/proof-server-setup");
17
+ const git_utils_1 = require("./utils/git-utils");
18
+ async function createApp(projectDirectory, options) {
19
+ let projectName = projectDirectory;
20
+ // Interactive mode if no project name provided
21
+ if (!projectName) {
22
+ const response = await (0, prompts_1.default)({
23
+ type: "text",
24
+ name: "projectName",
25
+ message: "What is your project named?",
26
+ initial: "my-midnight-app",
27
+ validate: (value) => {
28
+ const validation = (0, validation_1.validateProjectName)(value);
29
+ return validation.valid || validation.problems[0];
30
+ },
31
+ });
32
+ if (!response.projectName) {
33
+ console.log(chalk_1.default.yellow("\nโœ– Operation cancelled."));
34
+ process.exit(0);
35
+ }
36
+ projectName = response.projectName;
37
+ }
38
+ const validation = (0, validation_1.validateProjectName)(projectName);
39
+ if (!validation.valid) {
40
+ console.error(chalk_1.default.red(`โœ– Invalid project name: ${validation.problems[0]}`));
41
+ process.exit(1);
42
+ }
43
+ const projectPath = path_1.default.resolve(projectName);
44
+ // Check if directory exists
45
+ if (fs_extra_1.default.existsSync(projectPath)) {
46
+ const { overwrite } = await (0, prompts_1.default)({
47
+ type: "confirm",
48
+ name: "overwrite",
49
+ message: `Directory ${chalk_1.default.cyan(projectName)} already exists. Overwrite?`,
50
+ initial: false,
51
+ });
52
+ if (!overwrite) {
53
+ console.log(chalk_1.default.yellow("โœ– Operation cancelled."));
54
+ process.exit(0);
55
+ }
56
+ await fs_extra_1.default.remove(projectPath);
57
+ }
58
+ console.log(`Creating a new Midnight app in ${chalk_1.default.green(projectPath)}.\n`);
59
+ // Main creation process
60
+ await createProject(projectPath, projectName, options);
61
+ // Success message and instructions
62
+ console.log();
63
+ console.log(chalk_1.default.green.bold("๐ŸŽ‰ Success! Your Midnight app is ready."));
64
+ console.log();
65
+ console.log("Inside that directory, you can run several commands:");
66
+ console.log();
67
+ console.log(chalk_1.default.cyan(" npm run dev"));
68
+ console.log(" Starts development with hot reloading and auto-deployment.");
69
+ console.log();
70
+ console.log(chalk_1.default.cyan(" npm run setup"));
71
+ console.log(" Compiles, builds, and deploys your contract.");
72
+ console.log();
73
+ console.log(chalk_1.default.cyan(" npm run cli"));
74
+ console.log(" Opens an interactive CLI to test your contract.");
75
+ console.log();
76
+ console.log("We suggest that you begin by typing:");
77
+ console.log();
78
+ console.log(chalk_1.default.cyan(` cd ${projectName}`));
79
+ console.log(chalk_1.default.cyan(" npm run dev"));
80
+ console.log();
81
+ console.log(chalk_1.default.gray("Need help? Visit https://docs.midnight.network"));
82
+ console.log();
83
+ console.log("Happy coding! ๐Ÿš€");
84
+ }
85
+ async function createProject(projectPath, projectName, options) {
86
+ const packageManager = options.usePnpm
87
+ ? "pnpm"
88
+ : options.useNpm
89
+ ? "npm"
90
+ : "yarn";
91
+ // Create project directory
92
+ await fs_extra_1.default.ensureDir(projectPath);
93
+ process.chdir(projectPath);
94
+ // Initialize template
95
+ const templateSpinner = (0, ora_1.default)("Creating project structure...").start();
96
+ try {
97
+ const templateManager = new template_manager_1.TemplateManager(options.template);
98
+ await templateManager.scaffold(projectPath, projectName);
99
+ templateSpinner.succeed("Project structure created");
100
+ }
101
+ catch (error) {
102
+ templateSpinner.fail("Failed to create project structure");
103
+ throw error;
104
+ }
105
+ // Generate wallet
106
+ const walletSpinner = (0, ora_1.default)("Generating secure wallet...").start();
107
+ try {
108
+ const walletGenerator = new wallet_generator_1.WalletGenerator();
109
+ const walletSeed = await walletGenerator.generate(projectPath);
110
+ walletSpinner.succeed(`Wallet generated (seed: ${walletSeed.substring(0, 8)}...)`);
111
+ }
112
+ catch (error) {
113
+ walletSpinner.fail("Failed to generate wallet");
114
+ throw error;
115
+ }
116
+ // Install dependencies
117
+ if (!options.skipInstall) {
118
+ const installSpinner = (0, ora_1.default)(`Installing dependencies with ${packageManager}...`).start();
119
+ try {
120
+ const installer = new package_installer_1.PackageInstaller(packageManager);
121
+ await installer.install(projectPath);
122
+ installSpinner.succeed("Dependencies installed");
123
+ }
124
+ catch (error) {
125
+ installSpinner.fail("Failed to install dependencies");
126
+ console.log(chalk_1.default.yellow("\nโš  You can install dependencies manually by running:"));
127
+ console.log(chalk_1.default.cyan(` ${packageManager} install`));
128
+ }
129
+ }
130
+ // Initialize git
131
+ if (!options.skipGit) {
132
+ const gitSpinner = (0, ora_1.default)("Initializing git repository...").start();
133
+ try {
134
+ await git_utils_1.GitUtils.init(projectPath);
135
+ gitSpinner.succeed("Git repository initialized");
136
+ }
137
+ catch (error) {
138
+ gitSpinner.warn("Git repository initialization skipped");
139
+ }
140
+ }
141
+ // Check Docker for proof server
142
+ const proofSpinner = (0, ora_1.default)("Checking Docker for proof server...").start();
143
+ try {
144
+ const proofSetup = new proof_server_setup_1.ProofServerSetup();
145
+ const isAvailable = await proofSetup.verify();
146
+ if (isAvailable) {
147
+ proofSpinner.succeed("Docker is ready for proof server");
148
+ }
149
+ else {
150
+ proofSpinner.warn("Docker not available - install it to use proof server");
151
+ }
152
+ }
153
+ catch (error) {
154
+ proofSpinner.warn("Docker check failed - install Docker to use proof server");
155
+ }
156
+ // Compile initial contract
157
+ if (!options.skipInstall) {
158
+ const compileSpinner = (0, ora_1.default)("Compiling initial contract...").start();
159
+ try {
160
+ const installer = new package_installer_1.PackageInstaller(packageManager);
161
+ await installer.runScript(projectPath, "compile");
162
+ compileSpinner.succeed("Contract compiled successfully");
163
+ }
164
+ catch (error) {
165
+ compileSpinner.warn('Contract compilation skipped - run "npm run compile" manually');
166
+ }
167
+ }
168
+ }
169
+ //# sourceMappingURL=create-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-app.js","sourceRoot":"","sources":["../src/create-app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare class PackageInstaller {
2
+ private packageManager;
3
+ constructor(packageManager: "npm" | "yarn" | "pnpm");
4
+ install(projectPath: string): Promise<void>;
5
+ runScript(projectPath: string, script: string): Promise<void>;
6
+ static detectPackageManager(): "npm" | "yarn" | "pnpm";
7
+ }
8
+ //# sourceMappingURL=package-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-installer.d.ts","sourceRoot":"","sources":["../../src/installers/package-installer.ts"],"names":[],"mappings":"AAGA,qBAAa,gBAAgB;IACf,OAAO,CAAC,cAAc;gBAAd,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM;IAErD,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC3C,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBnE,MAAM,CAAC,oBAAoB,IAAI,KAAK,GAAG,MAAM,GAAG,MAAM;CASvD"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PackageInstaller = void 0;
4
+ const cross_spawn_1 = require("cross-spawn");
5
+ class PackageInstaller {
6
+ constructor(packageManager) {
7
+ this.packageManager = packageManager;
8
+ }
9
+ async install(projectPath) {
10
+ return new Promise((resolve, reject) => {
11
+ const child = (0, cross_spawn_1.spawn)(this.packageManager, ["install"], {
12
+ cwd: projectPath,
13
+ stdio: "pipe",
14
+ });
15
+ let output = "";
16
+ child.stdout?.on("data", (data) => {
17
+ output += data.toString();
18
+ });
19
+ child.stderr?.on("data", (data) => {
20
+ output += data.toString();
21
+ });
22
+ child.on("close", (code) => {
23
+ if (code === 0) {
24
+ resolve();
25
+ }
26
+ else {
27
+ reject(new Error(`Package installation failed with code ${code}:\n${output}`));
28
+ }
29
+ });
30
+ child.on("error", reject);
31
+ });
32
+ }
33
+ async runScript(projectPath, script) {
34
+ return new Promise((resolve, reject) => {
35
+ const args = this.packageManager === "npm" ? ["run", script] : [script];
36
+ const child = (0, cross_spawn_1.spawn)(this.packageManager, args, {
37
+ cwd: projectPath,
38
+ stdio: "pipe",
39
+ });
40
+ child.on("close", (code) => {
41
+ if (code === 0) {
42
+ resolve();
43
+ }
44
+ else {
45
+ reject(new Error(`Script "${script}" failed with code ${code}`));
46
+ }
47
+ });
48
+ child.on("error", reject);
49
+ });
50
+ }
51
+ static detectPackageManager() {
52
+ if (process.env.npm_config_user_agent?.includes("yarn")) {
53
+ return "yarn";
54
+ }
55
+ if (process.env.npm_config_user_agent?.includes("pnpm")) {
56
+ return "pnpm";
57
+ }
58
+ return "npm";
59
+ }
60
+ }
61
+ exports.PackageInstaller = PackageInstaller;
62
+ //# sourceMappingURL=package-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-installer.js","sourceRoot":"","sources":["../../src/installers/package-installer.ts"],"names":[],"mappings":";;;AAAA,6CAAoC;AAGpC,MAAa,gBAAgB;IAC3B,YAAoB,cAAuC;QAAvC,mBAAc,GAAd,cAAc,CAAyB;IAAG,CAAC;IAE/D,KAAK,CAAC,OAAO,CAAC,WAAmB;QAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,IAAA,mBAAK,EAAC,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,EAAE;gBACpD,GAAG,EAAE,WAAW;gBAChB,KAAK,EAAE,MAAM;aACd,CAAC,CAAC;YAEH,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,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,CACJ,IAAI,KAAK,CACP,yCAAyC,IAAI,MAAM,MAAM,EAAE,CAC5D,CACF,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,WAAmB,EAAE,MAAc;QACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAExE,MAAM,KAAK,GAAG,IAAA,mBAAK,EAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE;gBAC7C,GAAG,EAAE,WAAW;gBAChB,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,WAAW,MAAM,sBAAsB,IAAI,EAAE,CAAC,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,oBAAoB;QACzB,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAjED,4CAiEC"}
@@ -0,0 +1,6 @@
1
+ export declare class ProofServerSetup {
2
+ verify(): Promise<boolean>;
3
+ private isDockerAvailable;
4
+ private isProofServerImageAvailable;
5
+ }
6
+ //# sourceMappingURL=proof-server-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof-server-setup.d.ts","sourceRoot":"","sources":["../../src/installers/proof-server-setup.ts"],"names":[],"mappings":"AAEA,qBAAa,gBAAgB;IACrB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;YAelB,iBAAiB;YAgBjB,2BAA2B;CA0B1C"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProofServerSetup = void 0;
4
+ const cross_spawn_1 = require("cross-spawn");
5
+ class ProofServerSetup {
6
+ async verify() {
7
+ try {
8
+ // Check if Docker is available
9
+ const dockerAvailable = await this.isDockerAvailable();
10
+ if (!dockerAvailable) {
11
+ return false;
12
+ }
13
+ // Check if proof server image is available
14
+ return await this.isProofServerImageAvailable();
15
+ }
16
+ catch {
17
+ return false;
18
+ }
19
+ }
20
+ async isDockerAvailable() {
21
+ return new Promise((resolve) => {
22
+ const child = (0, cross_spawn_1.spawn)("docker", ["--version"], {
23
+ stdio: "pipe",
24
+ });
25
+ child.on("close", (code) => {
26
+ resolve(code === 0);
27
+ });
28
+ child.on("error", () => {
29
+ resolve(false);
30
+ });
31
+ });
32
+ }
33
+ async isProofServerImageAvailable() {
34
+ return new Promise((resolve) => {
35
+ const child = (0, cross_spawn_1.spawn)("docker", ["images", "midnightnetwork/proof-server"], {
36
+ stdio: "pipe",
37
+ });
38
+ let output = "";
39
+ child.stdout?.on("data", (data) => {
40
+ output += data.toString();
41
+ });
42
+ child.on("close", (code) => {
43
+ // Check if image exists in output
44
+ const hasImage = output.includes("midnightnetwork/proof-server");
45
+ resolve(code === 0 && hasImage);
46
+ });
47
+ child.on("error", () => {
48
+ resolve(false);
49
+ });
50
+ });
51
+ }
52
+ }
53
+ exports.ProofServerSetup = ProofServerSetup;
54
+ //# sourceMappingURL=proof-server-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof-server-setup.js","sourceRoot":"","sources":["../../src/installers/proof-server-setup.ts"],"names":[],"mappings":";;;AAAA,6CAAoC;AAEpC,MAAa,gBAAgB;IAC3B,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,+BAA+B;YAC/B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,2CAA2C;YAC3C,OAAO,MAAM,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,IAAA,mBAAK,EAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;gBAC3C,KAAK,EAAE,MAAM;aACd,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACrB,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,2BAA2B;QACvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,IAAA,mBAAK,EACjB,QAAQ,EACR,CAAC,QAAQ,EAAE,8BAA8B,CAAC,EAC1C;gBACE,KAAK,EAAE,MAAM;aACd,CACF,CAAC;YAEF,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,kCAAkC;gBAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;gBACjE,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACrB,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA1DD,4CA0DC"}
@@ -0,0 +1,4 @@
1
+ export declare class WalletGenerator {
2
+ generate(projectPath: string): Promise<string>;
3
+ }
4
+ //# sourceMappingURL=wallet-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-generator.d.ts","sourceRoot":"","sources":["../../src/installers/wallet-generator.ts"],"names":[],"mappings":"AAIA,qBAAa,eAAe;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAwDrD"}
@@ -0,0 +1,64 @@
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
+ exports.WalletGenerator = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const crypto_1 = __importDefault(require("crypto"));
10
+ class WalletGenerator {
11
+ async generate(projectPath) {
12
+ // Generate 32 random bytes and convert to hex string
13
+ const bytes = crypto_1.default.randomBytes(32);
14
+ const walletSeed = bytes.toString("hex");
15
+ // Create .env file
16
+ const envPath = path_1.default.join(projectPath, ".env");
17
+ const envContent = `# Midnight Network Configuration
18
+ # Generated on ${new Date().toISOString()}
19
+
20
+ # Network Configuration
21
+ MIDNIGHT_NETWORK=testnet
22
+ PROOF_SERVER_URL=http://127.0.0.1:6300
23
+
24
+ # Wallet Configuration (KEEP PRIVATE!)
25
+ WALLET_SEED=${walletSeed}
26
+
27
+ # Contract Configuration
28
+ CONTRACT_NAME=hello-world
29
+
30
+ # Development Settings
31
+ DEBUG_LEVEL=info
32
+ AUTO_START_PROOF_SERVER=true
33
+
34
+ # Security Warning:
35
+ # Keep your wallet seed private and secure!
36
+ # Never commit this file to version control.
37
+ # Add .env to your .gitignore file.
38
+ `;
39
+ await fs_extra_1.default.writeFile(envPath, envContent);
40
+ // Also create .env.example for reference
41
+ const envExamplePath = path_1.default.join(projectPath, ".env.example");
42
+ const envExampleContent = `# Midnight Network Configuration
43
+ # Copy this file to .env and fill in your values
44
+
45
+ # Network Configuration
46
+ MIDNIGHT_NETWORK=testnet
47
+ PROOF_SERVER_URL=http://127.0.0.1:6300
48
+
49
+ # Wallet Configuration (KEEP PRIVATE!)
50
+ WALLET_SEED=your_64_character_wallet_seed_here
51
+
52
+ # Contract Configuration
53
+ CONTRACT_NAME=hello-world
54
+
55
+ # Development Settings
56
+ DEBUG_LEVEL=info
57
+ AUTO_START_PROOF_SERVER=true
58
+ `;
59
+ await fs_extra_1.default.writeFile(envExamplePath, envExampleContent);
60
+ return walletSeed;
61
+ }
62
+ }
63
+ exports.WalletGenerator = WalletGenerator;
64
+ //# sourceMappingURL=wallet-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-generator.js","sourceRoot":"","sources":["../../src/installers/wallet-generator.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,wDAA0B;AAC1B,oDAA4B;AAE5B,MAAa,eAAe;IAC1B,KAAK,CAAC,QAAQ,CAAC,WAAmB;QAChC,qDAAqD;QACrD,MAAM,KAAK,GAAG,gBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEzC,mBAAmB;QACnB,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG;iBACN,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;;;;;cAO3B,UAAU;;;;;;;;;;;;;CAavB,CAAC;QAEE,MAAM,kBAAE,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAExC,yCAAyC;QACzC,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC9D,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;CAgB7B,CAAC;QAEE,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;QAEtD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AAzDD,0CAyDC"}
package/dist/test.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":""}
package/dist/test.js ADDED
@@ -0,0 +1,53 @@
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 fs_extra_1 = __importDefault(require("fs-extra"));
7
+ const path_1 = __importDefault(require("path"));
8
+ const create_app_1 = require("./create-app");
9
+ async function testCreateApp() {
10
+ console.log("๐Ÿงช Testing create-midnight-app...\n");
11
+ const testDir = path_1.default.join(process.cwd(), "test-app");
12
+ // Clean up any existing test
13
+ if (fs_extra_1.default.existsSync(testDir)) {
14
+ await fs_extra_1.default.remove(testDir);
15
+ }
16
+ try {
17
+ await (0, create_app_1.createApp)("test-app", {
18
+ template: "hello-world",
19
+ useNpm: true,
20
+ skipInstall: false,
21
+ skipGit: true,
22
+ verbose: true,
23
+ });
24
+ console.log("\nโœ… Test completed successfully!");
25
+ // Verify structure
26
+ const requiredFiles = [
27
+ "package.json",
28
+ "tsconfig.json",
29
+ ".env",
30
+ ".env.example",
31
+ ".gitignore",
32
+ "README.md",
33
+ "contracts/hello-world.compact",
34
+ "src/deploy.ts",
35
+ "src/cli.ts",
36
+ "src/providers/midnight-providers.ts",
37
+ "src/utils/environment.ts",
38
+ ];
39
+ for (const file of requiredFiles) {
40
+ const filePath = path_1.default.join(testDir, file);
41
+ if (!fs_extra_1.default.existsSync(filePath)) {
42
+ throw new Error(`Missing file: ${file}`);
43
+ }
44
+ }
45
+ console.log("โœ… All required files present");
46
+ }
47
+ catch (error) {
48
+ console.error("โŒ Test failed:", error);
49
+ process.exit(1);
50
+ }
51
+ }
52
+ testCreateApp();
53
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;;;;AAAA,wDAA0B;AAC1B,gDAAwB;AACxB,6CAAyC;AAEzC,KAAK,UAAU,aAAa;IAC1B,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAEnD,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;IAErD,6BAA6B;IAC7B,IAAI,kBAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,kBAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAA,sBAAS,EAAC,UAAU,EAAE;YAC1B,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,KAAK;YAClB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAEhD,mBAAmB;QACnB,MAAM,aAAa,GAAG;YACpB,cAAc;YACd,eAAe;YACf,MAAM;YACN,cAAc;YACd,YAAY;YACZ,WAAW;YACX,+BAA+B;YAC/B,eAAe;YACf,YAAY;YACZ,qCAAqC;YACrC,0BAA0B;SAC3B,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,kBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,aAAa,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare class GitUtils {
2
+ static init(projectPath: string): Promise<void>;
3
+ private static isGitAvailable;
4
+ private static runGitCommand;
5
+ }
6
+ //# sourceMappingURL=git-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-utils.d.ts","sourceRoot":"","sources":["../../src/utils/git-utils.ts"],"names":[],"mappings":"AAIA,qBAAa,QAAQ;WACN,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;mBAqBhC,cAAc;mBASd,aAAa;CAqBnC"}