UNPKG

@awayfl/avm2

Version:

Virtual machine for executing AS3 code

109 lines 4 kB
import { Multiname } from './../abc/lazy/Multiname'; import { IGenerator } from './IGenerator'; export interface IImportDefinition { name: Multiname; alias: string; options: IImportGenOptions | undefined; } export interface IImportGenOptions { findProp?: boolean; scope?: string; mnIndex: number; } export interface ILexGenerator extends IGenerator { /** * Test Multiname to support import generation */ test(mn: Multiname, isLexCall: boolean): boolean; findAliases(mn: Multiname, findProp: boolean): IImportDefinition[]; /** * Generate import alias if can be generated * @throws lex import can't be generated */ getLexAlias(mn: Multiname, options?: IImportGenOptions): string; /** * Generate import alias if can be generated * @throws lex import can't be generated */ getPropStrictAlias(mn: Multiname, options?: IImportGenOptions): string; } export declare abstract class LexImportsGenerator implements ILexGenerator { imports: Array<IImportDefinition>; private _lexMode; test(_mn: Multiname, _isLexCall: boolean): boolean; protected _genEntry(def: IImportDefinition, ...args: any[]): string; protected _genAlias(mn: Multiname, _options?: IImportGenOptions): string; findAliases(mn: Multiname, findProp: boolean): IImportDefinition[]; getLexAlias(mn: Multiname, options?: IImportGenOptions): string; getPropStrictAlias(mn: Multiname, options?: IImportGenOptions): string; genHeader(ident?: string, ...args: any[]): string; genBody(_ident?: string, ..._args: any[]): string; genPost(input: string[]): string[]; reset(): void; } /** * Generate imports for all lex generators */ export declare class ComplexGenerator implements ILexGenerator { generators: ILexGenerator[]; /** * Allowed collsion for alias of generator, return first alias; */ allowColissions: Boolean; constructor(generators: ILexGenerator[]); /** * Return generator that will used for lex generation */ getGenerator(mn: Multiname, isLexCall: boolean): ILexGenerator | null; test(mn: Multiname, isLexCall: boolean): boolean; findAliases(mn: Multiname, findProp: boolean): IImportDefinition[]; /** * Return generator that will used for propstrict generation */ getLexAlias(mn: Multiname, options?: IImportGenOptions): string; getPropStrictAlias(mn: Multiname, options?: IImportGenOptions): string; genHeader(ident: string): string; genBody(ident: string): string; genPost(arr: string[]): string[]; reset(): void; } /** * Import generator for Box2D and Nape external libs */ export declare class PhysicsLex extends LexImportsGenerator { allows: { box2D?: boolean; nape?: boolean; }; constructor(allows?: { box2D?: boolean; nape?: boolean; }); protected _genEntry(def: IImportDefinition): string; protected _genAlias(mn: Multiname, _options?: IImportGenOptions): string; test(mn: Multiname): boolean; } /** * @description Generete single constant reference on top level API props: trace, pareseInt etc */ export declare class TopLevelLex extends LexImportsGenerator { test(mn: Multiname): boolean; protected _genEntry(def: IImportDefinition): string; protected _genAlias(mn: Multiname, options: IImportGenOptions): string; } /** * @description Generate single reference on class namespace/class with static field */ export declare class StaticHoistLex extends LexImportsGenerator { private _mn; private _loc; markScope(name: string, pos?: number): void; test(mn: Multiname, isLexCall: boolean): boolean; protected _genAlias(mn: Multiname, options: IImportGenOptions): string; findAliases(): any[]; genHeader(): string; genBody(idnt: string): string; genPost(arr: string[]): string[]; _genEntry(def: IImportDefinition, idnt?: string): string; } //# sourceMappingURL=LexImportsGenerator.d.ts.map