You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/05/25 18:25:13 UTC

[06/19] git commit: [flex-falcon] [refs/heads/develop] - move downloads and unpacking of externs out to the extern builds and convert js to use a patch file

move downloads and unpacking of externs out to the extern builds and convert js to use a patch file


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/0be5e48c
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/0be5e48c
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/0be5e48c

Branch: refs/heads/develop
Commit: 0be5e48c29d0774953155380eff3c1a6be95d7fe
Parents: 2a179ec
Author: Alex Harui <ah...@apache.org>
Authored: Mon May 23 22:00:25 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue May 24 21:06:26 2016 -0700

----------------------------------------------------------------------
 compiler-jx/src/main/resources/downloads.xml |   55 -
 externs/google_maps/build.xml                |    3 +-
 externs/jasmine/build.xml                    |    4 +-
 externs/jquery/build.xml                     |    2 +
 externs/js/build.xml                         |   41 +-
 externs/js/src/main/patch/js.patch           | 1143 +++++++++++++++++++++
 externs/node/build.xml                       |   31 +-
 7 files changed, 1218 insertions(+), 61 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/0be5e48c/compiler-jx/src/main/resources/downloads.xml
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/resources/downloads.xml b/compiler-jx/src/main/resources/downloads.xml
index 6e908ee..2bbb1a9 100644
--- a/compiler-jx/src/main/resources/downloads.xml
+++ b/compiler-jx/src/main/resources/downloads.xml
@@ -223,63 +223,8 @@
     <copy file="${download.dir}/temp/${closure.name}.jar" toFile="${lib.dir}/${closure.dest.folder}/${closure.dest.filename}" verbose="true"/>
     <copy file="${download.dir}/temp/README.md" toFile="${lib.dir}/${closure.dest.folder}/README.md" verbose="true"/>
 
-    <antcall target="unpack.externs.if.not.installer" />
   </target>
   
-  <!-- no unjar task in ant_on_air yet, so do the unless test in this target so unjar doesn't get searched for -->
-  <target name="unpack.externs.if.not.installer" unless="installer" >
-      <antcall target="unpack.externs" />
-  </target>
-  
-  <target name="unpack.externs">
-    <mkdir dir="${download.dir}/temp/externs" />
-    <unjar src="${lib.dir}/${closure.dest.folder}/${closure.dest.filename}"
-           dest="${download.dir}/temp/externs">
-           <patternset>
-               <include name="externs.zip"/>
-           </patternset>
-    </unjar>
-    <mkdir dir="${FALCONJX_HOME}/../externs/js/target/downloads" />
-    <mkdir dir="${FALCONJX_HOME}/../externs/jquery/target/downloads" />
-    <mkdir dir="${FALCONJX_HOME}/../externs/jasmine/target/downloads" />
-    <mkdir dir="${FALCONJX_HOME}/../externs/google_maps/target/downloads" />
-    <mkdir dir="${FALCONJX_HOME}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs" />
-    <unzip src="${download.dir}/temp/externs/externs.zip" dest="${FALCONJX_HOME}/../externs/js/target/downloads" />
-    <get src="https://closureidl.googlecode.com/files/svg.js" dest="${FALCONJX_HOME}/../externs/js/target/downloads/svg.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/jquery-1.9.js" dest="${FALCONJX_HOME}/../externs/jquery/target/downloads/jquery-1.9.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/jasmine-2.0.js" dest="${FALCONJX_HOME}/../externs/jasmine/target/downloads/jasmine-2.0.js"/>
-    <!-- start node externs-->
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/assert.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/assert.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/buffer.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/buffer.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/child_process.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/child_process.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/cluster.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/cluster.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/crypto.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/crypto.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/dgram.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/dgram.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/dns.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/dns.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/domain.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/domain.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/events.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/events.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/fs.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/fs.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/globals.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/globals.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/http.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/http.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/https.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/https.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/net.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/net.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/os.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/os.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/path.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/path.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/punycode.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/punycode.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/querystring.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/querystring.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/readline.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/readline.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/repl.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/repl.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/stream.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/stream.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/string_decoder.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/string_decoder.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/tls.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/tls.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/tty.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/tty.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/url.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/url.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/util.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/util.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/vm.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/vm.js"/>
-    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/zlib.js" dest="${basedir}/../externs/node/target/downloads/closure-compiler-master/contrib/nodejs/zlib.js"/>
-    <!-- end node externs-->
-  </target>
-
   <target name="download-dependency-jar" if="project.download.jar" description="Downloads a jar to the lib directory.">
     <antcall target="download-jar">
       <param name="srcDomain" value="${server}"/>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/0be5e48c/externs/google_maps/build.xml
