@lastbrain/app 0.1.21 → 0.1.23
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/scripts/init-app.js
CHANGED
|
@@ -146,34 +146,76 @@ async function ensurePackageJson(targetDir, projectName) {
|
|
|
146
146
|
console.log(chalk.green("✓ package.json existe"));
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Récupère les versions actuelles des packages LastBrain depuis npm ou le monorepo
|
|
151
|
+
*/
|
|
152
|
+
function getLastBrainVersions(targetDir) {
|
|
153
|
+
const targetIsInMonorepo = fs.existsSync(path.join(targetDir, "../../../packages/core/package.json")) ||
|
|
154
|
+
fs.existsSync(path.join(targetDir, "../../packages/core/package.json"));
|
|
155
|
+
if (targetIsInMonorepo) {
|
|
156
|
+
// Dans le monorepo, utiliser workspace:*
|
|
157
|
+
return {
|
|
158
|
+
app: "workspace:*",
|
|
159
|
+
core: "workspace:*",
|
|
160
|
+
ui: "workspace:*",
|
|
161
|
+
moduleAuth: "workspace:*",
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
// Hors monorepo, lire les versions depuis les package.json locaux (plus fiable que "latest")
|
|
165
|
+
try {
|
|
166
|
+
// Essayer de lire depuis node_modules/@lastbrain (si init-app a été installé)
|
|
167
|
+
const appPkgPath = path.join(__dirname, "../../package.json");
|
|
168
|
+
if (fs.existsSync(appPkgPath)) {
|
|
169
|
+
const appPkg = JSON.parse(fs.readFileSync(appPkgPath, "utf-8"));
|
|
170
|
+
const appVersion = `^${appPkg.version}`;
|
|
171
|
+
// Lire les versions des dépendances de @lastbrain/app
|
|
172
|
+
const coreDep = appPkg.dependencies?.["@lastbrain/core"];
|
|
173
|
+
const uiDep = appPkg.dependencies?.["@lastbrain/ui"];
|
|
174
|
+
const authDep = appPkg.dependencies?.["@lastbrain/module-auth"];
|
|
175
|
+
return {
|
|
176
|
+
app: appVersion,
|
|
177
|
+
core: coreDep || appVersion,
|
|
178
|
+
ui: uiDep || appVersion,
|
|
179
|
+
moduleAuth: authDep || appVersion,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
console.warn(chalk.yellow("⚠️ Impossible de lire les versions locales, utilisation de 'latest'"));
|
|
185
|
+
}
|
|
186
|
+
// Fallback: utiliser "latest"
|
|
187
|
+
return {
|
|
188
|
+
app: "latest",
|
|
189
|
+
core: "latest",
|
|
190
|
+
ui: "latest",
|
|
191
|
+
moduleAuth: "latest",
|
|
192
|
+
};
|
|
193
|
+
}
|
|
149
194
|
async function addDependencies(targetDir, useHeroUI, withAuth, selectedModules = []) {
|
|
150
195
|
const pkgPath = path.join(targetDir, "package.json");
|
|
151
196
|
const pkg = await fs.readJson(pkgPath);
|
|
152
197
|
console.log(chalk.yellow("\n📦 Configuration des dépendances..."));
|
|
153
|
-
|
|
154
|
-
// Vérifier si le projet cible est à l'intérieur du monorepo
|
|
155
|
-
const targetIsInMonorepo = fs.existsSync(path.join(targetDir, "../../../packages/core/package.json")) ||
|
|
156
|
-
fs.existsSync(path.join(targetDir, "../../packages/core/package.json"));
|
|
157
|
-
const latestVersion = targetIsInMonorepo ? "workspace:*" : "latest";
|
|
198
|
+
const versions = getLastBrainVersions(targetDir);
|
|
158
199
|
// Dependencies
|
|
159
200
|
const requiredDeps = {
|
|
160
201
|
next: "^15.0.3",
|
|
161
202
|
react: "^18.3.1",
|
|
162
203
|
"react-dom": "^18.3.1",
|
|
163
|
-
"@lastbrain/app":
|
|
164
|
-
"@lastbrain/core":
|
|
165
|
-
"@lastbrain/ui":
|
|
204
|
+
"@lastbrain/app": versions.app,
|
|
205
|
+
"@lastbrain/core": versions.core,
|
|
206
|
+
"@lastbrain/ui": versions.ui,
|
|
166
207
|
"next-themes": "^0.4.6",
|
|
167
208
|
};
|
|
168
209
|
// Ajouter module-auth si demandé
|
|
169
210
|
if (withAuth) {
|
|
170
|
-
requiredDeps["@lastbrain/module-auth"] =
|
|
211
|
+
requiredDeps["@lastbrain/module-auth"] = versions.moduleAuth;
|
|
171
212
|
}
|
|
172
213
|
// Ajouter les autres modules sélectionnés
|
|
173
214
|
for (const moduleName of selectedModules) {
|
|
174
215
|
const moduleInfo = AVAILABLE_MODULES.find(m => m.name === moduleName);
|
|
175
216
|
if (moduleInfo && moduleInfo.package !== "@lastbrain/module-auth") {
|
|
176
|
-
|
|
217
|
+
// Pour les autres modules, utiliser "latest" ou la version depuis le package
|
|
218
|
+
requiredDeps[moduleInfo.package] = versions.app; // Utiliser la même version que app
|
|
177
219
|
}
|
|
178
220
|
}
|
|
179
221
|
// Ajouter les dépendances HeroUI si nécessaire
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-create.d.ts","sourceRoot":"","sources":["../../src/scripts/module-create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"module-create.d.ts","sourceRoot":"","sources":["../../src/scripts/module-create.ts"],"names":[],"mappings":"AAirBA;;GAEG;AACH,wBAAsB,YAAY,kBAsIjC"}
|
|
@@ -26,10 +26,31 @@ function parseTablesList(input) {
|
|
|
26
26
|
.map((t) => t.trim())
|
|
27
27
|
.filter((t) => t.length > 0);
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Récupère les versions actuelles des packages LastBrain
|
|
31
|
+
*/
|
|
32
|
+
function getLastBrainPackageVersions(rootDir) {
|
|
33
|
+
try {
|
|
34
|
+
const corePackageJson = JSON.parse(fs.readFileSync(path.join(rootDir, "packages", "core", "package.json"), "utf-8"));
|
|
35
|
+
const uiPackageJson = JSON.parse(fs.readFileSync(path.join(rootDir, "packages", "ui", "package.json"), "utf-8"));
|
|
36
|
+
return {
|
|
37
|
+
core: `^${corePackageJson.version}`,
|
|
38
|
+
ui: `^${uiPackageJson.version}`,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
console.warn(chalk.yellow("⚠️ Impossible de lire les versions des packages, utilisation des versions par défaut"));
|
|
43
|
+
return {
|
|
44
|
+
core: "^0.1.0",
|
|
45
|
+
ui: "^0.1.4",
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
29
49
|
/**
|
|
30
50
|
* Génère le contenu du package.json
|
|
31
51
|
*/
|
|
32
|
-
function generatePackageJson(moduleName, slug) {
|
|
52
|
+
function generatePackageJson(moduleName, slug, rootDir) {
|
|
53
|
+
const versions = getLastBrainPackageVersions(rootDir);
|
|
33
54
|
const buildConfigExport = `./${slug}.build.config`;
|
|
34
55
|
return JSON.stringify({
|
|
35
56
|
name: moduleName,
|
|
@@ -38,14 +59,14 @@ function generatePackageJson(moduleName, slug) {
|
|
|
38
59
|
type: "module",
|
|
39
60
|
main: "dist/index.js",
|
|
40
61
|
types: "dist/index.d.ts",
|
|
41
|
-
files: ["dist", "supabase"],
|
|
62
|
+
files: ["dist", "src", "supabase"],
|
|
42
63
|
scripts: {
|
|
43
64
|
build: "tsc -p tsconfig.json",
|
|
44
65
|
dev: "tsc -p tsconfig.json --watch",
|
|
45
66
|
},
|
|
46
67
|
dependencies: {
|
|
47
|
-
"@lastbrain/core":
|
|
48
|
-
"@lastbrain/ui":
|
|
68
|
+
"@lastbrain/core": versions.core,
|
|
69
|
+
"@lastbrain/ui": versions.ui,
|
|
49
70
|
react: "^19.0.0",
|
|
50
71
|
"lucide-react": "^0.554.0",
|
|
51
72
|
"react-dom": "^19.0.0",
|
|
@@ -503,7 +524,7 @@ async function createModuleStructure(config, rootDir) {
|
|
|
503
524
|
await fs.ensureDir(path.join(moduleDir, "supabase", "migrations"));
|
|
504
525
|
// Créer package.json
|
|
505
526
|
console.log(chalk.yellow(" 📄 package.json"));
|
|
506
|
-
await fs.writeFile(path.join(moduleDir, "package.json"), generatePackageJson(config.moduleName, config.slug));
|
|
527
|
+
await fs.writeFile(path.join(moduleDir, "package.json"), generatePackageJson(config.moduleName, config.slug, rootDir));
|
|
507
528
|
// Créer tsconfig.json
|
|
508
529
|
console.log(chalk.yellow(" 📄 tsconfig.json"));
|
|
509
530
|
await fs.writeFile(path.join(moduleDir, "tsconfig.json"), generateTsConfig());
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lastbrain/app",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.23",
|
|
4
4
|
"description": "Framework modulaire Next.js avec CLI et système de modules",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@lastbrain/core": "^0.1.0",
|
|
53
|
-
"@lastbrain/module-auth": "^0.1.
|
|
53
|
+
"@lastbrain/module-auth": "^0.1.2",
|
|
54
54
|
"@lastbrain/ui": "^0.1.4",
|
|
55
55
|
"@supabase/supabase-js": "^2.36.0",
|
|
56
56
|
"chalk": "^5.3.0",
|
package/src/scripts/init-app.ts
CHANGED
|
@@ -192,6 +192,62 @@ async function ensurePackageJson(targetDir: string, projectName: string) {
|
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
194
|
|
|
195
|
+
/**
|
|
196
|
+
* Récupère les versions actuelles des packages LastBrain depuis npm ou le monorepo
|
|
197
|
+
*/
|
|
198
|
+
function getLastBrainVersions(targetDir: string): {
|
|
199
|
+
app: string;
|
|
200
|
+
core: string;
|
|
201
|
+
ui: string;
|
|
202
|
+
moduleAuth: string;
|
|
203
|
+
} {
|
|
204
|
+
const targetIsInMonorepo = fs.existsSync(path.join(targetDir, "../../../packages/core/package.json")) ||
|
|
205
|
+
fs.existsSync(path.join(targetDir, "../../packages/core/package.json"));
|
|
206
|
+
|
|
207
|
+
if (targetIsInMonorepo) {
|
|
208
|
+
// Dans le monorepo, utiliser workspace:*
|
|
209
|
+
return {
|
|
210
|
+
app: "workspace:*",
|
|
211
|
+
core: "workspace:*",
|
|
212
|
+
ui: "workspace:*",
|
|
213
|
+
moduleAuth: "workspace:*",
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// Hors monorepo, lire les versions depuis les package.json locaux (plus fiable que "latest")
|
|
218
|
+
try {
|
|
219
|
+
// Essayer de lire depuis node_modules/@lastbrain (si init-app a été installé)
|
|
220
|
+
const appPkgPath = path.join(__dirname, "../../package.json");
|
|
221
|
+
|
|
222
|
+
if (fs.existsSync(appPkgPath)) {
|
|
223
|
+
const appPkg = JSON.parse(fs.readFileSync(appPkgPath, "utf-8"));
|
|
224
|
+
const appVersion = `^${appPkg.version}`;
|
|
225
|
+
|
|
226
|
+
// Lire les versions des dépendances de @lastbrain/app
|
|
227
|
+
const coreDep = appPkg.dependencies?.["@lastbrain/core"];
|
|
228
|
+
const uiDep = appPkg.dependencies?.["@lastbrain/ui"];
|
|
229
|
+
const authDep = appPkg.dependencies?.["@lastbrain/module-auth"];
|
|
230
|
+
|
|
231
|
+
return {
|
|
232
|
+
app: appVersion,
|
|
233
|
+
core: coreDep || appVersion,
|
|
234
|
+
ui: uiDep || appVersion,
|
|
235
|
+
moduleAuth: authDep || appVersion,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
} catch (error) {
|
|
239
|
+
console.warn(chalk.yellow("⚠️ Impossible de lire les versions locales, utilisation de 'latest'"));
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// Fallback: utiliser "latest"
|
|
243
|
+
return {
|
|
244
|
+
app: "latest",
|
|
245
|
+
core: "latest",
|
|
246
|
+
ui: "latest",
|
|
247
|
+
moduleAuth: "latest",
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
|
|
195
251
|
async function addDependencies(
|
|
196
252
|
targetDir: string,
|
|
197
253
|
useHeroUI: boolean,
|
|
@@ -203,33 +259,30 @@ async function addDependencies(
|
|
|
203
259
|
|
|
204
260
|
console.log(chalk.yellow("\n📦 Configuration des dépendances..."));
|
|
205
261
|
|
|
206
|
-
|
|
207
|
-
// Vérifier si le projet cible est à l'intérieur du monorepo
|
|
208
|
-
const targetIsInMonorepo = fs.existsSync(path.join(targetDir, "../../../packages/core/package.json")) ||
|
|
209
|
-
fs.existsSync(path.join(targetDir, "../../packages/core/package.json"));
|
|
210
|
-
const latestVersion = targetIsInMonorepo ? "workspace:*" : "latest";
|
|
262
|
+
const versions = getLastBrainVersions(targetDir);
|
|
211
263
|
|
|
212
264
|
// Dependencies
|
|
213
265
|
const requiredDeps: Record<string, string> = {
|
|
214
266
|
next: "^15.0.3",
|
|
215
267
|
react: "^18.3.1",
|
|
216
268
|
"react-dom": "^18.3.1",
|
|
217
|
-
"@lastbrain/app":
|
|
218
|
-
"@lastbrain/core":
|
|
219
|
-
"@lastbrain/ui":
|
|
269
|
+
"@lastbrain/app": versions.app,
|
|
270
|
+
"@lastbrain/core": versions.core,
|
|
271
|
+
"@lastbrain/ui": versions.ui,
|
|
220
272
|
"next-themes": "^0.4.6",
|
|
221
273
|
};
|
|
222
274
|
|
|
223
275
|
// Ajouter module-auth si demandé
|
|
224
276
|
if (withAuth) {
|
|
225
|
-
requiredDeps["@lastbrain/module-auth"] =
|
|
277
|
+
requiredDeps["@lastbrain/module-auth"] = versions.moduleAuth;
|
|
226
278
|
}
|
|
227
279
|
|
|
228
280
|
// Ajouter les autres modules sélectionnés
|
|
229
281
|
for (const moduleName of selectedModules) {
|
|
230
282
|
const moduleInfo = AVAILABLE_MODULES.find(m => m.name === moduleName);
|
|
231
283
|
if (moduleInfo && moduleInfo.package !== "@lastbrain/module-auth") {
|
|
232
|
-
|
|
284
|
+
// Pour les autres modules, utiliser "latest" ou la version depuis le package
|
|
285
|
+
requiredDeps[moduleInfo.package] = versions.app; // Utiliser la même version que app
|
|
233
286
|
}
|
|
234
287
|
}
|
|
235
288
|
|
|
@@ -45,10 +45,36 @@ function parseTablesList(input: string): string[] {
|
|
|
45
45
|
.filter((t) => t.length > 0);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Récupère les versions actuelles des packages LastBrain
|
|
50
|
+
*/
|
|
51
|
+
function getLastBrainPackageVersions(rootDir: string): { core: string; ui: string } {
|
|
52
|
+
try {
|
|
53
|
+
const corePackageJson = JSON.parse(
|
|
54
|
+
fs.readFileSync(path.join(rootDir, "packages", "core", "package.json"), "utf-8")
|
|
55
|
+
);
|
|
56
|
+
const uiPackageJson = JSON.parse(
|
|
57
|
+
fs.readFileSync(path.join(rootDir, "packages", "ui", "package.json"), "utf-8")
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
return {
|
|
61
|
+
core: `^${corePackageJson.version}`,
|
|
62
|
+
ui: `^${uiPackageJson.version}`,
|
|
63
|
+
};
|
|
64
|
+
} catch (error) {
|
|
65
|
+
console.warn(chalk.yellow("⚠️ Impossible de lire les versions des packages, utilisation des versions par défaut"));
|
|
66
|
+
return {
|
|
67
|
+
core: "^0.1.0",
|
|
68
|
+
ui: "^0.1.4",
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
48
73
|
/**
|
|
49
74
|
* Génère le contenu du package.json
|
|
50
75
|
*/
|
|
51
|
-
function generatePackageJson(moduleName: string, slug: string): string {
|
|
76
|
+
function generatePackageJson(moduleName: string, slug: string, rootDir: string): string {
|
|
77
|
+
const versions = getLastBrainPackageVersions(rootDir);
|
|
52
78
|
const buildConfigExport = `./${slug}.build.config`;
|
|
53
79
|
return JSON.stringify(
|
|
54
80
|
{
|
|
@@ -58,14 +84,14 @@ function generatePackageJson(moduleName: string, slug: string): string {
|
|
|
58
84
|
type: "module",
|
|
59
85
|
main: "dist/index.js",
|
|
60
86
|
types: "dist/index.d.ts",
|
|
61
|
-
files: ["dist", "supabase"],
|
|
87
|
+
files: ["dist", "src", "supabase"],
|
|
62
88
|
scripts: {
|
|
63
89
|
build: "tsc -p tsconfig.json",
|
|
64
90
|
dev: "tsc -p tsconfig.json --watch",
|
|
65
91
|
},
|
|
66
92
|
dependencies: {
|
|
67
|
-
"@lastbrain/core":
|
|
68
|
-
"@lastbrain/ui":
|
|
93
|
+
"@lastbrain/core": versions.core,
|
|
94
|
+
"@lastbrain/ui": versions.ui,
|
|
69
95
|
react: "^19.0.0",
|
|
70
96
|
"lucide-react": "^0.554.0",
|
|
71
97
|
"react-dom": "^19.0.0",
|
|
@@ -560,7 +586,7 @@ async function createModuleStructure(config: ModuleConfig, rootDir: string) {
|
|
|
560
586
|
console.log(chalk.yellow(" 📄 package.json"));
|
|
561
587
|
await fs.writeFile(
|
|
562
588
|
path.join(moduleDir, "package.json"),
|
|
563
|
-
generatePackageJson(config.moduleName, config.slug)
|
|
589
|
+
generatePackageJson(config.moduleName, config.slug, rootDir)
|
|
564
590
|
);
|
|
565
591
|
|
|
566
592
|
// Créer tsconfig.json
|