@mostajs/setup 1.1.3 → 1.1.4

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 (2) hide show
  1. package/README.md +87 -3
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -24,7 +24,8 @@ Part of the [@mosta suite](https://mostajs.dev).
24
24
  5. [Les 13 dialectes supportes](#5-les-13-dialectes-supportes)
25
25
  6. [Systeme de modules](#6-systeme-de-modules)
26
26
  7. [Exemples avances](#7-exemples-avances)
27
- 8. [FAQ / Troubleshooting](#8-faq--troubleshooting)
27
+ 8. [Reconfiguration (post-installation)](#8-reconfiguration-post-installation)
28
+ 9. [FAQ / Troubleshooting](#9-faq--troubleshooting)
28
29
 
29
30
  ---
30
31
 
@@ -56,7 +57,10 @@ npm install @mostajs/setup @mostajs/orm
56
57
  │ ├── test-db.route.ts # Factory POST /api/setup/test-db
57
58
  │ ├── install.route.ts # Factory POST /api/setup/install
58
59
  │ ├── detect-modules.route.ts # Factory GET /api/setup/detect-modules
59
- └── install-modules.route.ts # Factory POST /api/setup/install-modules
60
+ ├── install-modules.route.ts # Factory POST /api/setup/install-modules
61
+ │ └── reconfig.route.ts # Factory GET+POST /api/setup/reconfig
62
+ ├── components/
63
+ │ └── ReconfigPanel.tsx # UI reconfiguration (modules + DB)
60
64
  ├── types/
61
65
  │ └── index.ts # Tous les types TypeScript
62
66
  └── index.ts # Barrel exports
@@ -922,7 +926,87 @@ const dialectChanged = await writeEnvLocal({
922
926
 
923
927
  ---
924
928
 
925
- ## 8. FAQ / Troubleshooting
929
+ ## 8. Reconfiguration (post-installation)
930
+
931
+ Apres l'installation initiale, le module fournit un **panneau de reconfiguration** permettant de :
932
+ - Changer de base de donnees (dialecte, connexion, test)
933
+ - Activer / desactiver des modules @mostajs
934
+ - Optionnellement re-seeder la nouvelle base
935
+
936
+ ### Integration dans le projet hote
937
+
938
+ Ce module exporte un **composant React** (`ReconfigPanel`) et une **factory API** (`createReconfigHandlers`),
939
+ mais ne cree pas de pages Next.js. Le projet hote doit creer la route API et la page.
940
+
941
+ #### 1. Route API
942
+
943
+ **`src/app/api/setup/reconfig/route.ts`**
944
+ ```typescript
945
+ import { createReconfigHandlers } from '@mostajs/setup/api/reconfig'
946
+
947
+ const { GET, POST } = createReconfigHandlers()
948
+ export { GET, POST }
949
+ ```
950
+
951
+ #### 2. Page de reconfiguration
952
+
953
+ **`src/app/dashboard/settings/reconfig/page.tsx`**
954
+ ```tsx
955
+ 'use client'
956
+ import ReconfigPanel from '@mostajs/setup/components/ReconfigPanel'
957
+
958
+ export default function ReconfigPage() {
959
+ return (
960
+ <div className="space-y-6">
961
+ <h1 className="text-2xl font-bold">Reconfiguration</h1>
962
+ <ReconfigPanel
963
+ apiEndpoint="/api/setup/reconfig"
964
+ detectEndpoint="/api/setup/detect-modules"
965
+ showSeedOption
966
+ onDbChanged={() => window.location.reload()}
967
+ onSeedRequested={async () => {
968
+ await fetch('/api/setup/install', {
969
+ method: 'POST',
970
+ headers: { 'Content-Type': 'application/json' },
971
+ body: JSON.stringify({ action: 'seed-only' }),
972
+ })
973
+ }}
974
+ />
975
+ </div>
976
+ )
977
+ }
978
+ ```
979
+
980
+ #### 3. Menu dynamique
981
+
982
+ Le module exporte `setupMenuContribution` qui declare la route `/dashboard/settings/reconfig`
983
+ dans le groupe "Administration". Importez-le via le deep import :
984
+
985
+ ```tsx
986
+ import { setupMenuContribution } from '@mostajs/setup/lib/menu'
987
+ ```
988
+
989
+ #### 4. Props de ReconfigPanel
990
+
991
+ | Prop | Type | Description |
992
+ |------|------|-------------|
993
+ | `apiEndpoint` | `string` | URL de l'API reconfig (ex: `/api/setup/reconfig`) |
994
+ | `detectEndpoint` | `string` | URL de l'API detect-modules (ex: `/api/setup/detect-modules`) |
995
+ | `t` | `(key: string) => string` | Fonction de traduction (optionnel) |
996
+ | `showSeedOption` | `boolean` | Afficher la checkbox "Re-seeder" lors d'un changement de DB |
997
+ | `onDbChanged` | `() => void` | Callback apres changement de DB reussi |
998
+ | `onModulesChanged` | `(modules: string[]) => void` | Callback apres maj des modules |
999
+ | `onSeedRequested` | `() => Promise<void>` | Callback pour executer le seed |
1000
+
1001
+ #### 5. Pourquoi le projet hote doit creer les pages ?
1002
+
1003
+ Les modules `@mostajs/*` sont des **bibliotheques npm** (composants, hooks, utilitaires), pas des applications.
1004
+ Next.js App Router exige que les fichiers `page.tsx` soient dans le dossier `src/app/` du projet.
1005
+ Un package npm ne peut pas injecter de pages dans le routeur — c'est donc au projet hote de creer ces fichiers wrapper, meme s'ils ne font qu'importer et afficher un composant du module.
1006
+
1007
+ ---
1008
+
1009
+ ## 9. FAQ / Troubleshooting
926
1010
 
927
1011
  ### L'installation tourne en boucle (GET /setup se repete)
928
1012
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mostajs/setup",
3
- "version": "1.1.3",
3
+ "version": "1.1.4",
4
4
  "description": "Reusable setup wizard module — multi-dialect DB configuration, .env.local writer, seed runner",
5
5
  "author": "Dr Hamid MADANI <drmdh@msn.com>",
6
6
  "license": "MIT",