marko
Version:
Optimized runtime for Marko templates.
28 lines (27 loc) • 1.6 kB
TypeScript
import { PendingRenderProp, type Scope } from "../common/types";
import type { Signal } from "./signals";
type ExecFn<S extends Scope = Scope> = (scope: S, arg?: any) => void;
export type PendingRender = {
[PendingRenderProp.Key]: number;
[PendingRenderProp.Scope]: Scope;
[PendingRenderProp.Signal]: Signal<any, any>;
[PendingRenderProp.Value]: unknown;
[PendingRenderProp.Gen]: number;
[PendingRenderProp.Pending]?: 0 | 1;
};
export declare let rendering: undefined | 0 | 1;
export declare let runId: number;
export declare let pendingEffects: unknown[];
export declare function queueRender<T, U extends Scope = Scope>(scope: U, signal: Signal<T, U>, signalKey: number, value?: T, scopeKey?: number): void;
export declare let queuePendingRender: (render: PendingRender) => void;
export declare function createBranchRenders(scope: Scope, scopeKey: number): PendingRender;
export declare function installBranchRenders(): void;
export declare function queueEffect<S extends Scope, T extends ExecFn<S>>(scope: S, fn: T): void;
export declare function run(): void;
export declare function queueAsyncRender<T, U extends Scope = Scope>(scope: U, signal: Signal<T, U>, value?: T): void;
export declare function prepareEffects(fn: () => void): unknown[];
export declare let runEffects: (effects: unknown[]) => void;
declare let runRender: (render: PendingRender) => void;
export declare function installCatch(catchEffects: typeof runEffects, wrapRender: (base: typeof runRender) => typeof runRender): void;
export declare function runRenders(renders?: PendingRender[]): void;
export {};