@lastbrain/app 0.1.24 → 0.1.26

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 (87) hide show
  1. package/dist/__tests__/module-registry.test.d.ts +2 -0
  2. package/dist/__tests__/module-registry.test.d.ts.map +1 -0
  3. package/dist/__tests__/module-registry.test.js +64 -0
  4. package/dist/app-shell/(admin)/layout.d.ts +3 -2
  5. package/dist/app-shell/(admin)/layout.d.ts.map +1 -1
  6. package/dist/app-shell/(admin)/layout.js +1 -1
  7. package/dist/app-shell/(auth)/layout.d.ts +3 -2
  8. package/dist/app-shell/(auth)/layout.d.ts.map +1 -1
  9. package/dist/app-shell/(auth)/layout.js +1 -1
  10. package/dist/app-shell/(public)/page.d.ts.map +1 -1
  11. package/dist/cli.js +50 -0
  12. package/dist/index.d.ts +4 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +4 -0
  15. package/dist/layouts/AdminLayout.d.ts +3 -2
  16. package/dist/layouts/AdminLayout.d.ts.map +1 -1
  17. package/dist/layouts/AdminLayoutWithSidebar.d.ts +8 -0
  18. package/dist/layouts/AdminLayoutWithSidebar.d.ts.map +1 -0
  19. package/dist/layouts/AdminLayoutWithSidebar.js +9 -0
  20. package/dist/layouts/AppProviders.d.ts +3 -2
  21. package/dist/layouts/AppProviders.d.ts.map +1 -1
  22. package/dist/layouts/AuthLayout.d.ts +3 -2
  23. package/dist/layouts/AuthLayout.d.ts.map +1 -1
  24. package/dist/layouts/AuthLayoutWithSidebar.d.ts +8 -0
  25. package/dist/layouts/AuthLayoutWithSidebar.d.ts.map +1 -0
  26. package/dist/layouts/AuthLayoutWithSidebar.js +9 -0
  27. package/dist/layouts/PublicLayout.d.ts +3 -2
  28. package/dist/layouts/PublicLayout.d.ts.map +1 -1
  29. package/dist/layouts/RootLayout.d.ts +3 -2
  30. package/dist/layouts/RootLayout.d.ts.map +1 -1
  31. package/dist/scripts/db-init.js +2 -2
  32. package/dist/scripts/db-migrations-sync.js +5 -5
  33. package/dist/scripts/dev-sync.js +21 -10
  34. package/dist/scripts/init-app.d.ts.map +1 -1
  35. package/dist/scripts/init-app.js +126 -21
  36. package/dist/scripts/module-add.d.ts.map +1 -1
  37. package/dist/scripts/module-add.js +20 -7
  38. package/dist/scripts/module-build.d.ts.map +1 -1
  39. package/dist/scripts/module-build.js +285 -30
  40. package/dist/scripts/module-create.d.ts.map +1 -1
  41. package/dist/scripts/module-create.js +25 -15
  42. package/dist/scripts/module-remove.d.ts.map +1 -1
  43. package/dist/scripts/module-remove.js +24 -11
  44. package/dist/scripts/script-runner.d.ts +5 -0
  45. package/dist/scripts/script-runner.d.ts.map +1 -0
  46. package/dist/scripts/script-runner.js +25 -0
  47. package/dist/styles.css +1 -1
  48. package/dist/templates/DefaultDoc.js +1 -7
  49. package/dist/templates/DocPage.d.ts.map +1 -1
  50. package/dist/templates/DocPage.js +14 -14
  51. package/dist/templates/components/AppAside.d.ts +6 -0
  52. package/dist/templates/components/AppAside.d.ts.map +1 -0
  53. package/dist/templates/components/AppAside.js +9 -0
  54. package/dist/templates/layouts/admin-layout.d.ts +4 -0
  55. package/dist/templates/layouts/admin-layout.d.ts.map +1 -0
  56. package/dist/templates/layouts/admin-layout.js +6 -0
  57. package/dist/templates/layouts/auth-layout.d.ts +4 -0
  58. package/dist/templates/layouts/auth-layout.d.ts.map +1 -0
  59. package/dist/templates/layouts/auth-layout.js +6 -0
  60. package/package.json +2 -1
  61. package/src/__tests__/module-registry.test.ts +74 -0
  62. package/src/app-shell/(admin)/layout.tsx +5 -3
  63. package/src/app-shell/(auth)/layout.tsx +5 -3
  64. package/src/app-shell/(public)/page.tsx +6 -2
  65. package/src/auth/useAuthSession.ts +1 -1
  66. package/src/cli.ts +51 -1
  67. package/src/index.ts +6 -0
  68. package/src/layouts/AdminLayout.tsx +1 -3
  69. package/src/layouts/AdminLayoutWithSidebar.tsx +35 -0
  70. package/src/layouts/AppProviders.tsx +3 -5
  71. package/src/layouts/AuthLayout.tsx +1 -3
  72. package/src/layouts/AuthLayoutWithSidebar.tsx +35 -0
  73. package/src/layouts/PublicLayout.tsx +1 -3
  74. package/src/layouts/RootLayout.tsx +1 -2
  75. package/src/scripts/db-init.ts +13 -8
  76. package/src/scripts/db-migrations-sync.ts +4 -4
  77. package/src/scripts/dev-sync.ts +49 -18
  78. package/src/scripts/init-app.ts +246 -73
  79. package/src/scripts/module-add.ts +49 -23
  80. package/src/scripts/module-build.ts +393 -88
  81. package/src/scripts/module-create.ts +85 -49
  82. package/src/scripts/module-remove.ts +116 -57
  83. package/src/scripts/readme-build.ts +2 -2
  84. package/src/scripts/script-runner.ts +28 -0
  85. package/src/templates/AuthGuidePage.tsx +1 -1
  86. package/src/templates/DefaultDoc.tsx +7 -7
  87. package/src/templates/DocPage.tsx +74 -46
