UNPKG

marko

Version:

Optimized runtime for Marko templates.

79 lines (78 loc) 3.11 kB
import type { PendingRender } from "../dom/queue"; import type { Renderer as ClientRenderer, Renderer } from "../dom/renderer"; import type { AccessorProp } from "./accessor.debug"; import * as ControlledType from "./constants/controlled-type"; import * as NodeType from "./constants/node-type"; import * as ResumeSymbol from "./constants/resume-symbol"; import * as WalkCode from "./constants/walk-code"; import * as WalkRangeSize from "./constants/walk-range-size"; export type Falsy = undefined | null | false | 0 | ""; export interface BranchScope extends Scope { [AccessorProp.StartNode]: ChildNode; [AccessorProp.EndNode]: ChildNode; [AccessorProp.ParentBranch]: BranchScope | undefined; [AccessorProp.AbortScopes]: Set<Scope> | undefined; [AccessorProp.BranchScopes]: Set<BranchScope> | undefined; [AccessorProp.Renderer]: ClientRenderer | string; [AccessorProp.AwaitCounter]: AwaitCounter | undefined; [AccessorProp.PendingEffects]: unknown[] | undefined; [AccessorProp.PlaceholderBranch]: BranchScope | undefined | 0; [AccessorProp.PendingRenders]: PendingRender[] | 0 | undefined; [AccessorProp.DetachedAwait]: Renderer | 0 | undefined; [AccessorProp.PendingScopes]: Scope[] | void; } export interface Scope { [AccessorProp.Owner]: Scope | undefined; [AccessorProp.Global]: Record<string, unknown>; [AccessorProp.Id]: number; [AccessorProp.Gen]: number; [AccessorProp.AbortControllers]: Record<string | number, AbortController | void> | undefined; [AccessorProp.ClosestBranch]: BranchScope | undefined; [AccessorProp.ClosestBranchId]: number | undefined; [AccessorProp.Subscriptions]: Set<Scope>[] | undefined; [x: `___${string}`]: never; [x: string | number]: any; } type ResumeSymbol = ResumeSymbol.Value; export { ResumeSymbol }; export interface AwaitCounter { m?: (effects: unknown[]) => unknown[]; i: number; c: () => void | 1; } export { AccessorPrefix, AccessorProp, ClosureSignalProp, KeyedScopesProp, PendingRenderProp, RendererProp, } from "./accessor.debug"; type NodeType = NodeType.Value; export { NodeType }; type WalkCode = WalkCode.Value; export { WalkCode }; type WalkRangeSize = WalkRangeSize.Value; export { WalkRangeSize }; export type Accessor = string; export type EncodedAccessor = number | string; export interface $Global { [x: PropertyKey]: unknown; signal?: AbortSignal; cspNonce?: string; renderId?: string; runtimeId?: string; } export interface Input { [x: PropertyKey]: unknown; } export interface TemplateInput extends Input { $global?: $Global; } export interface Template { mount(input: Input, reference: Node, position?: InsertPosition): MountedTemplate; render(input?: Input): RenderedTemplate; } export interface MountedTemplate { value: unknown; update(input: unknown): void; destroy(): void; } export type RenderedTemplate = PromiseLike<string> & AsyncIterable<string> & { toReadable(): ReadableStream<Uint8Array<ArrayBufferLike>>; }; type ControlledType = ControlledType.Value; export { ControlledType };