----------------------------------------------------------------------
diff --git a/externs/google_maps/build.xml b/externs/google_maps/build.xml
index 5a07e95..620d511 100644
--- a/externs/google_maps/build.xml
+++ b/externs/google_maps/build.xml
@@ -44,6 +44,7 @@
     </target>
 
     <target name="download" >
+        <mkdir dir="${basedir}/target/downloads" />
         <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/maps/google_maps_api_v3_11.js" dest="${basedir}/target/downloads/google_maps_api_v3_11.js" />
     </target>
     
@@ -73,7 +74,7 @@ google.maps = {};]]></replacevalue>
             <arg value="${basedir}/target/downloads"/>
         </exec>
         <replace file="${basedir}/src/main/patch/google_maps.patch" token="target/reference" value="target/downloads" />
-        <replace file="${basedir}/src/main/patch/google_maps.patch" token="${basedir}/target/downloads" value="/externs/google_Maps/target/downloads" />
+        <replace file="${basedir}/src/main/patch/google_maps.patch" token="${basedir}/target/downloads" value="/externs/google_maps/target/downloads" />
     </target>
 
     <target name="externc" >

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/0be5e48c/externs/jasmine/build.xml
----------------------------------------------------------------------
diff --git a/externs/jasmine/build.xml b/externs/jasmine/build.xml
index 0b22898..4ebe95e 100644
--- a/externs/jasmine/build.xml
+++ b/externs/jasmine/build.xml
@@ -23,9 +23,9 @@
     
     <target name="main" depends="preprocess, externc, postprocess, compc" />
 
-    <!-- we need to insert a line near the beginning of the file to make the
-         compiler happy. -->
     <target name="preprocess">
+        <mkdir dir="${basedir}/target/downloads" />
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/jasmine-2.0.js" dest="${basedir}/target/downloads/jasmine-2.0.js" skipexisting="true"/>
     </target>
     
     <target name="externc" >

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/0be5e48c/externs/jquery/build.xml
----------------------------------------------------------------------
diff --git a/externs/jquery/build.xml b/externs/jquery/build.xml
index 37a40e1..bd3421e 100644
--- a/externs/jquery/build.xml
+++ b/externs/jquery/build.xml
@@ -26,6 +26,8 @@
     <!-- we need to insert a line near the beginning of the file to make the
          compiler happy. -->
     <target name="preprocess">
+        <mkdir dir="${basedir}/target/downloads" />
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/jquery-1.9.js" dest="${basedir}/target/downloads/jquery-1.9.js" skipexisting="true"/>
     </target>
     
     <target name="externc" >

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/0be5e48c/externs/js/build.xml
----------------------------------------------------------------------
diff --git a/externs/js/build.xml b/externs/js/build.xml
index e565a02..d0fa565 100644
--- a/externs/js/build.xml
+++ b/externs/js/build.xml
@@ -23,7 +23,24 @@
     
     <target name="main" depends="preprocess, externc, postprocess, compc" />
 
