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

Référence d'API — nodefony/client — racine

stable

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

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/client#

import { … } from "nodefony/client" — 95 symboles.

Classes (8)#

AdaptiveRate#

class AdaptiveRate

BrowserWsTransport#

class BrowserWsTransport implements IRealtimeTransport

BrowserWsTransport — transport IRealtimeTransport pour le navigateur : wrap d’un WebSocket natif. Volontairement « bête » : il ouvre/envoie/ferme et relaie les events. L’orchestration (reconnect, backoff, heartbeat, state machine) vit AU-DESSUS dans NodefonySocket — qui crée un transport NEUF à chaque tentative.

NodefonyKernel#

class NodefonyKernel implements INodefonyKernel

Kernel client — se construit par new, comme NodefonySocket et NodefonySse : jamais un singleton de module (testabilité, HMR-safe : un module réévalué par Vite dédoublerait un singleton, gotcha vécu sur le contexte React de Studio), et plusieurs kernels coexistent en test.

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.

NodefonySocket#

class NodefonySocket<Emit extends EventsMap = DefaultEventsMap, Listen extends EventsMap = DefaultEventsMap, Actions extends ActionsMap = DefaultActionsMap> implements IRealtimeSocket<Emit, Listen>, IRealtimePeer<Emit, Actions>

Socket cliente de Nodefony : une connexion WebSocket JSON-RPC 2.0 vers le serveur temps réel de l’application, qui rétablit la liaison après une coupure.

NodefonySse#

class NodefonySse extends EventTarget

Client d’un flux text/event-stream, compatible EventSource, sur fetch.

SseLimitError#

class SseLimitError extends RangeError

Un événement — ou une ligne — dépasse la taille admise.

SseParser#

class SseParser

Lit un flux text/event-stream déjà décodé en texte, morceau par morceau.

Fonctions (32)#

adaptiveRebindKey#

function adaptiveRebindKey(base: string, desiredMs: number, enabled?: boolean): string

Clé de re-liaison d’un canal en cadence adaptative.

bindAdaptiveChannel#

function bindAdaptiveChannel(socket: IRealtimeSocket, base: string, handler: RealtimeHandler, options: BindAdaptiveOptions): AdaptiveChannelBinding

Câble un AdaptiveRate à une socket réelle : abonne base à sa cadence désirée, mesure la gigue d’arrivée, et ré-abonne automatiquement à une cadence plus grossière en cas de famine (MD) puis plus fine quand c’est sain (AI). Les frames continuent d’être livrées à handler à travers les changements de cadence.

closeCodeToNotice#

function closeCodeToNotice(code: number, reason?: string): NodefonyNotice | null

Traduit un code de fermeture WebSocket (RFC 6455 §7.4) en NodefonyNotice — pendant CLIENT du toWsCloseCode serveur (@nodefony/http). Pur, sans état, donc trivialement testable et réutilisable.

connectShared#

function connectShared(opts: ConnectSharedOptions): SharedConnection

Résout la socket partagée d’une adresse — ou adopte celle qu’on lui donne — et rend de quoi la démarrer sans jamais la couper.

describeSocket#

function describeSocket(snapshot: SocketSnapshot): SocketDetailRow[]

Ce que le client sait de SA socket, mis en mots — la même description pour le tableau de la console du navigateur et pour la vignette qu’une page affiche.

generateId#

function generateId(): string

Génère un identifiant unique (UUID v4) côté client.

getCurrentRequestId#

function getCurrentRequestId(): string

requestId de la portée courante, undefined en dehors de withRequestId.

getPageId#

function getPageId(): string

Identifiant stable de ce chargement de page (UUID v4), généré à la demande.

initialSseSnapshot#

function initialSseSnapshot(url: string | URL | null): SseSnapshot

L’état d’un flux AVANT que observeSse ne l’ouvre — la valeur initiale qu’une liaison affiche au premier rendu : CONNECTING pour une adresse, CLOSED sans erreur pour null.

installErrorCapture#

function installErrorCapture(opts: ErrorCaptureOptions): () => void

Installe la capture des erreurs globales du navigateur.

installRequestIdProvider#

function installRequestIdProvider(): () => void

Branche getCurrentRequestId sur Pdu.requestIdProvider, de sorte que tout Pdu créé dans une portée withRequestId porte son requestId — le même champ que côté serveur, donc la même clé de recoupement, sans qu’aucun appelant ait à le répéter.

function installSyslogUplink(opts: SyslogUplinkOptions): () => void

Installe la remontée des journaux du navigateur vers le pod.

isLocalEvent#

function isLocalEvent(event: string): event is LocalEvent

Vrai si event est un événement local du client (jamais un canal réseau).

