@mostajs/setup 1.1.0 → 1.1.1

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 CHANGED
@@ -752,17 +752,68 @@ spanner://projects/my-project (Cloud Spanner)
752
752
 
753
753
  ## 6. Systeme de modules
754
754
 
755
- ### Liste statique vs decouverte dynamique
755
+ ### Catalogue des 7 modules connus
756
+
757
+ | Module | Package | Requis | Depend de | Standalone | Description |
758
+ |--------|---------|--------|-----------|------------|-------------|
759
+ | **orm** | `@mostajs/orm` | oui | — | — | ORM multi-dialecte (13 SGBD), pattern Hibernate |
760
+ | **auth** | `@mostajs/auth` | oui | orm | non | NextAuth, sessions, hashage mots de passe |
761
+ | **audit** | `@mostajs/audit` | non | orm | non | Journalisation des actions, tracabilite |
762
+ | **rbac** | `@mostajs/rbac` | non | auth, audit | non | Roles, permissions, matrice RBAC |
763
+ | **settings** | `@mostajs/settings` | non | orm | non | Parametres cle-valeur, formulaire auto, provider React |
764
+ | **face** | `@mostajs/face` | non | **aucune** | **oui** | Detection de visage, descripteurs, matching 1:N |
765
+ | **setup** | `@mostajs/setup` | oui | orm | non | Wizard d'installation, test DB, seed runner |
766
+
767
+ ### Module standalone : @mostajs/face
768
+
769
+ `@mostajs/face` est **100% independant** — il n'importe aucun package `@mostajs/*` et peut etre utilise dans n'importe quelle application React >= 18 sans `@mostajs/orm` ni base de donnees.
770
+
771
+ **Dependance unique** : `@vladmandic/face-api` (reconnaissance faciale TensorFlow.js)
772
+
773
+ ```bash
774
+ npm install @mostajs/face
775
+ ```
776
+
777
+ ```tsx
778
+ import { useCamera, useFaceDetection, compareFaces } from '@mostajs/face'
779
+
780
+ // Hooks React pour camera et detection
781
+ const { videoRef, start, stop } = useCamera()
782
+ const { detect, result } = useFaceDetection()
783
+
784
+ // API bas niveau
785
+ import { loadModels, detectFace, extractDescriptor } from '@mostajs/face'
786
+ import { findMatch, descriptorToArray, arrayToDescriptor } from '@mostajs/face'
787
+ ```
788
+
789
+ Exports : `loadModels`, `detectFace`, `detectAllFaces`, `extractDescriptor`, `compareFaces`, `findMatch`, `findAllMatches`, `descriptorToArray`, `arrayToDescriptor`, `isValidDescriptor`, `drawDetection`, `useCamera`, `useFaceDetection`.
756
790
 
757
- Le package maintient une **liste statique** de 7 modules connus avec metadata riches :
791
+ ### Graphe de dependances
758
792
 
759
793
  ```
760
- orm (requis) → auth (requis) → rbac → settings
761
- audit
762
- face (optionnel, sans dependance)
763
- setup (requis)
794
+ ┌──────────┐
795
+ orm (R) │ R = requis
796
+ └────┬─────┘
797
+ ┌────────┼────────┬──────────┐
798
+ v v v v
799
+ ┌──────────┐ ┌──────┐ ┌──────────┐ ┌───────┐
800
+ │ auth (R) │ │audit │ │ settings │ │setup(R)│
801
+ └────┬─────┘ └──┬───┘ └──────────┘ └───────┘
802
+ │ │
803
+ v v
804
+ ┌──────────────────┐
805
+ │ rbac │
806
+ └──────────────────┘
807
+
808
+ ┌──────────────────────────┐
809
+ │ face (100% standalone) │ ← aucune dependance @mostajs
810
+ └──────────────────────────┘
764
811
  ```
765
812
 
813
+ ### Liste statique vs decouverte dynamique
814
+
815
+ Le package maintient une **liste statique** des 7 modules ci-dessus avec metadata riches (required, dependsOn, icon, description).
816
+
766
817
  Au runtime, `GET /api/setup/detect-modules` interroge aussi **npm** (`npm search @mostajs --json`) pour trouver des packages publies apres le deploiement. Ces modules decouverts sont ajoutes avec `discovered: true` et l'icone 📦.
767
818
 
768
819
  ### Resolution des dependances
@@ -773,15 +824,19 @@ import { resolveModuleDependencies } from '@mostajs/setup'
773
824
  resolveModuleDependencies(['rbac'])
774
825
  // → ['rbac', 'auth', 'audit', 'orm', 'setup']
775
826
  // (rbac depend de auth + audit, auth depend de orm, setup est requis)
