You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							80 lines
						
					
					
						
							3.3 KiB
						
					
					
				
			
		
		
	
	
							80 lines
						
					
					
						
							3.3 KiB
						
					
					
				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 declare type SafeExpr = Code | number | boolean | null;
 | 
						|
export declare 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;
 |