@lastbrain/app 0.1.25 → 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.
- package/dist/app-shell/(public)/page.d.ts.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/layouts/AdminLayoutWithSidebar.d.ts +8 -0
- package/dist/layouts/AdminLayoutWithSidebar.d.ts.map +1 -0
- package/dist/layouts/AdminLayoutWithSidebar.js +9 -0
- package/dist/layouts/AuthLayoutWithSidebar.d.ts +8 -0
- package/dist/layouts/AuthLayoutWithSidebar.d.ts.map +1 -0
- package/dist/layouts/AuthLayoutWithSidebar.js +9 -0
- package/dist/scripts/db-init.js +1 -1
- package/dist/scripts/dev-sync.js +21 -10
- package/dist/scripts/init-app.d.ts.map +1 -1
- package/dist/scripts/init-app.js +114 -12
- package/dist/scripts/module-add.d.ts.map +1 -1
- package/dist/scripts/module-add.js +19 -6
- package/dist/scripts/module-build.d.ts.map +1 -1
- package/dist/scripts/module-build.js +285 -30
- package/dist/scripts/module-create.d.ts.map +1 -1
- package/dist/scripts/module-create.js +25 -15
- package/dist/scripts/module-remove.d.ts.map +1 -1
- package/dist/scripts/module-remove.js +24 -11
- package/dist/scripts/script-runner.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/templates/DefaultDoc.js +1 -7
- package/dist/templates/components/AppAside.d.ts +6 -0
- package/dist/templates/components/AppAside.d.ts.map +1 -0
- package/dist/templates/components/AppAside.js +9 -0
- package/dist/templates/layouts/admin-layout.d.ts +4 -0
- package/dist/templates/layouts/admin-layout.d.ts.map +1 -0
- package/dist/templates/layouts/admin-layout.js +6 -0
- package/dist/templates/layouts/auth-layout.d.ts +4 -0
- package/dist/templates/layouts/auth-layout.d.ts.map +1 -0
- package/dist/templates/layouts/auth-layout.js +6 -0
- package/package.json +2 -1
- package/src/app-shell/(public)/page.tsx +6 -2
- package/src/auth/useAuthSession.ts +1 -1
- package/src/cli.ts +1 -1
- package/src/index.ts +6 -0
- package/src/layouts/AdminLayoutWithSidebar.tsx +35 -0
- package/src/layouts/AppProviders.tsx +1 -1
- package/src/layouts/AuthLayoutWithSidebar.tsx +35 -0
- package/src/scripts/db-init.ts +12 -7
- package/src/scripts/db-migrations-sync.ts +3 -3
- package/src/scripts/dev-sync.ts +49 -18
- package/src/scripts/init-app.ts +235 -65
- package/src/scripts/module-add.ts +50 -22
- package/src/scripts/module-build.ts +393 -88
- package/src/scripts/module-create.ts +85 -49
- package/src/scripts/module-remove.ts +116 -57
- package/src/scripts/readme-build.ts +2 -2
- package/src/scripts/script-runner.ts +3 -3
- package/src/templates/AuthGuidePage.tsx +1 -1
- 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
|
|
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
|
-
|
|
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(
|
|
129
|
-
|
|
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
|
|
168
|
+
} catch {
|
|
161
169
|
console.error(chalk.red("❌ Erreur lors du reset"));
|
|
162
170
|
}
|
|
163
171
|
} else if (migrationAction === "push") {
|
|
164
|
-
console.log(
|
|
172
|
+
console.log(
|
|
173
|
+
chalk.yellow("\n⬆️ Application des nouvelles migrations..."),
|
|
174
|
+
);
|
|
165
175
|
try {
|
|
166
|
-
execSync("supabase migration up", {
|
|
176
|
+
execSync("supabase migration up", {
|
|
177
|
+
cwd: targetDir,
|
|
178
|
+
stdio: "inherit",
|
|
179
|
+
});
|
|
167
180
|
console.log(chalk.green("✓ Migrations appliquées"));
|
|
168
|
-
} catch
|
|
169
|
-
console.error(
|
|
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(
|
|
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,20 @@ 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 (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
|
+
|
|
237
265
|
console.log(
|
|
238
|
-
chalk.gray("
|
|
266
|
+
chalk.gray("\nLe serveur de développement redémarrera automatiquement.\n"),
|
|
239
267
|
);
|
|
240
268
|
}
|