{
  "$schema": "http://json-schema.org/schema",
  "title": "Build Storybook",
  "description": "Serve up storybook in development mode.",
  "type": "object",
  "properties": {
    "browserTarget": {
      "type": "string",
      "description": "Build target to be served in project-name:builder:config format. Should generally target on the builder: '@angular-devkit/build-angular:browser'. Useful for Storybook to use options (styles, assets, ...).",
      "pattern": "^[^:\\s]+:[^:\\s]+(:[^\\s]+)?$",
      "default": null
    },
    "tsConfig": {
      "type": "string",
      "description": "The full path for the TypeScript configuration file, relative to the current workspace."
    },
    "outputDir": {
      "type": "string",
      "description": "Directory where to store built files.",
      "default": "storybook-static"
    },
    "preserveSymlinks": {
      "type": "boolean",
      "description": "Do not use the real path when resolving modules. If true, symlinks are resolved to their real path, if false, symlinks are resolved to their symlinked path.",
      "default": false
    },
    "configDir": {
      "type": "string",
      "description": "Directory where to load Storybook configurations from.",
      "default": ".storybook"
    },
    "loglevel": {
      "type": "string",
      "description": "Controls level of logging during build. Can be one of: [trace, debug, info (default), warn, error, silent].",
      "pattern": "(trace|debug|info|warn|error|silent)"
    },
    "logfile": {
      "type": "string",
      "description": "If provided, the log output will be written to the specified file path."
    },
    "debugWebpack": {
      "type": "boolean",
      "description": "Debug the Webpack configuration",
      "default": false
    },
    "enableProdMode": {
      "type": "boolean",
      "description": "Disable Angular's development mode, which turns off assertions and other checks within the framework.",
      "default": true
    },
    "quiet": {
      "type": "boolean",
      "description": "Suppress verbose build output.",
      "default": false
    },
    "docs": {
      "type": "boolean",
      "description": "Starts Storybook in documentation mode. Learn more about it : https://storybook.js.org/docs/writing-docs/build-documentation#preview-storybooks-documentation.",
      "default": false
    },
    "test": {
      "type": "boolean",
      "description": "Build the static version of the sandbox optimized for testing purposes",
      "default": false
    },
    "compodoc": {
      "type": "boolean",
      "description": "Execute compodoc before.",
      "default": true
    },
    "compodocArgs": {
      "type": "array",
      "description": "Compodoc options : https://compodoc.app/guides/options.html. Options `-p` with tsconfig path and `-d` with workspace root is always given.",
      "default": ["-e", "json"],
      "items": {
        "type": "string"
      }
    },
    "webpackStatsJson": {
      "type": ["boolean", "string"],
      "description": "Write Webpack Stats JSON to disk",
      "default": false
    },
    "statsJson": {
      "type": ["boolean", "string"],
      "description": "Write stats JSON to disk",
      "default": false
    },
    "previewUrl": {
      "type": "string",
      "description": "Disables the default storybook preview and lets you use your own"
    },
    "styles": {
      "type": "array",
      "description": "Global styles to be included in the build.",
      "items": {
        "$ref": "#/definitions/styleElement"
      }
    },
    "stylePreprocessorOptions": {
      "description": "Options to pass to style preprocessors.",
      "type": "object",
      "properties": {
        "includePaths": {
          "description": "Paths to include. Paths will be resolved to workspace root.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "assets": {
      "type": "array",
      "description": "List of static application assets.",
      "default": [],
      "items": {
        "$ref": "#/definitions/assetPattern"
      }
    },
    "sourceMap": {
      "type": ["boolean", "object"],
      "description": "Configure sourcemaps. See: https://angular.io/guide/workspace-config#source-map-configuration",
      "default": false
    },
    "experimentalZoneless": {
      "type": "boolean",
      "description": "Experimental: Use zoneless change detection."
    }
  },
  "additionalProperties": false,
  "definitions": {
    "assetPattern": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "followSymlinks": {
              "type": "boolean",
              "default": false,
              "description": "Allow glob patterns to follow symlink directories. This allows subdirectories of the symlink to be searched."
            },
            "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"
        }
      ]
    },
    "styleElement": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "input": {
              "type": "string",
              "description": "The file to include."
            },
            "bundleName": {
              "type": "string",
              "pattern": "^[\\w\\-.]*$",
              "description": "The bundle name for this extra entry point."
            },
            "inject": {
              "type": "boolean",
              "description": "If the bundle will be referenced in the HTML file.",
              "default": true
            }
          },
          "additionalProperties": false,
          "required": ["input"]
        },
        {
          "type": "string",
          "description": "The file to include."
        }
      ]
    }
  }
}