827
+
828
+ resolveModuleDependencies(['face'])
829
+ // → ['face', 'orm', 'auth', 'setup']
830
+ // (face n'a pas de dependance @mostajs, mais orm/auth/setup sont requis)
776
831
  ```
777
832
 
778
833
  ### Installation hybride (local + npm)
779
834
 
780
835
  Le handler `install-modules` utilise une strategie hybride :
781
836
 
782
- 1. **Local** : si `packages/mosta-xxx/` existe → `npm install file:./packages/mosta-xxx`
783
- 2. **npm registry** : sinon → `npm install @mostajs/xxx`
784
- 3. **Skip** : si deja dans `node_modules/@mostajs/xxx` pas de `npm install`
837
+ 1. **Skip** : si deja dans `node_modules/@mostajs/xxx`pas de `npm install` (evite hot-reload)
838
+ 2. **Local** : si `packages/mosta-xxx/` existe → `npm install file:./packages/mosta-xxx`
839
+ 3. **npm registry** : sinon → `npm install @mostajs/xxx`
785
840
 
786
841
  Cela evite les 404 npm pour les packages non encore publies et les hot-reloads Next.js inutiles.
787
842
 
@@ -925,12 +980,14 @@ Puis recompilez : `cd packages/mosta-setup && npx tsc`
925
980
 
926
981
  ## Related Packages
927
982
 
928
- - [@mostajs/orm](https://www.npmjs.com/package/@mostajs/orm) Multi-dialect ORM (required)
929
- - [@mostajs/auth](https://www.npmjs.com/package/@mostajs/auth) — Authentication
930
- - [@mostajs/audit](https://www.npmjs.com/package/@mostajs/audit) — Audit logging
931
- - [@mostajs/rbac](https://www.npmjs.com/package/@mostajs/rbac) Roles & Permissions
932
- - [@mostajs/settings](https://www.npmjs.com/package/@mostajs/settings) Key-value settings
933
- - [@mostajs/face](https://www.npmjs.com/package/@mostajs/face) Facial recognition
983
+ | Package | Depend de orm | Standalone | Description |
984
+ |---------|:---:|:---:|-------------|
985
+ | [@mostajs/orm](https://www.npmjs.com/package/@mostajs/orm) | | — | Multi-dialect ORM, 13 SGBD (requis) |
986
+ | [@mostajs/auth](https://www.npmjs.com/package/@mostajs/auth) | oui | non | Authentication NextAuth, sessions |
987
+ | [@mostajs/audit](https://www.npmjs.com/package/@mostajs/audit) | oui | non | Audit logging, tracabilite |
988
+ | [@mostajs/rbac](https://www.npmjs.com/package/@mostajs/rbac) | oui | non | Roles & Permissions RBAC |
989
+ | [@mostajs/settings](https://www.npmjs.com/package/@mostajs/settings) | oui | non | Parametres cle-valeur |
990
+ | [@mostajs/face](https://www.npmjs.com/package/@mostajs/face) | **non** | **oui** | Reconnaissance faciale (independant) |
934
991
 
935
992
  ## License
936
993
 
package/dist/index.d.ts CHANGED
@@ -10,4 +10,5 @@ export { createInstallHandler } from './api/install.route';
10
10
  export { createStatusHandler } from './api/status.route';
11
11
  export { createDetectModulesHandler } from './api/detect-modules.route';
12
12
  export { createInstallModulesHandler } from './api/install-modules.route';
13
+ export { setupMenuContribution } from './lib/menu';
13
14
  export type { DialectType, DialectInfo, DbConfig, InstallConfig, SeedOptions, SeedDefinition, MostaSetupConfig, ModuleDefinition, } from './types/index';
package/dist/index.js CHANGED
@@ -16,3 +16,5 @@ export { createInstallHandler } from './api/install.route';
16
16
  export { createStatusHandler } from './api/status.route';
17
17
  export { createDetectModulesHandler } from './api/detect-modules.route';
18
18
  export { createInstallModulesHandler } from './api/install-modules.route';
19
+ // Menu contribution
20
+ export { setupMenuContribution } from './lib/menu';
@@ -0,0 +1,2 @@
1
+ import type { ModuleMenuContribution } from '@mostajs/menu';
2
+ export declare const setupMenuContribution: ModuleMenuContribution;
@@ -0,0 +1,16 @@
1
+ // @mostajs/setup — Menu contribution
2
+ // Author: Dr Hamid MADANI drmdh@msn.com
3
+ import { Wrench } from 'lucide-react';
4
+ export const setupMenuContribution = {
5
+ moduleKey: 'setup',
6
+ mergeIntoGroup: 'Administration',
7
+ order: 100,
8
+ items: [
9
+ {
10
+ label: 'setup.title',
11
+ href: '/setup',
12
+ icon: Wrench,
13
+ permission: 'admin:access',
14
+ },
15
+ ],
16
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mostajs/setup",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
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",
@@ -65,8 +65,17 @@
65
65
  "bcryptjs": "^2.4.3"
66
66
  },
67
67
  "devDependencies": {
68
+ "@mostajs/menu": "^1.0.2",
68
69
  "@types/bcryptjs": "^2.4.0",
69
70
  "@types/node": "^25.3.3",
70
71
  "typescript": "^5.6.0"
72
+ },
73
+ "peerDependencies": {
74
+ "@mostajs/menu": ">=1.0.2"
75
+ },
76
+ "peerDependenciesMeta": {
77
+ "@mostajs/menu": {
78
+ "optional": true
79
+ }
71
80
  }
72
81
  }