observeAdaptiveChannel#

function observeAdaptiveChannel(client: ObservableClient, base: string, emit: Emit<unknown>, desiredMs: number, options?: AdaptiveObserveOptions): AdaptiveChannelBinding

Observe un canal d’ÉTAT en cadence adaptative (AIMD piloté par le client) : la cadence recule sous famine et remonte quand c’est sain, sans changement serveur. emit reçoit chaque frame à travers les changements de cadence.

observeChannel#

function observeChannel(client: ObservableClient, channel: string, emit: Emit<unknown>): Dispose

Observe un canal pub/sub : emit est appelé pour chaque message reçu.

observeChannelData#

function observeChannelData<T = unknown>(client: ObservableClient, channel: string, emit: Emit<T | null>, initial?: T | null): Dispose

Observe la dernière valeur reçue sur un canal — le cas le plus courant (dernière mesure d’un flux d’état). emit reçoit initial immédiatement, puis chaque nouvelle valeur : dernier arrivé gagne.

observeChannelStats#

function observeChannelStats(client: ObservableClient, channel: string, emit: Emit<MessageStats | null>): Dispose

Observe les statistiques d’un canal (débit, série du VU-mètre, total), rafraîchies par l’échantillonneur du client une fois par seconde. emit reçoit l’instantané courant immédiatement, puis à chaque échantillon.

observeIdentity#

function observeIdentity(client: ObservableClient, emit: Emit<RealtimeIdentity | null>): Dispose

Observe l’identité résolue par le serveur au welcome (null tant qu’aucun welcome n’est arrivé, et après un disconnect() volontaire). emit reçoit la valeur courante immédiatement, puis à chaque (re)welcome.

observeKernelIdentity#

function observeKernelIdentity(kernel: INodefonyKernel, emit: Emit<NodefonyKernelIdentity | null>): Dispose

Observe l’identité DÉCLARÉE au noyau par l’application (setIdentity) — null hors session. emit reçoit la valeur courante immédiatement, puis à chaque changement de COMPTE.

observeKernelState#

function observeKernelState(kernel: INodefonyKernel, emit: Emit<NodefonyKernelState>): Dispose

Observe l’état du noyau client (created → booting → ready → terminated). emit reçoit l’état courant immédiatement, puis à chaque transition.

observeLogin#

function observeLogin(login: NodefonyLogin, onChange: (state: NodefonyLoginState) => void): () => void

Relaie l’état d’un NodefonyLogin vers un rappel : une fois tout de suite, puis à chaque changement. C’est le seul point d’attache des liaisons nodefony/{react,vue,svelte,angular} — même forme que observeSse.

observeNoticeLog#

function observeNoticeLog(client: ObservableClient, emit: Emit<NodefonyNotice[]>, opts?: ObserveNoticeLogOptions): Dispose

Observe un historique borné des dernières notices, filtrable par source : un journal léger des incidents temps réel, distinct des notifications éphémères. emit reçoit le tableau complet à chaque changement.

observeNotices#

function observeNotices(client: ObservableClient, emit: Emit<NodefonyNotice>): Dispose

Observe les 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. emit est appelé pour CHAQUE notice — de quoi brancher un centre de notifications.

observeReconnect#

function observeReconnect(client: ObservableClient, emit: Emit<RealtimeReconnectInfo>): Dispose

Observe les tentatives de reconnexion programmées par le back-off : numéro d’essai, délai retenu, échéance absolue. De quoi rendre un compte à rebours plutôt qu’un « déconnecté » muet.

observeSnapshot#

function observeSnapshot(client: ObservableClient, emit: Emit<SocketSnapshot>): Dispose

Observe l’instantané : emit reçoit la valeur courante immédiatement, puis à chaque échantillon du client (une fois par seconde), à chaque changement d’état et à chaque accueil qui change l’identité — les seuls moments où il peut avoir bougé de façon visible.

observeSse#

function observeSse(url: string | URL | null, emit: Emit<SseSnapshot>, options?: ObserveSseOptions): Dispose

Observe un flux text/event-stream : l’ouvre, rend son état à emit à chaque transition et à chaque événement, et le ferme à la libération.

observeState#

function observeState(client: ObservableClient, emit: Emit<RealtimeState>): Dispose

Observe l’état de la connexion. emit reçoit l’état courant immédiatement, puis à chaque transition — une liaison n’a donc rien à initialiser à part.

observeSyslog#

function observeSyslog(client: ObservableClient, emit: Emit<unknown[]>, opts?: ObserveSyslogOptions): Dispose

