Nodefony 10.0.0-beta.5
Framework Node.js fullstack — HTTP & WebSocket, même contexte

Référence d'API — nodefony — cli

stable

Documentation › Référence d’API › nodefony › cli

Générée depuis les déclarations de types publiées de nodefony 10.0.0-beta.5 : exactement ce que reçoit une application qui l’installe. Cette page n’existe dans aucun dépôt — pour la corriger, on corrige le TSDoc du code.

nodefony#

import { … } from "nodefony" — 150 symboles.

Classes (5)#

EntityFieldError#

class EntityFieldError extends Error

Erreur de syntaxe dans la déclaration d’un champ — message actionnable.

LiveLine#

abstract class LiveLine

Une ligne de terminal qu’on réécrit en place.

ProgressBar#

class ProgressBar extends LiveLine

Progression déterminée : on connaît le total, on montre où l’on en est.

ScaffoldDestinationError#

class ScaffoldDestinationError extends Error

Erreur de destination — message sûr, affichable tel quel (jamais un chemin serveur).

Spinner#

class Spinner extends LiveLine

Attente indéterminée : on montre que ça vit, sans promettre de fin.

Fonctions (65)#

agentRoot#

function agentRoot(target: IAgentTarget, ctx: { projectRoot: string; home?: string; env?: Record<string, string>; }): string

Racine où vit la configuration d’une cible : le projet, ou son dossier maison.

agentsPresents#

function agentsPresents(ctx: { projectRoot: string; home?: string; env?: Record<string, string>; exists: (filePath: string) => boolean; }): IAgentTarget[]

Agents dont la présence est CONSTATÉE sur ce poste.

alreadyHasKey#

function alreadyHasKey(forme: IAgentTarget["forme"], content: string, key: string): boolean

anchorEventLoop#

function anchorEventLoop(): () => void

Retient l’event loop, et rend de quoi le relâcher.

argvMcpWiring#

function argvMcpWiring(chosen: readonly string[], detected: readonly IAgentTarget[], dest: string, opts?: { token?: boolean; }): string[] | null

Traduit le choix d’agents de développement en appel ai:mcp — PURE.

askPasswordMasked#

function askPasswordMasked(question: string): Promise<string>

Demande un secret sans jamais l’ÉCHOTER — mot de passe, phrase de passe.

buildCard#

function buildCard(input: ICardInput): ICard

Construit la carte de visite d’une application à partir de son état.

buildMcpUrl#

function buildMcpUrl(origin: string, endpointPath: string): string

Compose l’URL de l’endpoint MCP.

capAllows#

function capAllows(question: Pick<IScaffoldQuestion, "askIf">, caps: IScaffoldCaps): boolean

La question est-elle posée dans CET environnement ?

chargePrompts#

function chargePrompts(): Promise<IPrompts & Record<string, unknown>>

Charge les prompts — import DYNAMIQUE, et c’est délibéré.

contributionFingerprint#

function contributionFingerprint(content: string | Uint8Array): string

L’empreinte d’un fichier livré : sha256 de ses octets, fins de ligne ramenées à \n pour un TEXTE (aucun octet nul). Sans cette normalisation, un dépôt extrait sous Windows avec core.autocrlf ferait passer chaque fichier intact pour retouché — donc jamais rafraîchi.

createAppContributionContext#

function createAppContributionContext(appRoot: string, options?: { appName?: string; dryRun?: boolean; update?: boolean; recorded?: Readonly<Record<string, string>>; }): { context: IAppContributionContext; written: string[]; kept: string[]; updated: string[]; outdated: string[]; modified: string[]; files: Record<string, string>; }

Construit le contexte d’UNE contribution, qui consigne ce qu’elle pose et ce qu’elle laisse.

diffLines#

function diffLines(before: string, after: string): IDiffLine[]

Diff ligne à ligne de deux contenus (plus longue sous-séquence commune).

escapeRoff#

function escapeRoff(text: string): string

Échappe une chaîne pour roff.

findProjectRoot#

function findProjectRoot(from: string): string | null

Racine du PROJET Nodefony courant (app générée / app utilisateur) : remonte depuis from jusqu’au premier dossier portant nodefony.config.ts + package.json.

fitToWidth#

function fitToWidth(line: string, columns: number): string

Tronque une ligne à la largeur du terminal, séquences ANSI non comptées.

formatDuration#

function formatDuration(ms: number): string

Met en forme une durée pour un humain : 840ms, 12.3s, 4m 05s.

formatEntityField#