@@ -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,14 +80,13 @@ 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
- let copiedMigrationFiles: string[] = [];
91
-
89
+ const copiedMigrationFiles: string[] = [];
92
90
  if (module.hasMigrations) {
93
91
  console.log(chalk.yellow("\n📋 Copie des migrations du module..."));
94
92
 
@@ -96,12 +94,12 @@ export async function addModule(moduleName: string, targetDir: string) {
96
94
  const modulePackagePath = path.join(
97
95
  targetDir,
98
96
  "node_modules",
99
- ...module.package.split("/")
97
+ ...module.package.split("/"),
100
98
  );
101
99
 
102
100
  const moduleMigrationsDir = path.join(
103
101
  modulePackagePath,
104
- module.migrationsPath || "supabase/migrations"
102
+ module.migrationsPath || "supabase/migrations",
105
103
  );
106
104
 
107
105
  const projectMigrationsDir = path.join(targetDir, "supabase", "migrations");
@@ -123,12 +121,20 @@ export async function addModule(moduleName: string, targetDir: string) {
123
121
 
124
122
  // 6. Demander comment appliquer les migrations
125
123
  console.log(
126
- 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"),
127
125
  );
128
-
126
+
129
127
  console.log("Choisissez une option:");
130
- console.log(chalk.cyan(" 1) 🔄 Reset complet (supabase db reset) - Recommandé en dev"));
131
- 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
+ );
132
138
  console.log(chalk.cyan(" 3) ⏭️ Ignorer pour l'instant"));
133
139
  console.log("");
134
140
 
@@ -159,22 +165,29 @@ export async function addModule(moduleName: string, targetDir: string) {
159
165
  try {
160
166
  execSync("supabase db reset", { cwd: targetDir, stdio: "inherit" });
161
167
  console.log(chalk.green("✓ Base de données réinitialisée"));
162
- } catch (error) {
168
+ } catch {
163
169
  console.error(chalk.red("❌ Erreur lors du reset"));
164
170
  }
165
171
  } else if (migrationAction === "push") {
166
- console.log(chalk.yellow("\n⬆️ Application des nouvelles migrations..."));
172
+ console.log(
173
+ chalk.yellow("\n⬆️ Application des nouvelles migrations..."),
174
+ );
167
175
  try {
168
- execSync("supabase migration up", { cwd: targetDir, stdio: "inherit" });
176
+ execSync("supabase migration up", {
177
+ cwd: targetDir,
178
+ stdio: "inherit",
179
+ });
169
180
  console.log(chalk.green("✓ Migrations appliquées"));
170
- } catch (error) {
171
- 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
+ );
172
185
  }
173
186
  } else {
174
187
  console.log(
175
188
  chalk.gray(
176
- "\n⚠️ N'oubliez pas d'appliquer les migrations avec:\n supabase db reset ou supabase migration up\n"
177
- )
189
+ "\n⚠️ N'oubliez pas d'appliquer les migrations avec:\n supabase db reset ou supabase migration up\n",
190
+ ),
178
191
  );
179
192
  }
180
193
  } else {
@@ -201,7 +214,9 @@ export async function addModule(moduleName: string, targetDir: string) {
201
214
 
202
215
  // Initialiser tous les modules disponibles s'ils n'existent pas
203
216
  for (const availableModule of AVAILABLE_MODULES) {
204
- const exists = modulesConfig.modules.find(m => m.package === availableModule.package);
217
+ const exists = modulesConfig.modules.find(
218
+ (m) => m.package === availableModule.package,
219
+ );
205
220
  if (!exists) {
206
221
  modulesConfig.modules.push({
207
222
  package: availableModule.package,
@@ -212,7 +227,7 @@ export async function addModule(moduleName: string, targetDir: string) {
212
227
  }
213
228
 
214
229
  const existingModuleIndex = modulesConfig.modules.findIndex(
215
- (m) => m.package === module.package
230
+ (m) => m.package === module.package,
216
231
  );
217
232
 
218
233
  const migrationsList = copiedMigrationFiles;
@@ -234,9 +249,20 @@ export async function addModule(moduleName: string, targetDir: string) {
234
249
  await fs.writeJson(modulesConfigPath, modulesConfig, { spaces: 2 });
235
250
 
236
251
  console.log(
237
- chalk.green(`\n✅ Module ${module.displayName} ajouté avec succès!\n`)
252
+ chalk.green(`\n✅ Module ${module.displayName} ajouté avec succès!\n`),
238
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 (error) {
261
+ console.error(chalk.red("❌ Erreur lors de la génération des routes"));
262
+ console.error(chalk.gray("Vous pouvez les générer manuellement avec: pnpm build:modules"));
263
+ }
264
+
239
265
  console.log(
240
- chalk.gray("Le serveur de développement redémarrera automatiquement.\n")
266
+ chalk.gray("\nLe serveur de développement redémarrera automatiquement.\n"),
241
267
  );
242
268
  }