UNPKG

tilia

Version:

🍃 State management library, domain-driven.

44 lines (39 loc) 1.74 kB
declare const o: unique symbol; declare const r: unique symbol; export type Observer = { readonly [o]: true }; export type Signal<T> = { value: T }; export type Readonly<T> = { readonly data: T }; export type Setter<T> = (v: T) => void; export type Deriver<U> = { derived: <T>(fn: (p: U) => T) => T }; export type Tilia = { tilia: <T>(branch: T) => T; carve: <T>(fn: (deriver: Deriver<T>) => T) => T; observe: (fn: () => void) => void; watch: <T>(fn: () => T, effect: (v: T) => void) => void; batch: (fn: () => void) => void; signal: <T>(value: T) => Signal<T>; derived: <T>(fn: () => T) => Signal<T>; // Internal _observe(callback: () => void): Observer; }; export function make(flush?: (fn: () => void) => void, gc?: number): Tilia; // Default global context export function tilia<T>(branch: T): T; export function carve<T>(fn: (deriver: Deriver<T>) => T): T; export function observe(fn: () => void): void; export function watch<T>(fn: () => T, effect: (v: T) => void) : void; export function batch(fn: () => void): void; // Functional reactive programming export function computed<T>(fn: () => T): T; export function source<T, Ignored>(fn: (set: Setter<T>) => Ignored, initialValue: T): T; export function store<T>(fn: (set: Setter<T>) => T): T; export function readonly<T>(data: T): Readonly<T>; export function signal<T>(value: T): Signal<T>; export function derived<T>(fn: () => T): Signal<T>; // Internal export function _observe(callback: () => void): Observer; export function _done(observer: Observer): void; export function _ready(observer: Observer, notifyIfChanged?: boolean): void; export function _clear(observer: Observer): void; export function _meta<T>(tree: T): unknown; export const _ctx: Tilia;