# typedef JSGenApi

#### package haxe.macro

Available on Neko

This is the api that is passed to the custom JS generator.

### Properties

###

`main:Null<TypedExpr>`

the main call expression, if a -main class is defined

###

`outputFile:String`

the file in which the JS code can be generated

###

`types:Array<Type>`

all the types that were compiled by Haxe

###

`addFeature (f:String):Bool`

add a feature

###

`buildMetaData (t:BaseType):Null<TypedExpr>`

create the metadata expression for the given type

###

`generateStatement (e:TypedExpr):String`

generate the JS code for any given typed expression

###

`generateValue (e:TypedExpr):String`

generate the JS code for a given typed expression-value

###

`hasFeature (f:String):Bool`

check if a feature is used

###

`isKeyword (ident:String):Bool`

tells if the given identifier is a JS keyword

###

`quoteString (s:String):String`

quote and escape the given string constant

###

`setCurrentClass (c:ClassType):Void`

select the current classe

###

`setTypeAccessor (callb:Type ‑> String):Void`

define the JS code that gets generated when a class or enum is accessed in a typed expression