create-wizze-app 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/README.md +8 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +18 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +124 -0
- package/dist/index.js.map +1 -0
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +57 -0
- package/dist/index.test.js.map +1 -0
- package/dist/package-manager.d.ts +2 -0
- package/dist/package-manager.d.ts.map +1 -0
- package/dist/package-manager.js +4 -0
- package/dist/package-manager.js.map +1 -0
- package/dist/prompts.d.ts +2 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +4 -0
- package/dist/prompts.js.map +1 -0
- package/dist/template-resolver.d.ts +2 -0
- package/dist/template-resolver.d.ts.map +1 -0
- package/dist/template-resolver.js +4 -0
- package/dist/template-resolver.js.map +1 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +4 -0
- package/dist/utils.js.map +1 -0
- package/package.json +31 -0
package/README.md
ADDED
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,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createWizzeApp } from './index.js';
|
|
3
|
+
const name = process.argv[2];
|
|
4
|
+
const templateFlagIndex = process.argv.findIndex((arg) => arg === '--template' || arg === '-t');
|
|
5
|
+
const template = templateFlagIndex >= 0 ? process.argv[templateFlagIndex + 1] : 'blank';
|
|
6
|
+
if (!name) {
|
|
7
|
+
console.error('Uso: create-wizze-app <nome> [--template <nome>]');
|
|
8
|
+
process.exit(1);
|
|
9
|
+
}
|
|
10
|
+
createWizzeApp({ name, template: template || 'blank' })
|
|
11
|
+
.then(() => {
|
|
12
|
+
console.log(`Aplicativo ${name} criado com template ${template || 'blank'}.`);
|
|
13
|
+
})
|
|
14
|
+
.catch((error) => {
|
|
15
|
+
console.error(error);
|
|
16
|
+
process.exit(1);
|
|
17
|
+
});
|
|
18
|
+
//# 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,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC;AAChG,MAAM,QAAQ,GAAG,iBAAiB,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAExF,IAAI,CAAC,IAAI,EAAE,CAAC;IACV,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,IAAI,OAAO,EAAE,CAAC;KACpD,IAAI,CAAC,GAAG,EAAE;IACT,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,wBAAwB,QAAQ,IAAI,OAAO,GAAG,CAAC,CAAC;AAChF,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAgBF,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2D9E"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { copyFile, mkdir, readdir, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { access } from 'node:fs/promises';
|
|
5
|
+
import { resolveTemplate } from './template-resolver.js';
|
|
6
|
+
const SUPPORTED_TEMPLATES = new Set([
|
|
7
|
+
'blank',
|
|
8
|
+
'dashboard-mobile',
|
|
9
|
+
'delivery',
|
|
10
|
+
'ecommerce',
|
|
11
|
+
'education',
|
|
12
|
+
'fintech',
|
|
13
|
+
'health',
|
|
14
|
+
'marketplace',
|
|
15
|
+
'restaurant',
|
|
16
|
+
'social',
|
|
17
|
+
'tabs',
|
|
18
|
+
]);
|
|
19
|
+
export async function createWizzeApp(input) {
|
|
20
|
+
const rawName = input.name.trim();
|
|
21
|
+
if (!rawName) {
|
|
22
|
+
throw new Error('Nome do aplicativo é obrigatório.');
|
|
23
|
+
}
|
|
24
|
+
if (rawName.includes('/') || rawName.includes('\\') || rawName === '.' || rawName === '..') {
|
|
25
|
+
throw new Error('Nome de aplicativo inválido. Não use separadores de diretório.');
|
|
26
|
+
}
|
|
27
|
+
const template = resolveTemplate(input.template).trim();
|
|
28
|
+
if (!SUPPORTED_TEMPLATES.has(template)) {
|
|
29
|
+
throw new Error(`Template inválido: ${template}`);
|
|
30
|
+
}
|
|
31
|
+
const slug = toSlug(rawName);
|
|
32
|
+
if (!slug) {
|
|
33
|
+
throw new Error('Nome de aplicativo inválido após normalização.');
|
|
34
|
+
}
|
|
35
|
+
const appDir = join(process.cwd(), slug);
|
|
36
|
+
await mkdir(appDir, { recursive: true });
|
|
37
|
+
const templateDir = await resolveTemplateDir(template);
|
|
38
|
+
if (templateDir) {
|
|
39
|
+
await copyDirectory(templateDir, appDir);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
await mkdir(join(appDir, 'src'), { recursive: true });
|
|
43
|
+
}
|
|
44
|
+
const configPayload = {
|
|
45
|
+
name: toTitleCase(slug),
|
|
46
|
+
slug,
|
|
47
|
+
version: '1.0.0',
|
|
48
|
+
template
|
|
49
|
+
};
|
|
50
|
+
await writeFile(join(appDir, 'wizze.config.ts'), `export default ${JSON.stringify(configPayload, null, 2)};\n`, 'utf8');
|
|
51
|
+
const packagePayload = {
|
|
52
|
+
name: slug,
|
|
53
|
+
private: true,
|
|
54
|
+
version: '0.0.1',
|
|
55
|
+
scripts: {
|
|
56
|
+
dev: 'echo "Projeto Wizze criado. Configure o runtime para desenvolvimento."'
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
await writeFile(join(appDir, 'package.json'), `${JSON.stringify(packagePayload, null, 2)}\n`, 'utf8');
|
|
60
|
+
await ensureTemplateAppSource(appDir, template);
|
|
61
|
+
}
|
|
62
|
+
function toSlug(value) {
|
|
63
|
+
return value
|
|
64
|
+
.trim()
|
|
65
|
+
.toLowerCase()
|
|
66
|
+
.replace(/[^a-z0-9\s-]/g, '')
|
|
67
|
+
.replace(/\s+/g, '-')
|
|
68
|
+
.replace(/-+/g, '-')
|
|
69
|
+
.replace(/^-|-$/g, '');
|
|
70
|
+
}
|
|
71
|
+
function toTitleCase(value) {
|
|
72
|
+
return value
|
|
73
|
+
.split('-')
|
|
74
|
+
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
75
|
+
.join(' ');
|
|
76
|
+
}
|
|
77
|
+
function buildAppTemplateSource(template) {
|
|
78
|
+
return [
|
|
79
|
+
'export function App() {',
|
|
80
|
+
` return 'Wizze template: ${template}';`,
|
|
81
|
+
'}',
|
|
82
|
+
''
|
|
83
|
+
].join('\n');
|
|
84
|
+
}
|
|
85
|
+
async function ensureTemplateAppSource(appDir, template) {
|
|
86
|
+
const tsPath = join(appDir, 'src', 'App.ts');
|
|
87
|
+
const tsxPath = join(appDir, 'src', 'App.tsx');
|
|
88
|
+
if (!(await pathExists(tsPath)) && !(await pathExists(tsxPath))) {
|
|
89
|
+
await writeFile(tsPath, buildAppTemplateSource(template), 'utf8');
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async function resolveTemplateDir(template) {
|
|
93
|
+
const currentFilePath = fileURLToPath(import.meta.url);
|
|
94
|
+
const rootTemplates = join(currentFilePath, '..', '..', '..', '..', 'templates', template);
|
|
95
|
+
if (await pathExists(rootTemplates)) {
|
|
96
|
+
return rootTemplates;
|
|
97
|
+
}
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
async function copyDirectory(sourceDir, targetDir) {
|
|
101
|
+
const entries = await readdir(sourceDir, { withFileTypes: true });
|
|
102
|
+
for (const entry of entries) {
|
|
103
|
+
const sourcePath = join(sourceDir, entry.name);
|
|
104
|
+
const targetPath = join(targetDir, entry.name);
|
|
105
|
+
if (entry.isDirectory()) {
|
|
106
|
+
await mkdir(targetPath, { recursive: true });
|
|
107
|
+
await copyDirectory(sourcePath, targetPath);
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
if (entry.isFile()) {
|
|
111
|
+
await copyFile(sourcePath, targetPath);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async function pathExists(path) {
|
|
116
|
+
try {
|
|
117
|
+
await access(path);
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { strict as assert } from 'node:assert';
|
|
2
|
+
import { mkdtemp, readFile, rm } from 'node:fs/promises';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { test } from 'node:test';
|
|
6
|
+
import { createWizzeApp } from './index.js';
|
|
7
|
+
test('create-wizze-app generates a baseline project structure', async () => {
|
|
8
|
+
const cwd = process.cwd();
|
|
9
|
+
const sandbox = await mkdtemp(join(tmpdir(), 'wizze-create-app-'));
|
|
10
|
+
process.chdir(sandbox);
|
|
11
|
+
try {
|
|
12
|
+
await createWizzeApp({ name: 'demo-app', template: 'blank' });
|
|
13
|
+
const configFile = await readFile(join(sandbox, 'demo-app', 'wizze.config.ts'), 'utf8');
|
|
14
|
+
assert.match(configFile, /"name": "Demo App"/);
|
|
15
|
+
assert.match(configFile, /"template": "blank"/);
|
|
16
|
+
const packageJsonRaw = await readFile(join(sandbox, 'demo-app', 'package.json'), 'utf8');
|
|
17
|
+
const packageJson = JSON.parse(packageJsonRaw);
|
|
18
|
+
assert.equal(packageJson.name, 'demo-app');
|
|
19
|
+
const appFile = await readFile(join(sandbox, 'demo-app', 'src', 'App.ts'), 'utf8');
|
|
20
|
+
assert.match(appFile, /export function App/);
|
|
21
|
+
assert.match(appFile, /return null/);
|
|
22
|
+
}
|
|
23
|
+
finally {
|
|
24
|
+
process.chdir(cwd);
|
|
25
|
+
await rm(sandbox, { recursive: true, force: true });
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
test('create-wizze-app rejects invalid names and unsupported templates', async () => {
|
|
29
|
+
const cwd = process.cwd();
|
|
30
|
+
const sandbox = await mkdtemp(join(tmpdir(), 'wizze-create-app-invalid-'));
|
|
31
|
+
process.chdir(sandbox);
|
|
32
|
+
try {
|
|
33
|
+
await assert.rejects(async () => createWizzeApp({ name: '../escape', template: 'blank' }), /Nome de aplicativo inválido/);
|
|
34
|
+
await assert.rejects(async () => createWizzeApp({ name: 'demo-app', template: 'unknown-template' }), /Template inválido/);
|
|
35
|
+
}
|
|
36
|
+
finally {
|
|
37
|
+
process.chdir(cwd);
|
|
38
|
+
await rm(sandbox, { recursive: true, force: true });
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
test('create-wizze-app copies selected template files when available', async () => {
|
|
42
|
+
const cwd = process.cwd();
|
|
43
|
+
const sandbox = await mkdtemp(join(tmpdir(), 'wizze-create-app-template-'));
|
|
44
|
+
process.chdir(sandbox);
|
|
45
|
+
try {
|
|
46
|
+
await createWizzeApp({ name: 'delivery-app', template: 'delivery' });
|
|
47
|
+
const configFile = await readFile(join(sandbox, 'delivery-app', 'wizze.config.ts'), 'utf8');
|
|
48
|
+
assert.match(configFile, /"template": "delivery"/);
|
|
49
|
+
const readmeFile = await readFile(join(sandbox, 'delivery-app', 'README.md'), 'utf8');
|
|
50
|
+
assert.match(readmeFile, /template/i);
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
process.chdir(cwd);
|
|
54
|
+
await rm(sandbox, { recursive: true, force: true });
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,KAAK,CAErD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB;IAClC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C"}
|
package/dist/prompts.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-resolver.d.ts","sourceRoot":"","sources":["../src/template-resolver.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-resolver.js","sourceRoot":"","sources":["../src/template-resolver.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,QAAiB;IAC/C,OAAO,QAAQ,IAAI,OAAO,CAAC;AAC7B,CAAC"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5C"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACzD,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "create-wizze-app",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Gerador oficial de projetos do Wizze Framework.",
|
|
5
|
+
"author": "Master Dev (Taliton Silva)",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "dist/index.js",
|
|
9
|
+
"types": "dist/index.d.ts",
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md"
|
|
13
|
+
],
|
|
14
|
+
"publishConfig": {
|
|
15
|
+
"access": "public"
|
|
16
|
+
},
|
|
17
|
+
"bin": {
|
|
18
|
+
"create-wizze-app": "dist/cli.js"
|
|
19
|
+
},
|
|
20
|
+
"scripts": {
|
|
21
|
+
"dev": "tsx watch src/cli.ts -- --help",
|
|
22
|
+
"build": "tsc -p tsconfig.json",
|
|
23
|
+
"lint": "pnpm typecheck",
|
|
24
|
+
"test": "tsx --test src/**/*.test.ts",
|
|
25
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
26
|
+
"clean": "rm -rf dist"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"tsx": "^4.20.6"
|
|
30
|
+
}
|
|
31
|
+
}
|