function formatEntityField(field: IEntityField): string

Écrit un champ dans la grammaire de la ligne de commande — l’inverse exact de parseEntityFields.

getScaffoldContext#

function getScaffoldContext(dir: string, writer?: ScaffoldWriter): IScaffoldContext | null

Lit le contexte du projet contenant dir.

getScaffoldSpec#

function getScaffoldSpec(type?: string): IScaffoldTypeSpec[]

La spec complète du scaffold — contrat des trois fronts (CLI rapide, CLI interactif, Studio). Structure 100 % sérialisable en JSON.

guessOrigin#

function guessOrigin(cwd: string): string

Déduit l’origine du serveur de développement.

hydrateQuestion#

function hydrateQuestion(question: IScaffoldQuestion, context: IScaffoldContext | null): IScaffoldQuestion

Remplace les réponses possibles d’une question par celles du PROJET RÉEL.

installGitHooks#

function installGitHooks(projectRoot: string, dryRun?: boolean): IGitHooksPlan | null

Pose les hooks natifs dans un projet, et rend le plan de ce qui a été fait.

isInsideRoot#

function isInsideRoot(root: string, child: string): boolean

child est-il À L’INTÉRIEUR de root ?

isSafeSubPath#

function isSafeSubPath(sub: string): boolean

Le sous-chemin proposé est-il navigable sans danger ?

isScaffoldStep#

function isScaffoldStep(value: unknown): value is TScaffoldStep

Une étape connue ? (garde des entrées venues du réseau).

listTargets#

function listTargets(projectRoot: string, writer?: ScaffoldWriter): [ IScaffoldTarget, ...IScaffoldTarget[] ]

lookupSymbol#

function lookupSymbol(graph: ISymbolsGraph, name: string): ISymbolEntry

Trouve un symbole par son nom exact.

mcpWiringPlan#

function mcpWiringPlan(ctx: { chosen: number; installed: boolean; built: boolean; databaseUnreachable?: boolean; manager?: PackageManagerName; }): { propose: true; token: boolean; pattern?: string; } | { propose: false; pattern: string; }

Décide si create app CÂBLE la porte MCP chez les agents choisis. PURE.

needsShell#

function needsShell(command: string, plateforme?: NodeJS.Platform, grammar?: Pick<typeof path, "isAbsolute">): boolean

Faut-il passer par le shell pour lancer cette commande ?

nodefonyBin#

function nodefonyBin(since?: string): string

Le chemin du lanceur nodefony, tel que CETTE installation l’a reçu.

packageManagerCommandLines#

function packageManagerCommandLines(name: PackageManagerName): { install: string; add: (pkg: string) => string; run: (script: string) => string; exec: (bin: string) => string; audit: string; }

Lignes de commande à AFFICHER pour un gestionnaire — ce qu’on conseille à l’utilisateur doit être ce que son outil accepte, et sortir de la même règle que ce qu’on exécute (packageManagerExecArgs).

packageManagerExecArgs#

function packageManagerExecArgs(name: PackageManagerName, bin: string, args?: readonly string[]): string[]

Arguments qui lancent un BINAIRE installé dans le projet (nodefony, vitest…).

packageManagerToolchain#

function packageManagerToolchain(name: PackageManagerName): IPackageManagerToolchain

Commandes d’installation, de cache et d’élagage d’un gestionnaire, pour la forge et pour l’image.

packageManagerUpdateInstallArgs#

function packageManagerUpdateInstallArgs(name: PackageManagerName): string[]

Arguments d’une installation qui SUIT une modification du manifeste (create app, create module, une dépendance ajoutée).

parseEntityFields#

function parseEntityFields(input: string): IEntityField[]

Analyse la déclaration textuelle des champs.

planAgentDeclaration#

function planAgentDeclaration(target: IAgentTarget, ctx: Pick<IDeclarationContext, "url" | "tokenEnv">, remove?: boolean): IDeclarationPlan

Compose la déclaration de la porte MCP chez un agent.

planGitHooks#

function planGitHooks(existing: Record<string, string | null>, currentHooksPath: string | null, wantedHooksPath: string): IGitHooksPlan

Décide, pour chaque hook et pour core.hooksPath, le geste à faire.

planMcpConfig#

function planMcpConfig(existing: IMcpConfigDocument | null, url: string, options?: { auth?: boolean; grammar?: IMcpGrammar; }): IMcpConfigPlan

Décide ce qu’il faut écrire dans .mcp.json.

portableSpawn#

