mycontext-cli 4.2.6 → 4.2.8
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 +531 -144
- package/dist/README.md +531 -144
- package/dist/cli.js +14 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +19 -47
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init-interactive.d.ts +147 -0
- package/dist/commands/init-interactive.d.ts.map +1 -0
- package/dist/commands/init-interactive.js +917 -0
- package/dist/commands/init-interactive.js.map +1 -0
- package/dist/config/shadcn-catalog.json +93 -0
- package/dist/core/brain/BrainClient.d.ts +1 -1
- package/dist/core/brain/BrainClient.d.ts.map +1 -1
- package/dist/core/brain/BrainClient.js +5 -5
- package/dist/core/brain/BrainClient.js.map +1 -1
- package/dist/doctor/DoctorEngine.d.ts.map +1 -1
- package/dist/doctor/DoctorEngine.js +21 -11
- package/dist/doctor/DoctorEngine.js.map +1 -1
- package/dist/doctor/rules/dead-code-rules.d.ts.map +1 -1
- package/dist/doctor/rules/dead-code-rules.js +33 -0
- package/dist/doctor/rules/dead-code-rules.js.map +1 -1
- package/dist/doctor/rules/index.d.ts +3 -1
- package/dist/doctor/rules/index.d.ts.map +1 -1
- package/dist/doctor/rules/index.js +7 -1
- package/dist/doctor/rules/index.js.map +1 -1
- package/dist/doctor/rules/instantdb-rules.d.ts +3 -0
- package/dist/doctor/rules/instantdb-rules.d.ts.map +1 -0
- package/dist/doctor/rules/instantdb-rules.js +544 -0
- package/dist/doctor/rules/instantdb-rules.js.map +1 -0
- package/dist/doctor/rules/nextjs-rules.d.ts.map +1 -1
- package/dist/doctor/rules/nextjs-rules.js +53 -3
- package/dist/doctor/rules/nextjs-rules.js.map +1 -1
- package/dist/doctor/rules/typescript-rules.d.ts +3 -0
- package/dist/doctor/rules/typescript-rules.d.ts.map +1 -0
- package/dist/doctor/rules/typescript-rules.js +177 -0
- package/dist/doctor/rules/typescript-rules.js.map +1 -0
- package/dist/package.json +4 -2
- package/dist/services/ComponentInferenceEngine.d.ts +66 -0
- package/dist/services/ComponentInferenceEngine.d.ts.map +1 -0
- package/dist/services/ComponentInferenceEngine.js +302 -0
- package/dist/services/ComponentInferenceEngine.js.map +1 -0
- package/dist/services/ComponentRegistry.d.ts +61 -0
- package/dist/services/ComponentRegistry.d.ts.map +1 -0
- package/dist/services/ComponentRegistry.js +128 -0
- package/dist/services/ComponentRegistry.js.map +1 -0
- package/dist/services/InferenceEngine.d.ts +41 -0
- package/dist/services/InferenceEngine.d.ts.map +1 -0
- package/dist/services/InferenceEngine.js +307 -0
- package/dist/services/InferenceEngine.js.map +1 -0
- package/dist/services/Planner.d.ts +77 -0
- package/dist/services/Planner.d.ts.map +1 -0
- package/dist/services/Planner.js +828 -0
- package/dist/services/Planner.js.map +1 -0
- package/dist/services/ProjectScanner.d.ts.map +1 -1
- package/dist/services/ProjectScanner.js +15 -1
- package/dist/services/ProjectScanner.js.map +1 -1
- package/dist/services/ScaffoldEngine.d.ts +87 -0
- package/dist/services/ScaffoldEngine.d.ts.map +1 -0
- package/dist/services/ScaffoldEngine.js +409 -0
- package/dist/services/ScaffoldEngine.js.map +1 -0
- package/dist/services/ScaffoldPreview.d.ts +62 -0
- package/dist/services/ScaffoldPreview.d.ts.map +1 -0
- package/dist/services/ScaffoldPreview.js +292 -0
- package/dist/services/ScaffoldPreview.js.map +1 -0
- package/dist/services/TemplateEngine.d.ts +136 -0
- package/dist/services/TemplateEngine.d.ts.map +1 -0
- package/dist/services/TemplateEngine.js +483 -0
- package/dist/services/TemplateEngine.js.map +1 -0
- package/dist/services/TemplateHelpers.d.ts +9 -0
- package/dist/services/TemplateHelpers.d.ts.map +1 -0
- package/dist/services/TemplateHelpers.js +212 -0
- package/dist/services/TemplateHelpers.js.map +1 -0
- package/dist/templates/actions/auth-actions.ts.hbs +140 -0
- package/dist/templates/actions/crud-actions.ts.hbs +113 -0
- package/dist/templates/components/auth/login-form.tsx.hbs +67 -0
- package/dist/templates/components/auth/login-skeleton.tsx.hbs +24 -0
- package/dist/templates/components/auth/register-form.tsx.hbs +116 -0
- package/dist/templates/components/crud/entity-card.tsx.hbs +71 -0
- package/dist/templates/components/crud/entity-form.tsx.hbs +158 -0
- package/dist/templates/components/crud/entity-skeleton.tsx.hbs +90 -0
- package/dist/templates/components/crud/entity-table.tsx.hbs +129 -0
- package/dist/templates/components/ui/button.tsx.hbs +53 -0
- package/dist/templates/components/ui/card.tsx.hbs +68 -0
- package/dist/templates/components/ui/input.tsx.hbs +33 -0
- package/dist/templates/components/ui/label.tsx.hbs +20 -0
- package/dist/templates/components/ui/skeleton.tsx.hbs +15 -0
- package/dist/templates/components/ui/theme-provider.tsx.hbs +66 -0
- package/dist/templates/components/ui/theme-toggle.tsx.hbs +30 -0
- package/dist/templates/config/app.css.hbs +150 -0
- package/dist/templates/layouts/dashboard-layout.tsx.hbs +69 -0
- package/dist/templates/layouts/error.tsx.hbs +51 -0
- package/dist/templates/layouts/loading.tsx.hbs +22 -0
- package/dist/templates/layouts/not-found.tsx.hbs +24 -0
- package/dist/templates/layouts/root-layout.tsx.hbs +40 -0
- package/dist/templates/lib/instant.ts.hbs +19 -0
- package/dist/templates/lib/utils.ts.hbs +24 -0
- package/dist/templates/pages/auth/login-page.tsx.hbs +30 -0
- package/dist/templates/pages/auth/register-page.tsx.hbs +38 -0
- package/dist/templates/pages/crud/create-page.tsx.hbs +42 -0
- package/dist/templates/pages/crud/detail-page.tsx.hbs +90 -0
- package/dist/templates/pages/crud/list-page.tsx.hbs +60 -0
- package/dist/templates/pages/crud/loading.tsx.hbs +13 -0
- package/dist/templates/pages/landing-page.tsx.hbs +111 -0
- package/dist/types/asl.d.ts +387 -0
- package/dist/types/asl.d.ts.map +1 -0
- package/dist/types/asl.js +139 -0
- package/dist/types/asl.js.map +1 -0
- package/dist/types/living-context.d.ts +1 -1
- package/dist/types/living-context.d.ts.map +1 -1
- package/dist/utils/FileGenerator.js +3 -3
- package/dist/utils/FileGenerator.js.map +1 -1
- package/dist/utils/generateTypesFromSchema.d.ts +47 -0
- package/dist/utils/generateTypesFromSchema.d.ts.map +1 -0
- package/dist/utils/generateTypesFromSchema.js +298 -0
- package/dist/utils/generateTypesFromSchema.js.map +1 -0
- package/package.json +4 -2
|
@@ -0,0 +1,483 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.TemplateEngine = void 0;
|
|
37
|
+
const TemplateHelpers_1 = require("./TemplateHelpers");
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const fs = __importStar(require("fs-extra"));
|
|
40
|
+
/**
|
|
41
|
+
* TemplateEngine - Generate code from templates
|
|
42
|
+
*
|
|
43
|
+
* Uses Handlebars templates to generate production-ready:
|
|
44
|
+
* - Auth pages and components
|
|
45
|
+
* - RBAC guards and middleware
|
|
46
|
+
* - Entity CRUD pages and components
|
|
47
|
+
* - UI components with CVA variants
|
|
48
|
+
* - Server Actions with validation
|
|
49
|
+
*
|
|
50
|
+
* Templates are in src/templates/ directory
|
|
51
|
+
*/
|
|
52
|
+
class TemplateEngine {
|
|
53
|
+
constructor() {
|
|
54
|
+
this.helpers = new TemplateHelpers_1.TemplateHelpers();
|
|
55
|
+
this.templatesDir = path.join(__dirname, "../templates");
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Generate authentication pages (login, register)
|
|
59
|
+
*/
|
|
60
|
+
async generateAuthPages(projectPath, auth) {
|
|
61
|
+
// Create auth directory
|
|
62
|
+
const authPath = path.join(projectPath, 'app', '(auth)');
|
|
63
|
+
await fs.ensureDir(authPath);
|
|
64
|
+
// Generate login page
|
|
65
|
+
const loginPage = this.generateLoginPage(auth);
|
|
66
|
+
const loginPath = path.join(authPath, 'login');
|
|
67
|
+
await fs.ensureDir(loginPath);
|
|
68
|
+
await fs.writeFile(path.join(loginPath, 'page.tsx'), loginPage);
|
|
69
|
+
// Generate register page
|
|
70
|
+
const registerPage = this.generateRegisterPage(auth);
|
|
71
|
+
const registerPath = path.join(authPath, 'register');
|
|
72
|
+
await fs.ensureDir(registerPath);
|
|
73
|
+
await fs.writeFile(path.join(registerPath, 'page.tsx'), registerPage);
|
|
74
|
+
// Generate auth components
|
|
75
|
+
await this.generateAuthComponents(projectPath, auth);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Generate auth components (LoginForm, RegisterForm)
|
|
79
|
+
*/
|
|
80
|
+
async generateAuthComponents(projectPath, auth) {
|
|
81
|
+
const componentsPath = path.join(projectPath, 'components', 'auth');
|
|
82
|
+
await fs.ensureDir(componentsPath);
|
|
83
|
+
// LoginForm (placeholder)
|
|
84
|
+
const loginForm = this.generateLoginForm(auth);
|
|
85
|
+
await fs.writeFile(path.join(componentsPath, 'LoginForm.tsx'), loginForm);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Generate RBAC guards (withAuth, withRole)
|
|
89
|
+
*/
|
|
90
|
+
async generateGuards(projectPath, permissions) {
|
|
91
|
+
const guardsPath = path.join(projectPath, 'lib', 'guards');
|
|
92
|
+
await fs.ensureDir(guardsPath);
|
|
93
|
+
// withAuth HOC
|
|
94
|
+
const withAuth = this.generateWithAuthGuard();
|
|
95
|
+
await fs.writeFile(path.join(guardsPath, 'withAuth.tsx'), withAuth);
|
|
96
|
+
// withRole HOC
|
|
97
|
+
const roles = [...new Set(permissions.map(p => p.role))];
|
|
98
|
+
const withRole = this.generateWithRoleGuard(roles);
|
|
99
|
+
await fs.writeFile(path.join(guardsPath, 'withRole.tsx'), withRole);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Generate route protection middleware
|
|
103
|
+
*/
|
|
104
|
+
async generateMiddleware(projectPath, permissions) {
|
|
105
|
+
const middleware = this.generateMiddlewareCode(permissions);
|
|
106
|
+
await fs.writeFile(path.join(projectPath, 'middleware.ts'), middleware);
|
|
107
|
+
}
|
|
108
|
+
// ===== Template Generation Methods (Placeholders) =====
|
|
109
|
+
generateLoginPage(auth) {
|
|
110
|
+
return `'use client';
|
|
111
|
+
|
|
112
|
+
import { LoginForm } from '@/components/auth/LoginForm';
|
|
113
|
+
|
|
114
|
+
export default function LoginPage() {
|
|
115
|
+
return (
|
|
116
|
+
<div className="container flex items-center justify-center min-h-screen">
|
|
117
|
+
<div className="w-full max-w-md">
|
|
118
|
+
<h1 className="text-3xl font-bold mb-6">Login</h1>
|
|
119
|
+
<LoginForm />
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
`;
|
|
125
|
+
}
|
|
126
|
+
generateRegisterPage(auth) {
|
|
127
|
+
return `'use client';
|
|
128
|
+
|
|
129
|
+
export default function RegisterPage() {
|
|
130
|
+
return (
|
|
131
|
+
<div className="container flex items-center justify-center min-h-screen">
|
|
132
|
+
<div className="w-full max-w-md">
|
|
133
|
+
<h1 className="text-3xl font-bold mb-6">Register</h1>
|
|
134
|
+
{/* RegisterForm component */}
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
`;
|
|
140
|
+
}
|
|
141
|
+
generateLoginForm(auth) {
|
|
142
|
+
return `'use client';
|
|
143
|
+
|
|
144
|
+
import { Button } from '@/components/ui/button';
|
|
145
|
+
import { Input } from '@/components/ui/input';
|
|
146
|
+
import { Label } from '@/components/ui/label';
|
|
147
|
+
|
|
148
|
+
export function LoginForm() {
|
|
149
|
+
return (
|
|
150
|
+
<form className="space-y-4">
|
|
151
|
+
<div>
|
|
152
|
+
<Label htmlFor="email">Email</Label>
|
|
153
|
+
<Input id="email" type="email" placeholder="you@example.com" />
|
|
154
|
+
</div>
|
|
155
|
+
<div>
|
|
156
|
+
<Label htmlFor="password">Password</Label>
|
|
157
|
+
<Input id="password" type="password" />
|
|
158
|
+
</div>
|
|
159
|
+
<Button type="submit" className="w-full">
|
|
160
|
+
Sign In
|
|
161
|
+
</Button>
|
|
162
|
+
</form>
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
`;
|
|
166
|
+
}
|
|
167
|
+
generateWithAuthGuard() {
|
|
168
|
+
return `'use client';
|
|
169
|
+
|
|
170
|
+
import { useEffect } from 'react';
|
|
171
|
+
import { useRouter } from 'next/navigation';
|
|
172
|
+
|
|
173
|
+
export function withAuth<P extends object>(
|
|
174
|
+
Component: React.ComponentType<P>
|
|
175
|
+
) {
|
|
176
|
+
return function AuthenticatedComponent(props: P) {
|
|
177
|
+
const router = useRouter();
|
|
178
|
+
|
|
179
|
+
useEffect(() => {
|
|
180
|
+
// Check auth status
|
|
181
|
+
const isAuthenticated = false; // TODO: Check InstantDB auth
|
|
182
|
+
if (!isAuthenticated) {
|
|
183
|
+
router.push('/login');
|
|
184
|
+
}
|
|
185
|
+
}, [router]);
|
|
186
|
+
|
|
187
|
+
return <Component {...props} />;
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
`;
|
|
191
|
+
}
|
|
192
|
+
generateWithRoleGuard(roles) {
|
|
193
|
+
return `'use client';
|
|
194
|
+
|
|
195
|
+
import { useEffect } from 'react';
|
|
196
|
+
import { useRouter } from 'next/navigation';
|
|
197
|
+
|
|
198
|
+
export function withRole<P extends object>(
|
|
199
|
+
Component: React.ComponentType<P>,
|
|
200
|
+
requiredRole: string
|
|
201
|
+
) {
|
|
202
|
+
return function RoleProtectedComponent(props: P) {
|
|
203
|
+
const router = useRouter();
|
|
204
|
+
|
|
205
|
+
useEffect(() => {
|
|
206
|
+
// Check role
|
|
207
|
+
const userRole = 'user'; // TODO: Get from InstantDB
|
|
208
|
+
if (userRole !== requiredRole) {
|
|
209
|
+
router.push('/unauthorized');
|
|
210
|
+
}
|
|
211
|
+
}, [router]);
|
|
212
|
+
|
|
213
|
+
return <Component {...props} />;
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
`;
|
|
217
|
+
}
|
|
218
|
+
generateMiddlewareCode(permissions) {
|
|
219
|
+
return `import { NextResponse } from 'next/server';
|
|
220
|
+
import type { NextRequest } from 'next/server';
|
|
221
|
+
|
|
222
|
+
export function middleware(request: NextRequest) {
|
|
223
|
+
// TODO: Implement route protection based on permissions
|
|
224
|
+
return NextResponse.next();
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
export const config = {
|
|
228
|
+
matcher: ['/dashboard/:path*', '/admin/:path*']
|
|
229
|
+
};
|
|
230
|
+
`;
|
|
231
|
+
}
|
|
232
|
+
// ===== NEW: Production-Ready Template Methods =====
|
|
233
|
+
/**
|
|
234
|
+
* Generate root layout with font optimization and theme provider
|
|
235
|
+
*/
|
|
236
|
+
async generateRootLayout(projectPath, projectName, projectDescription) {
|
|
237
|
+
const templatePath = path.join(this.templatesDir, "layouts/root-layout.tsx.hbs");
|
|
238
|
+
const content = await this.helpers.render(templatePath, {
|
|
239
|
+
projectName,
|
|
240
|
+
projectDescription,
|
|
241
|
+
});
|
|
242
|
+
const outputPath = path.join(projectPath, "app/layout.tsx");
|
|
243
|
+
await fs.writeFile(outputPath, content, "utf-8");
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Generate utility files (utils.ts with cn helper)
|
|
247
|
+
*/
|
|
248
|
+
async generateUtils(projectPath) {
|
|
249
|
+
const templatePath = path.join(this.templatesDir, "lib/utils.ts.hbs");
|
|
250
|
+
const content = await this.helpers.render(templatePath, {});
|
|
251
|
+
const libDir = path.join(projectPath, "lib");
|
|
252
|
+
await fs.ensureDir(libDir);
|
|
253
|
+
await fs.writeFile(path.join(libDir, "utils.ts"), content, "utf-8");
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Generate InstantDB client setup
|
|
257
|
+
*/
|
|
258
|
+
async generateInstantClient(projectPath) {
|
|
259
|
+
const templatePath = path.join(this.templatesDir, "lib/instant.ts.hbs");
|
|
260
|
+
const content = await this.helpers.render(templatePath, {});
|
|
261
|
+
const libDir = path.join(projectPath, "lib");
|
|
262
|
+
await fs.ensureDir(libDir);
|
|
263
|
+
await fs.writeFile(path.join(libDir, "instant.ts"), content, "utf-8");
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Generate global CSS with Tailwind v4 and design tokens
|
|
267
|
+
*/
|
|
268
|
+
async generateGlobalCSS(projectPath) {
|
|
269
|
+
const templatePath = path.join(this.templatesDir, "config/app.css.hbs");
|
|
270
|
+
const content = await this.helpers.render(templatePath, {});
|
|
271
|
+
const appDir = path.join(projectPath, "app");
|
|
272
|
+
await fs.writeFile(path.join(appDir, "app.css"), content, "utf-8");
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Generate theme provider component
|
|
276
|
+
*/
|
|
277
|
+
async generateThemeProvider(projectPath) {
|
|
278
|
+
const templatePath = path.join(this.templatesDir, "components/ui/theme-provider.tsx.hbs");
|
|
279
|
+
const content = await this.helpers.render(templatePath, {});
|
|
280
|
+
const uiDir = path.join(projectPath, "components/ui");
|
|
281
|
+
await fs.ensureDir(uiDir);
|
|
282
|
+
await fs.writeFile(path.join(uiDir, "theme-provider.tsx"), content, "utf-8");
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Generate button component with CVA variants
|
|
286
|
+
*/
|
|
287
|
+
async generateButton(projectPath) {
|
|
288
|
+
const templatePath = path.join(this.templatesDir, "components/ui/button.tsx.hbs");
|
|
289
|
+
const content = await this.helpers.render(templatePath, {});
|
|
290
|
+
const uiDir = path.join(projectPath, "components/ui");
|
|
291
|
+
await fs.ensureDir(uiDir);
|
|
292
|
+
await fs.writeFile(path.join(uiDir, "button.tsx"), content, "utf-8");
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Generate all UI components (Card, Input, Label, Skeleton, ThemeToggle)
|
|
296
|
+
*/
|
|
297
|
+
async generateUIComponents(projectPath) {
|
|
298
|
+
const components = ["card", "input", "label", "skeleton", "theme-toggle"];
|
|
299
|
+
const uiDir = path.join(projectPath, "components/ui");
|
|
300
|
+
await fs.ensureDir(uiDir);
|
|
301
|
+
for (const component of components) {
|
|
302
|
+
const templatePath = path.join(this.templatesDir, `components/ui/${component}.tsx.hbs`);
|
|
303
|
+
const content = await this.helpers.render(templatePath, {});
|
|
304
|
+
await fs.writeFile(path.join(uiDir, `${component}.tsx`), content, "utf-8");
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Generate production login page with Suspense
|
|
309
|
+
*/
|
|
310
|
+
async generateProductionLoginPage(projectPath) {
|
|
311
|
+
const templatePath = path.join(this.templatesDir, "pages/auth/login-page.tsx.hbs");
|
|
312
|
+
const content = await this.helpers.render(templatePath, {});
|
|
313
|
+
const loginDir = path.join(projectPath, "app/(auth)/login");
|
|
314
|
+
await fs.ensureDir(loginDir);
|
|
315
|
+
await fs.writeFile(path.join(loginDir, "page.tsx"), content, "utf-8");
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Generate production login form with useTransition
|
|
319
|
+
*/
|
|
320
|
+
async generateProductionLoginForm(projectPath) {
|
|
321
|
+
const templatePath = path.join(this.templatesDir, "components/auth/login-form.tsx.hbs");
|
|
322
|
+
const content = await this.helpers.render(templatePath, {});
|
|
323
|
+
const authComponentsDir = path.join(projectPath, "components/auth");
|
|
324
|
+
await fs.ensureDir(authComponentsDir);
|
|
325
|
+
await fs.writeFile(path.join(authComponentsDir, "LoginForm.tsx"), content, "utf-8");
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Generate login skeleton component
|
|
329
|
+
*/
|
|
330
|
+
async generateLoginSkeleton(projectPath) {
|
|
331
|
+
const templatePath = path.join(this.templatesDir, "components/auth/login-skeleton.tsx.hbs");
|
|
332
|
+
const content = await this.helpers.render(templatePath, {});
|
|
333
|
+
const authComponentsDir = path.join(projectPath, "components/auth");
|
|
334
|
+
await fs.ensureDir(authComponentsDir);
|
|
335
|
+
await fs.writeFile(path.join(authComponentsDir, "LoginSkeleton.tsx"), content, "utf-8");
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Generate register page
|
|
339
|
+
*/
|
|
340
|
+
async generateProductionRegisterPage(projectPath) {
|
|
341
|
+
const templatePath = path.join(this.templatesDir, "pages/auth/register-page.tsx.hbs");
|
|
342
|
+
const content = await this.helpers.render(templatePath, {});
|
|
343
|
+
const registerDir = path.join(projectPath, "app/(auth)/register");
|
|
344
|
+
await fs.ensureDir(registerDir);
|
|
345
|
+
await fs.writeFile(path.join(registerDir, "page.tsx"), content, "utf-8");
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Generate register form component
|
|
349
|
+
*/
|
|
350
|
+
async generateRegisterForm(projectPath) {
|
|
351
|
+
const templatePath = path.join(this.templatesDir, "components/auth/register-form.tsx.hbs");
|
|
352
|
+
const content = await this.helpers.render(templatePath, {});
|
|
353
|
+
const authComponentsDir = path.join(projectPath, "components/auth");
|
|
354
|
+
await fs.ensureDir(authComponentsDir);
|
|
355
|
+
await fs.writeFile(path.join(authComponentsDir, "RegisterForm.tsx"), content, "utf-8");
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Generate auth Server Actions
|
|
359
|
+
*/
|
|
360
|
+
async generateAuthActions(projectPath) {
|
|
361
|
+
const templatePath = path.join(this.templatesDir, "actions/auth-actions.ts.hbs");
|
|
362
|
+
const content = await this.helpers.render(templatePath, {});
|
|
363
|
+
const actionsDir = path.join(projectPath, "app/actions");
|
|
364
|
+
await fs.ensureDir(actionsDir);
|
|
365
|
+
await fs.writeFile(path.join(actionsDir, "auth.ts"), content, "utf-8");
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Generate dashboard layout with navigation
|
|
369
|
+
*/
|
|
370
|
+
async generateDashboardLayout(projectPath, projectName, entities) {
|
|
371
|
+
const templatePath = path.join(this.templatesDir, "layouts/dashboard-layout.tsx.hbs");
|
|
372
|
+
const content = await this.helpers.render(templatePath, {
|
|
373
|
+
projectName,
|
|
374
|
+
entities,
|
|
375
|
+
});
|
|
376
|
+
const dashboardDir = path.join(projectPath, "app/dashboard");
|
|
377
|
+
await fs.ensureDir(dashboardDir);
|
|
378
|
+
await fs.writeFile(path.join(dashboardDir, "layout.tsx"), content, "utf-8");
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Generate error boundary
|
|
382
|
+
*/
|
|
383
|
+
async generateErrorBoundary(projectPath) {
|
|
384
|
+
const templatePath = path.join(this.templatesDir, "layouts/error.tsx.hbs");
|
|
385
|
+
const content = await this.helpers.render(templatePath, {});
|
|
386
|
+
await fs.writeFile(path.join(projectPath, "app/error.tsx"), content, "utf-8");
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Generate loading boundary
|
|
390
|
+
*/
|
|
391
|
+
async generateLoadingBoundary(projectPath) {
|
|
392
|
+
const templatePath = path.join(this.templatesDir, "layouts/loading.tsx.hbs");
|
|
393
|
+
const content = await this.helpers.render(templatePath, {});
|
|
394
|
+
await fs.writeFile(path.join(projectPath, "app/loading.tsx"), content, "utf-8");
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Generate not-found page
|
|
398
|
+
*/
|
|
399
|
+
async generateNotFoundPage(projectPath) {
|
|
400
|
+
const templatePath = path.join(this.templatesDir, "layouts/not-found.tsx.hbs");
|
|
401
|
+
const content = await this.helpers.render(templatePath, {});
|
|
402
|
+
await fs.writeFile(path.join(projectPath, "app/not-found.tsx"), content, "utf-8");
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Generate landing page
|
|
406
|
+
*/
|
|
407
|
+
async generateLandingPage(projectPath, projectName, projectDescription) {
|
|
408
|
+
const templatePath = path.join(this.templatesDir, "pages/landing-page.tsx.hbs");
|
|
409
|
+
const content = await this.helpers.render(templatePath, {
|
|
410
|
+
projectName,
|
|
411
|
+
projectDescription,
|
|
412
|
+
});
|
|
413
|
+
await fs.writeFile(path.join(projectPath, "app/page.tsx"), content, "utf-8");
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Generate CRUD pages for an entity
|
|
417
|
+
*/
|
|
418
|
+
async generateEntityCRUDPages(projectPath, entityName, fields) {
|
|
419
|
+
const entityLower = entityName.toLowerCase();
|
|
420
|
+
const data = {
|
|
421
|
+
entityName,
|
|
422
|
+
entityLower,
|
|
423
|
+
fields: fields.map((f) => ({
|
|
424
|
+
...f,
|
|
425
|
+
label: f.label || f.name.charAt(0).toUpperCase() + f.name.slice(1),
|
|
426
|
+
})),
|
|
427
|
+
};
|
|
428
|
+
// List page
|
|
429
|
+
const listTemplate = path.join(this.templatesDir, "pages/crud/list-page.tsx.hbs");
|
|
430
|
+
const listContent = await this.helpers.render(listTemplate, data);
|
|
431
|
+
const listDir = path.join(projectPath, `app/${entityLower}s`);
|
|
432
|
+
await fs.ensureDir(listDir);
|
|
433
|
+
await fs.writeFile(path.join(listDir, "page.tsx"), listContent, "utf-8");
|
|
434
|
+
// Detail page
|
|
435
|
+
const detailTemplate = path.join(this.templatesDir, "pages/crud/detail-page.tsx.hbs");
|
|
436
|
+
const detailContent = await this.helpers.render(detailTemplate, data);
|
|
437
|
+
const detailDir = path.join(projectPath, `app/${entityLower}s/[id]`);
|
|
438
|
+
await fs.ensureDir(detailDir);
|
|
439
|
+
await fs.writeFile(path.join(detailDir, "page.tsx"), detailContent, "utf-8");
|
|
440
|
+
// Create page
|
|
441
|
+
const createTemplate = path.join(this.templatesDir, "pages/crud/create-page.tsx.hbs");
|
|
442
|
+
const createContent = await this.helpers.render(createTemplate, data);
|
|
443
|
+
const createDir = path.join(projectPath, `app/${entityLower}s/new`);
|
|
444
|
+
await fs.ensureDir(createDir);
|
|
445
|
+
await fs.writeFile(path.join(createDir, "page.tsx"), createContent, "utf-8");
|
|
446
|
+
// Loading page
|
|
447
|
+
const loadingTemplate = path.join(this.templatesDir, "pages/crud/loading.tsx.hbs");
|
|
448
|
+
const loadingContent = await this.helpers.render(loadingTemplate, data);
|
|
449
|
+
await fs.writeFile(path.join(listDir, "loading.tsx"), loadingContent, "utf-8");
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Generate CRUD Server Actions for an entity
|
|
453
|
+
*/
|
|
454
|
+
async generateEntityActions(projectPath, entityName, fields) {
|
|
455
|
+
const templatePath = path.join(this.templatesDir, "actions/crud-actions.ts.hbs");
|
|
456
|
+
const content = await this.helpers.render(templatePath, {
|
|
457
|
+
entityName,
|
|
458
|
+
entityLower: entityName.toLowerCase(),
|
|
459
|
+
fields,
|
|
460
|
+
});
|
|
461
|
+
const actionsDir = path.join(projectPath, "app/actions");
|
|
462
|
+
await fs.ensureDir(actionsDir);
|
|
463
|
+
await fs.writeFile(path.join(actionsDir, "crud.ts"), content, "utf-8");
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Generate CRUD components for an entity
|
|
467
|
+
*/
|
|
468
|
+
async generateEntityComponents(projectPath, entityName) {
|
|
469
|
+
const entityLower = entityName.toLowerCase();
|
|
470
|
+
const componentsDir = path.join(projectPath, `components/${entityLower}s`);
|
|
471
|
+
await fs.ensureDir(componentsDir);
|
|
472
|
+
// Generate entity-specific components using generic CRUD templates
|
|
473
|
+
const components = ["entity-card", "entity-form", "entity-table", "entity-skeleton"];
|
|
474
|
+
for (const component of components) {
|
|
475
|
+
const templatePath = path.join(this.templatesDir, `components/crud/${component}.tsx.hbs`);
|
|
476
|
+
const content = await this.helpers.render(templatePath, {});
|
|
477
|
+
const outputName = component.replace("entity", entityLower);
|
|
478
|
+
await fs.writeFile(path.join(componentsDir, `${outputName}.tsx`), content, "utf-8");
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
exports.TemplateEngine = TemplateEngine;
|
|
483
|
+
//# sourceMappingURL=TemplateEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateEngine.js","sourceRoot":"","sources":["../../src/services/TemplateEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare class TemplateHelpers {
|
|
2
|
+
private handlebars;
|
|
3
|
+
constructor();
|
|
4
|
+
private registerHelpers;
|
|
5
|
+
render(templatePath: string, data: any): Promise<string>;
|
|
6
|
+
renderFromString(templateString: string, data: any): Promise<string>;
|
|
7
|
+
getOutputExtension(templatePath: string): string;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=TemplateHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateHelpers.d.ts","sourceRoot":"","sources":["../../src/services/TemplateHelpers.ts"],"names":[],"mappings":"AAIA,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAmB;;IAOrC,OAAO,CAAC,eAAe;IAoKjB,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAMxD,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAM1E,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;CAKjD"}
|