12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import type { JavaScriptLinked } from './types';
- export declare class CodegenStepExecJs {
- readonly js: string;
- constructor(js: string);
- }
- type JsonSerializerStep = CodegenStepExecJs | unknown;
- export interface CodegenOptions<Linkable = Record<string, unknown>> {
- args?: string[];
- name?: string;
- prologue?: string;
- epilogue?: string | (() => string);
- processSteps?: (steps: JsonSerializerStep[]) => CodegenStepExecJs[];
- linkable?: Linkable;
- }
- export type CodegenGenerateOptions = Pick<CodegenOptions, 'name' | 'args' | 'prologue' | 'epilogue'>;
- export declare class Codegen<Fn extends (...deps: any[]) => any = (...deps: unknown[]) => unknown, Linkable = Record<string, unknown>> {
- protected steps: JsonSerializerStep[];
- options: Required<CodegenOptions<Linkable>>;
- constructor(opts: CodegenOptions<Linkable>);
- js(js: string): void;
- var(expression?: string): string;
- if(condition: string, then: () => void, otherwise?: () => void): void;
- while(condition: string, block: () => void): void;
- doWhile(block: () => void, condition: string): void;
- switch(expression: string, cases: [match: string | number | boolean | null, block: () => void, noBreak?: boolean][], def?: () => void): void;
- return(expression: string): void;
- step(step: unknown): void;
- protected registerCounter: number;
- getRegister(): string;
- r(): string;
- protected dependencies: unknown[];
- protected dependencyNames: string[];
- linkDependency(dep: unknown, name?: string): string;
- linkDependencies(deps: unknown[]): string[];
- protected linked: {
- [key: string]: 1;
- };
- link(name: keyof Linkable): void;
- protected constants: string[];
- protected constantNames: string[];
- addConstant(constant: string, name?: string): string;
- addConstants(constants: string[]): string[];
- generate(opts?: CodegenGenerateOptions): JavaScriptLinked<Fn>;
- compile(opts?: CodegenGenerateOptions): Fn;
- }
- export {};
|