function portableSpawn(command: string, args: readonly string[], platform?: NodeJS.Platform, grammar?: Pick<typeof path, "isAbsolute">, comSpec?: string): IPortableSpawn

Compose la commande portable — voir IPortableSpawn.

poseVariable#

function poseVariable(forme: IAgentTarget["forme"], current: string, key: string, value: string): string | Error

readScaffoldLock#

function readScaffoldLock(appRoot: string): Record<string, IScaffoldLockPackage>

Lit le registre de provenance de l’application.

readSymbolsGraph#

function readSymbolsGraph(from: string): ISymbolsGraph | null

Lit le graphe atteignable depuis from — celui du PROJET fusionné avec celui du framework INSTALLÉ —, ou null si aucun n’est lisible.

renderBar#

function renderBar(done: number, total: number, options?: IRenderBarOptions): string

Dessine une barre de progression, et rien d’autre.

renderCard#

function renderCard(card: ICard): string

Rend la carte pour un HUMAIN (ou un agent qui lit un terminal).

renderGitHook#

function renderGitHook(name: GitHookName): string

Le contenu d’un hook.

renderGitHooksPlan#

function renderGitHooksPlan(plan: IGitHooksPlan, applique: boolean): string

Rend le plan pour un humain.

renderManPage#

function renderManPage(manifest: ICliManifest, version: string): string

Rend la page de manuel complète, en roff.

renderMcpPlan#

function renderMcpPlan(plan: IMcpConfigPlan, file: string, dryRun: boolean): string

Rend le plan pour un lecteur humain.

renderPlanShell#

function renderPlanShell(plan: IDeclarationPlan): string

Rend le plan sous la forme qu’on peut recopier dans un terminal.

request#

function request<T>(interaction: () => Promise<T>): Promise<T>

Exécute une interaction utilisateur en retenant l’event loop.

requestedAgents#

function requestedAgents(raw: string): readonly IAgentTarget[] | Error

Traduit --agent en cibles, ou rend l’erreur à afficher.

resolveAnswers#

function resolveAnswers(spec: IScaffoldTypeSpec, partial: TScaffoldAnswers, caps: IScaffoldCaps): TScaffoldAnswers

Complète et VALIDE des réponses partielles contre la spec d’un type : défauts appliqués, patterns vérifiés, choix contraints à leur liste. Le contexte des templates est donc complet PAR CONSTRUCTION (eta ne rend jamais un undefined silencieux). Les questions askIf non satisfaites sont forcées à false ; celles dont l’askWhen n’est pas satisfait retombent à leur DÉFAUT — une réponse qui porte sur ce qui ne sera pas généré n’a rien à décider.

resolvePackageManager#

function resolvePackageManager(input?: { readonly configured?: PackageManagerName; readonly dir?: string; readonly userAgent?: string; readonly exists?: (file: string) => boolean; }): IPackageManagerResolution

Désigne le gestionnaire de paquets d’un projet (cf l’ordre des sources en tête de fichier).

resolveScaffoldDestination#

function resolveScaffoldDestination(roots: readonly IScaffoldRoot[], rootId: string, sub: string, name: string): string

Recompose la destination d’une nouvelle app, ou refuse.

resolveSymbolsFile#

function resolveSymbolsFile(from: string): string | null

Trouve le graphe symbolique utilisable depuis from.

runAiMcpCommand#

function runAiMcpCommand(argv: string[]): Promise<number>

Point d’entrée de la commande.

runAppContributions#

function runAppContributions(appRoot: string, dryRun?: boolean, update?: boolean): Promise<IAppContributionReport[]>

Exécute les contributions des paquets installés dans une application : chaque paquet qui déclare nodefony.contribute dans son package.json y pose ses fichiers, sans jamais remplacer un fichier présent.

runGitHooksCommand#

function runGitHooksCommand(argv: string[]): number

Commande nodefony git:hooks — hooks git natifs (core.hooksPath), zéro dépendance.

runScaffold#

function runScaffold(request: IScaffoldRequest, version: string, options?: IScaffoldRunOptions): IScaffoldResult

Exécute un scaffold — point d’entrée UNIQUE des trois fronts (CLI rapide, CLI interactif, Studio), dispatché par type : - app : projet NEUF dans request.dir (layers base/preset/frontend) ; - controller : IN-PROJECT — request.dir est le point de départ de la détection de racine (cwd de l’appelant), la cible réelle vient de answers.module (vide = app racine).

runSymbolsCli#

function runSymbolsCli(argv: string[]): Promise<number>