-    <target name="preprocess" >
+    <target name="download" >
+        <mkdir dir="${basedir}/target/temp/externs" />
+        <unjar src="${basedir}/../../compiler-jx/lib/google/closure-compiler/compiler.jar"
+            dest="${basedir}/target/temp/externs">
+            <patternset>
+                <include name="externs.zip"/>
+            </patternset>
+        </unjar>
+        <mkdir dir="${basedir}/target/downloads" />
+        <unzip src="${basedir}/target/temp/externs/externs.zip" dest="${basedir}/target/downloads" />
+        <get src="https://closureidl.googlecode.com/files/svg.js" dest="${basedir}/target/downloads/svg.js"/>
+    </target>
+    
+    <target name="make_patch" >
+        <mkdir dir="${basedir}/target/reference" />
+        <copy todir="${basedir}/target/reference">
+            <fileset dir="${basedir}/target/downloads/" />
+        </copy>
         <!-- preprocessing .js files -->
         <replaceregexp file="${basedir}/target/downloads/svg.js" match="@type \{function\(new:.*" replace="" flags="g" />
         <replaceregexp file="${basedir}/target/downloads/svg.js" match="Window\.prototype\..*" replace="" flags="g" />
@@ -31,6 +48,28 @@
         <replaceregexp file="${basedir}/target/downloads/es3.js" match="(The constructor of the current object(?:(?!\*/).)*?)@type \{Function\}((?:(?!\*/).)*?\*/[\r\n]+Object\.prototype\.constructor)([^;]*?);" replace="\1@type {Class}\2;" flags="s" />
         <replaceregexp file="${basedir}/target/downloads/es3.js" match="(Transposes the elements of an array in place(?:(?!\*/).)*?[\r\n]+ \*)([\r\n]+)( \* @this)" replace="\1\2 * @return {!Array&lt;?&gt;}\2\3" flags="s" />
         <replaceregexp file="${basedir}/target/downloads/es3.js" match="(Sorts the elements of an array in place(?:(?!\*/).)*?[\r\n]+ \*)([\r\n]+)( \* @param)" replace="\1\2 * @return {!Array&lt;?&gt;}\2\3" flags="s" />