Observe le journal du serveur : anneau borné, filtre de sévérité, et surtout le format coalescé du canal ({ logs: Pdu[], dropped }) autant que l’entrée unique. emit reçoit le tableau complet à chaque changement — une nouvelle référence, directement affichable.

resetClientLogContext#

function resetClientLogContext(): void

Remet le module à son état initial — réservé aux tests, qui doivent pouvoir repartir d’une page « neuve » sans recharger un document.

socketSnapshot#

function socketSnapshot(client: SnapshotSource): SocketSnapshot

Lit l’instantané courant. Purement local : aucune trame n’est émise, rien n’est demandé au serveur — afficher cet état ne coûte donc rien au réseau.

sseRebindKey#

function sseRebindKey(url: string | URL | null, options?: ObserveSseOptions): string

Clé de ré-ouverture d’un flux : l’adresse et les types écoutés, et rien d’autre. Le rappel onEvent et les objets d’options changent d’identité à chaque rendu dans la plupart des frameworks ; rouvrir à chaque rendu couperait le flux en boucle. Les autres réglages (en-têtes, corps) sont lus à l’ouverture.

withRequestId#

function withRequestId<T>(requestId: string, fn: () => T): T

Exécute fn en déclarant que ce qu’elle journalise appartient à la requête requestId.

Constantes (5)#

BROWSER_ERROR_MSGID#

const BROWSER_ERROR_MSGID = "BROWSER_ERROR"

Catégorie par défaut d’une exception non rattrapée.

BROWSER_REJECTION_MSGID#

const BROWSER_REJECTION_MSGID = "BROWSER_REJECTION"

Catégorie d’une promesse rejetée sans catch.

LOCAL_EVENTS#

const LOCAL_EVENTS: { readonly state: "__state__"; readonly identity: "__identity__"; readonly stats: "__stats__"; readonly notice: "__notice__"; readonly denied: "__denied__"; readonly subscribed: "__subscribed__"; readonly reconnect: "__reconnect__"; }

Événements locaux du NodefonySocket — jamais émis ni reçus par le réseau.

SSE_MAX_EVENT_SIZE#

const SSE_MAX_EVENT_SIZE: number

Taille maximale d’un événement par défaut, en unités UTF-16 : 4 Mi.

UPLINK_MSGID#

const UPLINK_MSGID = "CLIENT_UPLINK"

Catégorie (msgid) réservée à ce que le transport dit de LUI-MÊME. Les entrées qui la portent sont exclues de la remontée : sans cette exclusion, un envoi qui échoue journalise son échec, ce qui produit une entrée, qui déclenche un envoi, qui échoue.

Interfaces (37)#

AdaptiveChannelBinding#

interface AdaptiveChannelBinding

Poignée du canal adaptatif — cadence courante + coupure.

AdaptiveRateOptions#

interface AdaptiveRateOptions

Réglages de la cadence adaptative. Seul intervalMs est requis.

AdaptiveScheduler#

interface AdaptiveScheduler

Planificateur du watchdog — injectable pour des tests déterministes (défaut : globals).

BindAdaptiveOptions#

interface BindAdaptiveOptions extends AdaptiveRateOptions

Réglages du câblage adaptatif = AdaptiveRateOptions + crochets/injection.

ConnectSharedOptions#

interface ConnectSharedOptions

Options de connectShared — le noyau, la socket déjà construite, ou l’adresse.

ErrorCaptureOptions#

interface ErrorCaptureOptions

IApiCallResult#

interface IApiCallResult<T = unknown>

Enveloppe d’un appel NodefonySocket.call : la valeur rendue par la route, et l’identifiant du profil serveur de cette frame (dev — null en production, où le serveur n’émet aucune méta).

INodefonyKernel#

interface INodefonyKernel

Contrat du kernel client isomorphe (ADR-0007 D2 — surface v1, volontairement minimale : chaque méthode publiée est une promesse SemVer).

ISseEvent#

interface ISseEvent

Un événement reçu, une fois sa ligne vide atteinte (WHATWG §9.2.6).

ISseParserHandlers#

interface ISseParserHandlers

Ce que l’analyseur rend à mesure qu’il lit.

KernelPingResult#

interface KernelPingResult

Réponse de la méthode RPC standard nodefony:kernel:ping — CONVENTION Nodefony : tout endpoint realtime (Studio aujourd’hui, RealtimeService en P13.4) y répond. Sert de liveness + base de mesure du round-trip (cf NodefonySocket.ping).

NodefonyKernelIdentity#

interface NodefonyKernelIdentity

Identité runtime déclarée par l’application au kernel.

NodefonyKernelOptions#

interface NodefonyKernelOptions

Options de new NodefonyKernel().

NodefonyKernelServices#

interface NodefonyKernelServices

