@lastbrain/app 0.1.25 → 0.1.27

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.
Files changed (54) hide show
  1. package/dist/app-shell/(public)/page.d.ts.map +1 -1
  2. package/dist/index.d.ts +4 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +4 -0
  5. package/dist/layouts/AdminLayoutWithSidebar.d.ts +8 -0
  6. package/dist/layouts/AdminLayoutWithSidebar.d.ts.map +1 -0
  7. package/dist/layouts/AdminLayoutWithSidebar.js +9 -0
  8. package/dist/layouts/AuthLayoutWithSidebar.d.ts +8 -0
  9. package/dist/layouts/AuthLayoutWithSidebar.d.ts.map +1 -0
  10. package/dist/layouts/AuthLayoutWithSidebar.js +9 -0
  11. package/dist/scripts/db-init.js +2 -2
  12. package/dist/scripts/dev-sync.js +23 -12
  13. package/dist/scripts/init-app.d.ts.map +1 -1
  14. package/dist/scripts/init-app.js +114 -12
  15. package/dist/scripts/module-add.d.ts.map +1 -1
  16. package/dist/scripts/module-add.js +19 -6
  17. package/dist/scripts/module-build.d.ts.map +1 -1
  18. package/dist/scripts/module-build.js +288 -30
  19. package/dist/scripts/module-create.d.ts.map +1 -1
  20. package/dist/scripts/module-create.js +25 -15
  21. package/dist/scripts/module-remove.d.ts.map +1 -1
  22. package/dist/scripts/module-remove.js +28 -15
  23. package/dist/scripts/script-runner.js +1 -1
  24. package/dist/styles.css +1 -1
  25. package/dist/templates/DefaultDoc.js +1 -7
  26. package/dist/templates/components/AppAside.d.ts +6 -0
  27. package/dist/templates/components/AppAside.d.ts.map +1 -0
  28. package/dist/templates/components/AppAside.js +9 -0
  29. package/dist/templates/layouts/admin-layout.d.ts +4 -0
  30. package/dist/templates/layouts/admin-layout.d.ts.map +1 -0
  31. package/dist/templates/layouts/admin-layout.js +6 -0
  32. package/dist/templates/layouts/auth-layout.d.ts +4 -0
  33. package/dist/templates/layouts/auth-layout.d.ts.map +1 -0
  34. package/dist/templates/layouts/auth-layout.js +6 -0
  35. package/package.json +2 -1
  36. package/src/app-shell/(public)/page.tsx +6 -2
  37. package/src/auth/useAuthSession.ts +1 -1
  38. package/src/cli.ts +1 -1
  39. package/src/index.ts +6 -0
  40. package/src/layouts/AdminLayoutWithSidebar.tsx +35 -0
  41. package/src/layouts/AppProviders.tsx +1 -1
  42. package/src/layouts/AuthLayoutWithSidebar.tsx +35 -0
  43. package/src/scripts/db-init.ts +13 -8
  44. package/src/scripts/db-migrations-sync.ts +4 -4
  45. package/src/scripts/dev-sync.ts +50 -19
  46. package/src/scripts/init-app.ts +243 -65
  47. package/src/scripts/module-add.ts +54 -22
  48. package/src/scripts/module-build.ts +412 -88
  49. package/src/scripts/module-create.ts +85 -49
  50. package/src/scripts/module-remove.ts +120 -61
  51. package/src/scripts/readme-build.ts +2 -2
  52. package/src/scripts/script-runner.ts +3 -3
  53. package/src/templates/AuthGuidePage.tsx +1 -1
  54. package/src/templates/DefaultDoc.tsx +7 -7
