{
  "$schema": "http://json-schema.org/schema",
  "version": 2,
  "title": "Deno Emit Executor",
  "description": "Output a single JavaScript file with all dependencies",
  "type": "object",
  "properties": {
    "denoConfig": {
      "type": "string",
      "description": "Path to the Deno configuration file."
    },
    "main": {
      "type": "string",
      "description": "The entry point for your Deno application."
    },
    "outputFile": {
      "type": "string",
      "description": "The destination of the emitted JavaScript file."
    },
    "bundle": {
      "type": "boolean",
      "description": "Bundle all imports into a single JavaScript file.",
      "default": true
    },
    "assets": {
      "type": "array",
      "description": "List of static assets.",
      "default": [],
      "items": {
        "$ref": "#/definitions/assetPattern"
      }
    },
    "sourceMap": {
      "oneOf": [
        { "type": "string", "enum": ["linked", "inline"] },
        { "type": "boolean" }
      ],
      "description": "Generate sourceMap.",
      "default": "inline"
    }
  },
  "required": ["main", "outputFile", "denoConfig"],
  "definitions": {
    "assetPattern": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "glob": {
              "type": "string",
              "description": "The pattern to match."
            },
            "input": {
              "type": "string",
              "description": "The input directory path in which to apply 'glob'. Defaults to the project root."
            },
            "ignore": {
              "description": "An array of globs to ignore.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "output": {
              "type": "string",
              "description": "Absolute path within the output."
            }
          },
          "additionalProperties": false,
          "required": ["glob", "input", "output"]
        },
        {
          "type": "string"
        }
      ]
    }
  }
}