Registre TYPÉ des services techniques portés par le kernel client.

NodefonyLoginError#

interface NodefonyLoginError

Échec classé de la dernière action.

NodefonyLoginOptions#

interface NodefonyLoginOptions

Réglages de NodefonyLogin — tous facultatifs.

NodefonyLoginProvider#

interface NodefonyLoginProvider

Fournisseur de connexion, tel que le SERVEUR le présente.

NodefonyLoginState#

interface NodefonyLoginState

Photographie du déroulé — un objet NEUF à chaque changement, jamais muté.

NodefonyLoginUser#

interface NodefonyLoginUser

Identité rendue par le serveur une fois la session ouverte.

NodefonyNotice#

interface NodefonyNotice

Notice normalisée prête à afficher (snackbar / centre de notifications).

NodefonyPasskeyAgent#

interface NodefonyPasskeyAgent

Ce qui signe un défi WebAuthn. Par défaut, l’API native du navigateur ; injectable pour un test, ou pour une bibliothèque qui couvre les navigateurs anciens.

NodefonySocketOptions#

interface NodefonySocketOptions

NodefonySseOptions#

interface NodefonySseOptions

Options de NodefonySse.

ObserveNoticeLogOptions#

interface ObserveNoticeLogOptions

Options de observeNoticeLog.

ObserveSseOptions#

interface ObserveSseOptions extends NodefonySseOptions

Réglages de observeSse : ceux de NodefonySse, plus deux.

ObserveSyslogOptions#

interface ObserveSyslogOptions

Options de observeSyslog.

RateDecision#

interface RateDecision

Décision de la boucle AIMD : nouvelle cadence + pourquoi. null = ne rien changer.

RealtimeFrame#

interface RealtimeFrame

Une frame du protocole temps réel (JSON-RPC 2.0) — pour le log/inspecteur.

RealtimeReconnectInfo#

interface RealtimeReconnectInfo

Tentative de reconnexion programmée par le back-off — charge utile de NodefonySocket.onReconnect.

SharedConnection#

interface SharedConnection

Résultat de connectShared : la socket, à qui elle appartient, et comment la démarrer.

SocketDetailRow#

interface SocketDetailRow

Une ligne de la description d’une socket : ce qu’on lit, et pourquoi ça compte.

SocketSnapshot#

interface SocketSnapshot

Ce que le client sait de sa PROPRE socket, à un instant donné.

SseSnapshot#

interface SseSnapshot

L’état d’un flux observé — ce qu’une vue affiche.

SyslogUplinkOptions#

interface SyslogUplinkOptions

UplinkBatch#

interface UplinkBatch

Enveloppe d’un lot poussé sur le canal montant.

UplinkPublisher#

interface UplinkPublisher

Le strict nécessaire pour pousser — n’impose pas NodefonySocket à l’appelant.

WireLogEntry#

interface WireLogEntry

Une entrée de journal telle qu’elle voyage sur le fil (plate, sérialisable).

Types (13)#

AdaptiveObserveOptions#

type AdaptiveObserveOptions = Omit<BindAdaptiveOptions, "intervalMs">

Options de observeAdaptiveChannel — la cadence désirée est passée à part.

Dispose#

type Dispose = () => void

Libération d’une souscription. Idempotente chez tous les observateurs de ce module.

Emit#

type Emit<T> = (value: T) => void

Rappel d’une liaison de vue : reçoit la valeur courante.

LocalEvent#

type LocalEvent = (typeof LOCAL_EVENTS)[keyof typeof LOCAL_EVENTS]

Un des noms d’événement local de la table LOCAL_EVENTS.

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.

MessageStats#

type MessageStats = IChannelStats

Stats d’un canal — alias historique de IChannelStats (le contrat isomorphe IRealtimeSocket). Conservé pour les consommateurs qui importent MessageStats.

NodefonyKernelEvent#

type NodefonyKernelEvent = "onBoot" | "onReady" | "onIdentityChange" | "onVisibility" | "onOnline" | "onTerminate"

Événements émis par le kernel client.

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).

NoticeLevel#

type NoticeLevel = "success" | "info" | "warning" | "error"

Sévérité d’affichage — alignée sur les niveaux snackbar usuels.

ObservableClient#

type ObservableClient = NodefonySocket

Socket sur laquelle un observateur travaille. Volontairement le client NON paramétré : une liaison de vue ne connaît pas les cartes d’événements typées de l’application.

RateChangeReason#

type RateChangeReason = "init" | "decrease" | "increase"

Raison d’un changement de cadence (pour un badge UI).

RealtimeState#

type RealtimeState = "disconnected" | "connecting" | "connected" | "reconnecting" | "error"

← Toutes les références d’API