Porte de la ligne de commande : --generate écrit le graphe de l’application, tout le reste le lit (runSymbolsCommand).

runSymbolsCommand#

function runSymbolsCommand(argv: string[]): number

Commande nodefony symbols — le graphe, sans boot et sans dépôt.

scaffoldCaps#

function scaffoldCaps(dir?: string): IScaffoldCaps

Capacités de l’environnement, telles que le MOTEUR les voit.

shouldAnimate#

function shouldAnimate(stream: NodeJS.WriteStream, env?: NodeJS.ProcessEnv): boolean

Faut-il animer du tout ?

supportsUnicode#

function supportsUnicode(env?: NodeJS.ProcessEnv, platform?: string): boolean

Le terminal sait-il dessiner du braille et des blocs ?

Constantes (22)#

AGENT_TARGETS#

const AGENT_TARGETS: readonly IAgentTarget[]

Agents dont l’emplacement de secret a été CONSTATÉ — au comportement ou au source, jamais sur la foi d’une page de blog.

APP_NAME_RE#

const APP_NAME_RE: RegExp

Nom d’application — même expression que la spec du scaffold (spec.ts).

ARC_FRAMES#

const ARC_FRAMES: readonly [ "◜", "◠", "◝", "◞", "◡", "◟" ]

Arcs tournants — plus discret que le braille, même encombrement.

BAR_STYLES#

const BAR_STYLES: { readonly blocks: { readonly filled: "▰"; readonly empty: "▱"; }; readonly solid: { readonly filled: "█"; readonly empty: "░"; }; readonly ascii: { readonly filled: "="; readonly empty: "-"; }; readonly dots: { readonly filled: "●"; readonly empty: "○"; }; }

Styles de barre prêts à l’emploi.

BLOCK_FRAMES#

const BLOCK_FRAMES: readonly [ "▁", "▂", "▃", "▄", "▅", "▆", "▇", "▆", "▅", "▄", "▃", "▂" ]

Barres montantes — suggère une activité qui « pompe ».

BRAILLE_FRAMES#

const BRAILLE_FRAMES: readonly [ "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏" ]

Tourniquet braille — dix images, rotation fluide. Le défaut.

DOT_FRAMES#

const DOT_FRAMES: readonly [ " ", ". ", ".. ", "..." ]

Points qui s’ajoutent — le plus sobre, et le seul purement ASCII.

ENTITY_FIELD_TYPES#

const ENTITY_FIELD_TYPES: readonly [ "string", "text", "int", "float", "bool", "json", "date", "uuid", "enum", "char", "decimal" ]

Types de champ du vocabulaire Nodefony (jamais le vocabulaire Drizzle).

FRONTEND_CHOICES#

const FRONTEND_CHOICES: readonly [ "none", "react", "vue", "angular", "svelte" ]

Frameworks front supportés par @nodefony/frontend (builder Vite multi-framework).

GIT_HOOKS_DIR#

const GIT_HOOKS_DIR = ".githooks"

Dossier des hooks, relatif à la racine de l’application, écrit en /.

GIT_HOOKS_MARKER#

const GIT_HOOKS_MARKER = "pos\u00E9 par `nodefony git:hooks`"

Marqueur d’APPARTENANCE, présent dans chaque hook généré.

GIT_HOOK_NAMES#

const GIT_HOOK_NAMES: readonly [ "pre-commit", "pre-push" ]

Les hooks que la commande sait poser, dans l’ordre d’affichage.

LINE_FRAMES#

const LINE_FRAMES: readonly [ "-", "\\", "|", "/" ]

Tourniquet ASCII — le repli quand la police ne porte pas le braille.

MAN_PAGE_NAME#

const MAN_PAGE_NAME = "nodefony.1"

Nom de la page, section 1 (commandes utilisateur).

MCP_CONFIG_FILE#

const MCP_CONFIG_FILE = ".mcp.json"

Fichier de configuration, à la racine du projet.

MCP_ENDPOINT_PATH#

const MCP_ENDPOINT_PATH = "/nodefony/mcp"

Chemin de l’endpoint MCP.

MCP_SERVER_KEY#

const MCP_SERVER_KEY = "nodefony"

Nom de la clé sous laquelle notre serveur est déclaré.

MCP_TOKEN_ENV#

const MCP_TOKEN_ENV = "NF_MCP_TOKEN"

Nom de la variable d’environnement qui porte le jeton de la porte MCP.

SCAFFOLD_LOCK_FILE#

