@re-shell/cli
Version:
Full-stack development platform uniting microservices and microfrontends. Build complete applications with .NET (ASP.NET Core Web API, Minimal API), Java (Spring Boot, Quarkus, Micronaut, Vert.x), Rust (Actix-Web, Warp, Rocket, Axum), Python (FastAPI, Dja
247 lines (246 loc) • 8.29 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.SUPPORTED_FRAMEWORKS = void 0;
exports.getFrameworkChoices = getFrameworkChoices;
exports.getFrameworkConfig = getFrameworkConfig;
exports.detectFramework = detectFramework;
exports.validateFramework = validateFramework;
const fs = __importStar(require("fs-extra"));
const path = __importStar(require("path"));
exports.SUPPORTED_FRAMEWORKS = {
'react': {
name: 'react',
displayName: 'React',
buildTool: 'vite',
packageManager: ['npm', 'yarn', 'pnpm'],
dependencies: {
'react': '^18.2.0',
'react-dom': '^18.2.0'
},
devDependencies: {
'vite': '^4.4.0',
'@vitejs/plugin-react': '^4.0.0',
'eslint': '^8.44.0',
'vitest': '^0.34.3'
},
scripts: {
'dev': 'vite',
'build': 'vite build',
'preview': 'vite preview',
'lint': 'eslint src --ext js,jsx',
'test': 'vitest'
},
configFiles: ['vite.config.js', '.eslintrc.js'],
entryFile: 'src/index.jsx',
extensions: ['.js', '.jsx']
},
'react-ts': {
name: 'react-ts',
displayName: 'React with TypeScript',
buildTool: 'vite',
packageManager: ['npm', 'yarn', 'pnpm'],
dependencies: {
'react': '^18.2.0',
'react-dom': '^18.2.0'
},
devDependencies: {
'vite': '^4.4.0',
'@vitejs/plugin-react': '^4.0.0',
'typescript': '^5.0.0',
'@types/react': '^18.2.0',
'@types/react-dom': '^18.2.0',
'eslint': '^8.44.0',
'vitest': '^0.34.3'
},
scripts: {
'dev': 'vite',
'build': 'vite build',
'preview': 'vite preview',
'lint': 'eslint src --ext ts,tsx',
'test': 'vitest',
'type-check': 'tsc --noEmit'
},
configFiles: ['vite.config.ts', 'tsconfig.json', '.eslintrc.js'],
entryFile: 'src/index.tsx',
extensions: ['.ts', '.tsx'],
hasTypeScript: true
},
'vue': {
name: 'vue',
displayName: 'Vue 3',
buildTool: 'vite',
packageManager: ['npm', 'yarn', 'pnpm'],
dependencies: {
'vue': '^3.3.0'
},
devDependencies: {
'vite': '^4.4.0',
'@vitejs/plugin-vue': '^4.0.0',
'eslint': '^8.44.0',
'vitest': '^0.34.3'
},
scripts: {
'dev': 'vite',
'build': 'vite build',
'preview': 'vite preview',
'lint': 'eslint src --ext js,vue',
'test': 'vitest'
},
configFiles: ['vite.config.js', '.eslintrc.js'],
entryFile: 'src/main.js',
extensions: ['.js', '.vue']
},
'vue-ts': {
name: 'vue-ts',
displayName: 'Vue 3 with TypeScript',
buildTool: 'vite',
packageManager: ['npm', 'yarn', 'pnpm'],
dependencies: {
'vue': '^3.3.0'
},
devDependencies: {
'vite': '^4.4.0',
'@vitejs/plugin-vue': '^4.0.0',
'typescript': '^5.0.0',
'vue-tsc': '^1.8.0',
'eslint': '^8.44.0',
'vitest': '^0.34.3'
},
scripts: {
'dev': 'vite',
'build': 'vue-tsc && vite build',
'preview': 'vite preview',
'lint': 'eslint src --ext ts,vue',
'test': 'vitest',
'type-check': 'vue-tsc --noEmit'
},
configFiles: ['vite.config.ts', 'tsconfig.json', '.eslintrc.js'],
entryFile: 'src/main.ts',
extensions: ['.ts', '.vue'],
hasTypeScript: true
},
'svelte': {
name: 'svelte',
displayName: 'Svelte',
buildTool: 'vite',
packageManager: ['npm', 'yarn', 'pnpm'],
dependencies: {},
devDependencies: {
'svelte': '^4.0.0',
'vite': '^4.4.0',
'@sveltejs/vite-plugin-svelte': '^2.4.0',
'eslint': '^8.44.0',
'vitest': '^0.34.3'
},
scripts: {
'dev': 'vite',
'build': 'vite build',
'preview': 'vite preview',
'lint': 'eslint src --ext js,svelte',
'test': 'vitest'
},
configFiles: ['vite.config.js', 'svelte.config.js', '.eslintrc.js'],
entryFile: 'src/main.js',
extensions: ['.js', '.svelte']
},
'svelte-ts': {
name: 'svelte-ts',
displayName: 'Svelte with TypeScript',
buildTool: 'vite',
packageManager: ['npm', 'yarn', 'pnpm'],
dependencies: {},
devDependencies: {
'svelte': '^4.0.0',
'vite': '^4.4.0',
'@sveltejs/vite-plugin-svelte': '^2.4.0',
'typescript': '^5.0.0',
'svelte-check': '^3.4.0',
'eslint': '^8.44.0',
'vitest': '^0.34.3'
},
scripts: {
'dev': 'vite',
'build': 'vite build',
'preview': 'vite preview',
'lint': 'eslint src --ext ts,svelte',
'test': 'vitest',
'check': 'svelte-check --tsconfig ./tsconfig.json'
},
configFiles: ['vite.config.ts', 'svelte.config.js', 'tsconfig.json', '.eslintrc.js'],
entryFile: 'src/main.ts',
extensions: ['.ts', '.svelte'],
hasTypeScript: true
}
};
function getFrameworkChoices() {
return Object.values(exports.SUPPORTED_FRAMEWORKS).map(framework => ({
title: framework.displayName,
value: framework.name
}));
}
function getFrameworkConfig(framework) {
const config = exports.SUPPORTED_FRAMEWORKS[framework];
if (!config) {
throw new Error(`Unsupported framework: ${framework}`);
}
return config;
}
function detectFramework(projectPath) {
const packageJsonPath = path.join(projectPath, 'package.json');
if (!fs.existsSync(packageJsonPath)) {
return null;
}
try {
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
const dependencies = { ...packageJson.dependencies, ...packageJson.devDependencies };
// Check for framework-specific dependencies
if (dependencies['@angular/core'])
return 'angular';
if (dependencies['vue'])
return dependencies['typescript'] ? 'vue-ts' : 'vue';
if (dependencies['svelte'])
return dependencies['typescript'] ? 'svelte-ts' : 'svelte';
if (dependencies['react'])
return dependencies['typescript'] ? 'react-ts' : 'react';
return null;
}
catch (error) {
return null;
}
}
function validateFramework(framework) {
return framework in exports.SUPPORTED_FRAMEWORKS;
}