@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.
- package/README.md +87 -3
- 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. [
|
|
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
|
-
│
|
|
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.
|
|
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