@ereactthohir/cli 1.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 ADDED
@@ -0,0 +1,47 @@
1
+ # @ereactthohir/cli
2
+
3
+ The command line interface for the **EreactThohir** framework.
4
+
5
+ ## ๐Ÿš€ Installation
6
+
7
+ Install globally or use via `npx`:
8
+
9
+ ```bash
10
+ npm install -g @ereactthohir/cli
11
+ ```
12
+
13
+ Or:
14
+
15
+ ```bash
16
+ npx @ereactthohir/cli create my-app
17
+ ```
18
+
19
+ ## ๐Ÿ›  Commands
20
+
21
+ ### Scaffolding
22
+ - `ereact make:controller <Name>`: Create a new controller.
23
+ - `ereact make:model <Name>`: Create a new ORM model.
24
+ - `ereact make:service <Name>`: Create a new business logic service.
25
+ - `ereact make:screen <Name>`: Create a new UI screen.
26
+ - `ereact make:component <Name>`: Create a new reusable component.
27
+ - `ereact make:migration <Name>`: Create a database migration.
28
+ - `ereact make:seeder <Name>`: Create a database seeder.
29
+
30
+ ### Database
31
+ - `ereact migrate`: Run pending migrations.
32
+ - `ereact migrate:rollback`: Rollback the last migration batch.
33
+ - `ereact db:seed`: Seed the database.
34
+
35
+ ### Development & Build
36
+ - `ereact serve`: Start the development server.
37
+ - `ereact build:web`: Build for web.
38
+ - `ereact build:android`: Build Android APK/AAB.
39
+ - `ereact build:ios`: Build iOS IPA.
40
+
41
+ ## ๐Ÿ‘ค Author
42
+
43
+ **KangPCode (Dhafa Nazula Permadi)**
44
+
45
+ ## ๐Ÿ“„ License
46
+
47
+ MIT
@@ -0,0 +1,4 @@
1
+ export declare function buildWeb(): Promise<void>;
2
+ export declare function buildAndroid(): Promise<void>;
3
+ export declare function buildIOS(): Promise<void>;
4
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAKA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAoI9C;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD;AAED,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAG9C"}
@@ -0,0 +1,139 @@
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.buildWeb = buildWeb;
7
+ exports.buildAndroid = buildAndroid;
8
+ exports.buildIOS = buildIOS;
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const fs_extra_1 = __importDefault(require("fs-extra"));
12
+ const esbuild_1 = require("esbuild");
13
+ async function buildWeb() {
14
+ const projectRoot = process.cwd();
15
+ const distDir = path_1.default.join(projectRoot, 'dist');
16
+ if (!fs_extra_1.default.existsSync(path_1.default.join(projectRoot, 'ereact.json'))) {
17
+ console.error(chalk_1.default.red('Error: You are not in an EreactThohir project root.'));
18
+ return;
19
+ }
20
+ console.log(chalk_1.default.cyan.bold('\n๐Ÿ—๏ธ EreactThohir Framework - Building for Web'));
21
+ console.log(chalk_1.default.gray('โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€'));
22
+ try {
23
+ // Clean dist directory
24
+ console.log(chalk_1.default.blue('๐Ÿงน Cleaning dist directory...'));
25
+ await fs_extra_1.default.remove(distDir);
26
+ await fs_extra_1.default.ensureDir(distDir);
27
+ console.log(chalk_1.default.green('โœ“ Dist directory cleaned'));
28
+ // Find entry point
29
+ const viewsDir = path_1.default.join(projectRoot, 'resources/views');
30
+ const entryFile = path_1.default.join(viewsDir, 'HomeScreen.tsx');
31
+ if (!fs_extra_1.default.existsSync(entryFile)) {
32
+ console.error(chalk_1.default.red(`Error: Entry file not found at ${entryFile}`));
33
+ return;
34
+ }
35
+ console.log(chalk_1.default.blue('๐Ÿ“ฆ Bundling application...'));
36
+ console.log(chalk_1.default.gray(` Entry: ${entryFile}`));
37
+ // Create a temporary entry file that includes React DOM rendering
38
+ const tempEntryFile = path_1.default.join(projectRoot, '.ereact-build-entry.tsx');
39
+ const entryContent = `
40
+ import React from 'react';
41
+ import ReactDOM from 'react-dom/client';
42
+ import HomeScreen from './resources/views/HomeScreen';
43
+
44
+ const root = ReactDOM.createRoot(document.getElementById('root')!);
45
+ root.render(<HomeScreen />);
46
+ `;
47
+ await fs_extra_1.default.writeFile(tempEntryFile, entryContent);
48
+ // Build with esbuild
49
+ await (0, esbuild_1.build)({
50
+ entryPoints: [tempEntryFile],
51
+ bundle: true,
52
+ minify: true,
53
+ sourcemap: true,
54
+ outfile: path_1.default.join(distDir, 'bundle.js'),
55
+ platform: 'browser',
56
+ target: ['es2020'],
57
+ loader: {
58
+ '.tsx': 'tsx',
59
+ '.ts': 'ts',
60
+ '.jsx': 'jsx',
61
+ '.js': 'js',
62
+ },
63
+ jsxFactory: 'React.createElement',
64
+ jsxFragment: 'React.Fragment',
65
+ define: {
66
+ 'process.env.NODE_ENV': '"production"',
67
+ },
68
+ external: [],
69
+ });
70
+ // Clean up temp file
71
+ await fs_extra_1.default.remove(tempEntryFile);
72
+ console.log(chalk_1.default.green('โœ“ Bundle created'));
73
+ // Create HTML file
74
+ console.log(chalk_1.default.blue('๐Ÿ“„ Generating HTML...'));
75
+ const htmlContent = `<!DOCTYPE html>
76
+ <html lang="id">
77
+ <head>
78
+ <meta charset="UTF-8">
79
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
80
+ <title>EreactThohir App</title>
81
+ <script src="https://cdn.tailwindcss.com"></script>
82
+ <style>
83
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap');
84
+ body {
85
+ font-family: 'Inter', sans-serif;
86
+ margin: 0;
87
+ padding: 0;
88
+ }
89
+ @keyframes gradient {
90
+ 0% { background-position: 0% 50%; }
91
+ 50% { background-position: 100% 50%; }
92
+ 100% { background-position: 0% 50%; }
93
+ }
94
+ .animate-gradient {
95
+ background-size: 200% 200%;
96
+ animation: gradient 3s ease infinite;
97
+ }
98
+ </style>
99
+ </head>
100
+ <body>
101
+ <div id="root"></div>
102
+ <script src="./bundle.js"></script>
103
+ </body>
104
+ </html>`;
105
+ await fs_extra_1.default.writeFile(path_1.default.join(distDir, 'index.html'), htmlContent);
106
+ console.log(chalk_1.default.green('โœ“ HTML generated'));
107
+ // Copy public assets if they exist
108
+ const publicDir = path_1.default.join(projectRoot, 'public');
109
+ if (fs_extra_1.default.existsSync(publicDir)) {
110
+ console.log(chalk_1.default.blue('๐Ÿ“ Copying public assets...'));
111
+ await fs_extra_1.default.copy(publicDir, distDir, {
112
+ filter: (src) => !src.includes('node_modules'),
113
+ });
114
+ console.log(chalk_1.default.green('โœ“ Public assets copied'));
115
+ }
116
+ // Get bundle size
117
+ const bundleStats = await fs_extra_1.default.stat(path_1.default.join(distDir, 'bundle.js'));
118
+ const bundleSize = (bundleStats.size / 1024).toFixed(2);
119
+ console.log(chalk_1.default.green.bold('\nโœ… Build completed successfully!'));
120
+ console.log(chalk_1.default.gray('โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€'));
121
+ console.log(chalk_1.default.white(' Output directory: ') + chalk_1.default.cyan(distDir));
122
+ console.log(chalk_1.default.white(' Bundle size: ') + chalk_1.default.cyan(`${bundleSize} KB`));
123
+ console.log(chalk_1.default.gray('\n To serve the build, run:'));
124
+ console.log(chalk_1.default.cyan(' npx serve dist\n'));
125
+ }
126
+ catch (error) {
127
+ console.error(chalk_1.default.red('\nโŒ Build failed:'), error);
128
+ process.exit(1);
129
+ }
130
+ }
131
+ async function buildAndroid() {
132
+ console.log(chalk_1.default.yellow('๐Ÿšง Android build is not yet implemented'));
133
+ console.log(chalk_1.default.gray('This feature is coming soon!'));
134
+ }
135
+ async function buildIOS() {
136
+ console.log(chalk_1.default.yellow('๐Ÿšง iOS build is not yet implemented'));
137
+ console.log(chalk_1.default.gray('This feature is coming soon!'));
138
+ }
139
+ //# 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,2 @@
1
+ export declare function create(name: string): Promise<void>;
2
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAMA,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,iBAiRxC"}