<?xml version="1.0" encoding="UTF-8"?>
<!--

  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.royale.typedefs</groupId>
    <artifactId>royale-typedefs-parent</artifactId>
    <version>0.9.2</version>
  </parent>

  <artifactId>royale-typedefs-js</artifactId>
  <version>0.9.2</version>
  <packaging>swc</packaging>

  <name>Apache Royale: TypeDefs: JS</name>

  <build>
    <sourceDirectory>src/main/royale</sourceDirectory>
    <plugins>
      <plugin>
        <groupId>org.apache.royale.compiler</groupId>
        <artifactId>compiler-build-tools</artifactId>
        <version>${royale.build-tools.version}</version>
        <executions>
          <execution>
            <id>unpack-closure-externs</id>
            <phase>validate</phase>
            <goals>
              <goal>unpack-resources</goal>
            </goals>
            <configuration>
              <resource>externs.zip</resource>
            </configuration>
          </execution>
        </executions>
        <!--
            Dependency to the closure compiler externs artifact so
            the "unpack-resources" goal can find the externs.zip
        -->
        <dependencies>
          <dependency>
            <groupId>com.google.javascript</groupId>
            <artifactId>closure-compiler-externs</artifactId>
            <version>v20170626</version>
          </dependency>
        </dependencies>
      </plugin>
      <!-- Download JavaScript from GitHub -->
      <plugin>
        <groupId>com.googlecode.maven-download-plugin</groupId>
        <artifactId>download-maven-plugin</artifactId>
        <version>1.2.1</version>
        <executions>
          <execution>
            <id>get-svg</id>
            <phase>validate</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/contrib/externs/svg.js</url>
              <outputFileName>svg.js</outputFileName>
              <outputDirectory>${project.build.directory}/downloads</outputDirectory>
              <skipCache>true</skipCache>
            </configuration>
          </execution>
          <execution>
            <id>get-es3</id>
            <phase>validate</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/es3.js</url>
              <outputFileName>es3.js</outputFileName>
              <outputDirectory>${project.build.directory}/downloads</outputDirectory>
              <skipCache>true</skipCache>
              <overwrite>true</overwrite>
            </configuration>
          </execution>
          <execution>
            <id>get-es6</id>
            <phase>validate</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/es6.js</url>
              <outputFileName>es6.js</outputFileName>
              <outputDirectory>${project.build.directory}/downloads</outputDirectory>
              <skipCache>true</skipCache>
              <overwrite>true</overwrite>
            </configuration>
          </execution>
          <execution>
            <id>get-w3c_css</id>
            <phase>validate</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/w3c_css.js</url>
              <outputFileName>w3c_css.js</outputFileName>
              <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
              <skipCache>true</skipCache>
              <overwrite>true</overwrite>
            </configuration>
          </execution>
          <execution>
            <id>get-gecko_dom</id>
            <phase>validate</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/gecko_dom.js</url>
              <outputFileName>gecko_dom.js</outputFileName>
              <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
              <skipCache>true</skipCache>
              <overwrite>true</overwrite>
            </configuration>
          </execution>
          <execution>
            <id>get-w3c_dom2</id>
            <phase>validate</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/w3c_dom2.js</url>
              <outputFileName>w3c_dom2.js</outputFileName>
              <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
              <skipCache>true</skipCache>
              <overwrite>true</overwrite>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.royale.compiler</groupId>
        <artifactId>royale-maven-plugin</artifactId>
        <version>${royale.compiler.version}</version>
        <extensions>true</extensions>
        <configuration>
          <includeSources>true</includeSources>
          <externcInput>
            <fileSet>
              <directory>${project.basedir}/src/main/javascript</directory>
              <includes>
                <include>**/*.js</include>
              </includes>
            </fileSet>
            <fileSet>
              <directory>${project.basedir}/target/downloads</directory>
              <includes>
                <include>*.js</include>
                <include>browser/w3c_*.js</include>
                <include>browser/window.js</include>
                <include>browser/ie_dom.js</include>
                <include>browser/gecko_*.js</include>
                <include>browser/webkit_*.js</include>
                <include>browser/iphone.js</include>
                <!-- <include>browser/chrome.js</include> -->
                <include>browser/flash.js</include>
                <include>browser/page_visibility.js</include>
                <include>browser/fileapi.js</include>
                <include>browser/html5.js</include>
                <include>browser/webgl.js</include>
                <include>browser/webstorage.js</include>
                <include>browser/whatwg_encoding.js</include>
                <include>es6_collections.js</include>
              </includes>
              <excludes>
                <exclude>browser/w3c_dom4.js</exclude>
                <exclude>browser/w3c_serviceworker.js</exclude>
                <exclude>browser/w3c_webcrypto.js</exclude>
                <exclude>browser/gecko_css.js</exclude>
                <exclude>browser/webkit_notifications.js</exclude>
              </excludes>
            </fileSet>
          </externcInput>
          <externcConfig>
            <class-excludes>
              <class-exclude>
                <className>controlRange</className>
              </class-exclude>
              <class-exclude>
                <className>CustomEvent</className>
              </class-exclude>
            </class-excludes>
            <field-excludes>
              <field-exclude>
                <className>Window</className>
                <field>focus</field>
              </field-exclude>
            </field-excludes>
            <excludes>
              <exclude>
                <className>Array</className>
                <name>toSource</name>
              </exclude>
              <exclude>
                <className>Date</className>
                <name>valueOf</name>
              </exclude>
              <exclude>
                <className>String</className>
                <name>valueOf</name>
              </exclude>
              <!-- SVG -->
              <exclude>
                <className>SVGStylable</className>
                <name>className</name>
              </exclude>
              <exclude>
                <className>SVGStylable</className>
                <name>style</name>
              </exclude>
              <exclude>
                <className>SVGLocatable</className>
                <name>farthestViewportElement</name>
              </exclude>
              <exclude>
                <className>SVGLocatable</className>
                <name>nearestViewportElement</name>
              </exclude>
            </excludes>
          </externcConfig>
          <includeFiles>
            <includeFile>
              <name>externs/svg.js</name>
              <path>downloads/svg.js</path>
            </includeFile>
          </includeFiles>
          <skipSwc>true</skipSwc>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.apache.royale.compiler</groupId>
            <artifactId>compiler-jx</artifactId>
            <version>${royale.compiler.version}</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>

</project>
