Skip to content

Services ​

Services applicatifs ​

Les services applicatifs vivent dans les dossiers déclarés par servicesDirs. La CLI produit la structure attendue par le scanner :

bash
bunx nuxt-feathers-zod add service articles --database mongodb --connection primary --schema zod

Pour une méthode personnalisée :

bash
bunx nuxt-feathers-zod add custom-service reports --methods find --customMethods run --schema zod

Les méthodes standard Feathers et les méthodes personnalisées sont déclarées séparément. Pour un service persistant, --database est le sélecteur portable recommandé et --connection lie le manifeste au registre nommé ; --adapter mongodb|knex reste compatible.

Le générateur accepte aussi --idStrategy objectid|uuid|integer|bigint|string. Les combinaisons sont validées par adapter : MongoDB utilise objectid par défaut ; Knex et Memory utilisent integer. Le manifeste conserve cette stratégie et doctor la contrôle. Le mode bigint utilise une chaîne décimale au niveau API afin de rester compatible JSON.

Services NFZ de console ​

Lorsque console.enabled est actif, le module enregistre neuf services Feathers avant app.setup().

ServiceMéthodesRôle
nfz/servicesfinddécouverte des services et de leur source
nfz/schemasfind, get, patchlecture et synchronisation des schémas
nfz/manifestget, patchmanifeste NFZ courant
nfz/buildercreatepreview et apply d’un plan Builder
nfz/statusfindétat console, authentification et RBAC
nfz/rbacget, patchpolitique RBAC
nfz/presetsfind, createliste, preview et application de presets
nfz/initcreateopérations d’initialisation guidée
nfz/database-connectionsfind, getdiagnostics expurgés et contrôle de santé des connexions nommées

Découverte ​

ts
const builder = useBuilderClient()
const discovery = await builder.getServices<{
  projectRoot: string
  servicesDirs: string[]
  services: Array<{
    name: string
    source: 'manifest' | 'scan'
  }>
}>()

La Console Builder utilise exactement ce résultat. Elle ne suppose pas que services est un tableau de chaînes.

Schémas ​

ts
const schema = await builder.getSchema('users')

Le nom du service est validé. Les noms dangereux comme __proto__, prototype et constructor sont rejetés dans les entrées Builder.

Builder ​

ts
const preview = await builder.preview({
  service: 'users',
  fields: schema.fields,
})

L’action apply est protégée par console.allowWrite :

ts
await builder.apply({
  service: 'users',
  fields: schema.fields,
})

Les payloads sont bornés en profondeur, nombre de nœuds et nombre de champs afin de limiter les entrées anormales.

RBAC ​

ts
const current = await builder.getRbac()
await builder.saveRbac(current.file)

L’écriture est refusée lorsque console.allowWrite vaut false.

Compatibilité 6.x ​

Les routes /api/nfz/** ne sont pas des services métier indépendants. Lorsqu’elles sont activées, elles délèguent aux services ci-dessus et ajoutent des en-têtes de dépréciation.

Documentation utilisateur de nuxt-feathers-zod