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 --adapter mongodb --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.

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