{
    "$schema": "http://json-schema.org/schema",
    "title": "Start 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]+)?$"
        },
        "debugWebpack": {
            "type": "boolean",
            "description": "Debug the Webpack configuration",
            "default": false
        },
        "tsConfig": {
            "type": "string",
            "description": "The full path for the TypeScript configuration file, relative to the current workspace."
        },
        "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
        },
        "port": {
            "type": "number",
            "description": "Port to listen on.",
            "default": 9009
        },
        "host": {
            "type": "string",
            "description": "Host to listen on.",
            "default": "localhost"
        },
        "configDir": {
            "type": "string",
            "description": "Directory where to load Storybook configurations from.",
            "default": ".storybook"
        },
        "https": {
            "type": "boolean",
            "description": "Serve Storybook over HTTPS. Note: You must provide your own certificate information.",
            "default": false
        },
        "sslCa": {
            "type": "string",
            "description": "Provide an SSL certificate authority. (Optional with --https, required if using a self-signed certificate)."
        },
        "sslCert": {
            "type": "string",
            "description": "Provide an SSL certificate. (Required with --https)."
        },
        "sslKey": {
            "type": "string",
            "description": "SSL key to use for serving HTTPS."
        },
        "smokeTest": {
            "type": "boolean",
            "description": "Exit after successful start.",
            "default": false
        },
        "ci": {
            "type": "boolean",
            "description": "CI mode (skip interactive prompts, don't open browser).",
            "default": false
        },
        "open": {
            "type": "boolean",
            "description": "Whether to open Storybook automatically in the browser.",
            "default": true
        },
        "quiet": {
            "type": "boolean",
            "description": "Suppress verbose build output.",
            "default": false
        },
        "enableProdMode": {
            "type": "boolean",
            "description": "Disable Angular's development mode, which turns off assertions and other checks within the framework.",
            "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
        },
        "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"
            }
        },
        "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"
            }
        },
        "initialPath": {
            "type": "string",
            "description": "URL path to be appended when visiting Storybook for the first time"
        },
        "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"
        },
        "loglevel": {
            "type": "string",
            "description": "Controls level of logging during build. Can be one of: [silly, verbose, info (default), warn, error, silent].",
            "pattern": "(silly|verbose|info|warn|silent)"
        },
        "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.",
            "default": false
        }
    },
    "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."
                }
            ]
        }
    }
}