@@ -30,8 +30,7 @@ export const AVAILABLE_MODULES: ModuleDefinition[] = [
30
30
  name: "ai",
31
31
  package: "@lastbrain/module-ai",
32
32
  displayName: "🤖 AI Generation",
33
- description:
34
- "Génération de texte et d'images avec gestion de tokens",
33
+ description: "Génération de texte et d'images avec gestion de tokens",
35
34
  hasMigrations: true,
36
35
  migrationsPath: "supabase/migrations",
37
36
  migrationsDownPath: "supabase/migrations-down",
@@ -45,7 +44,7 @@ export async function addModule(moduleName: string, targetDir: string) {
45
44
  const module = AVAILABLE_MODULES.find((m) => m.name === moduleName);
46
45
  if (!module) {
47
46
  console.error(
48
- chalk.red(`❌ Module "${moduleName}" non trouvé. Modules disponibles:`)
47
+ chalk.red(`❌ Module "${moduleName}" non trouvé. Modules disponibles:`),
49
48
  );
50
49
  AVAILABLE_MODULES.forEach((m) => {
51
50
  console.log(chalk.gray(` - ${m.name}: ${m.description}`));
@@ -81,25 +80,26 @@ export async function addModule(moduleName: string, targetDir: string) {
81
80
  console.log(chalk.yellow("📥 Installation des dépendances..."));
82
81
  try {
83
82
  execSync("pnpm install", { cwd: targetDir, stdio: "inherit" });
84
- } catch (error) {
83
+ } catch {
85
84
  console.error(chalk.red("❌ Erreur lors de l'installation"));
86
85
  process.exit(1);
87
86
  }
88
87
 
89
88
  // 5. Copier les migrations du module
90
- const copiedMigrationFiles: string[] = []; if (module.hasMigrations) {
89
+ const copiedMigrationFiles: string[] = [];
90
+ if (module.hasMigrations) {
91
91
  console.log(chalk.yellow("\n📋 Copie des migrations du module..."));
92
92
 
93
93
  // Trouver le chemin du module installé
94
94
  const modulePackagePath = path.join(
95
95
  targetDir,
96
96
  "node_modules",
97
- ...module.package.split("/")
97
+ ...module.package.split("/"),
98
98
  );
99
99
 
100
100
  const moduleMigrationsDir = path.join(
101
101
  modulePackagePath,
102
- module.migrationsPath || "supabase/migrations"
102
+ module.migrationsPath || "supabase/migrations",
103
103
  );
104
104
 
105
105
  const projectMigrationsDir = path.join(targetDir, "supabase", "migrations");
@@ -121,12 +121,20 @@ export async function addModule(moduleName: string, targetDir: string) {
121
121
 
122
122
  // 6. Demander comment appliquer les migrations
123
123
  console.log(
124
- chalk.yellow("\n🗄️ Application des migrations à la base de données\n")
124
+ chalk.yellow("\n🗄️ Application des migrations à la base de données\n"),
125
125
  );
126
-
126
+
127
127
  console.log("Choisissez une option:");
128
- console.log(chalk.cyan(" 1) 🔄 Reset complet (supabase db reset) - Recommandé en dev"));
129
- console.log(chalk.cyan(" 2) ⬆️ Push uniquement les nouvelles migrations (supabase migration up)"));
128
+ console.log(
129
+ chalk.cyan(
130
+ " 1) 🔄 Reset complet (supabase db reset) - Recommandé en dev",
131
+ ),
132
+ );
133
+ console.log(
134
+ chalk.cyan(
135
+ " 2) ⬆️ Push uniquement les nouvelles migrations (supabase migration up)",
136
+ ),
137
+ );
130
138
  console.log(chalk.cyan(" 3) ⏭️ Ignorer pour l'instant"));
131
139
  console.log("");
132
140
 
@@ -157,22 +165,29 @@ export async function addModule(moduleName: string, targetDir: string) {
157
165
  try {
158
166
  execSync("supabase db reset", { cwd: targetDir, stdio: "inherit" });
159
167
  console.log(chalk.green("✓ Base de données réinitialisée"));
160
- } catch (error) {
168
+ } catch {
161
169
  console.error(chalk.red("❌ Erreur lors du reset"));
162
170
  }
163
171
  } else if (migrationAction === "push") {
164
- console.log(chalk.yellow("\n⬆️ Application des nouvelles migrations..."));
172
+ console.log(
173
+ chalk.yellow("\n⬆️ Application des nouvelles migrations..."),
174
+ );
165
175
  try {
166
- execSync("supabase migration up", { cwd: targetDir, stdio: "inherit" });
176
+ execSync("supabase migration up", {
177
+ cwd: targetDir,
178
+ stdio: "inherit",
179
+ });
167
180
  console.log(chalk.green("✓ Migrations appliquées"));
168
- } catch (error) {
169
- console.error(chalk.red("❌ Erreur lors de l'application des migrations"));
181
+ } catch {
182
+ console.error(
183
+ chalk.red("❌ Erreur lors de l'application des migrations"),
184
+ );
170
185
  }
171
186
  } else {
172
187
  console.log(
173
188
  chalk.gray(
174
- "\n⚠️ N'oubliez pas d'appliquer les migrations avec:\n supabase db reset ou supabase migration up\n"
175
- )
189
+ "\n⚠️ N'oubliez pas d'appliquer les migrations avec:\n supabase db reset ou supabase migration up\n",
190
+ ),
176
191
  );
177
192
  }
178
193
  } else {
@@ -199,7 +214,9 @@ export async function addModule(moduleName: string, targetDir: string) {
199
214
 
200
215
  // Initialiser tous les modules disponibles s'ils n'existent pas
201
216
  for (const availableModule of AVAILABLE_MODULES) {
202
- const exists = modulesConfig.modules.find(m => m.package === availableModule.package);
217
+ const exists = modulesConfig.modules.find(
218
+ (m) => m.package === availableModule.package,
219
+ );
203
220
  if (!exists) {
204
221
  modulesConfig.modules.push({
205
222
  package: availableModule.package,
@@ -210,7 +227,7 @@ export async function addModule(moduleName: string, targetDir: string) {
210
227
  }
211
228
 
212
229
  const existingModuleIndex = modulesConfig.modules.findIndex(
213
- (m) => m.package === module.package
230
+ (m) => m.package === module.package,
214
231
  );
215
232
 
216
233
  const migrationsList = copiedMigrationFiles;
@@ -232,9 +249,24 @@ export async function addModule(moduleName: string, targetDir: string) {
232
249
  await fs.writeJson(modulesConfigPath, modulesConfig, { spaces: 2 });
233
250
 
234
251
  console.log(
235
- chalk.green(`\n✅ Module ${module.displayName} ajouté avec succès!\n`)
252
+ chalk.green(`\n✅ Module ${module.displayName} ajouté avec succès!\n`),
236
253
  );
254
+
255
+ // 7. Générer automatiquement les routes du module
256
+ console.log(chalk.yellow("🔧 Génération des routes du module..."));
257
+ try {
258
+ execSync("pnpm build:modules", { cwd: targetDir, stdio: "inherit" });
259
+ console.log(chalk.green("✓ Routes du module générées"));
260
+ } catch {
261
+ console.error(chalk.red("❌ Erreur lors de la génération des routes"));
262
+ console.error(
263
+ chalk.gray(
264
+ "Vous pouvez les générer manuellement avec: pnpm build:modules",
265
+ ),
266
+ );
267
+ }
268
+
237
269
  console.log(
238
- chalk.gray("Le serveur de développement redémarrera automatiquement.\n")
270
+ chalk.gray("\nLe serveur de développement redémarrera automatiquement.\n"),
239
271
  );
240
272
  }