UNPKG

@vaadin/hilla-react-signals

Version:

Signals for Hilla React

63 lines (62 loc) 2.36 kB
import type { ConnectClient, Subscription } from '@vaadin/hilla-frontend'; import { Signal } from './core.js'; import { type StateEvent } from './events.js'; export interface Operation { result: Promise<void>; } export declare abstract class DependencyTrackingSignal<T> extends Signal<T> { #private; protected constructor(value: T | undefined, onFirstSubscribe: () => void, onLastUnsubscribe: () => void); protected S(node: unknown): void; protected U(node: unknown): void; } export type ServerConnectionConfig = Readonly<{ client: ConnectClient; endpoint: string; method: string; params?: Record<string, unknown>; parentClientSignalId?: string; }>; declare class ServerConnection { #private; readonly config: ServerConnectionConfig; constructor(id: string, config: ServerConnectionConfig); get subscription(): Subscription<Readonly<{ id: string; type: string; value: unknown; accepted: boolean; parentSignalId?: string; }>> | undefined; connect(): Subscription<Readonly<{ id: string; type: string; value: unknown; accepted: boolean; parentSignalId?: string; }>>; update(event: StateEvent): Promise<void>; disconnect(): void; } export declare const $update: unique symbol; export declare const $processServerResponse: unique symbol; export declare const $setValueQuietly: unique symbol; export declare const $resolveOperation: unique symbol; export declare const $createOperation: unique symbol; export declare abstract class FullStackSignal<T> extends DependencyTrackingSignal<T> { #private; readonly id: string; readonly server: ServerConnection; readonly pending: import("@preact/signals-core").ReadonlySignal<boolean>; readonly error: import("@preact/signals-core").ReadonlySignal<Error | undefined>; constructor(value: T | undefined, config: ServerConnectionConfig, id?: string); protected [$createOperation]({ id, promise }: { id?: string; promise?: Promise<void>; }): Operation; protected [$setValueQuietly](value: T): void; protected [$update](event: StateEvent): Promise<void>; protected [$resolveOperation](eventId: string, reason?: string): void; protected abstract [$processServerResponse](event: StateEvent): void; } export {};