@xeno-js/cli 0.1.0 → 0.1.2
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/index.js +3675 -18
- package/dist/index.js.map +1 -0
- package/eslint.config.mjs +1 -0
- package/package.json +4 -3
- package/tsup.config.ts +13 -0
- package/dist/domain/contracts/icommand-cli.contracts.js +0 -2
- package/dist/domain/contracts/icommand-runner.contracts.js +0 -2
- package/dist/domain/contracts/idispatch.contracts.js +0 -2
- package/dist/domain/contracts/ifile-service.contracts.js +0 -2
- package/dist/domain/contracts/igenerator.contracts.js +0 -2
- package/dist/domain/contracts/index.js +0 -2
- package/dist/domain/contracts/iscaffold-strategy.contracts.js +0 -2
- package/dist/domain/index.js +0 -2
- package/dist/generator.contracts.js +0 -13
- package/dist/infrastructure/bootstrap/bootstrapper.js +0 -32
- package/dist/infrastructure/bootstrap/index.js +0 -17
- package/dist/infrastructure/builder/builder.js +0 -16
- package/dist/infrastructure/builder/builder.test.js +0 -30
- package/dist/infrastructure/builder/index.js +0 -17
- package/dist/infrastructure/command_launcher/command.utils.js +0 -30
- package/dist/infrastructure/command_launcher/index.js +0 -2
- package/dist/infrastructure/commands/command-runner.service.js +0 -36
- package/dist/infrastructure/commands/generate.command.js +0 -48
- package/dist/infrastructure/commands/help.command.js +0 -44
- package/dist/infrastructure/commands/index.js +0 -20
- package/dist/infrastructure/commands/new-project.command.js +0 -43
- package/dist/infrastructure/dispatcher/dispatcher.js +0 -39
- package/dist/infrastructure/dispatcher/index.js +0 -17
- package/dist/infrastructure/file/file.service.js +0 -13
- package/dist/infrastructure/file/index.js +0 -17
- package/dist/infrastructure/generators/bootstrap.generator.js +0 -118
- package/dist/infrastructure/generators/core/bootstrap.generator.js +0 -118
- package/dist/infrastructure/generators/core/command/cqrs.generator.js +0 -49
- package/dist/infrastructure/generators/core/command/generate-command.generator.js +0 -163
- package/dist/infrastructure/generators/core/command/generate-query.generator.js +0 -131
- package/dist/infrastructure/generators/core/drizzle-sql-lite.generator.js +0 -78
- package/dist/infrastructure/generators/core/drizzle.generator.js +0 -85
- package/dist/infrastructure/generators/core/env.generator.js +0 -69
- package/dist/infrastructure/generators/core/index.js +0 -25
- package/dist/infrastructure/generators/core/main.generator.js +0 -45
- package/dist/infrastructure/generators/core/packagejson.generator.js +0 -78
- package/dist/infrastructure/generators/core/readme.generator.js +0 -431
- package/dist/infrastructure/generators/core/registry.generator.js +0 -46
- package/dist/infrastructure/generators/core/tsconfig.generator.js +0 -41
- package/dist/infrastructure/generators/core-packagejson.generator.js +0 -78
- package/dist/infrastructure/generators/drizzle-sql-lite.generator.js +0 -78
- package/dist/infrastructure/generators/drizzle.generator.js +0 -85
- package/dist/infrastructure/generators/env-vue.generator.js +0 -40
- package/dist/infrastructure/generators/env.generator.js +0 -71
- package/dist/infrastructure/generators/gitignore.generator.js +0 -62
- package/dist/infrastructure/generators/index.js +0 -26
- package/dist/infrastructure/generators/main.generator.js +0 -45
- package/dist/infrastructure/generators/readme.generator.js +0 -431
- package/dist/infrastructure/generators/registry.generator.js +0 -46
- package/dist/infrastructure/generators/tsconfig-vue.generator.js +0 -39
- package/dist/infrastructure/generators/tsconfig.generator.js +0 -41
- package/dist/infrastructure/generators/vite-config.generator.js +0 -39
- package/dist/infrastructure/generators/vue/app-vue.generator.js +0 -26
- package/dist/infrastructure/generators/vue/bootstrap-ts.generator.js +0 -59
- package/dist/infrastructure/generators/vue/command_query/cqrs.generator.js +0 -36
- package/dist/infrastructure/generators/vue/command_query/generate-command-vue.generator.js +0 -139
- package/dist/infrastructure/generators/vue/command_query/generate-query-vue.generator.js +0 -147
- package/dist/infrastructure/generators/vue/env.generator.js +0 -40
- package/dist/infrastructure/generators/vue/index-html.generator.js +0 -29
- package/dist/infrastructure/generators/vue/index.js +0 -28
- package/dist/infrastructure/generators/vue/main.generator.js +0 -45
- package/dist/infrastructure/generators/vue/packagejson.generator.js +0 -59
- package/dist/infrastructure/generators/vue/readme.generator.js +0 -394
- package/dist/infrastructure/generators/vue/registry-ts.generator.js +0 -28
- package/dist/infrastructure/generators/vue/router.generator.js +0 -33
- package/dist/infrastructure/generators/vue/tailwind.generator.js +0 -19
- package/dist/infrastructure/generators/vue/tsconfig.generator.js +0 -39
- package/dist/infrastructure/generators/vue/use-app.generator.js +0 -43
- package/dist/infrastructure/generators/vue/vite-config.generator.js +0 -39
- package/dist/infrastructure/generators/vue-packagejson.generator.js +0 -59
- package/dist/infrastructure/generators/vue-readme.generator.js +0 -53
- package/dist/infrastructure/generators/vue-source-files.generator.js +0 -136
- package/dist/infrastructure/index.js +0 -21
- package/dist/infrastructure/strategies/core-scaffold.strategy.js +0 -99
- package/dist/infrastructure/strategies/index.js +0 -18
- package/dist/infrastructure/strategies/vue-scaffold.strategy.js +0 -79
- package/dist/scaffolding.engine.js +0 -60
- package/dist/shared/constants/command.constants.js +0 -19
- package/dist/shared/constants/core.constants.js +0 -10
- package/dist/shared/constants/index.js +0 -18
- package/dist/shared/index.js +0 -18
- package/dist/shared/types/common.types.js +0 -2
- package/dist/shared/types/index.js +0 -2
- package/dist/shared/utils/guards.utils.js +0 -310
- package/dist/shared/utils/index.js +0 -18
- package/dist/shared/utils/string.utils.js +0 -62
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ReadmeVueGenerator = void 0;
|
|
7
|
-
// src/infrastructure/generators/vue-readme.generator.ts
|
|
8
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
class ReadmeVueGenerator {
|
|
10
|
-
_fileService;
|
|
11
|
-
constructor(_fileService) {
|
|
12
|
-
this._fileService = _fileService;
|
|
13
|
-
}
|
|
14
|
-
async generate(projectPath, options) {
|
|
15
|
-
const content = `# ${options.targetDir}
|
|
16
|
-
|
|
17
|
-
Enterprise-grade Vue SPA scaffolded with **Xeno**.
|
|
18
|
-
|
|
19
|
-
## Architecture & Integration
|
|
20
|
-
|
|
21
|
-
This project is pre-configured with \`@xeno-js/vue\` to enforce pure Dependency Injection and CQRS patterns directly in the browser.
|
|
22
|
-
|
|
23
|
-
The application initialization is handled in \`src/main.ts\` via \`XenoAppBuilder\`. The resulting IoC container is injected into the Vue component tree using Provide/Inject under the \`XENO_SERVICES_KEY\`.
|
|
24
|
-
|
|
25
|
-
### Recommended Component Usage (Composition API)
|
|
26
|
-
|
|
27
|
-
\`\`\`html
|
|
28
|
-
<script setup lang="ts">
|
|
29
|
-
import { inject } from 'vue';
|
|
30
|
-
import { XENO_SERVICES_KEY, ContainerUtils } from '@xeno-js/vue';
|
|
31
|
-
import type { MyRegistry } from '@/registry';
|
|
32
|
-
|
|
33
|
-
const container = inject(XENO_SERVICES_KEY);
|
|
34
|
-
|
|
35
|
-
if (!container) {
|
|
36
|
-
throw new Error("Xeno Container not provided!");
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// Safely resolve your dependencies
|
|
40
|
-
const myService = ContainerUtils.resolveServiceScoped('MY_CUSTOM_SERVICE_TOKEN', container);
|
|
41
|
-
</script>
|
|
42
|
-
\`\`\`
|
|
43
|
-
|
|
44
|
-
## Scripts
|
|
45
|
-
|
|
46
|
-
- \`npm run dev\`: Starts the Vite development server.
|
|
47
|
-
- \`npm run build\`: Type-checks and builds the production application.
|
|
48
|
-
- \`npm run preview\`: Previews the production build locally.
|
|
49
|
-
`;
|
|
50
|
-
await this._fileService.writeFileRecursive(node_path_1.default.join(projectPath, 'README.md'), content);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
exports.ReadmeVueGenerator = ReadmeVueGenerator;
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.VueSourceFilesGenerator = void 0;
|
|
7
|
-
// src/infrastructure/generators/vue-source-files.generator.ts
|
|
8
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
class VueSourceFilesGenerator {
|
|
10
|
-
_fileService;
|
|
11
|
-
constructor(_fileService) {
|
|
12
|
-
this._fileService = _fileService;
|
|
13
|
-
}
|
|
14
|
-
async generate(projectPath, options) {
|
|
15
|
-
// 1. index.html
|
|
16
|
-
const indexHtml = `<!DOCTYPE html>
|
|
17
|
-
<html lang="en">
|
|
18
|
-
<head>
|
|
19
|
-
<meta charset="UTF-8" />
|
|
20
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
21
|
-
<title>${options.targetDir}</title>
|
|
22
|
-
</head>
|
|
23
|
-
<body>
|
|
24
|
-
<div id="app"></div>
|
|
25
|
-
<script type="module" src="/src/main.ts"></script>
|
|
26
|
-
</body>
|
|
27
|
-
</html>`;
|
|
28
|
-
await this._fileService.writeFileRecursive(node_path_1.default.join(projectPath, 'index.html'), indexHtml);
|
|
29
|
-
// 2. src/App.vue
|
|
30
|
-
const appVue = `<script setup lang="ts">
|
|
31
|
-
</script>
|
|
32
|
-
|
|
33
|
-
<template>
|
|
34
|
-
<div id="xeno-app">
|
|
35
|
-
${options.router ? '<router-view />' : '<h1>Welcome to Xeno Vue App</h1>'}
|
|
36
|
-
</div>
|
|
37
|
-
</template>`;
|
|
38
|
-
await this._fileService.writeFileRecursive(node_path_1.default.join(projectPath, 'src', 'App.vue'), appVue);
|
|
39
|
-
// 3. src/registry.ts
|
|
40
|
-
const registryTs = `import type { XenoVueRegistry } from '@xeno-js/vue';
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* @file registry.ts
|
|
44
|
-
* @description Centralized Type Contract for Dependency Injection in Vue.
|
|
45
|
-
*/
|
|
46
|
-
export interface MyRegistry extends XenoVueRegistry {
|
|
47
|
-
// Add your frontend injection tokens here
|
|
48
|
-
// e.g., USER_DATA_SOURCE: IUserDataSource;
|
|
49
|
-
}
|
|
50
|
-
`;
|
|
51
|
-
await this._fileService.writeFileRecursive(node_path_1.default.join(projectPath, 'src', 'registry.ts'), registryTs);
|
|
52
|
-
// 4. src/bootstrap.ts
|
|
53
|
-
let builderNodes = ` const builder = XenoAppBuilder.create<MyRegistry>()\n .addContext(() => {});`;
|
|
54
|
-
if (options.supabase) {
|
|
55
|
-
builderNodes += `\n .addAuth((opts, config) => {
|
|
56
|
-
opts.url = config.getOrThrow('VITE_SUPABASE_URL');
|
|
57
|
-
opts.key = config.getOrThrow('VITE_SUPABASE_KEY');
|
|
58
|
-
});`;
|
|
59
|
-
}
|
|
60
|
-
if (options.sentry) {
|
|
61
|
-
builderNodes += `\n .addLogger((opts, config) => {
|
|
62
|
-
opts.console = config.get('VITE_APP_ENV') === 'development';
|
|
63
|
-
opts.sentry = {
|
|
64
|
-
dsn: config.getOrThrow('VITE_SENTRY_DSN'),
|
|
65
|
-
env: config.getOrThrow('VITE_APP_ENV')
|
|
66
|
-
};
|
|
67
|
-
});`;
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
builderNodes += `\n .addLogger((opts, config) => {
|
|
71
|
-
opts.console = config.get('VITE_APP_ENV') === 'development';
|
|
72
|
-
});`;
|
|
73
|
-
}
|
|
74
|
-
builderNodes += `\n .addServices((config, register) => {
|
|
75
|
-
// Register custom stores, API clients, and CQRS services here
|
|
76
|
-
});`;
|
|
77
|
-
const bootstrapTs = `import { XenoAppBuilder } from '@xeno-js/vue';
|
|
78
|
-
import type { MyRegistry } from './registry';
|
|
79
|
-
|
|
80
|
-
export async function bootstrap() {
|
|
81
|
-
${builderNodes}
|
|
82
|
-
|
|
83
|
-
return await builder.build();
|
|
84
|
-
}
|
|
85
|
-
`;
|
|
86
|
-
await this._fileService.writeFileRecursive(node_path_1.default.join(projectPath, 'src', 'bootstrap.ts'), bootstrapTs);
|
|
87
|
-
// 5. src/main.ts
|
|
88
|
-
const routerImport = options.router ? `\nimport router from './router';` : '';
|
|
89
|
-
const piniaImport = options.pinia ? `\nimport { createPinia } from 'pinia';` : '';
|
|
90
|
-
const tailwindImport = options.tailwind ? `\nimport './assets/style.css';` : '';
|
|
91
|
-
const mainTs = `import { createApp } from 'vue';
|
|
92
|
-
import App from './App.vue';
|
|
93
|
-
import { bootstrap } from './bootstrap';
|
|
94
|
-
import { XENO_SERVICES_KEY } from '@xeno-js/vue';${routerImport}${piniaImport}${tailwindImport}
|
|
95
|
-
|
|
96
|
-
async function mountApp() {
|
|
97
|
-
try {
|
|
98
|
-
const container = await bootstrap();
|
|
99
|
-
const app = createApp(App);
|
|
100
|
-
|
|
101
|
-
// Provide the Xeno IoC container globally to all components
|
|
102
|
-
app.provide(XENO_SERVICES_KEY, container);
|
|
103
|
-
${options.pinia ? '\n app.use(createPinia());' : ''}${options.router ? '\n app.use(router);' : ''}
|
|
104
|
-
|
|
105
|
-
app.mount('#app');
|
|
106
|
-
} catch (error) {
|
|
107
|
-
console.error('Critical error during frontend bootstrap:', error);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
mountApp();
|
|
112
|
-
`;
|
|
113
|
-
await this._fileService.writeFileRecursive(node_path_1.default.join(projectPath, 'src', 'main.ts'), mainTs);
|
|
114
|
-
// 6. Optional router and assets
|
|
115
|
-
if (options.router) {
|
|
116
|
-
const routerTs = `import { createRouter, createWebHistory } from 'vue-router';
|
|
117
|
-
|
|
118
|
-
export default createRouter({
|
|
119
|
-
history: createWebHistory(),
|
|
120
|
-
routes: [
|
|
121
|
-
{
|
|
122
|
-
path: '/',
|
|
123
|
-
name: 'Home',
|
|
124
|
-
component: () => import('./views/HomeView.vue')
|
|
125
|
-
}
|
|
126
|
-
]
|
|
127
|
-
});`;
|
|
128
|
-
await this._fileService.writeFileRecursive(node_path_1.default.join(projectPath, 'src', 'router', 'index.ts'), routerTs);
|
|
129
|
-
await this._fileService.writeFileRecursive(node_path_1.default.join(projectPath, 'src', 'views', 'HomeView.vue'), `<template>\n <h1>Home View</h1>\n</template>`);
|
|
130
|
-
}
|
|
131
|
-
if (options.tailwind) {
|
|
132
|
-
await this._fileService.writeFileRecursive(node_path_1.default.join(projectPath, 'src', 'assets', 'style.css'), `@import "tailwindcss";\n`);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
exports.VueSourceFilesGenerator = VueSourceFilesGenerator;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./bootstrap"), exports);
|
|
18
|
-
__exportStar(require("./commands"), exports);
|
|
19
|
-
__exportStar(require("./dispatcher"), exports);
|
|
20
|
-
__exportStar(require("./file"), exports);
|
|
21
|
-
__exportStar(require("./strategies"), exports);
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.CoreScaffoldStrategy = void 0;
|
|
7
|
-
// src/strategies/core.strategy.ts
|
|
8
|
-
const prompts_1 = __importDefault(require("prompts"));
|
|
9
|
-
const shared_1 = require("../../shared");
|
|
10
|
-
class CoreScaffoldStrategy {
|
|
11
|
-
_fileService;
|
|
12
|
-
constructor(_fileService) {
|
|
13
|
-
this._fileService = _fileService;
|
|
14
|
-
}
|
|
15
|
-
async promptOptions(targetDir) {
|
|
16
|
-
const response = await (0, prompts_1.default)([
|
|
17
|
-
{ type: 'confirm', name: 'axios', message: 'Install Axios?', initial: true },
|
|
18
|
-
{ type: 'confirm', name: 'cockatiel', message: 'Install Cockatiel?', initial: true },
|
|
19
|
-
{ type: 'confirm', name: 'supabase', message: 'Install Supabase Auth?', initial: true },
|
|
20
|
-
{
|
|
21
|
-
type: 'select',
|
|
22
|
-
name: 'database',
|
|
23
|
-
message: 'Select database type',
|
|
24
|
-
choices: [
|
|
25
|
-
{ title: 'Drizzle PostgreSQL', value: 'drizzle' },
|
|
26
|
-
{ title: 'SQL Lite', value: 'sqlLite' },
|
|
27
|
-
{ title: 'None', value: 'none' },
|
|
28
|
-
],
|
|
29
|
-
},
|
|
30
|
-
{ type: 'confirm', name: 'pino', message: 'Install Pino Logger?', initial: true },
|
|
31
|
-
{ type: 'confirm', name: 'sentry', message: 'Install Sentry Logger?', initial: true },
|
|
32
|
-
{ type: 'confirm', name: 'redis', message: 'Install Redis?', initial: true },
|
|
33
|
-
{ type: 'confirm', name: 'zod', message: 'Install Zod?', initial: true },
|
|
34
|
-
// {
|
|
35
|
-
// type: 'select',
|
|
36
|
-
// name: 'targetEnv',
|
|
37
|
-
// message: 'Select target environment',
|
|
38
|
-
// choices: [
|
|
39
|
-
// { title: 'Console', value: 'console' },
|
|
40
|
-
// { title: 'Vercel (Serverless)', value: 'vercel' },
|
|
41
|
-
// { title: 'Fastify (Standalone)', value: 'fastify' },
|
|
42
|
-
// ],
|
|
43
|
-
// },
|
|
44
|
-
{
|
|
45
|
-
type: 'confirm',
|
|
46
|
-
name: 'gitInit',
|
|
47
|
-
message: 'Initialize a new Git repository?',
|
|
48
|
-
initial: true,
|
|
49
|
-
},
|
|
50
|
-
]);
|
|
51
|
-
return {
|
|
52
|
-
targetDir,
|
|
53
|
-
projectType: 'core',
|
|
54
|
-
targetEnv: 'console',
|
|
55
|
-
...response,
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
async getGenerators(options) {
|
|
59
|
-
// Lazy Loading: Importiamo i moduli solo se servono!
|
|
60
|
-
const generators = [];
|
|
61
|
-
const { PackageJsonCoreGenerator } = await import('../generators/core/packagejson.generator.js');
|
|
62
|
-
const { BootstrapGenerator } = await import('../generators/core/bootstrap.generator.js');
|
|
63
|
-
const { EnvGenerator } = await import('../generators/core/env.generator.js');
|
|
64
|
-
const { GitIgnoreGenerator } = await import('../generators/gitignore.generator.js');
|
|
65
|
-
const { ReadmeGenerator } = await import('../generators/core/readme.generator.js');
|
|
66
|
-
const { RegistryGenerator } = await import('../generators/core/registry.generator.js');
|
|
67
|
-
const { TsconfigGenerator } = await import('../generators/core/tsconfig.generator.js');
|
|
68
|
-
generators.push(new PackageJsonCoreGenerator(this._fileService));
|
|
69
|
-
generators.push(new BootstrapGenerator(this._fileService));
|
|
70
|
-
generators.push(new EnvGenerator(this._fileService));
|
|
71
|
-
generators.push(new GitIgnoreGenerator(this._fileService));
|
|
72
|
-
generators.push(new ReadmeGenerator(this._fileService));
|
|
73
|
-
generators.push(new RegistryGenerator(this._fileService));
|
|
74
|
-
generators.push(new TsconfigGenerator(this._fileService));
|
|
75
|
-
if (options.database !== shared_1.CORE_CONSTANTS.NONE) {
|
|
76
|
-
if (options.database === shared_1.CORE_CONSTANTS.DRIZZLE) {
|
|
77
|
-
const { DrizzleGenerator } = await import('../generators/core/drizzle.generator.js');
|
|
78
|
-
generators.push(new DrizzleGenerator(this._fileService));
|
|
79
|
-
}
|
|
80
|
-
else if (options.database === shared_1.CORE_CONSTANTS.SQL_LITE) {
|
|
81
|
-
const { DrizzleSqlLiteGenerator } = await import('../generators/core/drizzle-sql-lite.generator.js');
|
|
82
|
-
generators.push(new DrizzleSqlLiteGenerator(this._fileService));
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
if (options.targetEnv === shared_1.TARGET_ENV_CONSTANTS.CONSOLE) {
|
|
86
|
-
const { MainGenerator } = await import('../generators/core/main.generator.js');
|
|
87
|
-
generators.push(new MainGenerator(this._fileService));
|
|
88
|
-
}
|
|
89
|
-
// else if (options.targetEnv === CORE_CONSTANTS.VERCEL) {
|
|
90
|
-
// const { VercelJsonGenerator } = await import('../generators');
|
|
91
|
-
// generators.push(new VercelJsonGenerator());
|
|
92
|
-
// } else if (options.targetEnv === CORE_CONSTANTS.FASTIFY) {
|
|
93
|
-
// const { FastifysonGenerator } = await import('../generators');
|
|
94
|
-
// generators.push(new FastifysonGenerator());
|
|
95
|
-
// }
|
|
96
|
-
return generators;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
exports.CoreScaffoldStrategy = CoreScaffoldStrategy;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./core-scaffold.strategy"), exports);
|
|
18
|
-
__exportStar(require("./vue-scaffold.strategy"), exports);
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.VueScaffoldStrategy = void 0;
|
|
7
|
-
const prompts_1 = __importDefault(require("prompts"));
|
|
8
|
-
class VueScaffoldStrategy {
|
|
9
|
-
_fileService;
|
|
10
|
-
constructor(_fileService) {
|
|
11
|
-
this._fileService = _fileService;
|
|
12
|
-
}
|
|
13
|
-
async promptOptions(targetDir) {
|
|
14
|
-
const response = await (0, prompts_1.default)([
|
|
15
|
-
{ type: 'confirm', name: 'axios', message: 'Install Axios?', initial: true },
|
|
16
|
-
{
|
|
17
|
-
type: 'confirm',
|
|
18
|
-
name: 'cockatiel',
|
|
19
|
-
message: 'Install Cockatiel (Resilience)?',
|
|
20
|
-
initial: true,
|
|
21
|
-
},
|
|
22
|
-
{ type: 'confirm', name: 'supabase', message: 'Install Supabase Auth?', initial: true },
|
|
23
|
-
{ type: 'confirm', name: 'sentry', message: 'Install Sentry Logger?', initial: true },
|
|
24
|
-
{
|
|
25
|
-
type: 'confirm',
|
|
26
|
-
name: 'pinia',
|
|
27
|
-
message: 'Install Pinia (State Management)?',
|
|
28
|
-
initial: true,
|
|
29
|
-
},
|
|
30
|
-
{ type: 'confirm', name: 'router', message: 'Install vue-router?', initial: true },
|
|
31
|
-
{ type: 'confirm', name: 'tailwind', message: 'Install Tailwind CSS?', initial: true },
|
|
32
|
-
{ type: 'confirm', name: 'zod', message: 'Install Zod Validator?', initial: true },
|
|
33
|
-
{
|
|
34
|
-
type: 'confirm',
|
|
35
|
-
name: 'gitInit',
|
|
36
|
-
message: 'Initialize a new Git repository?',
|
|
37
|
-
initial: true,
|
|
38
|
-
},
|
|
39
|
-
]);
|
|
40
|
-
return {
|
|
41
|
-
targetDir,
|
|
42
|
-
projectType: 'vue',
|
|
43
|
-
...response,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
async getGenerators(_options) {
|
|
47
|
-
const generators = [];
|
|
48
|
-
const { PackageJsonVueGenerator } = await import('../generators/vue/packagejson.generator.js');
|
|
49
|
-
const { ViteconfigGenerator } = await import('../generators/vue/vite-config.generator.js');
|
|
50
|
-
const { EnvVueGenerator } = await import('../generators/vue/env.generator.js');
|
|
51
|
-
const { TsconfigVueGenerator } = await import('../generators/vue/tsconfig.generator.js');
|
|
52
|
-
const { ReadmeVueGenerator } = await import('../generators/vue/readme.generator.js');
|
|
53
|
-
const { GitIgnoreGenerator } = await import('../generators/gitignore.generator.js');
|
|
54
|
-
const { AppVueGenerator } = await import('../generators/vue/app-vue.generator.js');
|
|
55
|
-
const { BootstrapGenerator } = await import('../generators/vue/bootstrap-ts.generator.js');
|
|
56
|
-
const { IndexVueGenerator } = await import('../generators/vue/index-html.generator.js');
|
|
57
|
-
const { MainGenerator } = await import('../generators/vue/main.generator.js');
|
|
58
|
-
const { RegistryGenerator } = await import('../generators/vue/registry-ts.generator.js');
|
|
59
|
-
const { RouterGenerator } = await import('../generators/vue/router.generator.js');
|
|
60
|
-
const { TailwindGenerator } = await import('../generators/vue/tailwind.generator.js');
|
|
61
|
-
const { UseAppVueGenerator } = await import('../generators/vue/use-app.generator.js');
|
|
62
|
-
generators.push(new PackageJsonVueGenerator(this._fileService));
|
|
63
|
-
generators.push(new ViteconfigGenerator(this._fileService));
|
|
64
|
-
generators.push(new EnvVueGenerator(this._fileService));
|
|
65
|
-
generators.push(new TsconfigVueGenerator(this._fileService));
|
|
66
|
-
generators.push(new AppVueGenerator(this._fileService));
|
|
67
|
-
generators.push(new BootstrapGenerator(this._fileService));
|
|
68
|
-
generators.push(new IndexVueGenerator(this._fileService));
|
|
69
|
-
generators.push(new MainGenerator(this._fileService));
|
|
70
|
-
generators.push(new RegistryGenerator(this._fileService));
|
|
71
|
-
generators.push(new RouterGenerator(this._fileService));
|
|
72
|
-
generators.push(new TailwindGenerator(this._fileService));
|
|
73
|
-
generators.push(new ReadmeVueGenerator(this._fileService));
|
|
74
|
-
generators.push(new GitIgnoreGenerator(this._fileService));
|
|
75
|
-
generators.push(new UseAppVueGenerator(this._fileService));
|
|
76
|
-
return generators;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
exports.VueScaffoldStrategy = VueScaffoldStrategy;
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// import { mkdir } from 'fs/promises'
|
|
3
|
-
// import { resolve } from 'path'
|
|
4
|
-
// import pc from 'picocolors'
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
// import { type IGenerator } from './generator.contracts'
|
|
7
|
-
// import { type ScaffoldingOptions } from './generator.contracts'
|
|
8
|
-
// /**
|
|
9
|
-
// * @class ScaffoldingEngine
|
|
10
|
-
// * @description The ScaffoldingEngine orchestrates the execution of multiple generators based on user-selected options.
|
|
11
|
-
// * It ensures that each generator is executed in the correct order and handles any errors that may arise during the scaffolding process.
|
|
12
|
-
// *
|
|
13
|
-
// * @author Xeno
|
|
14
|
-
// * @version 1.0.0
|
|
15
|
-
// * @license ISC
|
|
16
|
-
// * @since 2025-09-30
|
|
17
|
-
// * @link https://github.com/Mattia-Carcione/xeno-js
|
|
18
|
-
// */
|
|
19
|
-
// export class ScaffoldingEngine {
|
|
20
|
-
// /**
|
|
21
|
-
// * Creates an instance of ScaffoldingEngine.
|
|
22
|
-
// * @param generators - An array of generators to be executed during the scaffolding process.
|
|
23
|
-
// *
|
|
24
|
-
// * @author Xeno
|
|
25
|
-
// * @version 1.0.0
|
|
26
|
-
// * @license ISC
|
|
27
|
-
// * @since 2025-09-30
|
|
28
|
-
// * @link https://github.com/Mattia-Carcione/xeno-js
|
|
29
|
-
// */
|
|
30
|
-
// constructor(private readonly generators: IGenerator[]) {}
|
|
31
|
-
// /**
|
|
32
|
-
// * Executes the scaffolding process by running each generator that should be executed based on the provided options.
|
|
33
|
-
// * It creates the target directory if it does not exist and handles any errors that occur during the execution of generators.
|
|
34
|
-
// *
|
|
35
|
-
// * @param projectPath - The relative path of the target directory
|
|
36
|
-
// * @param options - The user-selected options
|
|
37
|
-
// *
|
|
38
|
-
// * @author Xeno
|
|
39
|
-
// * @version 1.0.0
|
|
40
|
-
// * @license ISC
|
|
41
|
-
// * @since 2025-09-30
|
|
42
|
-
// * @link https://github.com/Mattia-Carcione/xeno-js
|
|
43
|
-
// */
|
|
44
|
-
// async run(projectPath: string, options: ScaffoldingOptions): Promise<void> {
|
|
45
|
-
// console.info(pc.cyan('\n🔨 Starting scaffolding process...'))
|
|
46
|
-
// const absolutePath = resolve(process.cwd(), projectPath)
|
|
47
|
-
// await mkdir(absolutePath, { recursive: true })
|
|
48
|
-
// for (const generator of this.generators) {
|
|
49
|
-
// if (generator.shouldGenerate(options)) {
|
|
50
|
-
// try {
|
|
51
|
-
// await generator.generate(absolutePath, options)
|
|
52
|
-
// } catch (error: unknown) {
|
|
53
|
-
// console.error(pc.red(`\n❌ Failed to execute generator: ${String(error)}`))
|
|
54
|
-
// throw error
|
|
55
|
-
// }
|
|
56
|
-
// }
|
|
57
|
-
// }
|
|
58
|
-
// console.info(pc.green('\n✨ Scaffolding completed successfully!'))
|
|
59
|
-
// }
|
|
60
|
-
// }
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TARGET_ENV_CONSTANTS = exports.COMMAND_CONSTANTS = exports.ARGS_CONSTANTS = void 0;
|
|
4
|
-
exports.ARGS_CONSTANTS = Object.freeze({
|
|
5
|
-
HELP: '--help',
|
|
6
|
-
VUE: '--vue',
|
|
7
|
-
CORE: '--core',
|
|
8
|
-
CONSOLE: '--console',
|
|
9
|
-
});
|
|
10
|
-
exports.COMMAND_CONSTANTS = Object.freeze({
|
|
11
|
-
HELP: 'help',
|
|
12
|
-
COMMAND: 'command',
|
|
13
|
-
QUERY: 'query',
|
|
14
|
-
});
|
|
15
|
-
exports.TARGET_ENV_CONSTANTS = Object.freeze({
|
|
16
|
-
CONSOLE: 'console',
|
|
17
|
-
VERCEL: 'vercel',
|
|
18
|
-
FASTIFY: 'fastify',
|
|
19
|
-
});
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CORE_CONSTANTS = void 0;
|
|
4
|
-
exports.CORE_CONSTANTS = Object.freeze({
|
|
5
|
-
VERCEL: 'vercel',
|
|
6
|
-
FASTIFY: 'fastify',
|
|
7
|
-
DRIZZLE: 'drizzle',
|
|
8
|
-
SQL_LITE: 'sqlLite',
|
|
9
|
-
NONE: 'none',
|
|
10
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./command.constants"), exports);
|
|
18
|
-
__exportStar(require("./core.constants"), exports);
|
package/dist/shared/index.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./constants"), exports);
|
|
18
|
-
__exportStar(require("./utils"), exports);
|