UNPKG

yarn-spinner-runner-ts

Version:

TypeScript parser, compiler, and runtime for Yarn Spinner 3.x with React adapter [NPM package](https://www.npmjs.com/package/yarn-spinner-runner-ts)

73 lines (72 loc) 2.22 kB
import type { IRProgram } from "../compile/ir"; import type { RuntimeResult } from "./results.js"; import { CommandHandler, parseCommand } from "./commands.js"; export interface RunnerOptions { startAt: string; variables?: Record<string, unknown>; functions?: Record<string, (...args: unknown[]) => unknown>; handleCommand?: (command: string, parsed?: ReturnType<typeof parseCommand>) => void; commandHandler?: CommandHandler; onStoryEnd?: (payload: { variables: Readonly<Record<string, unknown>>; storyEnd: true; }) => void; } export declare class YarnRunner { private readonly program; private readonly variables; private readonly functions; private readonly handleCommand?; private readonly commandHandler; private readonly evaluator; private readonly onceSeen; private readonly onStoryEnd?; private storyEnded; private readonly nodeGroupOnceSeen; private readonly visitCounts; private pendingOptions; private nodeTitle; private ip; private currentNodeIndex; private callStack; currentResult: RuntimeResult | null; history: RuntimeResult[]; constructor(program: IRProgram, opts: RunnerOptions); /** * Get the current node title (may resolve to a node group). */ getCurrentNodeTitle(): string; /** * Resolve a node title to an actual node (handling node groups). */ private resolveNode; /** * Evaluate when conditions for a node in a group. */ private evaluateWhenConditions; /** * Mark a node group node as seen (for "once" condition). */ private markNodeGroupOnceSeen; advance(optionIndex?: number): void; private interpolate; private normalizeMarkupResult; private resumeBlock; private step; private executeBlock; private filterOptions; private lookaheadIsEnd; private emit; /** * Get the current variable store (read-only view). */ getVariables(): Readonly<Record<string, unknown>>; /** * Get variable value. */ getVariable(name: string): unknown; /** * Set variable value. */ setVariable(name: string, value: unknown): void; }