Référence d'API — nodefony/svelte
stable
Documentation › Référence d’API › nodefony › svelte
Générée depuis les déclarations de types publiées de
nodefony10.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/svelte#
import { … } from "nodefony/svelte" — 49 symboles.
Classes (1)#
NodefonyLogin#
class NodefonyLogin
Le déroulé de connexion côté navigateur : une machine à états PURE, sans DOM ni framework d’affichage, branchée sur les routes de session du framework. Le pendant de NodefonySocket et de NodefonySse pour l’authentification.
constructor(options?: NodefonyLoginOptions)readonly getState: () => NodefonyLoginState— État courant — le même objet tant que rien n’a changé.readonly subscribe: (listener: (state: NodefonyLoginState) => void) => () => void— Écoute les changements d’état.submitIdentifier(identifier: string): void— Valide le compte saisi et passe à l’étapepassword.submitPassword(password: string): Promise<NodefonyLoginState>— Envoie le mot de passe du compte saisi.login(identifier: string, password: string): Promise<NodefonyLoginState>— Raccourci des formulaires d’un seul écran : compte et mot de passe d’un coup.submitMfaCode(code: string): Promise<NodefonyLoginState>— Envoie le code du second facteur (TOTP ou code de récupération).loginWithPasskey(): Promise<NodefonyLoginState>— Connexion par passkey, sans identifiant ni mot de passe.loadProviders(): Promise<readonly NodefonyLoginProvider[]>— Charge la liste des fournisseurs (une requête, rejouée seulement après échec).startProvider(name: string, from?: string, back?: string): void— Part chez un fournisseur, en navigation PLEINE PAGE — jamais parfetch: le navigateur doit suivre les redirections et revenir avec le cookie de session posé au retour.me(): Promise<NodefonyLoginUser | null>— Reprend une session existante ;nullquand il n’y en a pas.logout(): Promise<string | null>— Ferme la session et revient à l’étapeidentifier.back(): void— Revient à l’étapeidentifier, en gardant le compte saisi.
Fonctions (21)#
configureNodefony#
function configureNodefony(options: NodefonySvelteOptions): void
Installe la politique temps réel de l’application — à appeler UNE fois, dans le point d’entrée, avant mount().
isRateChannel#
function isRateChannel(channel: string, base: string): boolean
Vrai si channel est le canal de base nu OU une de ses variantes cadencées base:<ms>.
nodefony#
function nodefony(): NodefonySocket
nodefony() — la socket brute (canaux, journal, statistiques…). Tête de gondole et échappatoire pour les cas avancés ; pour de l’état réactif, prendre les liaisons dédiées ci-dessous.
nodefonyAdaptiveChannel#
function nodefonyAdaptiveChannel(base: Source<string>, onMessage: (payload: unknown) => void, desiredMs: Source<number>, options?: AdaptiveChannelOptions & { onRate?: (ms: number) => void; }): Dispose
nodefonyAdaptiveChannel() — comme nodefonyChannel, mais en cadence adaptative (AIMD piloté par le client) : la cadence recule sous famine puis remonte quand c’est sain, sans rien changer au serveur.
nodefonyAdaptiveChannelData#
function nodefonyAdaptiveChannelData<T = unknown>(base: Source<string>, desiredMs: Source<number>, options?: AdaptiveChannelOptions): AdaptiveChannelData<T>
nodefonyAdaptiveChannelData() — comme nodefonyChannelData, mais en cadence adaptative. Rend la dernière valeur et la cadence effective, les deux réactives. Réservé aux canaux d’ÉTAT.
nodefonyChannel#
function nodefonyChannel(channel: Source<string>, onMessage: (payload: unknown) => void): Dispose
nodefonyChannel() — s’abonne à un canal pub/sub : onMessage est appelé à chaque message. Le socle apparie subscribe/unsubscribe côté serveur (ref-comptés) et rejoue l’abonnement à chaque reconnexion.
nodefonyChannelData#
function nodefonyChannelData<T = unknown>(channel: Source<string>, initial?: T | null): Reactive<T | null>
nodefonyChannelData() — la dernière valeur reçue sur un canal (le cas le plus courant : la dernière mesure d’un flux d’état). null tant que rien n’est arrivé.
nodefonyChannelStats#
function nodefonyChannelStats(channel: Source<string>): Reactive<ChannelStatsSnapshot | null>
nodefonyChannelStats() — statistiques vivantes d’un canal (débit, série pour un VU-mètre, total). La source est l’échantillonneur du client (1×/s) : aucune horloge n’est posée ici, et aucune trame n’est émise pour mesurer.
nodefonyIdentity#
function nodefonyIdentity(): Reactive<RealtimeIdentity | null>
nodefonyIdentity() — l’identité résolue de la connexion, annoncée par le serveur au realtime:welcome (authenticated, roles, userIdentifier, scopes). null tant qu’aucun welcome n’est arrivé ; une fois reçu, un visiteur anonyme a authenticated: false. Brique du gating front : authenticated: false → écran de connexion, sans appeler /auth/me.
nodefonyKernel#
function nodefonyKernel(): INodefonyKernel | null
nodefonyKernel() — le noyau client fourni à configureNodefony ({ kernel }), ou null quand l’application n’en compose pas. Référence brute ; pour l’état réactif, prendre nodefonyKernelState et nodefonyKernelIdentity.
nodefonyKernelIdentity#
function nodefonyKernelIdentity(): Reactive<NodefonyKernelIdentity | null>
nodefonyKernelIdentity() — l’identité DÉCLARÉE au noyau par l’application (setIdentity), ou null hors session ou sans noyau fourni. Suit les changements de COMPTE — un profil rafraîchi à clé inchangée ne réveille personne (règle d’identité du noyau). Abonnement paresseux.
nodefonyKernelState#
function nodefonyKernelState(): Reactive<NodefonyKernelState | null>
nodefonyKernelState() — l’état du noyau (created → booting → ready → terminated), ou null sans noyau fourni. Abonnement paresseux.
nodefonyLogin#
function nodefonyLogin(options?: NodefonyLoginOptions): NodefonyLoginBinding
nodefonyLogin() — le déroulé de connexion du framework, lu .current. Le balisage reste entièrement à l’application ; les règles vivent dans NodefonyLogin (nodefony/client), jamais ici.
nodefonyNoticeLog#
function nodefonyNoticeLog(options?: Source<NoticeLogOptions>): Reactive<NodefonyNotice[]>
nodefonyNoticeLog() — l’anneau borné des dernières notices, filtrable par source : un historique léger des criticités, distinct des notifications éphémères. La taille de l’anneau et le filtrage viennent du socle (observeNoticeLog).
nodefonyNotifications#
function nodefonyNotifications(onNotice: (notice: NodefonyNotice) => void): Dispose
nodefonyNotifications() — le flux des notices normalisées du client : criticités qui cassent le temps réel (codes de fermeture RFC 6455 interprétés), erreurs poussées par le serveur, rétablissement de connexion. onNotice est appelé pour CHAQUE notice → brancher un centre de notifications.
nodefonySnapshot#
function nodefonySnapshot(): Reactive<SocketSnapshot | null>
nodefonySnapshot() — ce que la socket sait d’ELLE-MÊME : état, canaux tenus, trames reçues, trames perdues, dernière trame. Rafraîchi par l’échantillonneur déjà en place — aucune horloge de plus.
nodefonySse#
function nodefonySse(url: Source<string | null>, options?: ObserveSseOptions): Reactive<SseSnapshot>
nodefonySse() — l’état d’un flux SSE (readyState, dernier événement, erreur), lu .current.
nodefonyState#
function nodefonyState(): Reactive<RealtimeState>
nodefonyState() — l’état de la connexion ("connected", "reconnecting", …), tenu à jour. Branché sur la porte publique onState, jamais sur le nom de l’événement local, qui n’a pas à sortir du client.
nodefonySyslog#
function nodefonySyslog(options?: Source<SyslogOptions>): Reactive<unknown[]>
nodefonySyslog() — le flux du journal, prêt à afficher : anneau borné et filtre de sévérité. Le format coalescé du canal ({ logs, dropped }), l’entrée unique, la taille de l’anneau et le canal par défaut viennent du socle (observeSyslog) : cette liaison n’en connaît aucun.
parseRate#
function parseRate(channel: string, base: string, bounds: RateBounds): number
Résout la cadence (ms) d’un canal cadencé connu, côté serveur. Le serveur connaît la base qu’il vient de matcher ; ce helper en extrait le suffixe :<ms>, borne dans bounds et retombe sur bounds.default pour le canal de base nu ou un suffixe invalide.
rateChannel#
function rateChannel(base: string, intervalMs?: number, defaultMs?: number): string
Construit le nom d’un canal cadencé à partir de sa base et de la cadence demandée.
Interfaces (20)#
AdaptiveChannelData#
interface AdaptiveChannelData<T>
Résultat de nodefonyAdaptiveChannelData : valeur + cadence réelle.
data: Reactive<T | null>— Dernière valeur reçue,nulltant que rien n’est arrivé.intervalMs: Reactive<number>— Cadence effective (ms) — bouge avec l’AIMD, à afficher en badge.
INodefonyKernel#
interface INodefonyKernel
Contrat du kernel client isomorphe (ADR-0007 D2 — surface v1, volontairement minimale : chaque méthode publiée est une promesse SemVer).
get<K extends keyof NodefonyKernelServices>(name: K): NodefonyKernelServices[K]— Récupère un service enregistré (ouundefineds’il n’est pas composé).set<K extends keyof NodefonyKernelServices>(name: K, svc: NodefonyKernelServices[K]): void— Enregistre un service sous son nom contractuel.has(name: string): boolean— Teste la présence d’un service (nom libre, y compris hors contrat).boot(): Promise<void>— Compose et connecte les services (idempotent).terminate(): Promise<void>— Flush l’observabilité et déconnecte (best-effort surpagehide).readonly state: NodefonyKernelState— État courant du kernel — jamais régressif.setIdentity(identity: NodefonyKernelIdentity | null): void— Déclare l’identité runtime courante — c’est l’application qui la connaît (login, logout, bascule de compte), le kernel qui en tire les conséquences.readonly identity: NodefonyKernelIdentity | null— Identité runtime courante, telle que l’application l’a déclarée.on(event: NodefonyKernelEvent, handler: (...args: unknown[]) => void): this— Abonne un handler à un événement du kernel (APIEventdu Core, chaînable).off(event: NodefonyKernelEvent, handler: (...args: unknown[]) => void): this— Retire un handler abonné paron(chaînable).readonly syslog: Syslog— Journal client de série (Pduisomorphes — corrélables au back parrequestId).
ISseEvent#
interface ISseEvent
Un événement reçu, une fois sa ligne vide atteinte (WHATWG §9.2.6).
readonly type: string— Le champevent, ou"message"quand le bloc n’en portait pas.readonly data: string— Les champsdatadu bloc, joints par un saut de ligne.readonly lastEventId: string— L’identifiant courant du flux, après ce bloc —""s’il n’y en a jamais eu.
NodefonyKernelIdentity#
interface NodefonyKernelIdentity
Identité runtime déclarée par l’application au kernel.
readonly key: string— Clé stable du compte — l’unique critère du re-handshake (D9).readonly data?: unknown— Charge libre, opaque au kernel.
NodefonyLoginBinding#
interface NodefonyLoginBinding
Ce que rend nodefonyLogin : l’état lu .current, et le déroulé qui porte les actions.
readonly state: Reactive<NodefonyLoginState>— Photographie du déroulé —state.currentdans un template ou un$effect.readonly flow: NodefonyLogin— Les actions :login,submitMfaCode,startProvider,logout…
NodefonyLoginError#
interface NodefonyLoginError
Échec classé de la dernière action.
readonly kind: LoginErrorKindreadonly message: string— Message du serveur, relayé TEL QUEL — en particulier le refus uniforme d’un 401, qui ne doit jamais être reformulé : le préciser côté client dirait à un inconnu si le compte existe.readonly status: number | null— Statut HTTP,nullquand le serveur n’a pas répondu.readonly retryAt: number | null— Fin du blocage (millisecondes depuis l’époque) — seulement pourthrottled.
NodefonyLoginOptions#
interface NodefonyLoginOptions
Réglages de NodefonyLogin — tous facultatifs.
readonly baseUrl?: string— Origine du serveur ; vide = même origine que la page.readonly identifier?: string— Compte prérempli (le dernier utilisé, mémorisé par l’application).readonly fetch?: typeof fetch—fetchà employer ; défaut : celui du navigateur.readonly navigate?: (url: string) => void— Navigation pleine page vers un fournisseur ; défaut :location.assign.readonly passkey?: NodefonyPasskeyAgent | null— Signataire de passkey ; défaut : l’API WebAuthn native, si elle est complète.readonly now?: () => number— Horloge (ms) ; défaut :Date.now.readonly defaultRetryAfterS?: number— Attente appliquée quand un 429 ne dit pas combien de temps (secondes).
NodefonyLoginProvider#
interface NodefonyLoginProvider
Fournisseur de connexion, tel que le SERVEUR le présente.
readonly name: stringreadonly label: string
NodefonyLoginState#
interface NodefonyLoginState
Photographie du déroulé — un objet NEUF à chaque changement, jamais muté.
readonly step: LoginStepreadonly identifier: string— Compte saisi (ou rendu par le serveur une fois connecté).readonly pending: boolean— Une requête est en vol : l’écran désactive ses boutons.readonly user: NodefonyLoginUser | null— Identité de la session,nulltant qu’elle n’est pas ouverte.readonly mfaMethods: readonly string[]— Seconds facteurs proposés par le serveur à l’étapemfa, réduits à ceux que ce client sait conduire (aujourd’huitotp).readonly error: NodefonyLoginError | nullreadonly providers: readonly NodefonyLoginProvider[] | null— Fournisseurs configurés ;nulltant queNodefonyLogin.loadProvidersn’a pas répondu.readonly passkeyAvailable: boolean— Le navigateur sait-il signer avec une passkey ?
NodefonyLoginUser#
interface NodefonyLoginUser
Identité rendue par le serveur une fois la session ouverte.
readonly id: number | stringreadonly identifier: string— Identifiant de connexion (login, e-mail, sujet fédéré) — le même queIUser.identifier.readonly email?: stringreadonly roles: readonly string[]readonly [field: string]: unknown
NodefonyNotice#
interface NodefonyNotice
Notice normalisée prête à afficher (snackbar / centre de notifications).
level: NoticeLevel— Sévérité d’affichage.title?: string— Titre court (gras), optionnel.message: string— Message lisible (déjà localisé FR).source: "realtime" | "api" | "server"— Origine —realtime(transport WS),api(data plane HTTP),server(push).code?: number— Code corrélé : close code WS, status HTTP ou code d’erreur JSON-RPC.ts: number— Timestamp (ms epoch) de production.
NodefonySvelteOptions#
interface NodefonySvelteOptions
Réglages de configureNodefony — l’un des trois au moins doit être donné.
kernel?: INodefonyKernel— Le noyau client de l’application — la voie COMPOSÉE.url?: string— Adresse du serveur temps réel — la voie SIMPLE.client?: NodefonySocket— Socket déjà construite — la voie AVANCÉE, quand l’application possède son cycle de connexion.
NoticeLogOptions#
interface NoticeLogOptions
Réglages de nodefonyNoticeLog.
max?: number— Taille max de l’anneau (les plus anciennes notices sont évincées).sources?: NodefonyNotice["source"][]— Ne garder que ces sources (ex.
ObserveSseOptions#
interface ObserveSseOptions extends NodefonySseOptions
Réglages de observeSse : ceux de NodefonySse, plus deux.
events?: readonly string[]— Types d’événements écoutés — le champevent:du serveur.onEvent?: (event: ISseEvent) => void— Appelé pour CHAQUE événement reçu, avant la mise à jour de l’état.
RateBounds#
interface RateBounds
Bornes de cadence d’un canal cadencé (toutes en millisecondes).
readonly default: number— Cadence par défaut — celle du canal de base nu (sans suffixe).readonly min: number— Borne basse (cadence minimale autorisée, anti-DoS event-loop).readonly max: number— Borne haute (cadence maximale autorisée).
Reactive#
interface Reactive<T>
Une valeur réactive à la mode de Svelte 5 : on la lit .current.
readonly current: T
RealtimeIdentity#
interface RealtimeIdentity
Identité d’une connexion temps réel, telle que résolue par le serveur au handshake (token neutre IRealtimeToken côté back) et annoncée au client dans la notification système realtime:welcome.
type: string— Type de token résolu ("anonymous","session","jwt", …) — discriminator.authenticated: boolean—falsepour un visiteur anonyme (Zero Trust : toujours présent, jamaisnull).userIdentifier: string— Identifiant logique du porteur ("anonymous","user-42", …).roles: string[]— Rôles plats (RBAC, sans hiérarchie résolue) —["ROLE_ANONYMOUS"]si anonyme.scopes: string[]— Scopes accordés (clés API / OAuth) —[]en session BFF web.
SocketSnapshot#
interface SocketSnapshot
Ce que le client sait de sa PROPRE socket, à un instant donné.
url: string | null— L’adresse du serveur temps réel — de QUELLE socket cet instantané parle.state: RealtimeState— État de la connexion.channels: readonly string[]— Canaux effectivement tenus par cette connexion.frames: number— Trames reçues depuis l’ouverture.unsent: number— Trames perdues faute de transport ouvert — un silence qui se compte.lastFrame: { method: string | null; at: number | null; }— Méthode et horodatage de la dernière trame reçue (nullsi aucune).reconnectAttempts: number— Tentatives de reconnexion depuis la dernière connexion réussie.nextRetryAt: number | null— Échéance de la prochaine tentative (ms epoch),nullhors reconnexion.identity: RealtimeIdentity | null— Identité résolue par le serveur,nullavant le premier welcome.serverChannels: readonly string[] | null— Canaux que le serveur annonce à l’accueil,nullavant le premier welcome.serverMethods: readonly string[] | null— Actions que le serveur annonce à l’accueil,nullavant le premier welcome.
SseSnapshot#
interface SseSnapshot
L’état d’un flux observé — ce qu’une vue affiche.
readonly readyState: number— 0CONNECTING, 1OPEN, 2CLOSED— les constantes deNodefonySse.readonly lastEvent: ISseEvent | null— Le dernier événement reçu d’un des types écoutés,nulltant qu’aucun.readonly error: boolean— La dernière transition était-elle une coupure ?
SyslogOptions#
interface SyslogOptions
Réglages de nodefonySyslog.
max?: number— Taille max de l’anneau (les plus anciennes lignes sont évincées).severities?: string[]— Ne garder que ces sévérités (ex.channel?: string— Canal source.
Types (7)#
AdaptiveChannelOptions#
type AdaptiveChannelOptions = Omit<BindAdaptiveOptions, "intervalMs" | "onRate">
Réglages adaptatifs (la cadence désirée se passe à part, en argument).
ChannelStatsSnapshot#
type ChannelStatsSnapshot = MessageStats
Statistiques observées d’un canal, telles que le client les calcule.
LoginErrorKind#
type LoginErrorKind = "credentials" | "throttled" | "network" | "server" | "cancelled" | "unsupported"
Nature d’un échec, classée pour que l’écran sache QUOI dire.
LoginStep#
type LoginStep = "identifier" | "password" | "mfa" | "authenticated"
Étape du déroulé de connexion.
NodefonyKernelState#
type NodefonyKernelState = "created" | "booting" | "ready" | "terminated"
États du kernel client, ordonnés et non régressifs (symétrie nominale avec les lifecycle flags du Kernel serveur — booted/ready/… — sans en singer la sémantique process).
RealtimeState#
type RealtimeState = "disconnected" | "connecting" | "connected" | "reconnecting" | "error"
Source#
type Source<T> = T | () => T
Une source de valeur : constante, ou fonction qui la lit.