+        <antcall target="diff" />
+    </target>
+
+    <target name="diff" >
+        <delete dir="${basedir}/src/main/patch" />
+        <mkdir dir="${basedir}/src/main/patch" />
+        <exec executable="git" output="${basedir}/src/main/patch/js.patch" >
+            <arg value="diff"/>
+            <arg value="--no-index"/>
+            <arg value="--"/>
+            <arg value="${basedir}/target/reference"/>
+            <arg value="${basedir}/target/downloads"/>
+        </exec>
+        <replace file="${basedir}/src/main/patch/js.patch" token="target/reference" value="target/downloads" />
+        <replace file="${basedir}/src/main/patch/js.patch" token="${basedir}/target/downloads" value="/externs/js/target/downloads" />
+    </target>
+
+    <target name="preprocess" depends="download">
+        <exec executable="git" dir="${basedir}/../..">
+            <arg value="apply"/>
+            <arg value="${basedir}/src/main/patch/js.patch"/>
+        </exec>
     </target>
 
     <target name="externc" >

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/0be5e48c/externs/js/src/main/patch/js.patch
----------------------------------------------------------------------
diff --git a/externs/js/src/main/patch/js.patch b/externs/js/src/main/patch/js.patch
new file mode 100644
index 0000000..4150a65
--- /dev/null
+++ b/externs/js/src/main/patch/js.patch
@@ -0,0 +1,1143 @@
+diff --git a/externs/js/target/downloads/svg.js b/externs/js/target/downloads/svg.js
+index a13180c..48115b3 100644
+--- a/externs/js/target/downloads/svg.js
++++ b/externs/js/target/downloads/svg.js
+@@ -401,7 +401,7 @@ SVGElementInstance.prototype.onunload;
+ 
+ /**
+  * @param {string} type
+- * @param {!EventListener|(function(Event): (boolean|undefined))| null} listener
++ * @param {!EventListener|(function(!Event): (boolean|undefined))| null} listener
+  * @param {boolean=} opt_useCapture
+  */
+ SVGElementInstance.prototype.addEventListener = function(type, listener, opt_useCapture){};
+@@ -409,7 +409,7 @@ SVGElementInstance.prototype.addEventListener = function(type, listener, opt_use
+ 
+ /**
+  * @param {string} type
+- * @param {!EventListener|(function(Event): (boolean|undefined))| null} listener
++ * @param {!EventListener|(function(!Event): (boolean|undefined))| null} listener
+  * @param {boolean=} opt_useCapture
+  */
+ SVGElementInstance.prototype.removeEventListener = function(type, listener, opt_useCapture){};
+@@ -10369,840 +10369,840 @@ SVGAnimatedInteger.prototype.animVal;
+ 
+ 
+ /**
+- * @type {function(new: SVGZoomEvent)}
++ * 
+  */
+-Window.prototype.SVGZoomEvent;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAElement)}
++ * 
+  */
+-Window.prototype.SVGAElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAngle)}
++ * 
+  */
+-Window.prototype.SVGAngle;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAnimatedAngle)}
++ * 
+  */
+-Window.prototype.SVGAnimatedAngle;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAnimatedBoolean)}
++ * 
+  */
+-Window.prototype.SVGAnimatedBoolean;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAnimatedEnumeration)}
++ * 
+  */
+-Window.prototype.SVGAnimatedEnumeration;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAnimatedInteger)}
++ * 
+  */
+-Window.prototype.SVGAnimatedInteger;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAnimatedLength)}
++ * 
+  */
+-Window.prototype.SVGAnimatedLength;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAnimatedLengthList)}
++ * 
+  */
+-Window.prototype.SVGAnimatedLengthList;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAnimatedNumber)}
++ * 
+  */
+-Window.prototype.SVGAnimatedNumber;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAnimatedNumberList)}
++ * 
+  */
+-Window.prototype.SVGAnimatedNumberList;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAnimatedPreserveAspectRatio)}
++ * 
+  */
+-Window.prototype.SVGAnimatedPreserveAspectRatio;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAnimatedRect)}
++ * 
+  */
+-Window.prototype.SVGAnimatedRect;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAnimatedString)}
++ * 
+  */
+-Window.prototype.SVGAnimatedString;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAnimatedTransformList)}
++ * 
+  */
+-Window.prototype.SVGAnimatedTransformList;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGCircleElement)}
++ * 
+  */
+-Window.prototype.SVGCircleElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGClipPathElement)}
++ * 
+  */
+-Window.prototype.SVGClipPathElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGColor)}
++ * 
+  */
+-Window.prototype.SVGColor;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGCursorElement)}
++ * 
+  */
+-Window.prototype.SVGCursorElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGDefsElement)}
++ * 
+  */
+-Window.prototype.SVGDefsElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGDescElement)}
++ * 
+  */
+-Window.prototype.SVGDescElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGDocument)}
++ * 
+  */
+-Window.prototype.SVGDocument;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGElement)}
++ * 
+  */
+-Window.prototype.SVGElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGElementInstance)}
++ * 
+  */
+-Window.prototype.SVGElementInstance;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGElementInstanceList)}
++ * 
+  */
+-Window.prototype.SVGElementInstanceList;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGEllipseElement)}
++ * 
+  */
+-Window.prototype.SVGEllipseElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGForeignObjectElement)}
++ * 
+  */
+-Window.prototype.SVGForeignObjectElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGException)}
++ * 
+  */
+-Window.prototype.SVGException;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGGElement)}
++ * 
+  */
+-Window.prototype.SVGGElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGGradientElement)}
++ * 
+  */
+-Window.prototype.SVGGradientElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGImageElement)}
++ * 
+  */
+-Window.prototype.SVGImageElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGLength)}
++ * 
+  */
+-Window.prototype.SVGLength;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGLengthList)}
++ * 
+  */
+-Window.prototype.SVGLengthList;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGLinearGradientElement)}
++ * 
+  */
+-Window.prototype.SVGLinearGradientElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGLineElement)}
++ * 
+  */
+-Window.prototype.SVGLineElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGMarkerElement)}
++ * 
+  */
+-Window.prototype.SVGMarkerElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGMaskElement)}
++ * 
+  */
+-Window.prototype.SVGMaskElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGMatrix)}
++ * 
+  */
+-Window.prototype.SVGMatrix;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGMetadataElement)}
++ * 
+  */
+-Window.prototype.SVGMetadataElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGNumber)}
++ * 
+  */
+-Window.prototype.SVGNumber;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGNumberList)}
++ * 
+  */
+-Window.prototype.SVGNumberList;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPaint)}
++ * 
+  */
+-Window.prototype.SVGPaint;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathElement)}
++ * 
+  */
+-Window.prototype.SVGPathElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSeg)}
++ * 
+  */
+-Window.prototype.SVGPathSeg;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegArcAbs)}
++ * 
+  */
+-Window.prototype.SVGPathSegArcAbs;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegArcRel)}
++ * 
+  */
+-Window.prototype.SVGPathSegArcRel;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegClosePath)}
++ * 
+  */
+-Window.prototype.SVGPathSegClosePath;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegCurvetoCubicAbs)}
++ * 
+  */
+-Window.prototype.SVGPathSegCurvetoCubicAbs;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegCurvetoCubicRel)}
++ * 
+  */
+-Window.prototype.SVGPathSegCurvetoCubicRel;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegCurvetoCubicSmoothAbs)}
++ * 
+  */
+-Window.prototype.SVGPathSegCurvetoCubicSmoothAbs;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegCurvetoCubicSmoothRel)}
++ * 
+  */
+-Window.prototype.SVGPathSegCurvetoCubicSmoothRel;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegCurvetoQuadraticAbs)}
++ * 
+  */
+-Window.prototype.SVGPathSegCurvetoQuadraticAbs;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegCurvetoQuadraticRel)}
++ * 
+  */
+-Window.prototype.SVGPathSegCurvetoQuadraticRel;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegCurvetoQuadraticSmoothAbs)}
++ * 
+  */
+-Window.prototype.SVGPathSegCurvetoQuadraticSmoothAbs;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegCurvetoQuadraticSmoothRel)}
++ * 
+  */
+-Window.prototype.SVGPathSegCurvetoQuadraticSmoothRel;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegLinetoAbs)}
++ * 
+  */
+-Window.prototype.SVGPathSegLinetoAbs;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegLinetoHorizontalAbs)}
++ * 
+  */
+-Window.prototype.SVGPathSegLinetoHorizontalAbs;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegLinetoHorizontalRel)}
++ * 
+  */
+-Window.prototype.SVGPathSegLinetoHorizontalRel;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegLinetoRel)}
++ * 
+  */
+-Window.prototype.SVGPathSegLinetoRel;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegLinetoVerticalAbs)}
++ * 
+  */
+-Window.prototype.SVGPathSegLinetoVerticalAbs;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegLinetoVerticalRel)}
++ * 
+  */
+-Window.prototype.SVGPathSegLinetoVerticalRel;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegList)}
++ * 
+  */
+-Window.prototype.SVGPathSegList;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegMovetoAbs)}
++ * 
+  */
+-Window.prototype.SVGPathSegMovetoAbs;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPathSegMovetoRel)}
++ * 
+  */
+-Window.prototype.SVGPathSegMovetoRel;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPatternElement)}
++ * 
+  */
+-Window.prototype.SVGPatternElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPoint)}
++ * 
+  */
+-Window.prototype.SVGPoint;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPointList)}
++ * 
+  */
+-Window.prototype.SVGPointList;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPolygonElement)}
++ * 
+  */
+-Window.prototype.SVGPolygonElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPolylineElement)}
++ * 
+  */
+-Window.prototype.SVGPolylineElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGPreserveAspectRatio)}
++ * 
+  */
+-Window.prototype.SVGPreserveAspectRatio;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGRadialGradientElement)}
++ * 
+  */
+-Window.prototype.SVGRadialGradientElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGRect)}
++ * 
+  */
+-Window.prototype.SVGRect;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGRectElement)}
++ * 
+  */
+-Window.prototype.SVGRectElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGRenderingIntent)}
++ * 
+  */
+-Window.prototype.SVGRenderingIntent;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGScriptElement)}
++ * 
+  */
+-Window.prototype.SVGScriptElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGStopElement)}
++ * 
+  */
+-Window.prototype.SVGStopElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGStringList)}
++ * 
+  */
+-Window.prototype.SVGStringList;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGStyleElement)}
++ * 
+  */
+-Window.prototype.SVGStyleElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGSVGElement)}
++ * 
+  */
+-Window.prototype.SVGSVGElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGSwitchElement)}
++ * 
+  */
+-Window.prototype.SVGSwitchElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGSymbolElement)}
++ * 
+  */
+-Window.prototype.SVGSymbolElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGTextContentElement)}
++ * 
+  */
+-Window.prototype.SVGTextContentElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGTextElement)}
++ * 
+  */
+-Window.prototype.SVGTextElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGTextPathElement)}
++ * 
+  */
+-Window.prototype.SVGTextPathElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGTextPositioningElement)}
++ * 
+  */
+-Window.prototype.SVGTextPositioningElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGTitleElement)}
++ * 
+  */
+-Window.prototype.SVGTitleElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGTransform)}
++ * 
+  */
+-Window.prototype.SVGTransform;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGTransformList)}
++ * 
+  */
+-Window.prototype.SVGTransformList;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGTRefElement)}
++ * 
+  */
+-Window.prototype.SVGTRefElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGTSpanElement)}
++ * 
+  */
+-Window.prototype.SVGTSpanElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGUnitTypes)}
++ * 
+  */
+-Window.prototype.SVGUnitTypes;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGUseElement)}
++ * 
+  */
+-Window.prototype.SVGUseElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGViewElement)}
++ * 
+  */
+-Window.prototype.SVGViewElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAnimateColorElement)}
++ * 
+  */
+-Window.prototype.SVGAnimateColorElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAnimateElement)}
++ * 
+  */
+-Window.prototype.SVGAnimateElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAnimateMotionElement)}
++ * 
+  */
+-Window.prototype.SVGAnimateMotionElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAnimateTransformElement)}
++ * 
+  */
+-Window.prototype.SVGAnimateTransformElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGMPathElement)}
++ * 
+  */
+-Window.prototype.SVGMPathElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGSetElement)}
++ * 
+  */
+-Window.prototype.SVGSetElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAltGlyphDefElement)}
++ * 
+  */
+-Window.prototype.SVGAltGlyphDefElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAltGlyphElement)}
++ * 
+  */
+-Window.prototype.SVGAltGlyphElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGAltGlyphItemElement)}
++ * 
+  */
+-Window.prototype.SVGAltGlyphItemElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFontElement)}
++ * 
+  */
+-Window.prototype.SVGFontElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFontFaceElement)}
++ * 
+  */
+-Window.prototype.SVGFontFaceElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFontFaceFormatElement)}
++ * 
+  */
+-Window.prototype.SVGFontFaceFormatElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFontFaceNameElement)}
++ * 
+  */
+-Window.prototype.SVGFontFaceNameElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFontFaceSrcElement)}
++ * 
+  */
+-Window.prototype.SVGFontFaceSrcElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFontFaceUriElement)}
++ * 
+  */
+-Window.prototype.SVGFontFaceUriElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGGlyphElement)}
++ * 
+  */
+-Window.prototype.SVGGlyphElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGGlyphRefElement)}
++ * 
+  */
+-Window.prototype.SVGGlyphRefElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGHKernElement)}
++ * 
+  */
+-Window.prototype.SVGHKernElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGMissingGlyphElement)}
++ * 
+  */
+-Window.prototype.SVGMissingGlyphElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGVKernElement)}
++ * 
+  */
+-Window.prototype.SVGVKernElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGComponentTransferFunctionElement)}
++ * 
+  */
+-Window.prototype.SVGComponentTransferFunctionElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEBlendElement)}
++ * 
+  */
+-Window.prototype.SVGFEBlendElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEColorMatrixElement)}
++ * 
+  */
+-Window.prototype.SVGFEColorMatrixElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEComponentTransferElement)}
++ * 
+  */
+-Window.prototype.SVGFEComponentTransferElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFECompositeElement)}
++ * 
+  */
+-Window.prototype.SVGFECompositeElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEConvolveMatrixElement)}
++ * 
+  */
+-Window.prototype.SVGFEConvolveMatrixElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEDiffuseLightingElement)}
++ * 
+  */
+-Window.prototype.SVGFEDiffuseLightingElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEDisplacementMapElement)}
++ * 
+  */
+-Window.prototype.SVGFEDisplacementMapElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEDistantLightElement)}
++ * 
+  */
+-Window.prototype.SVGFEDistantLightElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEDropShadowElement)}
++ * 
+  */
+-Window.prototype.SVGFEDropShadowElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEFloodElement)}
++ * 
+  */
+-Window.prototype.SVGFEFloodElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEFuncAElement)}
++ * 
+  */
+-Window.prototype.SVGFEFuncAElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEFuncBElement)}
++ * 
+  */
+-Window.prototype.SVGFEFuncBElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEFuncGElement)}
++ * 
+  */
+-Window.prototype.SVGFEFuncGElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEFuncRElement)}
++ * 
+  */
+-Window.prototype.SVGFEFuncRElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEGaussianBlurElement)}
++ * 
+  */
+-Window.prototype.SVGFEGaussianBlurElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEImageElement)}
++ * 
+  */
+-Window.prototype.SVGFEImageElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEMergeElement)}
++ * 
+  */
+-Window.prototype.SVGFEMergeElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEMergeNodeElement)}
++ * 
+  */
+-Window.prototype.SVGFEMergeNodeElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEMorphologyElement)}
++ * 
+  */
+-Window.prototype.SVGFEMorphologyElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEOffsetElement)}
++ * 
+  */
+-Window.prototype.SVGFEOffsetElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFEPointLightElement)}
++ * 
+  */
+-Window.prototype.SVGFEPointLightElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFESpecularLightingElement)}
++ * 
+  */
+-Window.prototype.SVGFESpecularLightingElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFESpotLightElement)}
++ * 
+  */
+-Window.prototype.SVGFESpotLightElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFETileElement)}
++ * 
+  */
+-Window.prototype.SVGFETileElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFETurbulenceElement)}
++ * 
+  */
+-Window.prototype.SVGFETurbulenceElement;
++
+ 
+ 
+ /**
+- * @type {function(new: SVGFilterElement)}
++ * 
+  */
+-Window.prototype.SVGFilterElement;
++

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/0be5e48c/externs/node/build.xml
----------------------------------------------------------------------
diff --git a/externs/node/build.xml b/externs/node/build.xml
index c6cb73c..2731afc 100644
--- a/externs/node/build.xml
+++ b/externs/node/build.xml
@@ -23,9 +23,36 @@
     
     <target name="main" depends="preprocess, externc, postprocess, compc" />
 
-    <!-- we need to insert a line near the beginning of the file to make the
-         compiler happy. -->
     <target name="preprocess">
+        <mkdir dir="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs" />
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/assert.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/assert.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/buffer.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/buffer.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/child_process.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/child_process.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/cluster.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/cluster.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/crypto.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/crypto.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/dgram.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/dgram.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/dns.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/dns.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/domain.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/domain.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/events.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/events.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/fs.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/fs.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/globals.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/globals.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/http.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/http.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/https.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/https.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/net.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/net.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/os.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/os.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/path.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/path.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/punycode.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/punycode.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/querystring.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/querystring.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/readline.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/readline.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/repl.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/repl.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/stream.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/stream.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/string_decoder.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/string_decoder.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/tls.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/tls.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/tty.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/tty.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/url.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/url.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/util.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/util.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/vm.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/vm.js" skipexisting="true"/>
+        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/nodejs/zlib.js" dest="${basedir}/target/downloads/closure-compiler-master/contrib/nodejs/zlib.js" skipexisting="true"/>
     </target>
     
     <target name="externc" >