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.
- package/README.md +45 -0
- package/bin/create-midnight-app.js +47 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +35 -0
- package/dist/cli.js.map +1 -0
- package/dist/create-app.d.ts +10 -0
- package/dist/create-app.d.ts.map +1 -0
- package/dist/create-app.js +169 -0
- package/dist/create-app.js.map +1 -0
- package/dist/installers/package-installer.d.ts +8 -0
- package/dist/installers/package-installer.d.ts.map +1 -0
- package/dist/installers/package-installer.js +62 -0
- package/dist/installers/package-installer.js.map +1 -0
- package/dist/installers/proof-server-setup.d.ts +6 -0
- package/dist/installers/proof-server-setup.d.ts.map +1 -0
- package/dist/installers/proof-server-setup.js +54 -0
- package/dist/installers/proof-server-setup.js.map +1 -0
- package/dist/installers/wallet-generator.d.ts +4 -0
- package/dist/installers/wallet-generator.d.ts.map +1 -0
- package/dist/installers/wallet-generator.js +64 -0
- package/dist/installers/wallet-generator.js.map +1 -0
- package/dist/test.d.ts +2 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +53 -0
- package/dist/test.js.map +1 -0
- package/dist/utils/git-utils.d.ts +6 -0
- package/dist/utils/git-utils.d.ts.map +1 -0
- package/dist/utils/git-utils.js +51 -0
- package/dist/utils/git-utils.js.map +1 -0
- package/dist/utils/template-manager.d.ts +7 -0
- package/dist/utils/template-manager.d.ts.map +1 -0
- package/dist/utils/template-manager.js +61 -0
- package/dist/utils/template-manager.js.map +1 -0
- package/dist/utils/validation.d.ts +6 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +32 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +60 -0
- package/templates/hello-world/README.md.template +100 -0
- package/templates/hello-world/_env.template +0 -0
- package/templates/hello-world/_gitignore +52 -0
- package/templates/hello-world/contracts/hello-world.compact.template +12 -0
- package/templates/hello-world/nodemon.json.template +7 -0
- package/templates/hello-world/package.json.template +49 -0
- package/templates/hello-world/src/cli.ts.template +194 -0
- package/templates/hello-world/src/deploy.ts.template +181 -0
- package/templates/hello-world/src/providers/midnight-providers.ts.template +46 -0
- package/templates/hello-world/src/utils/environment.ts.template +51 -0
- 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 @@
|
|
|
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
|
package/dist/cli.js.map
ADDED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|
package/dist/test.js.map
ADDED
|
@@ -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 @@
|
|
|
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"}
|