Awesome! So we can forget d.ts files and IDL files, right? Plus at least w3c_dom1.js is Apache Licensed.
I was actually going to spend some time today on the JS primitives swc (Number, String, Array). Have you seen any externs file for those? I doubt it exists. -Alex On 6/4/15, 8:12 AM, "Michael Schmalle" <teotigraphix...@gmail.com> wrote: >Hey, > >Well I am a gluten for punishment but, I love parsers and translations so >without further ado; > >From this source file; > >https://github.com/google/closure-compiler/blob/master/externs/w3c_dom1.js > >I am creating the following ActionScript, long but worth looking at. :) > >I found a lot of extern files, so this is how we do it in the start. We >could even defined externs ourselves, the benefit is, one file of a bunch >of javascript classes translates into a bunch of ActionScript files. > >This is grabbing docs and analyzing types. More to test but I am using the >Rhino parser and AST, made my own walker and wrote the logic to assemble >class, field and method definitions while the root AST is walked. > >So now, if you want a creatjs API, just follow GCC extern file template >and >you will have it. > >Mike > >-------------------------------------------------------------------- >ActionScript output, will be individual files >-------------------------------------------------------------------- > > > >package dom { > >public Document extends Node { > > native public function Document(); > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#att >ribute-implementation > */ > native public var implementation:DOMImplementation; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#att >ribute-doctype > */ > native public var doctype:DocumentType; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#att >ribute-documentElement > */ > native public var documentElement:Element; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-createComment > */ > native public function createComment(data:String):Comment; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >A6C9094 > */ > native public function getElementsByTagName(tagname:String):NodeList; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-createEntityReference > */ > native public function >createEntityReference(name:String):EntityReference; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-createAttribute > */ > native public function createAttribute(name:String):Attr; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-createTextNode > */ > native public function createTextNode(data:Object):Text; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-createCDATASection > */ > native public function createCDATASection(data:String):CDATASection; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-createProcessingInstruction > */ > native public function createProcessingInstruction(target:String, >data:String):ProcessingInstruction; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-createElement > * @see >http://w3c.github.io/webcomponents/spec/custom/#extensions-to-document-int >erface-to-instantiate > */ > native public function createElement(tagName:String, >opt_typeExtension:String = null):Element; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-createDocumentFragment > */ > native public function createDocumentFragment():DocumentFragment; > >} >} > >package dom { > >public CharacterData extends Node { > > native public function CharacterData(); > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >7D61178C > */ > native public var length:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >72AB8359 > */ > native public var data:String; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >E5CBA7FB > */ > native public function replaceData(offset:Number, count:Number, >arg:Number):void; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >7C603781 > */ > native public function deleteData(offset:Number, count:Number):void; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >6531BCCF > */ > native public function substringData(offset:Number, >count:Number):String; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >3EDB695F > */ > native public function insertData(offset:Number, arg:Number):void; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >32791A2F > */ > native public function appendData(arg:String):void; > >} >} > >package dom { > >public DocumentFragment extends Node { > > native public function DocumentFragment(); > >} >} > >package dom { > >public Attr extends Node { > > native public function Attr(); > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >862529273 > */ > native public var specified:Boolean; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1112119403 > */ > native public var name:String; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >221662474 > */ > native public var value:String; > >} >} > >package dom { > >public Comment extends CharacterData { > > native public function Comment(); > >} >} > >package dom { > >public Notation extends Node { > > native public function Notation(); > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >54F2B4D0 > */ > native public var publicId:String; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >E8AAB1D0 > */ > native public var systemId:String; > >} >} > >package dom { > >public NamedNodeMap { > > native public function NamedNodeMap(); > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >6D0FB19E > */ > native public var length:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1074577549 > */ > native public function getNamedItem(name:String):Node; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >349467F9 > */ > native public function item(index:Number):Node; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1025163788 > */ > native public function setNamedItem(arg:Node):Node; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >D58B193 > */ > native public function removeNamedItem(name:String):Node; > >} >} > >package dom { > >public CDATASection extends Text { > > native public function CDATASection(); > >} >} > >package dom { > >public Text extends CharacterData { > > native public function Text(); > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >38853C1D > */ > native public function splitText(offset:Number):Text; > >} >} > >package dom { > >public Node implements EventTarget { > > native public function Node(); > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1950641247 > */ > native public static var TEXT_NODE:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1950641247 > */ > native public static var ENTITY_NODE:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1950641247 > */ > native public static var DOCUMENT_TYPE_NODE:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1950641247 > */ > native public static var NOTATION_NODE:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1950641247 > */ > native public static var CDATA_SECTION_NODE:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1950641247 > */ > native public static var DOCUMENT_FRAGMENT_NODE:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1950641247 > */ > native public static var COMMENT_NODE:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1950641247 > */ > native public static var PROCESSING_INSTRUCTION_NODE:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1950641247 > */ > native public static var XPATH_NAMESPACE_NODE:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1950641247 > */ > native public static var ELEMENT_NODE:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1950641247 > */ > native public static var ENTITY_REFERENCE_NODE:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1950641247 > */ > native public static var ATTRIBUTE_NODE:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1950641247 > */ > native public static var DOCUMENT_NODE:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#att >ribute-previousSibling > */ > native public var previousSibling:Node; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#att >ribute-parentNode > */ > native public var parentNode:Node; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#att >ribute-nodeValue > */ > native public var nodeValue:String; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#att >ribute-nodeName > */ > native public var nodeName:String; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#att >ribute-firstChild > */ > native public var firstChild:Node; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#att >ribute-childNodes > */ > native public var childNodes:NodeList; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#att >ribute-attributes > */ > native public var attributes:NamedNodeMap; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#att >ribute-nodeType > */ > native public var nodeType:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#att >ribute-ownerDocument > */ > native public var ownerDocument:Document; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#att >ribute-nextSibling > */ > native public var nextSibling:Node; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#att >ribute-lastChild > */ > native public var lastChild:Node; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-removeChild > */ > native public function removeChild(oldChild:Node):Node; > > /** > */ > native public override function addEventListener(type:Boolean, >listener:Boolean, opt_useCapture:Boolean = null):Object; > > /** > */ > native public override function dispatchEvent(evt:Object):Object; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-insertBefore > */ > native public function insertBefore(newChild:Node, >refChild:Node):Node; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-hasChildNodes > */ > native public function hasChildNodes():Boolean; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-appendChild > */ > native public function appendChild(newChild:Node):Node; > > /** > */ > native public override function removeEventListener(type:Boolean, >listener:Boolean, opt_useCapture:Boolean = null):Object; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-replaceChild > */ > native public function replaceChild(newChild:Node, >oldChild:Node):Node; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-cloneNode > */ > native public function cloneNode(deep:Boolean):Node; > >} >} > >package dom { > >public DOMException { > > native public function DOMException(); > >} >} > >package dom { > >public DOMImplementation { > > native public function DOMImplementation(); > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >5CED94D7 > */ > native public function hasFeature(feature:String, >version:String):Boolean; > >} >} > >package dom { > >public ProcessingInstruction extends Node { > > native public function ProcessingInstruction(); > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1478689192 > */ > native public var target:String; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >837822393 > */ > native public var data:String; > >} >} > >package dom { > >public DocumentType extends Node { > > native public function DocumentType(); > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >D46829EF > */ > native public var notations:NamedNodeMap; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1844763134 > */ > native public var name:String; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1788794630 > */ > native public var entities:NamedNodeMap; > >} >} > >package dom { > >public ExceptionCode { > > native public function ExceptionCode(); > >} >} > >package dom { > >public Window implements EventTarget { > > native public function Window(); > > /** > */ > native public var onmousewheel:Function; > > /** > */ > native public var onunload:Function; > > /** > */ > native public var onerror:Function; > > /** > */ > native public var onhashchange:Function; > > /** > */ > native public var onpopstate:Function; > > /** > */ > native public var onresize:Function; > > /** > */ > native public var onblur:Function; > > /** > */ > native public var onmouseup:Function; > > /** > */ > native public var onpaint:Function; > > /** > */ > native public var onclose:Function; > > /** > */ > native public var Window:Object; > > /** > */ > native public var onbeforeunload:Function; > > /** > */ > native public var onmousemove:Function; > > /** > */ > native public var oncontextmenu:Function; > > /** > */ > native public var ondblclick:Function; > > /** > */ > native public var onmouseout:Function; > > /** > */ > native public var onkeyup:Function; > > /** > */ > native public var onfocus:Function; > > /** > */ > native public var onkeydown:Function; > > /** > */ > native public var onkeypress:Function; > > /** > */ > native public var onsubmit:Function; > > /** > */ > native public var onchange:Function; > > /** > */ > native public var onabort:Function; > > /** > */ > native public var onreset:Function; > > /** > */ > native public var onmouseover:Function; > > /** > */ > native public var onselect:Function; > > /** > */ > native public var onload:Function; > > /** > */ > native public var onwheel:Function; > > /** > */ > native public var onscroll:Function; > > /** > */ > native public var onclick:Function; > > /** > */ > native public var ondragdrop:Function; > > /** > */ > native public var onmousedown:Function; > > /** > */ > native public override function addEventListener(type:Boolean, >listener:Boolean, opt_useCapture:Boolean = null):Object; > > /** > */ > native public override function dispatchEvent(evt:Object):Object; > > /** > */ > native public override function removeEventListener(type:Boolean, >listener:Boolean, opt_useCapture:Boolean = null):Object; > >} >} > >package dom { > >public EntityReference extends Node { > > native public function EntityReference(); > >} >} > >package dom { > >public NodeList { > > native public function NodeList(); > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >203510337 > */ > native public var length:Number; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >844377136 > */ > native public function item(index:Number):Node; > >} >} > >package dom { > >public Element extends Node { > > native public function Element(); > > /** > */ > native public var onmousewheel:Function; > > /** > */ > native public var oncompositionstart:Function; > > /** > */ > native public var onunload:Function; > > /** > */ > native public var onerror:Function; > > /** > */ > native public var onresize:Function; > > /** > */ > native public var onmouseup:Function; > > /** > */ > native public var onblur:Function; > > /** > */ > native public var onbeforeinput:Function; > > /** > */ > native public var onmousemove:Function; > > /** > */ > native public var onbeforeunload:Function; > > /** > */ > native public var oncontextmenu:Function; > > /** > */ > native public var onfocusout:Function; > > /** > */ > native public var ondblclick:Function; > > /** > */ > native public var onmouseout:Function; > > /** > */ > native public var onkeyup:Function; > > /** > */ > native public var oncompositionend:Function; > > /** > */ > native public var onfocus:Function; > > /** > */ > native public var onkeydown:Function; > > /** > */ > native public var onkeypress:Function; > > /** > */ > native public var onsubmit:Function; > > /** > */ > native public var onchange:Function; > > /** > */ > native public var onabort:Function; > > /** > */ > native public var onreset:Function; > > /** > */ > native public var onmouseover:Function; > > /** > */ > native public var oninput:Function; > > /** > */ > native public var oncompositionupdate:Function; > > /** > */ > native public var onselect:Function; > > /** > */ > native public var oncut:Function; > > /** > */ > native public var ontextinput:Function; > > /** > */ > native public var onload:Function; > > /** > */ > native public var onwheel:Function; > > /** > */ > native public var onpaste:Function; > > /** > */ > native public var onscroll:Function; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#att >ribute-tagName > */ > native public var tagName:String; > > /** > */ > native public var onclick:Function; > > /** > */ > native public var onmousedown:Function; > > /** > */ > native public var oncopy:Function; > > /** > */ > native public var onfocusin:Function; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-removeAttributeNode > */ > native public function removeAttributeNode(oldAttr:Attr):Attr; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >1938918D > */ > native public function getElementsByTagName(tagname:String):NodeList; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-getAttributeNode > */ > native public function getAttributeNode(name:String):Attr; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-setAttributeNode > */ > native public function setAttributeNode(newAttr:Attr):Attr; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-removeAttribute > */ > native public function removeAttribute(name:String):void; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-setAttribute > */ > native public function setAttribute(name:String, value:String):void; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#met >hod-getAttribute > * @see http://msdn.microsoft.com/en-us/library/ms536429(VS.85).aspx > */ > native public function getAttribute(name:String, opt_flags:String = >null):String; > >} >} > >package dom { > >public Entity extends Node { > > native public function Entity(); > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >D7303025 > */ > native public var publicId:String; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >D7C29F3E > */ > native public var systemId:String; > > /** > * @see >http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID- >6ABAEB38 > */ > native public var notationName:String; > >} >}