{
    "title": "JSON schema for the ActionScript configuration file",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "anyOf": [
        {
            "allOf": [
                {
                    "$ref": "#/definitions/baseAppConfig"
                },
                {
                    "required": [
                        "mainClass"
                    ]
                }
            ]
        },
        {
            "allOf": [
                {
                    "$ref": "#/definitions/baseAppConfig"
                },
                {
                    "required": [
                        "files"
                    ]
                }
            ]
        },
        {
            "allOf": [
                {
                    "$ref": "#/definitions/baseAppConfig"
                },
                {
                    "required": [
                        "extends"
                    ]
                }
            ]
        },
        {
            "allOf": [
                {
                    "$ref": "#/definitions/baseConfig"
                },
                {
                    "properties": {
                        "type": {
                            "type": "string",
                            "description": "Indicates if the project is an application or library. Supported values include \"app\" and \"lib\". Then default value is \"app\".",
                            "pattern": "^lib$"
                        }
                    },
                    "required": [
                        "type"
                    ]
                }
            ]
        }
    ],
    "definitions": {
        "baseConfig": {
            "type": "object",
            "properties": {
                "config": {
                    "$ref": "#/definitions/config"
                },
                "compilerOptions": {
                    "$ref": "#/definitions/compilerOptions"
                },
                "additionalOptions": {
                    "$ref": "#/definitions/additionalOptions"
                },
                "copySourcePathAssets": {
                    "$ref": "#/definitions/copySourcePathAssets"
                },
                "files": {
                    "$ref": "#/definitions/files"
                },
                "extends": {
                    "$ref": "#/definitions/extends"
                }
            }
        },
        "baseAppConfig": {
            "allOf": [
                {
                    "$ref": "#/definitions/baseConfig"
                },
                {
                    "properties": {
                        "type": {
                            "type": "string",
                            "description": "Indicates if the project is an application or library. Supported values include \"app\" and \"lib\". Then default value is \"app\".",
                            "default": "app"
                        },
                        "application": {
                            "$ref": "#/definitions/application"
                        },
                        "airOptions": {
                            "$ref": "#/definitions/airOptions"
                        },
                        "animateOptions": {
                            "$ref": "#/definitions/animateOptions"
                        },
                        "htmlTemplate": {
                            "$ref": "#/definitions/htmlTemplate"
                        },
                        "mainClass": {
                            "$ref": "#/definitions/mainClass"
                        }
                    }
                }
            ]
        },
        "extends": {
            "type": "string",
            "description": "Path to another asconfig.json file that will be merged with this file. If the same fields are defined in both files, the fields in this file will either replace or expand the values in the base file."
        },
        "additionalOptions": {
            "type": "string",
            "description": "Additional options to send to the compiler, formatted as command line arguments. Useful for testing new options that are not yet supported by the compilerOptions field of asconfig.json."
        },
        "htmlTemplate": {
            "type": "string",
            "description": "Path to a folder containing an HTML template for a SWF project that will be copied to the output folder. Text files may contain tokens that will be automatically replace. Not to be confused with html-template compiler option used by Apache Royale."
        },
        "singleSigningOptions": {
            "type": "object",
            "description": "Options for code signing an Adobe AIR application.",
            "additionalProperties": false,
            "properties": {
                "alias": {
                    "type": "string",
                    "description": "The alias of a key in the keystore."
                },
                "storetype": {
                    "type": "string",
                    "description": "The type of keystore.",
                    "pattern": "^(jks|JKS|pkcs12|PKCS12|pkcs11|PKCS11|KeychainStore|Windows-MY|Windows-ROOT)$"
                },
                "keystore": {
                    "type": "string",
                    "description": "The path to the keystore file."
                },
                "providerName": {
                    "type": "string",
                    "description": "The JCA provider for the specified keystore type."
                },
                "tsa": {
                    "type": "string",
                    "description": "Specifies the URL of an RFC3161-compliant timestamp server to time-stamp the digital signature, or \"none\" to disable timestamping."
                },
                "provisioning-profile": {
                    "type": "string",
                    "description": "The path to a provisioning profile for iOS."
                }
            }
        },
        "dualSigningOptions": {
            "type": "object",
            "description": "Options for code signing an Adobe AIR application.",
            "additionalProperties": false,
            "properties": {
                "debug": {
                    "$ref": "#/definitions/singleSigningOptions"
                },
                "release": {
                    "$ref": "#/definitions/singleSigningOptions"
                }
            },
            "required": [
                "debug",
                "release"
            ]
        },
        "signingOptions": {
            "anyOf": [
                {
                    "$ref": "#/definitions/singleSigningOptions"
                },
                {
                    "$ref": "#/definitions/dualSigningOptions"
                }
            ]
        },
        "airOptionsOutput": {
            "type": "string",
            "description": "The output file name of the application package."
        },
        "airOptionsConnect": {
            "type": [
                "string",
                "boolean"
            ],
            "description": "Specifies if the app will attempt to connect to a remote debugger (usually over Wi-Fi). Set to true or false, or optionally specify the host string of the computer running the debugger."
        },
        "airOptionsListen": {
            "type": [
                "number",
                "boolean"
            ],
            "description": "Specifies if the app will listen for an incoming connection to a debugger over USB. Set to true or false, or optionally specify the port to listen on."
        },
        "airOptionsPlatformSDK": {
            "type": "string",
            "description": "The path to the platform SDK for the target device."
        },
        "airOptionsAllTargets": {
            "type": "string",
            "description": "The package target for Adobe AIR applications.",
            "pattern": "^(air|bundle|native|ipa-app-store|ipa-ad-hoc|ipa-debug|ipa-test|ipa-debug-interpreter|ipa-test-interpreter|ipa-debug-interpreter-simulator|ipa-test-interpreter-simulator|apk-captive-runtime|apk|apk-debug|apk-profile|aab)$"
        },
        "airOptionsDesktopTargets": {
            "type": "string",
            "description": "The package target for desktop applications.",
            "pattern": "^(air|bundle|native)$"
        },
        "airOptionsExtdir": {
            "type": "array",
            "description": "One or more specified directories that contain ANE files for native extensions that the application uses.",
            "items": {
                "type": "string"
            }
        },
        "airOptionsFiles": {
            "type": "array",
            "description": "Additional files to package with the Adobe AIR application.",
            "items": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "file": {
                        "type": "string",
                        "description": "Source path of a file or directory to include in the application package."
                    },
                    "path": {
                        "type": "string",
                        "description": "Destination path of the file or directory inside the application package."
                    }
                },
                "required": [
                    "file",
                    "path"
                ]
            }
        },
        "airOptionsSampler": {
            "type": "boolean",
            "description": "Enables the telemetry-based ActionScript sampler in iOS applications."
        },
        "airOptionsHideAneLibSymbols": {
            "type": "boolean",
            "description": "Specify whether iOS ANE library symbols are visible only to that library's sources or globally."
        },
        "airOptionsEmbedBitcode": {
            "type": "boolean",
            "description": "Specify whether to embed iOS bitcode or not."
        },
        "animateOptions": {
            "type": "object",
            "description": "Specify configuration options for Adobe Animate projects.",
            "additionalProperties": false,
            "properties": {
                "file": {
                    "type": "string",
                    "description": "The location of an Adobe Animate .fla file."
                }
            },
            "required": [
                "file"
            ]
        },
        "airOptions": {
            "type": "object",
            "description": "Instructs the ADT utility how to package the Adobe AIR application.",
            "additionalProperties": false,
            "properties": {
                "target": {
                    "$ref": "#/definitions/airOptionsAllTargets"
                },
                "extdir": {
                    "$ref": "#/definitions/airOptionsExtdir"
                },
                "files": {
                    "$ref": "#/definitions/airOptionsFiles"
                },
                "output": {
                    "$ref": "#/definitions/airOptionsOutput"
                },
                "signingOptions": {
                    "$ref": "#/definitions/signingOptions"
                },
                "air": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "target": {
                            "$ref": "#/definitions/airOptionsAllTargets"
                        },
                        "extdir": {
                            "$ref": "#/definitions/airOptionsExtdir"
                        },
                        "files": {
                            "$ref": "#/definitions/airOptionsFiles"
                        },
                        "output": {
                            "$ref": "#/definitions/airOptionsOutput"
                        },
                        "signingOptions": {
                            "$ref": "#/definitions/signingOptions"
                        }
                    }
                },
                "ios": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "embedBitcode": {
                            "$ref": "#/definitions/airOptionsEmbedBitcode"
                        },
                        "extdir": {
                            "$ref": "#/definitions/airOptionsExtdir"
                        },
                        "files": {
                            "$ref": "#/definitions/airOptionsFiles"
                        },
                        "hideAneLibSymbols": {
                            "$ref": "#/definitions/airOptionsHideAneLibSymbols"
                        },
                        "output": {
                            "$ref": "#/definitions/airOptionsOutput"
                        },
                        "signingOptions": {
                            "$ref": "#/definitions/signingOptions"
                        },
                        "sampler": {
                            "$ref": "#/definitions/airOptionsSampler"
                        },
                        "connect": {
                            "$ref": "#/definitions/airOptionsConnect"
                        },
                        "listen": {
                            "$ref": "#/definitions/airOptionsListen"
                        },
                        "platformsdk": {
                            "$ref": "#/definitions/airOptionsPlatformSDK"
                        },
                        "target": {
                            "type": "string",
                            "description": "The package target for iOS.",
                            "pattern": "^(ipa-app-store|ipa-ad-hoc|ipa-debug|ipa-test|ipa-debug-interpreter|ipa-test-interpreter)$"
                        }
                    },
                    "required": [
                        "signingOptions"
                    ]
                },
                "ios_simulator": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "embedBitcode": {
                            "$ref": "#/definitions/airOptionsEmbedBitcode"
                        },
                        "extdir": {
                            "$ref": "#/definitions/airOptionsExtdir"
                        },
                        "files": {
                            "$ref": "#/definitions/airOptionsFiles"
                        },
                        "hideAneLibSymbols": {
                            "$ref": "#/definitions/airOptionsHideAneLibSymbols"
                        },
                        "output": {
                            "$ref": "#/definitions/airOptionsOutput"
                        },
                        "signingOptions": {
                            "$ref": "#/definitions/signingOptions"
                        },
                        "sampler": {
                            "$ref": "#/definitions/airOptionsSampler"
                        },
                        "connect": {
                            "$ref": "#/definitions/airOptionsConnect"
                        },
                        "listen": {
                            "$ref": "#/definitions/airOptionsListen"
                        },
                        "platformsdk": {
                            "$ref": "#/definitions/airOptionsPlatformSDK"
                        },
                        "target": {
                            "type": "string",
                            "description": "The package target for iOS.",
                            "pattern": "^(ipa-debug-interpreter-simulator|ipa-test-interpreter-simulator)$"
                        }
                    },
                    "required": [
                        "signingOptions"
                    ]
                },
                "android": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "arch": {
                            "type": "string",
                            "description": "Specifies the CPU architecture to target on Android.",
                            "pattern": "^(armv7|armv8|x86|x86_64)$"
                        },
                        "airDownloadURL": {
                            "type": "string",
                            "description": "Specifies an alternate URL for downloading and installing the AIR runtime on Android devices."
                        },
                        "extdir": {
                            "$ref": "#/definitions/airOptionsExtdir"
                        },
                        "files": {
                            "$ref": "#/definitions/airOptionsFiles"
                        },
                        "output": {
                            "$ref": "#/definitions/airOptionsOutput"
                        },
                        "connect": {
                            "$ref": "#/definitions/airOptionsConnect"
                        },
                        "listen": {
                            "$ref": "#/definitions/airOptionsListen"
                        },
                        "platformsdk": {
                            "$ref": "#/definitions/airOptionsPlatformSDK"
                        },
                        "signingOptions": {
                            "$ref": "#/definitions/signingOptions"
                        },
                        "target": {
                            "type": "string",
                            "description": "The package target for Android.",
                            "pattern": "^(apk-captive-runtime|apk|apk-debug|apk-profile|aab)$"
                        }
                    },
                    "required": [
                        "signingOptions"
                    ]
                },
                "windows": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "extdir": {
                            "$ref": "#/definitions/airOptionsExtdir"
                        },
                        "files": {
                            "$ref": "#/definitions/airOptionsFiles"
                        },
                        "output": {
                            "$ref": "#/definitions/airOptionsOutput"
                        },
                        "signingOptions": {
                            "$ref": "#/definitions/signingOptions"
                        },
                        "target": {
                            "$ref": "#/definitions/airOptionsDesktopTargets"
                        }
                    }
                },
                "mac": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "extdir": {
                            "$ref": "#/definitions/airOptionsExtdir"
                        },
                        "files": {
                            "$ref": "#/definitions/airOptionsFiles"
                        },
                        "output": {
                            "$ref": "#/definitions/airOptionsOutput"
                        },
                        "signingOptions": {
                            "$ref": "#/definitions/signingOptions"
                        },
                        "target": {
                            "$ref": "#/definitions/airOptionsDesktopTargets"
                        }
                    }
                }
            }
        },
        "application": {
            "anyOf": [
                {
                    "$ref": "#/definitions/singleApplication"
                },
                {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "air": {
                            "$ref": "#/definitions/singleApplication"
                        },
                        "ios": {
                            "$ref": "#/definitions/singleApplication"
                        },
                        "ios_simulator": {
                            "$ref": "#/definitions/singleApplication"
                        },
                        "android": {
                            "$ref": "#/definitions/singleApplication"
                        },
                        "windows": {
                            "$ref": "#/definitions/singleApplication"
                        },
                        "mac": {
                            "$ref": "#/definitions/singleApplication"
                        }
                    }
                }
            ]
        },
        "singleApplication": {
            "type": "string",
            "description": "Optional path to Adobe AIR application descriptor. The descriptor's <content> element will be populated, and the file will be copied into the output directory."
        },
        "compilerOptions": {
            "type": "object",
            "description": "Instructs the ActionScript and MXML compiler how to build the project.",
            "additionalProperties": false,
            "properties": {
                "accessible": {
                    "type": "boolean",
                    "description": "In a SWF project, enables accessibility features. The default value is false."
                },
                "advanced-telemetry": {
                    "type": "boolean",
                    "description": "In a SWF project, enables advanced telemetry for Adobe Scout. The default value is false."
                },
                "benchmark": {
                    "type": "boolean",
                    "description": "Prints detailed compile times to the standard output. The default value is true."
                },
                "debug": {
                    "type": "boolean",
                    "description": "The generated output of the build will contain extra debug data."
                },
                "debug-password": {
                    "type": "string",
                    "description": "In a SWF project, an optional password for remote debugging."
                },
                "default-background-color": {
                    "type": "string",
                    "description": "In a SWF project, sets the application's background color."
                },
                "default-frame-rate": {
                    "type": "number",
                    "description": "In a SWF project, sets the application's frame rate. The default value is 24.",
                    "multipleOf": 1
                },
                "default-size": {
                    "type": "object",
                    "description": "In a SWF project, defines the default application size, in pixels.",
                    "additionalProperties": false,
                    "properties": {
                        "width": {
                            "type": "number",
                            "description": "Defines the default SWF application width, in pixels.",
                            "multipleOf": 1
                        },
                        "height": {
                            "type": "number",
                            "description": "Defines the default SWF application height, in pixels.",
                            "multipleOf": 1
                        }
                    },
                    "required": [
                        "width",
                        "height"
                    ]
                },
                "defaults-css-files": {
                    "type": "array",
                    "description": "Specifies a list of CSS files to provide style defaults",
                    "items": {
                        "type": "string"
                    }
                },
                "define": {
                    "type": "array",
                    "description": "Defines a global constant at compile time.",
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "name": {
                                "type": "string",
                                "description": "The name of the constant."
                            },
                            "value": {
                                "type": [
                                    "string",
                                    "boolean",
                                    "number"
                                ],
                                "description": "The value of the constant."
                            }
                        },
                        "required": [
                            "name",
                            "value"
                        ]
                    }
                },
                "js-define": {
                    "type": "array",
                    "description": "In an Apache Royale project, defines a global constant at compile time for the generated JavaScript output.",
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "name": {
                                "type": "string",
                                "description": "The name of the constant."
                            },
                            "value": {
                                "type": [
                                    "string",
                                    "boolean",
                                    "number"
                                ],
                                "description": "The value of the constant."
                            }
                        },
                        "required": [
                            "name",
                            "value"
                        ]
                    }
                },
                "directory": {
                    "type": "boolean",
                    "description": "(Library projects only) Outputs the library as a directory instead of a SWC file."
                },
                "dump-config": {
                    "type": "string",
                    "description": "Combines all configuration options and saves them to the specified file."
                },
                "external-library-path": {
                    "type": "array",
                    "description": "Specifies a list of SWC files, or directories containing SWC files, to exclude from linking in the generated output. This option provides compile-time link checking for external components that are dynamically linked.",
                    "items": {
                        "type": "string"
                    }
                },
                "js-external-library-path": {
                    "type": "array",
                    "description": "In an Apache Royale project, specifies a list of SWC files, or directories containing SWC files, to exclude from linking in only the generated JavaScript output.",
                    "items": {
                        "type": "string"
                    }
                },
                "swf-external-library-path": {
                    "type": "array",
                    "description": "In an Apache Royale project, specifies a list of SWC files, or directories containing SWC files, to exclude from linking in only the generated SWF output.",
                    "items": {
                        "type": "string"
                    }
                },
                "include-libraries": {
                    "type": "array",
                    "description": "Specifies a list of SWC files to link in the output, regardless of whether they are referenced.",
                    "items": {
                        "type": "string"
                    }
                },
                "include-file": {
                    "type": "array",
                    "description": "(Library projects only) Specifies a list of files to include in the SWC file.",
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "file": {
                                "type": "string",
                                "description": "Source path of a file or directory to include in the SWC."
                            },
                            "path": {
                                "type": "string",
                                "description": "Destination path of the file or directory inside the SWC."
                            }
                        },
                        "required": [
                            "file",
                            "path"
                        ]
                    }
                },
                "include-classes": {
                    "type": "array",
                    "description": "(Library projects only) Specifies classes to include in the SWC file. You provide the class name (for instance, com.example.MyClass) rather than the file name (for instance, com/example/MyClass.as) to the file for this option.",
                    "items": {
                        "type": "string"
                    }
                },
                "include-namespaces": {
                    "type": "array",
                    "description": "(Library projects only) Specifies namespace-style components in the SWC file. You specify a list of URIs to include in the SWC file. The uri argument must already be defined with the namespace option.",
                    "items": {
                        "type": "string"
                    }
                },
                "html-output-filename": {
                    "type": "string",
                    "description": "In an Apache Royale project, specifies the name of the output file generated using the html-template."
                },
                "html-template": {
                    "type": "string",
                    "description": "In an Apache Royale project, specifies a custom HTML template file. For SWF projects, use the top-level htmlTemplate field instead."
                },
                "include-sources": {
                    "type": "array",
                    "description": "(Library projects only) Specifies classes or directories to add to the SWC file. When specifying classes, you specify the path to the class file (for instance, com/example/MyClass.as) rather than the class name itself (for instance, com.example.MyClass).",
                    "items": {
                        "type": "string"
                    }
                },
                "js-compiler-option": {
                    "type": "array",
                    "description": "In an Apache Royale project, passes additional options to the Closure Compiler for a release build.",
                    "items": {
                        "type": "string"
                    }
                },
                "js-default-initializers": {
                    "type": "boolean",
                    "description": "In an Apache Royale project, enables or disables initialization of primitive (Number, Boolean, etc.) variables with default values in the generated JavaScript."
                },
                "js-output": {
                    "type": "string",
                    "description": "In an Apache Royale project, the path where the generated JavaScript output should be saved."
                },
                "keep-all-type-selectors": {
                    "type": "boolean",
                    "description": "Disables the pruning of unused type selectors. The default value is false."
                },
                "keep-as3-metadata": {
                    "type": "array",
                    "description": "Specifies custom metadata that you want to keep.",
                    "items": {
                        "type": "string"
                    }
                },
                "keep-generated-actionscript": {
                    "type": "boolean",
                    "description": "Determines whether to keep the generated ActionScript class files. The default value is false."
                },
                "library-path": {
                    "type": "array",
                    "description": "Links SWC libraries to the generated output of the build. The compiler only links in those classes for the SWC file that are required. You can specify a directory or individual SWC files.",
                    "items": {
                        "type": "string"
                    }
                },
                "js-library-path": {
                    "type": "array",
                    "description": "In an Apache Royale project, links SWC libraries to only the generated JavaScript output of the build.",
                    "items": {
                        "type": "string"
                    }
                },
                "swf-library-path": {
                    "type": "array",
                    "description": "In an Apache Royale project, links SWC libraries to only the generated SWF output of the build.",
                    "items": {
                        "type": "string"
                    }
                },
                "link-report": {
                    "type": "string",
                    "description": "Generates linking information and saves it to the specified output file."
                },
                "load-config": {
                    "type": "array",
                    "description": "Specifies the locations of XML configuration files that define extra compiler options.",
                    "items": {
                        "type": "string"
                    }
                },
                "load-externs": {
                    "type": "array",
                    "description": "Specifies the locations of XML files that define extra symbols to omit from the output.",
                    "items": {
                        "type": "string"
                    }
                },
                "js-load-config": {
                    "type": "array",
                    "description": "In an Apache Royale project, specifies the locations of XML configuration files that define extra compiler options only for the generated JavaScript output.",
                    "items": {
                        "type": "string"
                    }
                },
                "locale": {
                    "type": "array",
                    "description": "Specifies one or more locales to be compiled into the application.",
                    "items": {
                        "type": "string",
                        "pattern": "^[a-z]{2}([-_][A-Z]{2}){0,1}$"
                    }
                },
                "namespace": {
                    "type": "array",
                    "description": "Specifies MXML namespaces. Each namespace must include a URI and the location of the manifest file that defines the contents of the namespace.",
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "uri": {
                                "type": "string",
                                "description": "The namespace URI."
                            },
                            "manifest": {
                                "type": "string",
                                "description": "The location of the manifest file."
                            }
                        },
                        "required": [
                            "uri",
                            "manifest"
                        ]
                    }
                },
                "omit-trace-statements": {
                    "type": "boolean",
                    "description": "Omits trace() statements. The default value is false."
                },
                "optimize": {
                    "type": "boolean",
                    "description": "In a SWF project, enables the ActionScript optimizer to reduce file size and increases performance by optimizing the SWF file's bytecode. The default value is true."
                },
                "output": {
                    "type": "string",
                    "description": "The path where the generated output should be saved."
                },
                "preloader": {
                    "type": "string",
                    "description": "In a Flex project, specify a download progress bar for your application. The value must be the name of a class that implements the IPreloaderDisplay interface."
                },
                "remove-circulars": {
                    "type": "boolean",
                    "description": "In an Apache Royale project, removes circular references for a release build."
                },
                "show-unused-type-selector-warnings": {
                    "type": "boolean",
                    "description": "Determines if warnings generated from unused CSS type selectors are displayed. The default value is true."
                },
                "size-report": {
                    "type": "string",
                    "description": "Generates a report that summarizes the size of each type of data in the application and saves it to the specified output file."
                },
                "source-map": {
                    "type": "boolean",
                    "description": "In an Apache Royale project, emits source maps in the debug build for each ActionScript and MXML file. The default value is false."
                },
                "source-path": {
                    "type": "array",
                    "description": "Adds directories or files to the source path. The compiler searches directories in the source path for MXML, AS, or CSS source files that are used in your applications and includes those that are required at compile time.",
                    "items": {
                        "type": "string"
                    }
                },
                "static-link-runtime-shared-libraries": {
                    "type": "boolean",
                    "description": "In a SWF project, determines whether to compile against libraries statically or use RSLs."
                },
                "strict": {
                    "type": "boolean",
                    "description": "Performs compile-time type checking on assignments and options supplied to method calls. The default value is true."
                },
                "swf-version": {
                    "type": "number",
                    "description": "In a SWF project, specifies the SWF file format version. Features requiring a later version of the SWF file format are not compiled into the application. This is different from the target-player version in that it refers to the SWF specification versioning scheme.",
                    "minimum": 9,
                    "multipleOf": 1
                },
                "targets": {
                    "type": "array",
                    "description": "In an Apache Royale project, specifies one or more output targets. Supported values include \"JSRoyale\", \"JS\", \"JSNode\", and \"SWF\".",
                    "items": {
                        "type": "string"
                    }
                },
                "target-player": {
                    "type": "string",
                    "description": "In a SWF project, specifies the runtime version. Features requiring a later version of the runtime are not compiled into the application.",
                    "pattern": "^[0-9]+(\\.[0-9]+){0,2}$"
                },
                "theme": {
                    "anyOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    ],
                    "description": "Specifies one or more theme files to use with this application."
                },
                "tools-locale": {
                    "type": "string",
                    "description": "Specifies the locale to use when reporting compiler errors and warnings.",
                    "pattern": "^[a-z]{2}([-_][A-Z]{2}){0,1}$"
                },
                "use-direct-blit": {
                    "type": "boolean",
                    "description": "In a SWF project, equivalent to wmode=\"direct\" when running in a standalone SWF runtime instead of a browser plug-in. The default value is false."
                },
                "use-gpu": {
                    "type": "boolean",
                    "description": "In a SWF project, equivalent to wmode=\"gpu\" when running in a standalone SWF runtime instead of a browser plug-in. The default value is false."
                },
                "use-network": {
                    "type": "boolean",
                    "description": "In a SWF project, specifies that the current application uses network services or can access the local file system. The default value is true."
                },
                "use-resource-bundle-metadata": {
                    "type": "boolean",
                    "description": "Enables resource bundles, and instructs the compiler to process the contents of the [ResourceBundle] metadata tag. The default value is true."
                },
                "verbose-stacktraces": {
                    "type": "boolean",
                    "description": "In a SWF project, includes line numbers in the generated output, but results in a larger SWF file. When a run-time error occurs, the stacktrace shows line numbers. The default value is false."
                },
                "warnings": {
                    "type": "boolean",
                    "description": "Enables or disables all warnings."
                },
                "warn-public-vars": {
                    "type": "boolean",
                    "description": "In an Apache Royale project, enables or disables warnings about public variables."
                }
            }
        },
        "config": {
            "type": "string",
            "description": "The default configuration file to use from the SDK. Supported values include \"js\", \"node\", \"royale\", \"flex\", \"air\", and \"airmobile\". The default value is \"royale\" when using Apache Royale and \"flex\" for other SDKs.",
            "pattern": "^(flex|royale|air|airmobile|js|node)$"
        },
        "copySourcePathAssets": {
            "type": "boolean",
            "description": "Optionally copies any files in the source path that don't have .as or .mxml extensions to the output directory."
        },
        "files": {
            "type": "array",
            "description": "The specified files will be included by the compiler, including all of their dependencies. If the \"mainClass\" field is omitted, the final item in \"files\" will be used as the application entry point.",
            "items": {
                "type": "string"
            },
            "minItems": 1
        },
        "mainClass": {
            "type": "string",
            "description": "The fully qualified class name (including the package name, if any) of the main class to use as the application entry point."
        }
    }
}