const SCAFFOLD_LOCK_FILE = "scaffold.lock.json"

Le nom du registre de provenance, à la racine de l’application.

SCAFFOLD_STEPS#

const SCAFFOLD_STEPS: readonly [ "install", "build", "typecheck" ]

Étapes possibles, dans leur ordre d’exécution naturel.

SCAFFOLD_STEP_COMMANDS#

const SCAFFOLD_STEP_COMMANDS: Record<TScaffoldStep, readonly string[]>

Arguments passés à npm pour chaque étape.

SCAFFOLD_STEP_LABELS#

const SCAFFOLD_STEP_LABELS: Record<TScaffoldStep, string>

Ce que chaque étape apporte — affiché avant de la lancer.

Interfaces (42)#

IAgentTarget#

interface IAgentTarget

Un agent de développement, et l’endroit où il lit ses variables.

IAppContributionContext#

interface IAppContributionContext

Ce qu’une contribution reçoit : la racine de l’application et des gestes d’écriture qui ne REMPLACENT jamais un fichier existant.

IAppContributionReport#

interface IAppContributionReport

Ce qu’une contribution a fait — une entrée par paquet contributeur.

IBarStyle#

interface IBarStyle

Paire de caractères d’une barre : ce qui est fait, ce qui reste.

ICard#

interface ICard

La carte de visite complète de l’application.

ICardAppInfo#

interface ICardAppInfo

Identité de l’application qui répond.

ICardDoor#

interface ICardDoor

Une PORTE : un endroit où aller chercher la suite.

ICardInput#

interface ICardInput

État minimal dont ICard se dérive.

ICardVerb#

interface ICardVerb

Un VERBE : une commande à lancer.

IContributionWriteOptions#

interface IContributionWriteOptions

Options d’écriture d’une contribution.

IDeclarationContext#

interface IDeclarationContext

Ce qu’il faut savoir pour composer la déclaration chez un agent.

IDiffLine#

interface IDiffLine

Une ligne d’un diff, telle que diffLines la classe.

IGitHooksPlan#

interface IGitHooksPlan

Le plan complet — hooks ET configuration, jugés ensemble.

ILiveLineOptions#

interface ILiveLineOptions

Réglages communs à toutes les formes.

IMcpConfigDocument#

interface IMcpConfigDocument

Un fichier de configuration MCP dans son entier — .mcp.json ou celui d’un agent qui tient le sien.

IMcpConfigPlan#

interface IMcpConfigPlan

Résultat de la composition — ce qu’on écrira, et pourquoi.

IMcpServerEntry#

interface IMcpServerEntry

Une entrée de serveur MCP en transport HTTP.

IPackageManagerGithubSetup#

interface IPackageManagerGithubSetup

Action GitHub qui pose l’outil sur l’exécuteur, avant setup-node.

IPackageManagerResolution#

interface IPackageManagerResolution

Gestionnaire retenu, et la source qui l’a désigné.

IPackageManagerToolchain#

interface IPackageManagerToolchain

Ce qu’une chaîne d’INTÉGRATION (forge, image de conteneur) doit écrire pour un gestionnaire — UNE règle, lue par les gabarits CI et le Dockerfile.

IPlannedGitHook#

interface IPlannedGitHook

Le geste décidé pour un hook.

IPortableSpawn#

interface IPortableSpawn

Ce qu’il faut donner à spawn/spawnSync pour lancer command args… sur ce système — SANS jamais confier des arguments à un shell.

IProgressBarOptions#

interface IProgressBarOptions extends ILiveLineOptions

Réglages d’une ProgressBar.

IProgressState#

interface IProgressState

Ce qu’un rendu de barre reçoit pour composer sa ligne.

IPrompts#

interface IPrompts

Les questions servies par cette porte — le sous-ensemble réellement utilisé.

IRenderBarOptions#

interface IRenderBarOptions

Réglages de renderBar.

IScaffoldCaps#

interface IScaffoldCaps

Capacités de l’environnement, telles que le MOTEUR les voit — ce qu’un front ne peut pas deviner (cf IScaffoldQuestion.askIf).

IScaffoldChange#

interface IScaffoldChange

Écriture prévue par un scaffold, telle qu’un dry-run la restitue.

IScaffoldConnector#

interface IScaffoldConnector

IScaffoldContext#

interface IScaffoldContext

Ce que le PROJET RÉEL offre comme choix à un scaffold, sans démarrer le noyau.

IScaffoldLock#

interface IScaffoldLock

