marko
Version:
Optimized runtime for Marko templates.
109 lines (108 loc) • 3.43 kB
TypeScript
import type { PendingRender } from "../dom/queue";
import type { Renderer as ClientRenderer, Renderer } from "../dom/renderer";
import type { AccessorProp } from "./accessor.debug";
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;
[x: `___${string}`]: never;
[x: string | number]: any;
}
export declare enum ResumeSymbol {
Node = "*",
BranchStart = "[",
BranchEnd = "]",
BranchEndNativeTag = "'",
BranchEndSingleNode = "|",
BranchEndOnlyChildInParent = ")",
BranchEndSingleNodeOnlyChildInParent = "}"
}
export interface AwaitCounter {
m?: (effects: unknown[]) => unknown[];
i: number;
c: () => void | 1;
}
export { AccessorPrefix, AccessorProp, ClosureSignalProp, PendingRenderProp, RendererProp, } from "./accessor.debug";
export declare enum NodeType {
Element = 1,
Text = 3,
Comment = 8,
DocumentFragment = 11
}
export declare enum WalkCode {
Get = 32,
Inside = 36,
Replace = 37,
EndChild = 38,
BeginChild = 47,
BeginChildWithVar = 48,
DynamicTagWithVar = 49,
Next = 67,
NextEnd = 91,
Over = 97,
OverEnd = 106,
Out = 107,
OutEnd = 116,
Multiplier = 117,
MultiplierEnd = 126
}
export declare enum WalkRangeSize {
Next = 20,// 67 through 91
Over = 10,// 97 through 106
Out = 10,// 107 through 116
Multiplier = 10
}
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>>;
};
export declare enum ControlledType {
InputChecked = 0,
InputCheckedValue = 1,
InputValue = 2,
SelectValue = 3,
DetailsOrDialogOpen = 4,
None = 5
}