@zylaris/cli 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/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +96 -0
- package/dist/bin.js.map +1 -0
- package/dist/commands/build.d.ts +16 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +165 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/create.d.ts +7 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +192 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/deploy.d.ts +8 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +80 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/dev.d.ts +8 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +89 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/package.json +43 -0
package/dist/bin.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
|
package/dist/bin.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { program } from 'commander';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { createProject } from './commands/create.js';
|
|
5
|
+
import { devServer } from './commands/dev.js';
|
|
6
|
+
import { buildProject } from './commands/build.js';
|
|
7
|
+
import { deployProject } from './commands/deploy.js';
|
|
8
|
+
const version = '1.0.0';
|
|
9
|
+
program
|
|
10
|
+
.name('zylaris')
|
|
11
|
+
.description('Zylaris Framework CLI')
|
|
12
|
+
.version(version);
|
|
13
|
+
// Create command
|
|
14
|
+
program
|
|
15
|
+
.command('create <name>')
|
|
16
|
+
.description('Create a new Zylaris project')
|
|
17
|
+
.option('-t, --template <template>', 'Project template', 'default')
|
|
18
|
+
.option('--skip-install', 'Skip package installation')
|
|
19
|
+
.action(async (name, options) => {
|
|
20
|
+
console.log(chalk.blue(`Creating Zylaris project: ${name}`));
|
|
21
|
+
await createProject(name, options);
|
|
22
|
+
});
|
|
23
|
+
// Dev command
|
|
24
|
+
program
|
|
25
|
+
.command('dev')
|
|
26
|
+
.description('Start development server')
|
|
27
|
+
.option('-p, --port <port>', 'Port number', '2727')
|
|
28
|
+
.option('-h, --host <host>', 'Host address', 'localhost')
|
|
29
|
+
.option('--turbo', 'Enable turbo mode')
|
|
30
|
+
.action(async (options) => {
|
|
31
|
+
console.log(chalk.blue('Starting development server...'));
|
|
32
|
+
await devServer(options);
|
|
33
|
+
});
|
|
34
|
+
// Build command
|
|
35
|
+
program
|
|
36
|
+
.command('build')
|
|
37
|
+
.description('Build for production')
|
|
38
|
+
.option('-a, --adapter <adapter>', 'Deployment adapter (static, node, vercel, netlify, cloudflare, deno, bun)', 'static')
|
|
39
|
+
.option('--analyze', 'Analyze bundle size')
|
|
40
|
+
.option('--static', 'Static export (pre-render pages)')
|
|
41
|
+
.option('--edge', 'Use Edge runtime (for vercel, netlify, cloudflare)')
|
|
42
|
+
.option('--outDir <dir>', 'Output directory', 'dist')
|
|
43
|
+
.option('--memory <mb>', 'Serverless memory (MB)', '1024')
|
|
44
|
+
.option('--timeout <seconds>', 'Function timeout (seconds)', '10')
|
|
45
|
+
.option('--regions <regions>', 'Deployment regions (comma-separated)')
|
|
46
|
+
.action(async (options) => {
|
|
47
|
+
console.log(chalk.blue(`Building for production with ${options.adapter} adapter...`));
|
|
48
|
+
await buildProject(options);
|
|
49
|
+
});
|
|
50
|
+
// Adapters command
|
|
51
|
+
program
|
|
52
|
+
.command('adapters')
|
|
53
|
+
.description('List available deployment adapters')
|
|
54
|
+
.action(async () => {
|
|
55
|
+
const { printAdapters } = await import('./commands/build.js');
|
|
56
|
+
printAdapters();
|
|
57
|
+
});
|
|
58
|
+
// Deploy command
|
|
59
|
+
program
|
|
60
|
+
.command('deploy')
|
|
61
|
+
.description('Deploy project')
|
|
62
|
+
.option('--vercel', 'Deploy to Vercel')
|
|
63
|
+
.option('--netlify', 'Deploy to Netlify')
|
|
64
|
+
.option('--cloudflare', 'Deploy to Cloudflare Pages')
|
|
65
|
+
.action(async (options) => {
|
|
66
|
+
console.log(chalk.blue('Deploying...'));
|
|
67
|
+
await deployProject(options);
|
|
68
|
+
});
|
|
69
|
+
// Test command
|
|
70
|
+
program
|
|
71
|
+
.command('test')
|
|
72
|
+
.description('Run tests')
|
|
73
|
+
.option('--watch', 'Watch mode')
|
|
74
|
+
.option('--coverage', 'Generate coverage report')
|
|
75
|
+
.action(async () => {
|
|
76
|
+
console.log(chalk.blue('Running tests...'));
|
|
77
|
+
// Delegate to test runner
|
|
78
|
+
});
|
|
79
|
+
// Lint command
|
|
80
|
+
program
|
|
81
|
+
.command('lint')
|
|
82
|
+
.description('Run ESLint')
|
|
83
|
+
.action(async () => {
|
|
84
|
+
console.log(chalk.blue('Linting...'));
|
|
85
|
+
// Delegate to ESLint
|
|
86
|
+
});
|
|
87
|
+
// Type check command
|
|
88
|
+
program
|
|
89
|
+
.command('typecheck')
|
|
90
|
+
.description('Run TypeScript type checking')
|
|
91
|
+
.action(async () => {
|
|
92
|
+
console.log(chalk.blue('Type checking...'));
|
|
93
|
+
// Delegate to TypeScript
|
|
94
|
+
});
|
|
95
|
+
program.parse();
|
|
96
|
+
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { DeploymentTarget } from '@zylaris/adapter';
|
|
2
|
+
interface BuildOptions {
|
|
3
|
+
analyze?: boolean;
|
|
4
|
+
static?: boolean;
|
|
5
|
+
adapter?: DeploymentTarget;
|
|
6
|
+
outDir?: string;
|
|
7
|
+
edge?: boolean;
|
|
8
|
+
memory?: number;
|
|
9
|
+
timeout?: number;
|
|
10
|
+
regions?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function buildProject(options: BuildOptions): Promise<void>;
|
|
13
|
+
/** List available adapters */
|
|
14
|
+
export declare function printAdapters(): void;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAiB,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGxE,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA4GvE;AA4DD,8BAA8B;AAC9B,wBAAgB,aAAa,IAAI,IAAI,CASpC"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { resolve } from 'path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import ora from 'ora';
|
|
5
|
+
import { getAdapter, listAdapters } from '@zylaris/adapter';
|
|
6
|
+
export async function buildProject(options) {
|
|
7
|
+
const spinner = ora('Building for production...').start();
|
|
8
|
+
const startTime = Date.now();
|
|
9
|
+
try {
|
|
10
|
+
const cwd = process.cwd();
|
|
11
|
+
// Determine adapter/target
|
|
12
|
+
const target = options.adapter || 'static';
|
|
13
|
+
const adapter = getAdapter(target);
|
|
14
|
+
spinner.text = `Building with ${adapter.name} adapter...`;
|
|
15
|
+
// Load config if exists
|
|
16
|
+
const configPath = resolve(cwd, 'zylaris.config.ts');
|
|
17
|
+
let userConfig = {};
|
|
18
|
+
if (await fs.pathExists(configPath)) {
|
|
19
|
+
try {
|
|
20
|
+
const configModule = await import(configPath);
|
|
21
|
+
userConfig = configModule.default || configModule;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// Config is optional
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Build adapter config
|
|
28
|
+
const config = {
|
|
29
|
+
target,
|
|
30
|
+
outDir: options.outDir || userConfig.outDir || 'dist',
|
|
31
|
+
static: options.static || userConfig.static ? {
|
|
32
|
+
routes: ['/', '/about', '/contact'], // Auto-detect in real implementation
|
|
33
|
+
...userConfig.static,
|
|
34
|
+
} : undefined,
|
|
35
|
+
function: {
|
|
36
|
+
edge: options.edge ?? userConfig.function?.edge ?? false,
|
|
37
|
+
memory: options.memory ?? userConfig.function?.memory ?? 1024,
|
|
38
|
+
timeout: options.timeout ?? userConfig.function?.timeout ?? 10,
|
|
39
|
+
regions: options.regions?.split(',') ?? userConfig.function?.regions ?? ['iad1'],
|
|
40
|
+
...userConfig.function,
|
|
41
|
+
},
|
|
42
|
+
esbuild: userConfig.esbuild,
|
|
43
|
+
env: userConfig.env,
|
|
44
|
+
headers: {
|
|
45
|
+
'/*': 'X-Frame-Options: DENY\n X-Content-Type-Options: nosniff',
|
|
46
|
+
...userConfig.headers,
|
|
47
|
+
},
|
|
48
|
+
redirects: userConfig.redirects,
|
|
49
|
+
rewrites: userConfig.rewrites,
|
|
50
|
+
trailingSlash: userConfig.trailingSlash ?? 'ignore',
|
|
51
|
+
cleanUrls: userConfig.cleanUrls ?? true,
|
|
52
|
+
};
|
|
53
|
+
// Run build
|
|
54
|
+
const result = await adapter.build(config);
|
|
55
|
+
const duration = ((Date.now() - startTime) / 1000).toFixed(2);
|
|
56
|
+
if (!result.success) {
|
|
57
|
+
spinner.fail(chalk.red('Build failed'));
|
|
58
|
+
for (const error of result.errors) {
|
|
59
|
+
console.error(chalk.red(` ✗ ${error}`));
|
|
60
|
+
}
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
spinner.succeed(chalk.green(`Build completed in ${duration}s`));
|
|
64
|
+
// Print summary
|
|
65
|
+
console.log('\n' + chalk.bold('Output:'));
|
|
66
|
+
console.log(chalk.cyan(` ${result.outDir}/`));
|
|
67
|
+
if (result.files.length > 0) {
|
|
68
|
+
console.log(chalk.gray(` (${result.files.length} files generated)`));
|
|
69
|
+
}
|
|
70
|
+
// Print bundle analysis
|
|
71
|
+
if (result.analysis && options.analyze) {
|
|
72
|
+
console.log('\n' + chalk.bold('Bundle Analysis:'));
|
|
73
|
+
console.log(` Total: ${formatSize(result.analysis.totalSize)}`);
|
|
74
|
+
console.log(` Client: ${formatSize(result.analysis.clientSize)}`);
|
|
75
|
+
if (result.analysis.serverSize) {
|
|
76
|
+
console.log(` Server: ${formatSize(result.analysis.serverSize)}`);
|
|
77
|
+
}
|
|
78
|
+
console.log('\n Top Assets:');
|
|
79
|
+
for (const asset of result.analysis.assets.slice(0, 5)) {
|
|
80
|
+
console.log(` ${asset.file}`);
|
|
81
|
+
console.log(` Size: ${formatSize(asset.size)} | Gzipped: ${formatSize(asset.gzip)}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Print deployment info
|
|
85
|
+
console.log('\n' + chalk.bold('Deploy:'));
|
|
86
|
+
printDeployInstructions(target, result.outDir);
|
|
87
|
+
if (result.warnings.length > 0) {
|
|
88
|
+
console.log('\n' + chalk.yellow('Warnings:'));
|
|
89
|
+
for (const warning of result.warnings) {
|
|
90
|
+
console.log(chalk.yellow(` ⚠ ${warning}`));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
spinner.fail(chalk.red('Build failed'));
|
|
96
|
+
console.error(error);
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** Print deployment instructions */
|
|
101
|
+
function printDeployInstructions(target, outDir) {
|
|
102
|
+
const instructions = {
|
|
103
|
+
static: [
|
|
104
|
+
' Upload to any static hosting:',
|
|
105
|
+
chalk.gray(` - GitHub Pages: push to gh-pages branch`),
|
|
106
|
+
chalk.gray(` - Netlify: npx netlify deploy --prod --dir=${outDir}`),
|
|
107
|
+
chalk.gray(` - Vercel: npx vercel --prod`),
|
|
108
|
+
chalk.gray(` - Cloudflare Pages: npx wrangler pages deploy ${outDir}`),
|
|
109
|
+
],
|
|
110
|
+
node: [
|
|
111
|
+
' Run the server:',
|
|
112
|
+
chalk.gray(` cd ${outDir}`),
|
|
113
|
+
chalk.gray(` npm install`),
|
|
114
|
+
chalk.gray(` npm start`),
|
|
115
|
+
'',
|
|
116
|
+
' Or with Docker:',
|
|
117
|
+
chalk.gray(` docker build -t zylaris-app .`),
|
|
118
|
+
chalk.gray(` docker run -p 3000:3000 zylaris-app`),
|
|
119
|
+
],
|
|
120
|
+
vercel: [
|
|
121
|
+
' Deploy to Vercel:',
|
|
122
|
+
chalk.gray(` npx vercel --prod`),
|
|
123
|
+
],
|
|
124
|
+
netlify: [
|
|
125
|
+
' Deploy to Netlify:',
|
|
126
|
+
chalk.gray(` npx netlify deploy --prod`),
|
|
127
|
+
],
|
|
128
|
+
cloudflare: [
|
|
129
|
+
' Deploy to Cloudflare:',
|
|
130
|
+
chalk.gray(` npx wrangler pages deploy ${outDir}`),
|
|
131
|
+
chalk.gray(` # or for Workers:`),
|
|
132
|
+
chalk.gray(` npx wrangler deploy`),
|
|
133
|
+
],
|
|
134
|
+
deno: [
|
|
135
|
+
' Deploy to Deno Deploy:',
|
|
136
|
+
chalk.gray(` npx deployctl deploy --project=zylaris-app ${outDir}/server.ts`),
|
|
137
|
+
],
|
|
138
|
+
bun: [
|
|
139
|
+
' Run with Bun:',
|
|
140
|
+
chalk.gray(` bun ${outDir}/server.js`),
|
|
141
|
+
'',
|
|
142
|
+
' Or use Docker for deployment',
|
|
143
|
+
],
|
|
144
|
+
};
|
|
145
|
+
console.log(instructions[target].join('\n'));
|
|
146
|
+
}
|
|
147
|
+
/** Format bytes to human readable */
|
|
148
|
+
function formatSize(bytes) {
|
|
149
|
+
if (bytes === 0)
|
|
150
|
+
return '0 B';
|
|
151
|
+
const k = 1024;
|
|
152
|
+
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
153
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
154
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
|
|
155
|
+
}
|
|
156
|
+
/** List available adapters */
|
|
157
|
+
export function printAdapters() {
|
|
158
|
+
console.log(chalk.bold('\nAvailable Adapters:\n'));
|
|
159
|
+
for (const { target, name, description } of listAdapters()) {
|
|
160
|
+
console.log(` ${chalk.cyan(target.padEnd(12))} ${chalk.bold(name)}`);
|
|
161
|
+
console.log(` ${''.padEnd(12)} ${chalk.gray(description)}\n`);
|
|
162
|
+
}
|
|
163
|
+
console.log(`Usage: ${chalk.yellow('zylaris build --adapter <target>')}\n`);
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAQA,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEvF"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { resolve, join } from 'path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import ora from 'ora';
|
|
5
|
+
import inquirer from 'inquirer';
|
|
6
|
+
const TEMPLATES = ['default', 'api', 'docs', 'blog', 'ecommerce'];
|
|
7
|
+
export async function createProject(name, options) {
|
|
8
|
+
const targetDir = resolve(process.cwd(), name);
|
|
9
|
+
// Check if directory exists
|
|
10
|
+
if (await fs.pathExists(targetDir)) {
|
|
11
|
+
const { overwrite } = await inquirer.prompt([{
|
|
12
|
+
type: 'confirm',
|
|
13
|
+
name: 'overwrite',
|
|
14
|
+
message: `Directory ${name} already exists. Overwrite?`,
|
|
15
|
+
default: false,
|
|
16
|
+
}]);
|
|
17
|
+
if (!overwrite) {
|
|
18
|
+
console.log(chalk.yellow('Cancelled.'));
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
await fs.remove(targetDir);
|
|
22
|
+
}
|
|
23
|
+
// Validate template
|
|
24
|
+
let template = options.template || 'default';
|
|
25
|
+
if (!TEMPLATES.includes(template)) {
|
|
26
|
+
const { selectedTemplate } = await inquirer.prompt([{
|
|
27
|
+
type: 'list',
|
|
28
|
+
name: 'selectedTemplate',
|
|
29
|
+
message: 'Select a template:',
|
|
30
|
+
choices: TEMPLATES,
|
|
31
|
+
}]);
|
|
32
|
+
template = selectedTemplate;
|
|
33
|
+
}
|
|
34
|
+
const spinner = ora('Creating project...').start();
|
|
35
|
+
try {
|
|
36
|
+
// Create directory structure
|
|
37
|
+
await fs.ensureDir(targetDir);
|
|
38
|
+
// Create package.json
|
|
39
|
+
await createPackageJson(targetDir, name, template);
|
|
40
|
+
// Create tsconfig.json
|
|
41
|
+
await createTsConfig(targetDir);
|
|
42
|
+
// Create zylaris.config.ts
|
|
43
|
+
await createConfig(targetDir, template);
|
|
44
|
+
// Create source files
|
|
45
|
+
await createSourceFiles(targetDir, template);
|
|
46
|
+
// Create public folder
|
|
47
|
+
await fs.ensureDir(join(targetDir, 'public'));
|
|
48
|
+
// Install dependencies
|
|
49
|
+
if (!options.skipInstall) {
|
|
50
|
+
spinner.text = 'Installing dependencies...';
|
|
51
|
+
// In real implementation, run npm/pnpm install
|
|
52
|
+
}
|
|
53
|
+
spinner.succeed(chalk.green(`Project ${name} created successfully!`));
|
|
54
|
+
console.log('\nNext steps:');
|
|
55
|
+
console.log(chalk.cyan(` cd ${name}`));
|
|
56
|
+
console.log(chalk.cyan(' npm run dev'));
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
spinner.fail(chalk.red('Failed to create project'));
|
|
60
|
+
console.error(error);
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async function createPackageJson(targetDir, name, _template) {
|
|
65
|
+
const packageJson = {
|
|
66
|
+
name,
|
|
67
|
+
version: '0.1.0',
|
|
68
|
+
private: true,
|
|
69
|
+
type: 'module',
|
|
70
|
+
scripts: {
|
|
71
|
+
dev: 'zylaris dev',
|
|
72
|
+
build: 'zylaris build',
|
|
73
|
+
start: 'node .zylaris/server.js',
|
|
74
|
+
test: 'zylaris test',
|
|
75
|
+
lint: 'zylaris lint',
|
|
76
|
+
typecheck: 'zylaris typecheck',
|
|
77
|
+
},
|
|
78
|
+
dependencies: {
|
|
79
|
+
zylaris: '^1.0.0',
|
|
80
|
+
react: '^18.2.0',
|
|
81
|
+
'react-dom': '^18.2.0',
|
|
82
|
+
},
|
|
83
|
+
devDependencies: {
|
|
84
|
+
'@types/react': '^18.2.0',
|
|
85
|
+
'@types/react-dom': '^18.2.0',
|
|
86
|
+
typescript: '^5.3.3',
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
await fs.writeJson(join(targetDir, 'package.json'), packageJson, { spaces: 2 });
|
|
90
|
+
}
|
|
91
|
+
async function createTsConfig(targetDir) {
|
|
92
|
+
const tsConfig = {
|
|
93
|
+
compilerOptions: {
|
|
94
|
+
target: 'ES2022',
|
|
95
|
+
lib: ['ES2022', 'DOM', 'DOM.Iterable'],
|
|
96
|
+
module: 'ESNext',
|
|
97
|
+
moduleResolution: 'bundler',
|
|
98
|
+
resolveJsonModule: true,
|
|
99
|
+
allowJs: true,
|
|
100
|
+
checkJs: false,
|
|
101
|
+
declaration: true,
|
|
102
|
+
sourceMap: true,
|
|
103
|
+
strict: true,
|
|
104
|
+
noUnusedLocals: true,
|
|
105
|
+
noUnusedParameters: true,
|
|
106
|
+
noFallthroughCasesInSwitch: true,
|
|
107
|
+
esModuleInterop: true,
|
|
108
|
+
skipLibCheck: true,
|
|
109
|
+
forceConsistentCasingInFileNames: true,
|
|
110
|
+
jsx: 'react-jsx',
|
|
111
|
+
jsxImportSource: 'zylaris',
|
|
112
|
+
baseUrl: '.',
|
|
113
|
+
paths: {
|
|
114
|
+
'@/*': ['./src/*'],
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
include: ['src/**/*'],
|
|
118
|
+
exclude: ['node_modules', 'dist', '.zylaris'],
|
|
119
|
+
};
|
|
120
|
+
await fs.writeJson(join(targetDir, 'tsconfig.json'), tsConfig, { spaces: 2 });
|
|
121
|
+
}
|
|
122
|
+
async function createConfig(targetDir, _template) {
|
|
123
|
+
const config = `import { defineConfig } from 'zylaris';
|
|
124
|
+
|
|
125
|
+
export default defineConfig({
|
|
126
|
+
runtime: 'node',
|
|
127
|
+
rendering: {
|
|
128
|
+
default: 'ssr',
|
|
129
|
+
},
|
|
130
|
+
islands: {
|
|
131
|
+
mode: 'auto',
|
|
132
|
+
},
|
|
133
|
+
compiler: {
|
|
134
|
+
target: 'es2022',
|
|
135
|
+
minify: true,
|
|
136
|
+
},
|
|
137
|
+
server: {
|
|
138
|
+
port: 3000,
|
|
139
|
+
},
|
|
140
|
+
styling: {
|
|
141
|
+
tailwind: true,
|
|
142
|
+
},
|
|
143
|
+
typescript: {
|
|
144
|
+
strict: true,
|
|
145
|
+
},
|
|
146
|
+
});
|
|
147
|
+
`;
|
|
148
|
+
await fs.writeFile(join(targetDir, 'zylaris.config.ts'), config);
|
|
149
|
+
}
|
|
150
|
+
async function createSourceFiles(targetDir, _template) {
|
|
151
|
+
const srcDir = join(targetDir, 'src');
|
|
152
|
+
const appDir = join(srcDir, 'app');
|
|
153
|
+
await fs.ensureDir(appDir);
|
|
154
|
+
// Create layout.tsx
|
|
155
|
+
const layout = `export default function RootLayout({
|
|
156
|
+
children,
|
|
157
|
+
}: {
|
|
158
|
+
children: React.ReactNode;
|
|
159
|
+
}) {
|
|
160
|
+
return (
|
|
161
|
+
<html lang="en">
|
|
162
|
+
<body>
|
|
163
|
+
{children}
|
|
164
|
+
</body>
|
|
165
|
+
</html>
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
`;
|
|
169
|
+
await fs.writeFile(join(appDir, 'layout.tsx'), layout);
|
|
170
|
+
// Create page.tsx
|
|
171
|
+
const page = `export default function HomePage() {
|
|
172
|
+
return (
|
|
173
|
+
<main>
|
|
174
|
+
<h1>Welcome to Zylaris!</h1>
|
|
175
|
+
<p>Get started by editing src/app/page.tsx</p>
|
|
176
|
+
</main>
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
`;
|
|
180
|
+
await fs.writeFile(join(appDir, 'page.tsx'), page);
|
|
181
|
+
// Create global.css
|
|
182
|
+
const globalCss = `@tailwind base;
|
|
183
|
+
@tailwind components;
|
|
184
|
+
@tailwind utilities;
|
|
185
|
+
|
|
186
|
+
body {
|
|
187
|
+
font-family: system-ui, -apple-system, sans-serif;
|
|
188
|
+
}
|
|
189
|
+
`;
|
|
190
|
+
await fs.writeFile(join(appDir, 'global.css'), globalCss);
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCzE"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { resolve } from 'path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import ora from 'ora';
|
|
5
|
+
// import { execa } from 'execa';
|
|
6
|
+
async function execa(_cmd, _args, _options) {
|
|
7
|
+
throw new Error('execa not implemented');
|
|
8
|
+
}
|
|
9
|
+
export async function deployProject(options) {
|
|
10
|
+
const spinner = ora('Deploying...').start();
|
|
11
|
+
try {
|
|
12
|
+
const cwd = process.cwd();
|
|
13
|
+
// Check if build exists
|
|
14
|
+
const distPath = resolve(cwd, 'dist');
|
|
15
|
+
if (!(await fs.pathExists(distPath))) {
|
|
16
|
+
spinner.text = 'Building first...';
|
|
17
|
+
// await buildProject({});
|
|
18
|
+
}
|
|
19
|
+
if (options.vercel) {
|
|
20
|
+
spinner.text = 'Deploying to Vercel...';
|
|
21
|
+
await deployToVercel(cwd);
|
|
22
|
+
}
|
|
23
|
+
else if (options.netlify) {
|
|
24
|
+
spinner.text = 'Deploying to Netlify...';
|
|
25
|
+
await deployToNetlify(cwd);
|
|
26
|
+
}
|
|
27
|
+
else if (options.cloudflare) {
|
|
28
|
+
spinner.text = 'Deploying to Cloudflare Pages...';
|
|
29
|
+
await deployToCloudflare(cwd);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
// Default: Zylaris Cloud
|
|
33
|
+
spinner.text = 'Deploying to Zylaris Cloud...';
|
|
34
|
+
await deployToZylarisCloud(cwd);
|
|
35
|
+
}
|
|
36
|
+
spinner.succeed(chalk.green('Deployment complete!'));
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
spinner.fail(chalk.red('Deployment failed'));
|
|
40
|
+
console.error(error);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async function deployToVercel(cwd) {
|
|
45
|
+
// Check if vercel CLI is installed
|
|
46
|
+
try {
|
|
47
|
+
await execa('vercel', ['--version'], { cwd });
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
console.log(chalk.yellow('Vercel CLI not found. Installing...'));
|
|
51
|
+
await execa('npm', ['install', '-g', 'vercel'], { cwd });
|
|
52
|
+
}
|
|
53
|
+
await execa('vercel', ['--prod'], { cwd, stdio: 'inherit' });
|
|
54
|
+
}
|
|
55
|
+
async function deployToNetlify(cwd) {
|
|
56
|
+
try {
|
|
57
|
+
await execa('netlify', ['--version'], { cwd });
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
console.log(chalk.yellow('Netlify CLI not found. Installing...'));
|
|
61
|
+
await execa('npm', ['install', '-g', 'netlify-cli'], { cwd });
|
|
62
|
+
}
|
|
63
|
+
await execa('netlify', ['deploy', '--prod', '--dir=dist'], { cwd, stdio: 'inherit' });
|
|
64
|
+
}
|
|
65
|
+
async function deployToCloudflare(cwd) {
|
|
66
|
+
try {
|
|
67
|
+
await execa('wrangler', ['--version'], { cwd });
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
console.log(chalk.yellow('Wrangler not found. Installing...'));
|
|
71
|
+
await execa('npm', ['install', '-g', 'wrangler'], { cwd });
|
|
72
|
+
}
|
|
73
|
+
await execa('wrangler', ['pages', 'deploy', 'dist'], { cwd, stdio: 'inherit' });
|
|
74
|
+
}
|
|
75
|
+
async function deployToZylarisCloud(_cwd) {
|
|
76
|
+
// In real implementation, deploy to Zylaris Cloud
|
|
77
|
+
console.log(chalk.blue('Deploying to Zylaris Cloud...'));
|
|
78
|
+
console.log(chalk.yellow('Coming soon!'));
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAIA,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA4CD,wBAAsB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDlE"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { createServer } from '@zylaris/dev-server';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import net from 'net';
|
|
4
|
+
// Check if port is available
|
|
5
|
+
function isPortAvailable(port, host) {
|
|
6
|
+
return new Promise((resolve) => {
|
|
7
|
+
const server = net.createServer();
|
|
8
|
+
server.once('error', () => {
|
|
9
|
+
resolve(false);
|
|
10
|
+
});
|
|
11
|
+
server.once('listening', () => {
|
|
12
|
+
server.close();
|
|
13
|
+
resolve(true);
|
|
14
|
+
});
|
|
15
|
+
server.listen(port, host);
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
// Find available port starting from preferred port
|
|
19
|
+
async function findAvailablePort(preferredPort, host) {
|
|
20
|
+
let port = preferredPort;
|
|
21
|
+
while (port < preferredPort + 10) {
|
|
22
|
+
if (await isPortAvailable(port, host)) {
|
|
23
|
+
return port;
|
|
24
|
+
}
|
|
25
|
+
port++;
|
|
26
|
+
}
|
|
27
|
+
throw new Error(`No available port found between ${preferredPort} and ${preferredPort + 10}`);
|
|
28
|
+
}
|
|
29
|
+
// Print banner
|
|
30
|
+
function printBanner(port, host, wsPort) {
|
|
31
|
+
const box = `
|
|
32
|
+
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
33
|
+
┃ ┃
|
|
34
|
+
┃ 🚀 ${chalk.bold('Zylaris Dev Server')} ┃
|
|
35
|
+
┃ ┃
|
|
36
|
+
┃ ${chalk.cyan('➜')} Local: ${chalk.cyan(`http://${host}:${port}`)} ┃
|
|
37
|
+
┃ ${chalk.magenta('➜')} WebSocket: ${chalk.magenta(`ws://${host}:${wsPort}`)} ┃
|
|
38
|
+
┃ ┃
|
|
39
|
+
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
40
|
+
`;
|
|
41
|
+
console.log(box);
|
|
42
|
+
}
|
|
43
|
+
export async function devServer(options) {
|
|
44
|
+
const preferredPort = parseInt(options.port || '2727');
|
|
45
|
+
const host = options.host || 'localhost';
|
|
46
|
+
// Clear console for clean output
|
|
47
|
+
console.clear();
|
|
48
|
+
console.log(chalk.gray('Starting development server...\n'));
|
|
49
|
+
try {
|
|
50
|
+
// Find available port
|
|
51
|
+
const port = await findAvailablePort(preferredPort, host);
|
|
52
|
+
if (port !== preferredPort) {
|
|
53
|
+
console.log(chalk.yellow(`⚠ Port ${preferredPort} is in use, using port ${port} instead\n`));
|
|
54
|
+
}
|
|
55
|
+
const server = await createServer({
|
|
56
|
+
port,
|
|
57
|
+
host,
|
|
58
|
+
turbo: options.turbo,
|
|
59
|
+
});
|
|
60
|
+
// Print prominent banner
|
|
61
|
+
const wsPort = port + 1;
|
|
62
|
+
printBanner(port, host, wsPort);
|
|
63
|
+
// Handle graceful shutdown
|
|
64
|
+
const shutdown = () => {
|
|
65
|
+
console.log(chalk.yellow('\n🛑 Shutting down server...'));
|
|
66
|
+
server.close(() => {
|
|
67
|
+
console.log(chalk.green('✓ Server closed'));
|
|
68
|
+
process.exit(0);
|
|
69
|
+
});
|
|
70
|
+
// Force exit after 3 seconds
|
|
71
|
+
setTimeout(() => {
|
|
72
|
+
console.log(chalk.red('Force exit after timeout'));
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}, 3000);
|
|
75
|
+
};
|
|
76
|
+
process.on('SIGINT', shutdown);
|
|
77
|
+
process.on('SIGTERM', shutdown);
|
|
78
|
+
// Handle uncaught errors
|
|
79
|
+
process.on('uncaughtException', (err) => {
|
|
80
|
+
console.error(chalk.red('\n✗ Uncaught exception:'), err);
|
|
81
|
+
shutdown();
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
console.error(chalk.red('\n✗ Failed to start dev server:'), error);
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=dev.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AAEd,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@zylaris/cli",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "CLI for Zylaris Framework",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"zylaris": "./dist/bin.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"templates"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"dev": "tsc --watch",
|
|
17
|
+
"typecheck": "tsc --noEmit",
|
|
18
|
+
"clean": "rm -rf dist"
|
|
19
|
+
},
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@zylaris/adapter": "workspace:*",
|
|
22
|
+
"@zylaris/compiler": "workspace:*",
|
|
23
|
+
"@zylaris/dev-server": "workspace:*",
|
|
24
|
+
"commander": "^11.1.0",
|
|
25
|
+
"chalk": "^5.3.0",
|
|
26
|
+
"inquirer": "^9.2.12",
|
|
27
|
+
"ora": "^8.0.1",
|
|
28
|
+
"fs-extra": "^11.2.0",
|
|
29
|
+
"glob": "^10.3.10",
|
|
30
|
+
"chokidar": "^3.5.3"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@types/fs-extra": "^11.0.4",
|
|
34
|
+
"@types/inquirer": "^9.0.7",
|
|
35
|
+
"@types/node": "^20.0.0",
|
|
36
|
+
"typescript": "^5.3.3"
|
|
37
|
+
},
|
|
38
|
+
"keywords": [
|
|
39
|
+
"cli",
|
|
40
|
+
"zylaris"
|
|
41
|
+
],
|
|
42
|
+
"license": "MIT"
|
|
43
|
+
}
|