@mudah-cli/create-mudah 0.1.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/dist/cli.d.ts +11 -0
- package/dist/cli.js +94 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/templates.d.ts +6 -0
- package/dist/templates.js +200 -0
- package/dist/templates.js.map +1 -0
- package/package.json +31 -0
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
export interface ScaffoldResult {
|
|
3
|
+
dir: string;
|
|
4
|
+
name: string;
|
|
5
|
+
files: string[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Scaffold a fresh Mudah app into `targetDir` (created if missing).
|
|
9
|
+
* The app name is derived from the directory's basename.
|
|
10
|
+
*/
|
|
11
|
+
export declare function scaffold(targetDir: string): Promise<ScaffoldResult>;
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { chmod, mkdir, readdir, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { basename, isAbsolute, join, resolve } from 'node:path';
|
|
5
|
+
import { pathToFileURL } from 'node:url';
|
|
6
|
+
import { detectCapabilities } from '@mudah-cli/terminal';
|
|
7
|
+
import { Output, resolveTheme } from '@mudah-cli/ui';
|
|
8
|
+
import { appTemplates, slugify } from './templates.js';
|
|
9
|
+
/**
|
|
10
|
+
* Scaffold a fresh Mudah app into `targetDir` (created if missing).
|
|
11
|
+
* The app name is derived from the directory's basename.
|
|
12
|
+
*/
|
|
13
|
+
export async function scaffold(targetDir) {
|
|
14
|
+
const dir = resolve(targetDir);
|
|
15
|
+
const name = slugify(basename(dir));
|
|
16
|
+
const files = [];
|
|
17
|
+
await mkdir(dir, { recursive: true });
|
|
18
|
+
for (const [rel, content] of appTemplates(name)) {
|
|
19
|
+
const path = join(dir, rel);
|
|
20
|
+
await mkdir(join(path, '..'), { recursive: true });
|
|
21
|
+
await writeFile(path, content, 'utf8');
|
|
22
|
+
files.push(rel);
|
|
23
|
+
}
|
|
24
|
+
// Bin stubs must be executable for direct `./bin/<name>` invocation.
|
|
25
|
+
await chmod(join(dir, 'bin', `${name}.js`), 0o755).catch(() => { });
|
|
26
|
+
return { dir, name, files };
|
|
27
|
+
}
|
|
28
|
+
const USAGE = `create-mudah — scaffold a new Mudah CLI app
|
|
29
|
+
|
|
30
|
+
Usage:
|
|
31
|
+
npm create @mudah-cli/mudah <directory>
|
|
32
|
+
npx create-mudah <directory> [options]
|
|
33
|
+
|
|
34
|
+
Options:
|
|
35
|
+
-h, --help Show this help
|
|
36
|
+
--force Scaffold into a non-empty directory (files are not
|
|
37
|
+
overwritten unless missing)
|
|
38
|
+
|
|
39
|
+
The app name is the directory's basename (kebab-cased). After scaffolding:
|
|
40
|
+
cd <directory>
|
|
41
|
+
npm install
|
|
42
|
+
npm run start
|
|
43
|
+
`;
|
|
44
|
+
async function main() {
|
|
45
|
+
const args = process.argv.slice(2);
|
|
46
|
+
const caps = detectCapabilities();
|
|
47
|
+
const output = new Output({
|
|
48
|
+
theme: resolveTheme('auto'),
|
|
49
|
+
colorLevel: caps.colorLevel,
|
|
50
|
+
unicode: caps.unicode,
|
|
51
|
+
});
|
|
52
|
+
if (args.includes('-h') || args.includes('--help')) {
|
|
53
|
+
output.raw(USAGE);
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
const force = args.includes('--force');
|
|
57
|
+
const target = args.find((a) => !a.startsWith('-'));
|
|
58
|
+
if (!target) {
|
|
59
|
+
output.error('Missing directory argument.');
|
|
60
|
+
output.hint('Run "npm create @mudah-cli/mudah my-app" to scaffold "my-app".');
|
|
61
|
+
return 2;
|
|
62
|
+
}
|
|
63
|
+
const dir = isAbsolute(target) ? target : resolve(process.cwd(), target);
|
|
64
|
+
if (existsSync(dir)) {
|
|
65
|
+
const entries = await readdir(dir);
|
|
66
|
+
if (entries.length > 0 && !force) {
|
|
67
|
+
output.error(`Directory "${target}" is not empty.`);
|
|
68
|
+
output.hint('Use --force to scaffold into it anyway.');
|
|
69
|
+
return 1;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
output.info(`Scaffolding Mudah app into ${dir}`);
|
|
73
|
+
try {
|
|
74
|
+
const result = await scaffold(dir);
|
|
75
|
+
output.success(`Created ${result.files.length} files for "${result.name}".`);
|
|
76
|
+
output.raw('');
|
|
77
|
+
output.section('Next steps');
|
|
78
|
+
output.bullet(`cd ${isAbsolute(dir) ? dir : basename(dir)}`);
|
|
79
|
+
output.bullet('npm install');
|
|
80
|
+
output.bullet('npm run start');
|
|
81
|
+
return 0;
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
output.error(error instanceof Error ? error.message : String(error));
|
|
85
|
+
return 1;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Run the CLI only when executed directly (not when imported as a module).
|
|
89
|
+
if (process.argv[1] !== undefined && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
90
|
+
main().then((code) => {
|
|
91
|
+
process.exitCode = code;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
//# 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":";AACA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAQvD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,SAAiB;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5B,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,qEAAqE;IACrE,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACnE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;CAeb,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAC9E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IACzE,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,cAAc,MAAM,iBAAiB,CAAC,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YACvD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,KAAK,CAAC,MAAM,eAAe,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;QAC7E,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/B,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7F,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACnB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAuB,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
export function slugify(name) {
|
|
2
|
+
return name
|
|
3
|
+
.trim()
|
|
4
|
+
.toLowerCase()
|
|
5
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
6
|
+
.replace(/^-+|-+$/g, '') || 'mudah-app';
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* All files of a fresh Mudah app, as `[relativePath, content]` pairs.
|
|
10
|
+
* The app name is kebab-case (e.g. `hello-cli`).
|
|
11
|
+
*/
|
|
12
|
+
export function appTemplates(name) {
|
|
13
|
+
const pascal = name
|
|
14
|
+
.split('-')
|
|
15
|
+
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
16
|
+
.join('');
|
|
17
|
+
return [
|
|
18
|
+
[
|
|
19
|
+
'package.json',
|
|
20
|
+
JSON.stringify({
|
|
21
|
+
name,
|
|
22
|
+
version: '0.1.0',
|
|
23
|
+
description: `${name} — built with Mudah`,
|
|
24
|
+
type: 'module',
|
|
25
|
+
private: true,
|
|
26
|
+
bin: { [name]: `./bin/${name}.js` },
|
|
27
|
+
engines: { node: '>=26' },
|
|
28
|
+
scripts: {
|
|
29
|
+
start: `node bin/${name}.js`,
|
|
30
|
+
dev: `node bin/${name}.js dev welcome`,
|
|
31
|
+
doctor: `node bin/${name}.js doctor`,
|
|
32
|
+
test: 'vitest run',
|
|
33
|
+
typecheck: 'tsc --noEmit',
|
|
34
|
+
},
|
|
35
|
+
dependencies: { '@mudah-cli/mudah': '^0.1.0' },
|
|
36
|
+
devDependencies: {
|
|
37
|
+
'@types/node': '^26.0.0',
|
|
38
|
+
typescript: '^7.0.0',
|
|
39
|
+
vitest: '^4.0.0',
|
|
40
|
+
},
|
|
41
|
+
}, null, 2) + '\n',
|
|
42
|
+
],
|
|
43
|
+
[
|
|
44
|
+
'mudah.json',
|
|
45
|
+
JSON.stringify({
|
|
46
|
+
name,
|
|
47
|
+
version: '0.1.0',
|
|
48
|
+
bin: name,
|
|
49
|
+
description: `${name} — built with Mudah`,
|
|
50
|
+
ui: { theme: 'auto' },
|
|
51
|
+
}, null, 2) + '\n',
|
|
52
|
+
],
|
|
53
|
+
[
|
|
54
|
+
`bin/${name}.js`,
|
|
55
|
+
`#!/usr/bin/env node
|
|
56
|
+
import { run } from '@mudah-cli/mudah';
|
|
57
|
+
|
|
58
|
+
process.exitCode = await run();
|
|
59
|
+
`,
|
|
60
|
+
],
|
|
61
|
+
[
|
|
62
|
+
'tsconfig.json',
|
|
63
|
+
JSON.stringify({
|
|
64
|
+
compilerOptions: {
|
|
65
|
+
target: 'es2024',
|
|
66
|
+
lib: ['es2024'],
|
|
67
|
+
types: ['node'],
|
|
68
|
+
module: 'nodenext',
|
|
69
|
+
moduleResolution: 'nodenext',
|
|
70
|
+
strict: true,
|
|
71
|
+
noUncheckedIndexedAccess: true,
|
|
72
|
+
verbatimModuleSyntax: true,
|
|
73
|
+
isolatedModules: true,
|
|
74
|
+
skipLibCheck: true,
|
|
75
|
+
noEmit: true,
|
|
76
|
+
},
|
|
77
|
+
include: ['src', 'config', 'test'],
|
|
78
|
+
}, null, 2) + '\n',
|
|
79
|
+
],
|
|
80
|
+
[
|
|
81
|
+
'src/commands/welcome.command.ts',
|
|
82
|
+
`import { Command } from '@mudah-cli/mudah';
|
|
83
|
+
|
|
84
|
+
export default class WelcomeCommand extends Command {
|
|
85
|
+
signature = 'welcome {name?}';
|
|
86
|
+
description = 'Say hello from ${name}';
|
|
87
|
+
|
|
88
|
+
async handle() {
|
|
89
|
+
this.output.section('Mudah');
|
|
90
|
+
this.output.success(\`Hello, \${this.arg('name') ?? 'world'}!\`);
|
|
91
|
+
this.output.muted('Run "${name} --help" to see all commands.');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
`,
|
|
95
|
+
],
|
|
96
|
+
[
|
|
97
|
+
'src/providers/AppProvider.ts',
|
|
98
|
+
`import { ServiceProvider } from '@mudah-cli/mudah';
|
|
99
|
+
|
|
100
|
+
export default class ${pascal}Provider extends ServiceProvider {
|
|
101
|
+
register(): void {
|
|
102
|
+
this.app.config().merge('app', {
|
|
103
|
+
name: '${name}',
|
|
104
|
+
env: 'local',
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
`,
|
|
109
|
+
],
|
|
110
|
+
[
|
|
111
|
+
'config/app.ts',
|
|
112
|
+
`import { defineConfig } from '@mudah-cli/mudah';
|
|
113
|
+
|
|
114
|
+
export default defineConfig({
|
|
115
|
+
name: '${name}',
|
|
116
|
+
env: 'local',
|
|
117
|
+
});
|
|
118
|
+
`,
|
|
119
|
+
],
|
|
120
|
+
[
|
|
121
|
+
'.env.example',
|
|
122
|
+
`# Copy to .env and adjust.
|
|
123
|
+
# APP_ENV=local
|
|
124
|
+
`,
|
|
125
|
+
],
|
|
126
|
+
[
|
|
127
|
+
'.gitignore',
|
|
128
|
+
`node_modules/
|
|
129
|
+
dist/
|
|
130
|
+
.env
|
|
131
|
+
.DS_Store
|
|
132
|
+
`,
|
|
133
|
+
],
|
|
134
|
+
[
|
|
135
|
+
'test/welcome.test.ts',
|
|
136
|
+
`import { fileURLToPath } from 'node:url';
|
|
137
|
+
import { describe, expect, it } from 'vitest';
|
|
138
|
+
import { TestApp } from '@mudah-cli/mudah/testing';
|
|
139
|
+
|
|
140
|
+
const appDir = fileURLToPath(new URL('..', import.meta.url));
|
|
141
|
+
|
|
142
|
+
describe('welcome', () => {
|
|
143
|
+
it('greets a named person', async () => {
|
|
144
|
+
const app = await TestApp.create({ cwd: appDir });
|
|
145
|
+
const result = await app.dispatch(['welcome', 'Mudah']);
|
|
146
|
+
result.exit(0).outContains('Hello, Mudah!');
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
it('greets the world by default', async () => {
|
|
150
|
+
const app = await TestApp.create({ cwd: appDir });
|
|
151
|
+
const result = await app.dispatch(['welcome']);
|
|
152
|
+
result.exit(0).outContains('Hello, world!');
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
`,
|
|
156
|
+
],
|
|
157
|
+
[
|
|
158
|
+
'vitest.config.ts',
|
|
159
|
+
`import { defineConfig } from 'vitest/config';
|
|
160
|
+
|
|
161
|
+
export default defineConfig({
|
|
162
|
+
test: {
|
|
163
|
+
environment: 'node',
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
`,
|
|
167
|
+
],
|
|
168
|
+
[
|
|
169
|
+
'README.md',
|
|
170
|
+
`# ${name}
|
|
171
|
+
|
|
172
|
+
Built with [Mudah](https://github.com/thesimonharms/mudah) — speed, sleek design, and developer ergonomics for the terminal.
|
|
173
|
+
|
|
174
|
+
## Quick start
|
|
175
|
+
|
|
176
|
+
\`\`\`sh
|
|
177
|
+
npm install
|
|
178
|
+
npm run start # run the CLI (no args shows help)
|
|
179
|
+
npm run dev # watch mode: re-runs \`welcome\` on changes
|
|
180
|
+
npm test # in-process command tests via mudah/testing
|
|
181
|
+
\`\`\`
|
|
182
|
+
|
|
183
|
+
## Structure
|
|
184
|
+
|
|
185
|
+
- \`bin/${name}.js\` — the executable entrypoint (calls \`run()\`)
|
|
186
|
+
- \`mudah.json\` — app manifest (name, version, theme, update nudge)
|
|
187
|
+
- \`src/commands/\` — one file per command (\`*.command.ts\`, default export)
|
|
188
|
+
- \`src/providers/\` — service providers (\`register()\` → \`boot()\`)
|
|
189
|
+
- \`config/\` — configuration files merged into \`app.config()\`
|
|
190
|
+
|
|
191
|
+
Create a new command:
|
|
192
|
+
|
|
193
|
+
\`\`\`sh
|
|
194
|
+
node bin/${name}.js make command deploy-site
|
|
195
|
+
\`\`\`
|
|
196
|
+
`,
|
|
197
|
+
],
|
|
198
|
+
];
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,IAAI;SACR,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,MAAM,GAAG,IAAI;SAChB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,OAAO;QACL;YACE,cAAc;YACd,IAAI,CAAC,SAAS,CACZ;gBACE,IAAI;gBACJ,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,GAAG,IAAI,qBAAqB;gBACzC,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI;gBACb,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,IAAI,KAAK,EAAE;gBACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBACzB,OAAO,EAAE;oBACP,KAAK,EAAE,YAAY,IAAI,KAAK;oBAC5B,GAAG,EAAE,YAAY,IAAI,iBAAiB;oBACtC,MAAM,EAAE,YAAY,IAAI,YAAY;oBACpC,IAAI,EAAE,YAAY;oBAClB,SAAS,EAAE,cAAc;iBAC1B;gBACD,YAAY,EAAE,EAAE,kBAAkB,EAAE,QAAQ,EAAE;gBAC9C,eAAe,EAAE;oBACf,aAAa,EAAE,SAAS;oBACxB,UAAU,EAAE,QAAQ;oBACpB,MAAM,EAAE,QAAQ;iBACjB;aACF,EACD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI;SACT;QACD;YACE,YAAY;YACZ,IAAI,CAAC,SAAS,CACZ;gBACE,IAAI;gBACJ,OAAO,EAAE,OAAO;gBAChB,GAAG,EAAE,IAAI;gBACT,WAAW,EAAE,GAAG,IAAI,qBAAqB;gBACzC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;aACtB,EACD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI;SACT;QACD;YACE,OAAO,IAAI,KAAK;YAChB;;;;CAIL;SACI;QACD;YACE,eAAe;YACf,IAAI,CAAC,SAAS,CACZ;gBACE,eAAe,EAAE;oBACf,MAAM,EAAE,QAAQ;oBAChB,GAAG,EAAE,CAAC,QAAQ,CAAC;oBACf,KAAK,EAAE,CAAC,MAAM,CAAC;oBACf,MAAM,EAAE,UAAU;oBAClB,gBAAgB,EAAE,UAAU;oBAC5B,MAAM,EAAE,IAAI;oBACZ,wBAAwB,EAAE,IAAI;oBAC9B,oBAAoB,EAAE,IAAI;oBAC1B,eAAe,EAAE,IAAI;oBACrB,YAAY,EAAE,IAAI;oBAClB,MAAM,EAAE,IAAI;iBACb;gBACD,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;aACnC,EACD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI;SACT;QACD;YACE,iCAAiC;YACjC;;;;kCAI4B,IAAI;;;;;8BAKR,IAAI;;;CAGjC;SACI;QACD;YACE,8BAA8B;YAC9B;;uBAEiB,MAAM;;;eAGd,IAAI;;;;;CAKlB;SACI;QACD;YACE,eAAe;YACf;;;WAGK,IAAI;;;CAGd;SACI;QACD;YACE,cAAc;YACd;;CAEL;SACI;QACD;YACE,YAAY;YACZ;;;;CAIL;SACI;QACD;YACE,sBAAsB;YACtB;;;;;;;;;;;;;;;;;;;CAmBL;SACI;QACD;YACE,kBAAkB;YAClB;;;;;;;CAOL;SACI;QACD;YACE,WAAW;YACX,KAAK,IAAI;;;;;;;;;;;;;;;UAeL,IAAI;;;;;;;;;WASH,IAAI;;CAEd;SACI;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mudah-cli/create-mudah",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Interactive scaffolder for Mudah CLI apps — create-and-breathe.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"bin": {
|
|
8
|
+
"create-mudah": "./dist/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"engines": {
|
|
11
|
+
"node": ">=26"
|
|
12
|
+
},
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"default": "./dist/index.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist"
|
|
21
|
+
],
|
|
22
|
+
"sideEffects": false,
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@mudah-cli/animation": "^0.1.0",
|
|
25
|
+
"@mudah-cli/terminal": "^0.1.0",
|
|
26
|
+
"@mudah-cli/ui": "^0.1.0"
|
|
27
|
+
},
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public"
|
|
30
|
+
}
|
|
31
|
+
}
|