Le registre de provenance — scaffold.lock.json à la racine de l’application, VERSIONNÉ avec elle : l’empreinte de chaque fichier suivi tel que le paquet l’a livré. C’est lui qui distingue un fichier intact (donc rafraîchissable) d’un fichier retouché (donc à l’application).

IScaffoldLockPackage#

interface IScaffoldLockPackage

L’entrée d’un paquet au registre de provenance.

IScaffoldQuestion#

interface IScaffoldQuestion

IScaffoldRequest#

interface IScaffoldRequest

IScaffoldResult#

interface IScaffoldResult

IScaffoldRoot#

interface IScaffoldRoot

Racine autorisée : un espace de travail où l’on a le droit de créer une app.

IScaffoldRunOptions#

interface IScaffoldRunOptions

Options d’exécution d’un scaffold (cf runScaffold).

IScaffoldTarget#

interface IScaffoldTarget

Cible d’un scaffold in-project : l’app racine ou un module du projet.

IScaffoldTypeSpec#

interface IScaffoldTypeSpec

Spec d’un type de scaffold (app aujourd’hui ; module/controller/entity suivent).

ISpinnerOptions#

interface ISpinnerOptions extends ILiveLineOptions

Réglages d’un Spinner.

ISymbolEntry#

interface ISymbolEntry

Un symbole tel que le graphe le décrit (surface utile, pas le fichier entier).

ISymbolsGraph#

interface ISymbolsGraph

Ce que le graphe contient, réduit à ce que ses lecteurs utilisent.

Types (15)#

CardSource#

type CardSource = "runtime" | "static"

D’où vient la liste de modules — et donc ce que la carte a le droit d’affirmer.

DeclarationChannel#

type DeclarationChannel = "fichier-projet" | "fichier-agent" | "cli"

Comment la porte MCP se déclare chez un agent.

GitHookAction#

type GitHookAction = "pose" | "remplace" | "inchange" | "refus-etranger"

Ce qu’il faut faire d’un hook, une fois comparé à l’existant.

GitHookName#

type GitHookName = (typeof GIT_HOOK_NAMES)[number]

HooksPathAction#

type HooksPathAction = "pose" | "inchange" | "refus-autre"

Ce qu’il faut faire de core.hooksPath.

IDeclarationPlan#

type IDeclarationPlan = { channel: "fichier-projet"; file: string; } | { channel: "fichier-agent"; file: string; mcpFile: IAgentMcpFile; } | { channel: "cli"; bin: string; argv: string[]; }

Ce qu’il faut lancer — ou ne pas lancer — pour qu’un agent connaisse la porte.

McpConfigAction#

type McpConfigAction = "pose" | "remplace" | "inchange"

Ce que la commande a décidé de faire.

ProgressRenderer#

type ProgressRenderer = (state: IProgressState) => string

Rendu d’une ligne de progression.

SpinnerRenderer#

type SpinnerRenderer = (frame: string, label: string) => string

Rendu d’une ligne animée : c’est le CONSOMMATEUR qui décide du contenu.

TAppContributor#

type TAppContributor = (context: IAppContributionContext) => void | Promise<void>

La fonction qu’un paquet exporte sous le nom contribute pour poser ses fichiers dans une application.

TFrontendChoice#

type TFrontendChoice = (typeof FRONTEND_CHOICES)[number]

TPresetChoice#

type TPresetChoice = (typeof PRESET_CHOICES)[number]

TScaffoldAnswers#

type TScaffoldAnswers = Partial<Record<string, string | boolean | string[]>>

Réponses d’un scaffold, complétées et validées contre la spec.

TScaffoldCap#

type TScaffoldCap = keyof IScaffoldCaps

Nom d’une capacité d’environnement (IScaffoldCaps).

TScaffoldStep#

type TScaffoldStep = (typeof SCAFFOLD_STEPS)[number]

Énumérations (1)#

SysExit#

enum SysExit { OK = 0, USAGE = 64, DATAERR = 65, NOINPUT = 66, UNAVAILABLE = 69, CANTCREAT = 73, SOFTWARE = 70, NOPERM = 77, CONFIG = 78 }

Codes de sortie standardisés — convention BSD sysexits.h (FreeBSD sysexits(3)). Ce n’est PAS un RFC, mais le standard de facto Unix pour des exit codes porteurs de sens, au-delà du binaire POSIX 0/non-zéro. Permet à un script appelant de distinguer un « mauvais usage » d’une « erreur interne » ou d’une « config invalide ».


← Toutes les références d’API