12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import type { ScopeValueSets, NameValue, ValueScope, ValueScopeName } from "./scope";
- import { _Code, Code, Name } from "./code";
- import { Scope } from "./scope";
- export { _, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code } from "./code";
- export { Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds } from "./scope";
- export type SafeExpr = Code | number | boolean | null;
- export type Block = Code | (() => void);
- export declare const operators: {
- GT: _Code;
- GTE: _Code;
- LT: _Code;
- LTE: _Code;
- EQ: _Code;
- NEQ: _Code;
- NOT: _Code;
- OR: _Code;
- AND: _Code;
- ADD: _Code;
- };
- export interface CodeGenOptions {
- es5?: boolean;
- lines?: boolean;
- ownProperties?: boolean;
- }
- export declare class CodeGen {
- readonly _scope: Scope;
- readonly _extScope: ValueScope;
- readonly _values: ScopeValueSets;
- private readonly _nodes;
- private readonly _blockStarts;
- private readonly _constants;
- private readonly opts;
- constructor(extScope: ValueScope, opts?: CodeGenOptions);
- toString(): string;
- name(prefix: string): Name;
- scopeName(prefix: string): ValueScopeName;
- scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name;
- getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined;
- scopeRefs(scopeName: Name): Code;
- scopeCode(): Code;
- private _def;
- const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name;
- let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name;
- var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name;
- assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen;
- add(lhs: Code, rhs: SafeExpr): CodeGen;
- code(c: Block | SafeExpr): CodeGen;
- object(...keyValues: [Name | string, SafeExpr | string][]): _Code;
- if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen;
- elseIf(condition: Code | boolean): CodeGen;
- else(): CodeGen;
- endIf(): CodeGen;
- private _for;
- for(iteration: Code, forBody?: Block): CodeGen;
- forRange(nameOrPrefix: Name | string, from: SafeExpr, to: SafeExpr, forBody: (index: Name) => void, varKind?: Code): CodeGen;
- forOf(nameOrPrefix: Name | string, iterable: Code, forBody: (item: Name) => void, varKind?: Code): CodeGen;
- forIn(nameOrPrefix: Name | string, obj: Code, forBody: (item: Name) => void, varKind?: Code): CodeGen;
- endFor(): CodeGen;
- label(label: Name): CodeGen;
- break(label?: Code): CodeGen;
- return(value: Block | SafeExpr): CodeGen;
- try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen;
- throw(error: Code): CodeGen;
- block(body?: Block, nodeCount?: number): CodeGen;
- endBlock(nodeCount?: number): CodeGen;
- func(name: Name, args?: Code, async?: boolean, funcBody?: Block): CodeGen;
- endFunc(): CodeGen;
- optimize(n?: number): void;
- private _leafNode;
- private _blockNode;
- private _endBlockNode;
- private _elseNode;
- private get _root();
- private get _currNode();
- private set _currNode(value);
- }
- export declare function not<T extends Code | SafeExpr>(x: T): T;
- export declare function and(...args: Code[]): Code;
- export declare function or(...args: Code[]): Code;
|