{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$id": "https://www.spmhome.io/product/webpack-wrap/schema/latest/spmh.wpw.schema.json",
    "description": "Webpack-Wrap configuration file schema",
    "title": "WpwSchema",
    "required": [
        "builds"
    ],
    "properties":
    {
        "$schema":
        {
            "$ref": "#/definitions/SchemaUrl"
        },
        "autoConfig":
        {
            "type": "boolean"
        },
        "builds":
        {
            "type": "array",
            "items": {
                "$ref": "#/definitions/WpwBuildConfig"
            }
        },
        "crypto":
        {
            "$ref": "#/definitions/WpwCrypto"
        },
        "development":
        {
            "$ref": "#/definitions/WpwBuildEnvironmentConfig"
        },
        "library":
        {
            "$ref": "#/definitions/WpwBuildLibraryConfig"
        },
        "log":
        {
            "$ref": "#/definitions/WpwLogOptions"
        },
        "options":
        {
            "$ref": "#/definitions/WpwBuildOptions"
        },
        "paths":
        {
            "$ref": "#/definitions/WpwRcPaths"
        },
        "pkgJson":
        {
            "$ref": "#/definitions/WpwPackageJson"
        },
        "production":
        {
            "$ref": "#/definitions/WpwBuildEnvironmentConfig"
        },
        "raw": {
            "$ref": "#/definitions/WebpackConfigRaw"
        },
        "settings":
        {
            "$ref": "#/definitions/WpwGlobalSettings"
        },
        "source":
        {
            "$ref": "#/definitions/WpwSourceCodeConfig"
        },
        "target":
        {
            "$ref": "#/definitions/WpwBuildTargetConfig"
        },
        "test":
        {
            "$ref": "#/definitions/WpwBuildEnvironmentConfig"
        },
        "type": {
            "$ref": "#/definitions/WpwBuildTypeConfig"
        },
        "vpaths":
        {
            "$ref": "#/definitions/WpwRcVirtualPaths"
        }
    },
    "dependencies": {
        "builds": {
            "if": {
                "properties": {
                    "builds": true
                }
            },
            "then": {
                "properties": {
                    "builds": {
                        "items": {
                            "required": [
                                "name", "type"
                            ]
                        }
                    }
                }
            }
        }
        
    },
    "definitions":
    {
        "BooleanDefaultTrue":
        {
            "$id": "#/BooleanDefaultTrue",
            "type": "boolean",
            "default": true
        },
        "BooleanDisabled":
        {
            "$id": "#/BooleanDisabled",
            "type": "boolean",
            "default": false,
            "description": "convenience flag to disable a build or configuration w/o having to remove it entirely, useful for debugging/testing and 'saving it for later'"
        },
        "BooleanReadOnlyTrue":
        {
            "$id": "#/BooleanReadOnlyTrue",
            "type": "boolean",
            "readOnly": true,
            "default": true
        },
        "WpwCrypto":
        {
            "$id": "#/WpwCrypto",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "type"
            ],
            "properties": {
                "type": {
                    "$ref": "#/definitions/WpwCryptoType",
                    "default": "none"
                },
                "key": {
                    "$ref": "#/definitions/WpwCryptoSecret",
                    "default": "default"
                },
                "strength": {
                    "$ref": "#/definitions/WpwCryptoStrength",
                    "default": "128-bit"
                }
            },
            "dependencies": {
                "type":
                {
                    "if": {
                        "not": {
                            "properties": {
                                "type": {
                                    "const": "none"
                                }
                            }
                        }
                    },
                    "then": {
                        "allOf": [{
                            "if": {
                                "properties": {
                                    "strength": {
                                        "const": "128-bit"
                                    }
                                }
                            },
                            "then": {
                                "properties": {
                                    "key": {
                                        "oneOf": [{
                                            "maxLength": 32,
                                            "minLength": 32
                                        },
                                        {
                                            "const": "default"
                                        }]
                                    }
                                }
                            }
                        },
                        {
                            "if": {
                                "properties": {
                                    "strength": {
                                        "const": "256-bit"
                                    }
                                }
                            },
                            "then": {
                                "properties": {
                                    "key": {
                                        "oneOf": [
                                        {
                                            "maxLength": 64,
                                            "minLength": 64
                                        },
                                        {
                                            "const": "default"
                                        }]
                                    }
                                }
                            }
                        }]
                    }
                }
            }
        },
        "WpwCryptoSecret":
        {
            "$id": "#/WpwCryptoSecret",
            "type": "string",
            "pattern": "^(?:[0-9a-fA-F]{32}|[0-9a-fA-F]{64}|default)$",
            "description": "encryption key used to encrypt / decrypt all data persisted by wpw build process, note that for 256-bit encryption the key should be a hex string of length 64 and 128-bit encryption should be a hex string of length 32, set to empty string or 'default' to use an internally generated default key"
        },
        "WpwCryptoStrength":
        {
            "$id": "#/WpwCryptoStrength",
            "description": "strength of the encryption key used to encrypt / decrypt all data persisted by wpw build process",
            "oneOf": [{
                "const": "128-bit"
            },
            {
                "const": "256-bit"
            }]
        },
        "WpwCryptoType":
        {
            "$id": "#/WpwCryptoType",
            "description": "the base encryption algorithm used to encrypt / decrypt all data persisted by wpw build process",
            "oneOf": [{
                "const": "aes"
            },
            {
                "const": "none"
            }]
        },
        "DirectoryPath":
        {
            "$id": "#/DirectoryPath",
            "type": "string",
            "maxLength": 160,
            "description": "relative or absolute path to a directory",
            "pattern": "^(?:\\.{1,2}|(?:\\.{0,2}[\\\\/])*?\\.?[a-zA-Z0-9_\\$][~@!:\\$\\{\\}\\*a-zA-Z0-9_\\.\\-\\\\/: ]+|(?:\\.\\.?[\\\\/]?)+)$",
            "if": {
                "pattern": "^\\.+$"
            },
            "then": {
                "minLength": 1
            },
            "else": {
                "minLength": 3
            }
        },
        "DirectoryPathRelative":
        {
            "$id": "#/DirectoryPathRelative",
            "type": "string",
            "maxLength": 128,
            "description": "relative path to a directory",
            "pattern": "^(?:#\\{[a-zA-Z0-9__\\-\\.]+?\\}[\\$\\{\\}a-zA-Z0-9_\\.\\-\\\\/ ]*?|(?:(?:\\.{0,2}[\\\\/])*?\\.?[\\$\\{\\}a-zA-Z0-9_\\.\\-\\\\/ ]+|(?:\\.\\.?[\\\\/]?)+))$",
            "if": {
                "pattern": "^\\.$"
            },
            "then": {
                "minLength": 1
            },
            "else": {
                "minLength": 3
            }
        },
        "DirectoryPathRelativeFwdSlash":
        {
            "$id": "#/DirectoryPathRelativeFwdSlash",
            "type": "string",
            "maxLength": 128,
            "pattern": "^(?:#\\{[a-zA-Z0-9_\\-\\.]+?\\}[\\$\\{\\}a-zA-Z0-9_\\.\\-/ ]*?|(?:(?:\\.{0,2}/)*?\\.?[\\$\\{\\}a-zA-Z0-9_\\.\\-/ ]+|(?:\\.\\.?/?)+))$"
        },
        "DirectoryPathDelimited":
        {
            "$id": "#/DirectoryPathDelimited",
            "type": "string",
            "maxLength": 1024,
            "description": "relative or absolute path(s) to a directory or directores delimited by ',' or ';' or '|'",
            "pattern": "^(?:\\.{1,2}|(?:\\.{0,2}[\\\\/])*?[a-zA-Z0-9_\\$][~@!:\\$\\{\\}\\*a-zA-Z0-9_\\.\\-\\\\/: ]+[\\|,;])(?:\\.{1,2}|(?:\\.[\\\\/])?[a-zA-Z0-9_\\$][\\$\\{\\}~@!:\\*a-zA-Z0-9_\\.\\-\\\\/: ]+[\\|,;]?)$"
        },
        "DirectoryPathDelimitedRelative":
        {
            "$id": "#/DirectoryPathDelimitedRelative",
            "type": "string",
            "maxLength": 256,
            "description": "relative path(s) to a directory or directores delimited by ',' or ';' or '|'",
            "pattern": "^(?:#\\{[a-zA-Z0-9__\\-\\.]+?\\}[a-zA-Z0-9_\\.\\-\\\\/]*?|(?:\\.{0,2}[\\\\/])+?[a-zA-Z0-9_\\.\\-\\\\/ ]+|\\.\\.?)[\\|,;])(?:#\\{[a-zA-Z0-9_\\-\\. ]+?\\}[a-zA-Z0-9_\\.\\-\\\\/ ]*?|(?:(?:\\.{0,2}[\\\\/])+?[\\w\\.\\-\\\\/ ]+|\\.\\.?)[\\|,;]?)$"
        },
        "DirectoryPathRegex":
        {
            "$id": "#/DirectoryPathRegex",
            "type": "string",
            "description": "directory type regex matching path",
            "pattern": "^(?:\\.[\\\\/])?[\\w,~@!:*.\\-^|[\\]{}()<>+?\\\\/$ ]+$"
        },
        "DirectoryPaths":
        {
            "$id": "#/DirectoryPaths",
            "type": "array",
            "maxItems": 25,
            "description": "relative or absolute paths to a directory or multiple directories delimited by ',' or ';' or '|'",
            "items": {
                "$ref": "#/definitions/DirectoryPath"
            }
        },
        "EmailAddress":
        {
            "$id": "#/EmailAddress",
            "type": "string",
            "pattern": "^.+?@.+?\\.[a-z0-9A-Z\\-]+$"
        },
        "DirectoryPathsRelative":
        {
            "$id": "#/DirectoryPathsRelative",
            "type": "array",
            "maxItems": 25,
            "description": "relative paths to a directory or multiple directories delimited by ',' or ';' or '|'",
            "items": {
                "$ref": "#/definitions/DirectoryPathRelative"
            }
        },
        "FileName":
        {
            "$id": "#/FileName",
            "type": "string",
            "minLength": 3,
            "maxLength": 64,
            "pattern": "^[\\w\\.\\-]+\\.(?:[cm]?jsx?|tsx?|d\\.ts|[a-z0-9]{2,4})$",
            "description": "a valid filename, without path, e.g 'main.js', 'app.tsx', etc"
        },
        "FileOrDirectoryPath":
        {
            "$id": "#/FileOrDirectoryPath",
            "anyOf": [{
                "$ref": "#/definitions/DirectoryPath"
            },
            {
                "$ref": "#/definitions/FilePath"
            }]
        },
        "FileOrDirectoryPaths":
        {
            "$id": "#/FileOrDirectoryPaths",
            "anyOf": [{
                "$ref": "#/definitions/FileOrDirectoryPath"
            },{
                "type": "array",
                "items": {
                    "$ref": "#/definitions/FileOrDirectoryPath"
                }
            }]
        },
        "FileOrDirectoryPathRegex":
        {
            "$id": "#/FileOrDirectoryPathRegex",
            "anyOf": [{
                "$ref": "#/definitions/DirectoryPathRegex"
            },
            {
                "$ref": "#/definitions/FilePathRegex"
            }]
        },
        "FilePath":
        {
            "$id": "#/FilePath",
            "anyOf": [{
                "$ref": "#/definitions/FilePathAbsolute"
            },{
                "$ref": "#/definitions/FilePathRelative"
            }]
        },
        "FilePathAbsolute":
        {
            "$id": "#/FilePathAbsolute",
            "type": "string",
            "minLength": 5,
            "maxLength": 192,
            "description": "absolute path to a file",
            "pattern": "^(?:[a-z]:[\\\\/]|\\/)[\\$\\{\\}~@!:\\*\\w\\.\\-\\\\/ ]+\\.[a-z0-9\\._-]{1,16}$"
        },
        "FilePathHtml":
        {
            "$id": "#/FilePathHtml",
            "type": "string",
            "minLength": 5,
            "maxLength": 160,
            "description": "relative or absolute path to an html file",
            "pattern": "^(?:(?:\\.{0,2}[\\\\/])*?[~@!:\\$\\{\\}\\w\\.\\-\\\\/]+)?\\.html?$"
        },
        "FilePathJs":
        {
            "$id": "#/FilePathJs",
            "type": "string",
            "minLength": 5,
            "maxLength": 160,
            "description": "relative or absolute path to a javascript or typescript file",
            "allOf": [{
                "pattern": "^.+\\.[mc]?[jt]sx?$",
                "anyOf": [{
                    "$ref": "#/definitions/FilePathAbsolute"
                },{
                    "$ref": "#/definitions/FilePathRelative"
                }]
            }]
        },
        "FilePathJson":
        {
            "$id": "#/FilePathJson",
            "type": "string",
            "minLength": 5,
            "maxLength": 160,
            "description": "relative or absolute path to a json file",
            "pattern": "^(?:(?:\\.{0,2}[\\\\/])*?[~@!:\\$\\{\\}\\w\\.\\-\\\\/ ]+)?\\.jsonc?$"
        },
        "FilePathOutput":
        {
            "$id": "#/FilePathOutput",
            "type": "string",
            "minLength": 5,
            "maxLength": 160,
            "description": "relative or absolute path to a json file",
            "pattern": "^(?:\\w[~@!:\\$\\{\\}\\w\\.\\-\\\\/ ]+)?\\.[a-zA-Z0-9_]{2,6}$"
        },
        "FilePathRelativeLeadingDot":
        {
            "$id": "#/FilePathRelativeLeadingDot",
            "type": "string",
            "minLength": 6,
            "maxLength": 160,
            "description": "relative path to a file, with leading ./ or .\\",
            "pattern": "^(?:\\.{0,2}[\\\\/])+?[\\$\\{\\}\\w\\.\\-\\\\/ ]+?\\.\\w+$"
        },
        "FilePathRegex":
        {
            "$id": "#/FilePathRegex",
            "type": "string",
            "minLength": 2,
            "description": "file type regex matching path",
            "pattern": "^(?:(?:\\.{0,2}[\\\\/])*?[\\w,~@!:*.\\-^|[\\]{}()<>+?\\\\/$ ]+)?\\.[a-z0-9\\._-]+$"
        },
        "FilePathRelative":
        {
            "$id": "#/FilePathRelative",
            "type": "string",
            "minLength": 5,
            "maxLength": 160,
            "description": "relative path to a file",
            "pattern": "^(?:\\.{0,2}[\\\\/])?[^@][\\$\\{\\}~@!:\\*\\w\\.\\-\\\\/ ]+\\.[a-z0-9\\._-]{1,16}$"
        },
        "ModuleImportExportPath":
        {
            "$id": "#/ModuleImportExportPath",
            "type": "string",
            "minLength": 2,
            "maxLength": 64,
            "description": "relative or absolute path to an html file",
            "pattern": "^[a-z][a-z0-9.-/]+$"
        },
        "PathGlob":
        {
            "$id": "#/PathGlob",
            "type": "string",
            "minLength": 1,
            "maxLength": 50,
            "description": "standard glob pattern",
            "pattern": "^(?:(?:[\\w,\\{\\}]+|\\*{1,2}\\.?\\/)[~@!\\w\\$\\{\\}\\-\\/\\.\\*, ]+|\\*)$"
        },
        "PathRegex":
        {
            "$id": "#/PathRegex",
            "type": "string",
            "description": "directory type regex matching path",
            "pattern": "^[\\w,~@!:*.\\-^|[\\]{}()<>+?\\\\/$ ]+$"
        },
        "SchemaUrl":
        {
            "$id": "#/SchemaUrl",
            "type": "string",
            "pattern": "^.+?\\/(?:[a-z0-9_\\-]+\\.)+(?:schema\\.json|schemastore\\.org\\/[\\w-]+)$"
        },
        "StringArray": {
            "$id": "#/StringArray",
            "type": "array",
            "uniqueItems": true,
            "items": {
                "type": "string"
            }
        },
        "UrlString":
        {
            "$id": "#/UrlString",
            "type": "string",
            "minLength": 8,
            "maxLength": 160,
            "pattern": "^https?:\\/\\/.+\\..+?$"
        },
        "ValueNameString":
        {
            "$id": "#/ValueNameString",
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "pattern": "^(?:[\\$#][\\[\\{])?[-.@\\w\\/ ]+[\\}\\]]?$"
        },
        "ValueNameStringOrEmpty":
        {
            "$id": "#/ValueNameStringOrEmpty",
            "type": "string",
            "maxLength": 64,
            "pattern": "^(?:|(?:[\\$#][\\[\\{])?[-._@\\w\\/ ]+[\\}\\]]?)$"
        },
        "ValueSlugString":
        {
            "$id": "#/ValueSlugString",
            "type": "string",
            "minLength": 2,
            "maxLength": 32,
            "pattern": "^(?:[\\$#][\\[\\{])?[a-z0-9-._]{2,}[\\}\\]]?$"
        },
        "ValueScopedSlugString":
        {
            "$id": "#/ValueScopedSlugString",
            "type": "string",
            "minLength": 3,
            "maxLength": 32,
            "pattern": "^(?:@[-.\\w]+\\/)?(?:[\\$#][\\[\\{])?[a-z0-9-._]{3,}[\\}\\]]?$"
        },
        "ValueSlugReadOnlyString":
        {
            "$id": "#/ValueSlugReadOnlyString",
            "type": "string",
            "readOnly": true,
            "minLength": 3,
            "maxLength": 0
        },
        "ValuePropertyReadOnlyString": 
        {
            "$id": "#/ValuePropertyReadOnlyString",
            "type": "string",
            "readOnly": true,
            "maxLength": 0
        },
        "VersionString":
        {
            "$id": "#/VersionString",
            "type": "string",
            "readOnly": true,
            "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+(?:-(?:pre|alpha|beta)\\.[0-9]+)?$"
        },
        "VersionStringNpm":
        {
            "$id": "#/VersionStringNpm",
            "type": "string",
            "readOnly": true,
            "pattern": "(?:\\^|~)?(?:\\*|[0-9]+\\.[0-9]+\\.[0-9]+(?:-(?:pre|alpha|beta)\\.[0-9]+)?)"
        },
        "WpwBuildConfig":
        {
            "$id": "#/WpwBuildConfig",
            "type": "object",
            "minProperties": 2,
            "additionalProperties": false,
            "required": [
                "name"
            ],
            "properties": {
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "autoConfig": {
                    "type": "boolean"
                },
                "crypto": {
                    "$ref": "#/definitions/WpwCrypto"
                },
                "db": {
                    "$ref": "#/definitions/WpwServerDatabase"
                },
                "debug": {
                    "type": "boolean",
                    "description": "create both a 'release' and a 'debug' build, where the release build is stripped of all logging"
                },
                "entry": {
                    "$ref": "#/definitions/WpwWebpackEntry"
                },
                "loader": {
                    "$ref": "#/definitions/WpwWebpackLoaderType"
                },
                "library": {
                    "$ref": "#/definitions/WebpackLibrary",
                    "description": "shortcut alias of webpack configuration export option `output.libraryTarget`"
                },
                "log": {
                    "$ref": "#/definitions/WpwLogOptions"
                },
                "main": {
                    "type": "boolean",
                    "description": "in most cases the `main` build (usually the one that would configures one of the `iso release` options) in a multi-build / multi-target project can ve determined automatically, in cases where it cannot, this flag can be set to force this build config to be thr `main` build"
                },
                "mode": {
                    "$ref": "#/definitions/WpwWebpackMode"
                },
                "name": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 32
                },
                "options": {
                    "$ref": "#/definitions/WpwBuildOptions"
                },
                "paths": {
                    "$ref": "#/definitions/WpwRcPaths"
                },
                "raw": {
                    "$ref": "#/definitions/WebpackConfigRaw"
                },
                "resources": {
                     "$ref": "#/definitions/WpwStaticResources"
                },
                "source": {
                    "$ref": "#/definitions/WpwSourceCodeConfig"
                },
                "target": {
                    "$ref": "#/definitions/WebpackTargetType"
                },
                "tsloader": {
                    "$ref": "#/definitions/WpwWebpackLoaderTsConfig"
                },
                "type": {
                    "$ref": "#/definitions/WpwBuildType"
                },
                "vpaths": {
                    "$ref": "#/definitions/WpwRcVirtualPaths"
                }
            },
            "examples": [
            {
                "name": "ex_app",
                "type": "app",
                "log": {
                    "color": "mediumpurple"
                }
            },
            {
                "name": "ex_app",
                "type": "app",
                "target": "node",
                "library": "commonjs2",
                "log": {
                    "color": "rebeccapurple"
                },
                "options": {
                    "analyze": {
                        "circular": {
                            "enabled": true
                        },
                        "hooks": {
                            "enabled": true
                        },
                        "stats": {
                            "enabled": true
                        }
                    },
                    "banner": {
                        "text": "Copyright {DATE_STAMP_YEAR} {AUTHOR}, {COMPANY}, All rights reserved"
                    },
                    "resources": [{
                        "source": {
                            "input": [
                                "script/public/examples"
                            ],
                            "output": [
                                "examples"
                            ]
                        },
                        "resource": {
                            "input": [
                                "resources/readme/img", "resources/img"
                            ],
                            "output": [
                                "resources/img"
                            ]
                        }
                    }],
                    "shebang": {
                        "enabled": true
                    },
                    "wait": {
                        "enabled": true,
                        "timeout": 30000,
                        "items": [{
                            "mode": "event",
                            "name": "schema"
                        },
                        {
                            "mode": "event",
                            "name": "types"
                        }]
                    }
                }
            },
            {
                "name": "ex_lib_browser_1-of-5",
                "type": "lib",
                "target": [ "web", "es2015" ],
                "library": "modern-module",
                "log": {
                    "color": "spmhblue"
                },
                "options": {
                    "banner": {
                        "text": "Copyright {DATE_STAMP_YEAR} {AUTHOR}, {COMPANY}, All rights reserved"
                    },
                    "externals": {
                        "enabled": true,
                        "all": false,
                        "type": "module",
                        "ignored": [ "some-temp-npmpackage" ]
                    },
                    "output": {
                        "enabled": true,
                        "ext": ".mjs",
                        "name": "ex_lib",
                        "library": "modern-module"
                    },
                    "wait": {
                        "enabled": true,
                        "timeout": 20000,
                        "items": [{
                            "mode": "event",
                            "name": "types"
                        }]
                    }
                }
            },
            {
                "name": "ex_lib",
                "type": "lib",
                "target": "webworker",
                "library": "module",
                "log": {
                    "color": "mediumpurple"
                },
                "options": {
                    "banner": {
                        "text": "Copyright {DATE_STAMP_YEAR} {AUTHOR}, {COMPANY}, All rights reserved"
                    },
                    "wait": {
                        "enabled": true,
                        "timeout": 20000,
                        "items": [{
                            "mode": "event",
                            "name": "types"
                        }]
                    }
                }
            },
            {
                "name": "types",
                "type": "types",
                "log": {
                    "color": "spmh_blue"
                },
                "options": {
                    "types": {
                        "mode": "plugin",
                        "method": "tsc",
                        "bundle": {
                            "bundler": "spmh",
                            "mode": "directoryRecurse"
                        }
                    },
                    "tscheck": {
                        "enabled": true,
                        "javascript": {
                            "enabled": true,
                            "mode": "project"
                        }
                    },
                    "wait": {
                        "enabled": true,
                        "timeout": 40000,
                        "items": [{
                            "mode": "event",
                            "name": "schema"
                        }]
                    }
                }
            },
            {
                "name": "docs",
                "type": "doc",
                "log": {
                    "color": "hotpink"
                },
                "options": {
                    "doc": {
                        "output": "doc/api",
                        "jsdoc": {
                            "title": "Project Documentation"
                        }
                    }
                }
            },
            {
                "name": "schema",
                "type": "schema",
                "log": {
                    "color": "hotpink"
                },
                "options": {
                    "schema": {
                        "enabled": true,
                        "validate": true,
                        "jsonPath": "schema",
                        "scripts": {
                            "items": [{
                                "command": "node script/generate-rc-types.js",
                                "args": [ "--build", "--quiet" ],
                                "paths": { "output": [ "types/rc.ts", "types/constants.js", "types/common.js" ] }
                            }]
                        },
                        "upload": {
                            "protocol": "pscp",
                            "host": "${ENV_VAR_SSH_UPLOAD_HOST}",
                            "path": "/var/web/my-www-site/my-app/schema",
                            "credential": { "key": "${ENV_VAR_SSH_UPLOAD_AUTH}", "user": "${ENV_VAR_SSH_UPLOAD_USER}" }
                        }
                    }
                }
            }],
            "dependencies": {
                "debug": {
                    "if": {
                        "properties": {
                            "debug": {
                                "const": true
                            }
                        }
                    },
                    "then": {
                        "allOf": [
                        {
                            "properties": {
                                "type": {
                                    "const": "app"
                                }
                            }
                        },
                        {
                            "properties": {
                                "options": {
                                    "properties": {
                                        "devtool": {
                                            "not": {
                                                "enabled": {
                                                    "const": false
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }]
                    }
                },
                "target": {
                    "if": {
                        "properties": {
                            "target": {
                                "not": {
                                    "const": "web"
                                }
                            }
                        }
                    },
                    "then": {
                        "properties": {
                            "options": {
                                "allOf":[{
                                    "properties": {
                                        "polyfill": {
                                            "description": "target must be `web` when polyfill plugin is enabled"
                                        }
                                    }
                                }, {
                                    "anyOf": [{
                                    "properties": {
                                        "polyfill": false
                                    }
                                    },{
                                        "properties": {
                                            "polyfill": {
                                                "properties": {
                                                    "enabled": {
                                                        "const": false
                                                    }
                                                }
                                            }
                                        }
                                    }]
                                }]
                            }
                        }
                    }
                },
                "type": {
                    "allOf": [
                    {
                        "if": {
                            "properties": {
                                "type": { 
                                    "const": "web"
                                }
                            }
                        },
                        "then": { 
                            "required": [
                                "options"
                            ],
                            "properties": {
                                "target": { 
                                    "description": "must be a web-like target for 'webapp' build type",
                                    "oneOf": [ false, {
                                        "const": "web"
                                    },{
                                        "const": "webworker"
                                    },{
                                        "const": "browserlist"
                                    },{
                                        "const": "browserlist:modern"
                                    }, {
                                        "type": "string",
                                        "pattern": "^es(?:next|[5-6]|20[1-2][0-9])?$"
                                    }]
                                },
                                "options": {
                                    "required": [
                                        "web"
                                    ]
                                }
                            }
                        }
                    },
                    {
                        "if": {
                            "properties": {
                                "type": { 
                                    "const": "types"
                                }
                            }
                        },
                        "then": { 
                            "required": [
                                "options"
                            ],
                            "properties": {
                                "options": {
                                    "required": [
                                        "types"
                                    ]
                                }
                            }
                        }
                    },
                    {
                        "if": {
                            "properties": {
                                "type": { 
                                    "const": "svr"
                                }
                            }
                        },
                        "then": { 
                            "required": [
                                "db"
                            ]
                        }
                    },
                    {
                        "if": {
                            "properties": {
                                "type": { 
                                    "const": "doc"
                                }
                            }
                        },
                        "then": {
                            "required": [
                                "options"
                            ],
                            "properties": {
                                "options": {
                                    "required": [
                                        "doc"
                                    ]
                                }
                            }
                        }
                    },
                    {
                        "if": {
                            "properties": {
                                "type": { 
                                    "const": "resource"
                                }
                            }
                        },
                        "then": {
                            "required": [
                                "options"
                            ],
                            "properties": {
                                "options": {
                                    "required": [
                                        "resource"
                                    ]
                                }
                            }
                        }
                    },
                    {
                        "if": {
                            "properties": {
                                "type": { 
                                    "const": "schema"
                                }
                            }
                        },
                        "then": {
                            "required": [
                                "options"
                            ],
                            "properties": {
                                "options": {
                                    "required": [
                                        "schema"
                                    ]
                                }
                            }
                        }
                    },
                    {
                        "if": {
                            "properties": {
                                "type": { 
                                    "const": "script"
                                }
                            }
                        },
                        "then": {
                            "required": [
                                "options"
                            ],
                            "properties": {
                                "options": {
                                    "required": [
                                        "script"
                                    ]
                                }
                            }
                        }
                    }]
                },
                "options": {
                    "allOf": [{
                        "properties": {
                            "options": {
                                "propertyNames": {
                                    "enum": [
                                        "analyze", "banner", "cache", "clean", "copy", "ctxmod", "devtool", "dispose",
                                        "doc", "encoder", "entry", "experiments", "externals", "hash", "infoproj", "ignore",
                                        "istanbul", "optimization", "licensefiles", "mocha", "module", "npmiso", "output",
                                        "performance", "polyfill", "provide", "publish", "pwa", "resolve", "rollup", "rules",
                                        "runscripts", "scm", "schema", "script", "shebang", "resource", "server", "testsuite",
                                        "tscheck", "types", "typesiso", "upload", "vsceiso", "wait", "web"
                                    ]
                                }
                            }
                        }
                    },{
                        "if": {
                            "properties": {
                                "options": {
                                    "allOf": [{
                                        "required": [
                                            "polyfill"
                                        ]
                                    },{
                                        "properties": {
                                            "polyfill": {
                                                "properties": {
                                                    "enabled": {
                                                        "const": true
                                                    }
                                                }
                                            }
                                        }
                                    }]
                                }
                            }
                        },
                        "then": {
                            "properties": {
                                "target": { 
                                    "description": "polyfill plugin available for `web` target only",
                                    "const": "web"
                                }
                            }
                        }
                    }]
                }
            }
        },
        "WpwBuildBaseConfig":
        {
            "$id": "#/WpwBuildBaseConfig",
            "type": "object",
            "properties": {
                "crypto": {
                    "$ref": "#/definitions/WpwCrypto"
                },
                "log": {
                    "$ref": "#/definitions/WpwLogOptions"
                },
                "options": {
                    "$ref": "#/definitions/WpwBuildOptions"
                },
                "paths": {
                    "$ref": "#/definitions/WpwRcPaths"
                },
                "source": {
                    "$ref": "#/definitions/WpwSourceCodeConfig"
                },
                "vpaths": {
                    "$ref": "#/definitions/WpwRcVirtualPaths"
                }
            }
        },
        "WpwBuildEnvironmentConfig":
        {
            "$id": "#/WpwBuildEnvironmentConfig",
            "allOf": [
            {
                "type": "object",
                "additionalItems": false,
                "properties": {
                    "builds": {
                        "type": "array",
                        "items": {
                            "$ref": "#/definitions/WpwBuildConfig"
                        }
                    },
                    "library": {
                        "$ref": "#/definitions/WpwBuildLibraryConfig"
                    },
                    "target": {
                        "$ref": "#/definitions/WpwBuildTargetConfig"
                    },
                    "type": {
                        "$ref": "#/definitions/WpwBuildTypeConfig"
                    }
                },
                "dependencies": {
                    "builds": {
                        "if": {
                            "properties": {
                                "builds": true
                            }
                        },
                        "then": {
                            "properties": {
                                "builds": {
                                    "items": {
                                        "required": [
                                            "name"
                                        ]
                                    }
                                }
                            }
                        }
                    }
                }
            },
            {
                "$ref": "#/definitions/WpwBuildBaseConfig"
            }]
        },
        "WpwBuildPropertyConfig":
        {
            "$id": "#/WpwBuildPropertyConfig",
            "type": "object",
            "additionalItems": false,
            "properties": {
                "library": {
                    "$ref": "#/definitions/WpwBuildLibraryConfig"
                },
                "target": {
                    "$ref": "#/definitions/WpwBuildTargetConfig"
                },
                "type": {
                    "$ref": "#/definitions/WpwBuildTypeConfig"
                }
            }
        },
        "WpwBuildLibraryConfig": 
        {
            "$id": "#/WpwBuildLibraryConfig",
            "type": "object",
            "additionalItems": false,
            "default": {},
            "properties":
            {
                "amd": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "amd-require": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "assign": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "commonjs": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "commonjs2": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "commonjs-static": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "commonjs-module": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "global": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "jsonp": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "module": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "modern-module": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "self": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "system": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "this": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "umd": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "umd2": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "var": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "window": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                }
            }
        },
        "WpwBuildOptions":
        {
            "$id": "#/WpwBuildOptions",
            "allOf": [{
                "$ref": "#/definitions/WpwBuildOptionsPlugin"
            },{
                "$ref": "#/definitions/WpwBuildOptionsGroup"
            },{
                "$ref": "#/definitions/WpwBuildOptionsExport"
            }]
        },
        "WpwBuildOptionsExport":
        {
            "$id": "#/WpwBuildOptionsExport",
            "type": "object",
            "properties": {
                "devtool": {
                    "$ref": "#/definitions/WpwExportConfigDevTool"
                },
                "entry": {
                    "$ref": "#/definitions/WpwExportConfigEntry"
                },
                "experiments": {
                    "$ref": "#/definitions/WpwExportConfigExperiments"
                },
                "externals": {
                    "$ref": "#/definitions/WpwExportConfigExternals"
                },
                "ignore": {
                    "$ref": "#/definitions/WpwExportConfigIgnore"
                },
                "module": {
                    "$ref": "#/definitions/WpwExportConfigModule"
                },
                "optimization": {
                    "$ref": "#/definitions/WpwExportConfigOptimization"
                },
                "performance": {
                    "$ref": "#/definitions/WpwExportConfigPerformance"
                },
                "output": {
                    "$ref": "#/definitions/WpwExportConfigOutput"
                },
                "resolve": {
                    "$ref": "#/definitions/WpwExportConfigResolve"
                },
                "rules": {
                    "$ref": "#/definitions/WpwExportConfigRules"
                },
                "watch": {
                    "$ref": "#/definitions/WpwExportConfigBase"
                }
            }
        },
        "WpwBuildOptionsPlugin":
        {
            "$id": "#/WpwBuildOptionsPlugin",
            "properties": {
                "ap": {
                    "readOnly": true,
                    "$ref": "#/definitions/WpwPluginConfigAppPublisher"
                },
                "banner": {
                    "$ref": "#/definitions/WpwPluginConfigBanner"
                },
                "cache": {
                    "$ref": "#/definitions/WpwExportConfigCache"
                },
                "clean": {
                    "$ref": "#/definitions/WpwPluginConfigBase"
                },
                "copy": {
                    "$ref": "#/definitions/WpwPluginConfigCopy"
                },
                "ctxmod": {
                    "$ref": "#/definitions/WpwPluginConfigCtxMod"
                },
                "dispose": {
                    "$ref": "#/definitions/WpwPluginConfigBaseReadOnly"
                },
                "encoder": {
                    "readOnly": true,
                    "$ref": "#/definitions/WpwPluginConfigEncoder"
                },
                "hash": {
                    "$ref": "#/definitions/WpwPluginConfigHash"
                },
                "infoproj": {
                    "$ref": "#/definitions/WpwPluginConfigInfoProject"
                },
                "istanbul": {
                    "readOnly": true,
                    "$ref": "#/definitions/WpwPluginConfigIstanbul"
                },
                "licensefiles": {
                    "$ref": "#/definitions/WpwPluginConfigBase"
                },
                "mocha": {
                    "readOnly": true,
                    "$ref": "#/definitions/WpwPluginConfigMocha"
                },
                "npmiso": {
                    "$ref": "#/definitions/WpwPluginConfigIsoRelease"
                },
                "polyfill": {
                    "$ref": "#/definitions/WpwPluginConfigPolyfill"
                },
                "provide": {
                    "$ref": "#/definitions/WpwPluginConfigProvide"
                },
                "pwa": {
                    "readOnly": true,
                    "$ref": "#/definitions/WpwPluginConfigPwa"
                },
                "resource": {
                    "$ref": "#/definitions/WpwPluginConfigResource"
                },
                "rollup": {
                    "readOnly": true,
                    "$ref": "#/definitions/WpwPluginConfigRollup"
                },
                "scm": {
                    "readOnly": true,
                    "$ref": "#/definitions/WpwPluginConfigBase"
                },
                "schema": {
                    "$ref": "#/definitions/WpwPluginConfigSchema"
                },
                "script": {
                    "$ref": "#/definitions/WpwPluginConfigScript"
                },
                "shebang": {
                    "$ref": "#/definitions/WpwPluginConfigShebang"
                },
                "testsuite": {
                    "$ref": "#/definitions/WpwPluginConfigBase"
                },
                "tscheck": {
                    "$ref": "#/definitions/WpwPluginConfigTsCheck"
                },
                "types": {
                    "$ref": "#/definitions/WpwPluginConfigTypes"
                },
                "typesiso": {
                    "readOnly": true,
                    "$ref": "#/definitions/WpwPluginConfigIsoRelease"
                },
                "upload": {
                    "$ref": "#/definitions/WpwPluginConfigUpload"
                },
                "vsceiso": {
                    "$ref": "#/definitions/WpwPluginConfigIsoRelease"
                },
                "wait": {
                    "$ref": "#/definitions/WpwPluginConfigWait"
                },
                "web": {
                    "$ref": "#/definitions/WpwPluginConfigWeb"
                }
            }
        },
        "WpwBuildOptionsGroup":
        {
            "$id": "#/WpwBuildOptionsGroup",
            "type": "object",
            "properties": {
                "analyze": {
                    "$ref": "#/definitions/WpwPluginConfigGroupAnalyze"
                },
                "doc": {
                    "$ref": "#/definitions/WpwPluginConfigGroupDoc"
                },
                "release": {
                    "$ref": "#/definitions/WpwPluginConfigGroupRelease"
                }
            }
        },
        "WpwBuildType":
        {
            "$id": "#/WpwBuildType",
            "enum": [
                "app", "doc", "lib", "resource", "schema", "script", "server", "tests", "types", "webapp"
            ]
        },
        "WpwBuildTargetConfig":
        {
            "$id": "#/WpwBuildTargetConfig",
            "type": "object",
            "default": {},
            "additionalItems": false,
            "properties": {
                "async-node": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "electron": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "electron-main": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "electron-preload": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "electron-renderer": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "browserlist": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "browserlist:modern": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "es5": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "es6": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "es2015": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "es2016": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "es2017": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "es2018": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "es2019": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "es2020": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "es2021": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "es2022": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "es2023": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "es2024": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "esnext": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "node": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "node-webkit": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "nwjs": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "web": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "webworker": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                }
            }
        },
        "WpwBuildTypeConfig":
        {
            "$id": "#/WpwBuildTypeConfig",
            "type": "object",
            "default": {},
            "additionalItems": false,
            "properties": {
                "app": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "doc": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "lib": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "resource": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "schema": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "script": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "server": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "tests": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "types": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig"
                },
                "webapp": {
                    "$ref": "#/definitions/WpwBuildPropertyConfig",
                    "description": "todo: remove and replace with 'app' type with browserlist/web target platform configuration"
                }
            }
        },
        "WpwGlobalSettings":
        {
            "$id": "#/WpwGlobalSettings",
            "type": "object",
            "additionalProperties": false,
            "properties":
            {
                "cacheDir": {
                    "$ref": "#/definitions/DirectoryPath"
                },
                "external": {
                    "$ref": "#/definitions/WpwExportConfigExternalsModules",
                    "description": "Array of module name patterns that must be external i.e. never ever bundled"
                },
                "project": {
                    "$ref": "#/definitions/WpwProject"
                },
                "tsc": {
                    "$ref": "#/definitions/WpwConfigTypescriptCompiler"
                }
            },
            "examples": [{
                "cacheDir": "node_modules/.cache",
                "project": {
                    "name": "app-name",
                    "group": "utils",
                    "scope": "@spmhome",
                    "slug": "url-friendly-app-name"
                },
                "tsc": {
                    "npx": false,
                    "timeout": 30000
                }
            },
            {
                "cacheDir": "node_modules/.cache",
                "project": {
                    "name": "app-name",
                    "group": "utils",
                    "scope": "@spmhome",
                    "slug": "url-friendly-app-name"
                },
                "tsc": {
                    "npx": false,
                    "timeout": 30000
                },
                "external": [
                    "^append-transform$", "^caniuse.*$", "^chokidar$", "^esbuild$",
                    "^eslint$", "^(?:fs|)events$", "^glob(?:by|)$", "^karma$", "^.+-loader$", "^mini-css",
                    "^node-windows$", "^nyc$", "^rollup.*$", "^sass$", "^schema-utils$", "^ts-node",
                    "^typescript$", "^vscode$", "(?:^|-|\\/)webpack(?:$|\\/|-)"
                ]
            }]
        },
        "WpwConfigTypescriptCompiler":
        {
            "$id": "#/WpwConfigTypescriptCompiler",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "npx": {
                    "type": "boolean",
                    "description": "use `npx` to execute tsc (typescript compiler)"
                },
                "timeout": {
                    "$ref": "#/definitions/WpwPluginConfigTimeout"
                }
            },
            "examples": [{
                "npx": false,
                "timeout": 30000
            },
            {
                "npx": true,
                "timeout": 30000
            }]
        },
        "WpwConfigApiEndpoint":
        {
            "$id": "#/WpwConfigApiEndpoint",
            "type": "object",
            "minProperties": 1,
            "additionalProperties": false,
            "required": [
                "host"
            ],
            "properties": {
                "credential": {
                    "$ref": "#/definitions/WpwConfigApiCredential"
                },
                "host": {
                    "$ref": "#/definitions/WpwConfigApiRemoteHostName"
                },
                "method": {
                    "$ref": "#/definitions/WpwConfigApiRequestMethod"
                },
                "path": {
                    "$ref": "#/definitions/WpwConfigApiRemoteHostPath"
                },
                "port": {
                    "type": "number",
                    "minimum": 21,
                    "maximum": 99999
                },
                "protocol": {
                    "$ref": "#/definitions/WpwConfigApiEndpointProtocol"
                }
            },
            "dependencies": {
                "protocol": {
                    "if": {
                        "properties": {
                            "protocol": {
                                "oneOf": [{
                                    "const": "pscp"
                                }, {
                                    "const": "ftp"
                                }, {
                                    "const": "ftps"
                                }, {
                                    "const": "scp"
                                }, {
                                    "const": "ssh"
                                }]
                            }
                        }
                    },
                    "then": {
                        "oneOf": [{
                            "required": [ "method" ],
                            "properties": {
                                "method": {
                                    "const": "program"
                                }
                            }
                        },
                        {
                            "properties": {
                                "method": false
                            }
                        }]
                    },
                    "else": {
                        "not": {
                            "required": [ "method" ],
                            "properties": {
                                "method": {
                                    "const": "program"
                                }
                            }
                        }
                    }
                }
            }
        },
        "WpwConfigApiEndpointProtocol":
        {
            "$id": "#/WpwConfigApiEndpointProtocol",
            "oneOf": [
            {
                "const": "curl"
            },
            {
                "const": "ftp"
            },
            {
                "const": "ftps"
            },
            {
                "const": "http"
            },
            {
                "const": "https"
            },
            {
                "const": "ps"
            },
            {
                "const": "pscp"
            },
            {
                "const": "scp"
            },
            {
                "const": "ssh"
            },
            {
                "const": "sftp"
            },
            {
                "const": "vsftp"
            },
            {
                "const": "ws"
            },
            {
                "const": "wss"
            }]
        },
        "WpwConfigApiRequestMethod":
        {
            "$id": "#/WpwConfigApiRequestMethod",
            "oneOf": [
            {
                "const": "get"
            },
            {
                "const": "post"
            },
            {
                "const": "put"
            },
            {
                "const": "patch"
            },
            {
                "const": "program"
            }]
        },
        "WpwConfigApiRemoteHostName":
        {
            "$id": "#/WpwConfigApiRemoteHostName",
            "type": "string",
            "maxLength": 64,
            "pattern": "^(?:[#$]?\\{[\\w\\-\\.]+\\}|[#${}\\w\\.\\-_]+(?:[\\.\\/?][#${}\\w\\.\\-_\\\\/&]{2,})+)$"
        },
        "WpwConfigApiRemoteHostPath":
        {
            "$id": "#/WpwConfigApiRemoteHostPath",
            "type": "string",
            "maxLength": 128,
            "minLength": 8,
            "pattern": "^[\\/\\\\][\\w\\.\\-_]+[\\/\\\\][\\/\\w\\.\\-_\\\\]+$"
        },
        "WpwConfigApiCredential":
        {
            "$id": "#/WpwConfigApiCredential",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "user": {
                    "type": "string",
                    "minLength": 4,
                    "maxLength": 100
                },
                "key": {
                    "type": "string",
                    "minLength": 4,
                    "maxLength": 100
                }
            },
            "required": [
                "user", "key"
            ]
        },
        "WpwConfigContextResourcePattern":
        {
            "$id": "#/WpwConfigContextResourcePattern",
            "type": "object",
            "required": [ "resource" ],
            "properties": {
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "context": {
                    "$ref": "#/definitions/FileOrDirectoryPathRegex"
                },
                "resource": {
                    "$ref": "#/definitions/FileOrDirectoryPathRegex"
                }
            }
        },
        "WpwConfigEcmaScriptVersion":
        {
            "$id": "#/WpwConfigEcmaScriptVersion",
            "enum": [
                "es5", "es6", "es2015", "es2016", "es2017", "es2018", "es2019", "es2020", "es2021", "es2022", "es2023", "es2024", "esnext"
            ]
        },
        "WpwConfigEcmaScriptLtsVersion":
        {
            "$id": "#/WpwConfigEcmaScriptLtsVersion",
            "enum": [
                "es5", "es6", "es2015", "es2020", "es2022", "esnext"
            ]
        },
        "WpwExportConfigCache":
        {
            "$id": "#/WpwExportConfigCache",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "cacheDir": {
                    "$ref": "#/definitions/DirectoryPath"
                },
                "shared": {
                    "$ref": "#/definitions/WpwExportConfigCacheFilesystemType",
                    "description": "use shared target-level cache locations for all builds, as opposed to build-level locations for each"
                },
                "nodejs": {
                    "type": "boolean"
                },
                "resolver": {
                    "type": "boolean"
                },
                "type": {
                    "$ref": "#/definitions/WpwExportConfigCacheType"
                },
                "verbose": {
                    "type": "boolean"
                }
            },
            "examples": [{
                "enabled": true,
                "type": "filesystem",
                "nodejs": false,
                "resolver": false,
                "verbose": false
            }],
            "dependencies": {
                "shared": {
                    "if": {
                        "properties": {
                            "shared": true
                        }
                    },
                    "then": {
                        "properties": {
                            "type": {
                                "const": "filesystem"
                            }
                        }
                    }
                },
                "type": {
                    "if": {
                        "properties": {
                            "type": {
                                "const": "memory"
                            }
                        }
                    },
                    "then": {
                        "allOf": [{
                            "oneOf": [{
                                "properties": {
                                    "nodejs": false
                                }
                            },
                            {
                                "properties": {
                                    "nodejs": {
                                        "const": false
                                    }
                                }
                            }]
                        },
                        {
                            "oneOf": [{
                                "properties": {
                                    "resolver": false
                                }
                            },
                            {
                                "properties": {
                                    "resolver": {
                                        "const": false
                                    }
                                }
                            }]
                        }]
                    }
                }
            }
        },
        "WpwExportConfigCacheFilesystemType":
        {
            "$id": "#/WpwExportConfigCacheFilesystemType",
            "description": "type(s) of caching to use for builds, note that 'nodejs' compile cache requires Node v22 or newer",
            "oneOf": [{
                "const": "build",
                "description": "a separate cache location is used for each build and target"
            },{
                "const": "global",
                "description": "one cache location is used for all builds of any target"
            },{
                "const": "target",
                "description": "a separate cache location is used for each target, shared by one or more builds"
            }]
        },
        "WpwExportConfigCacheType":
        {
            "$id": "#/WpwExportConfigCacheType",
            "description": "type(s) of caching to use for builds, note that 'nodejs' compile cache requires Node v22 or newer",
            "oneOf": [{
                "const": "filesystem"
            },{
                "const": "memory"
            }]
        },
        "WpwExportConfigDevTool":
        {
            "$id": "#/WpwExportConfigDevTool",
            "type": "object",
            "additionalProperties": false,
            "required": [ "type" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "mode": {
                    "$ref": "#/definitions/WpwExportConfigDevToolMode"
                },
                "type": {
                    "$ref": "#/definitions/WpwExportConfigDevToolType"
                },
                "syncHash": {
                    "$ref": "#/definitions/BooleanDefaultTrue",
                    "description": "replaces the actual sourcemap file content hash in the filename with the corresponding module's content hash"
                }
            },
            "examples": [{
                "enabled": true,
                "mode": "plugin",
                "type": "source-map"
            },
            {
                "enabled": true,
                "mode": "devtool",
                "verbose": true
            },
            {
                "enabled": true,
                "mode": "devtool",
                "type": "eval-source-map"
            }]
        },
        "WpwExportConfigDevToolMode":
        {
            "$id": "#/WpwExportConfigDevToolType",
            "default": "plugin",
            "oneOf": [{
                "const": "devtool",
                "description": "use webpack 'devtool' configuration export for sourcemaps"
            },
            {
                "const": "plugin",
                "description": "use webpack 'sourcemaps' plugin for sourcemaps, (required for compilation time variable placeholder substitution)"
            }]
        },
        "WpwExportConfigDevToolType":
        {
            "$id": "#/WpwExportConfigDevToolMapType",
            "oneOf": [
            {
                "const": "cheap-source-map"
            },
            {
                "const": "cheap-module-source-map"
            },
            {
                "const": "eval",
                "description": "recommended for dev builds w/ max performance"
            },
            {
                "const": "eval-source-map",
                "description": "recommended for dev builds w/ high quality sourcemaps"
            },
            {
                "const": "eval-cheap-module-source-map",
                "description": "tradeoff for dev builds"
            },
            {
                "const": "eval-cheap-source-map",
                "description": "tradeoff for dev builds"
            },
            {
                "const": "inline-source-map",
                "description": "recommended for prod builds w/ max performance"
            },
            {
                "const": "inline-cheap-source-map"
            },
            {
                "const": "inline-cheap-module-source-map"
            },
            {
                "const": "source-map",
                "description": "recommended for prod builds w/ high quality sourcemaps"
            }]
        },
        "WpwExportConfigEntry":
        {
            "$id": "#/WpwExportConfigEntry",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "raw": {
                    "$ref": "#/definitions/WpwWebpackEntry"
                }
            }
        },
        "WpwWebpackEntry":
        {
            "$id": "#/WpwWebpackEntry",
            "oneOf": [{
                "$ref": "#/definitions/FilePathRelativeLeadingDot"
            },{
                "type": "array",
                "items": {
                    "$ref": "#/definitions/FilePathRelativeLeadingDot"
                }
            },{
                "$ref": "#/definitions/WpwExportConfigEntryImport"
            }],
            "examples": [
            "./index.js",
            [ "./index.ts", "./plugin/index.ts" ],
            {
                "appname": "./index.ts"
            },
            {
                "app": {
                    "import": "./src/node/index.ts",
                    "dependOn": [
                        "shared"
                    ]
                },
                "server": "./src/server/index.ts",
                "shared": {
                    "import": "./src/shared/index.ts"
                },
                "web-app": {
                    "import": "./src/web/index.ts",
                    "dependOn": "shared"
                }
            }]
        },
        "WpwExportConfigEntryChunkLoading":
        {
            "$id": "#/WpwExportConfigEntryChunkLoading",
            "oneOf": [{
                "type": "boolean"
            },
            {
                "const": "jsonp"
            },
            {
                "const": "import"
            },
            {
                "const": "importScripts"
            },
            {
                "const": "require"
            },
            {
                "const": "async-node"
            }]
        },
        "WpwExportConfigEntryImport":
        {
            "$id": "#/WpwExportConfigEntryImport",
            "type": "object",
            "description": "mapping of module names to respective entry point file, relative to context directory",
            "minProperties": 1,
            "additionalProperties": false,
            "patternProperties": {
                "^[a-z][\\w\\-\\.\\/]+$": {
                    "$ref": "#/definitions/WpwExportConfigEntryValue"
                }
            },
            "propertyNames": {
                "maxLength": 30
            }
        },
        "WpwExportConfigEntryDescriptor":
        {
            "$id": "#/WpwExportConfigEntryDescriptor",
            "type": "object",
            "properties": {
                "asyncChunks": {
                    "type": "boolean"
                },
                "baseUri": {
                    "type": "string",
                    "minLength": 1
                },
                "chunkLoading": {
                    "$ref": "#/definitions/WpwExportConfigEntryChunkLoading"
                },
                "dependOn": {
                    "oneOf": [{
                        "type": "string",
                        "pattern": "^[a-zA-Z][\\w\\.\\-\\\\/]+$"
                    },
                    {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "pattern": "^[a-zA-Z][\\w\\.\\-\\\\/]+$"
                        }
                    }]
                },
                "filename":  {
                    "oneOf": [{
                        "$ref": "#/definitions/FileName"
                    },
                    {
                        "$ref": "#/definitions/FilePathRelative"
                    }]
                },
                "import": {
                    "oneOf": [{
                        "$ref": "#/definitions/FilePathRelativeLeadingDot"
                    },
                    {
                        "$ref": "#/definitions/ValueSlugString"
                    },
                    {
                        "type": "array",
                        "items": {
                            "oneOf": [{
                                "$ref": "#/definitions/FilePathRelativeLeadingDot"
                            },
                            {
                                "$ref": "#/definitions/ValueSlugString"
                            }]
                        }
                    }]
                },
                "layer": {
                    "oneOf": [{
                        "const": "debug"
                    },
                    {
                        "const": "release"
                    }]
                },
                "publicPath": {
                    "$ref": "#/definitions/DirectoryPathRelative"
                }
            },
            "additionalItems": {
                "propertyNames": {
                    "minLength": 3,
                    "maxLength": 20,
                    "pattern": "^[a-z][\\w\\-]+$"
                }
            },
            "required": [
                "import"
            ]
        },
        "WpwExportConfigEntryValue":
        {
            "$id": "#/WpwExportConfigEntryValue",
            "anyOf": [
            {
                "$ref": "#/definitions/FilePathRelativeLeadingDot"
            },
            {
                "$ref": "#/definitions/ValueSlugString"
            },
            {
                "$ref": "#/definitions/WpwExportConfigEntryDescriptor"
            }]
        },
        "WpwExportConfigExperiments":
        {
            "$id": "#/WpwExportConfigExperiments",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                },
                "asyncWebAssembly": {
                    "type": "boolean",
                    "description": "makes a webassembly module async, enabled by default when `futureDefaults` is enabled"
                },
                "backCompat": {
                    "type": "boolean",
                    "description": "enable backward-compat layer with deprecation warnings for many webpack 4 apis"
                },
                "buildHttp": {
                    "type": "boolean",
                    "description": "build remote resources that begin with the http(s): protocol"
                },
                "cacheUnaffected": {
                    "type": "boolean",
                    "description": "enable additional in-memory caching of modules which are unchanged and reference only unchanged modules"
                },
                "css": {
                    "type": "boolean",
                    "description": "enable native CSS support"
                },
                "deferImport": {
                    "type": "boolean",
                    "description": "enable support of the tc39 proposal (import defer proposal)"
                },
                "futureDefaults": {
                    "type": "boolean",
                    "description": "use defaults of the next major webpack and show warnings in any problematic places"
                },
                "lazyCompilation": {
                    "type": "boolean",
                    "description": "compile entrypoints and dynamic imports only when they are in use, can be used for either web or node target"
                },
                "syncWebAssembly": {
                    "type": "boolean"
                }
            }
        },
        "WpwExportConfigExternals":
        {
            "$id": "#/WpwExportConfigExternals",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                },
                "all": {
                    "type": "boolean",
                    "description": "If set, all imported directly and indirectly imported modules / dependencies are processed as external"
                },
                "dbgImports": {
                    "type": "array",
                    "description": "list of module / package names to output verbose import detail for, used for debugging runtime externals processing",
                    "items": {
                        "$ref": "#/definitions/ValueSlugString"
                    }
                },
                "noImportBundled": {
                    "$ref": "#/definitions/WpwExportConfigExternalsModules",
                    "description": "Array of regex strings that when a standalone module dependency (i.e. not imported) name is matched, it is included in the vendor.js bundle.  Ignored if 'noImportAll' is not set, or if 'all' is set.."

                },
                "noImportExternal": {
                    "$ref": "#/definitions/WpwExportConfigExternalsModules",
                    "description": "Array of regex strings that when a standalone module dependency (i.e. not imported) found in the 'dependencies' block of package.json, it is treated as external.  Ignored if 'noImportAll' is not set, or if 'all' is set."
                },
                "bundleRuntime": {
                    "type": "boolean",
                    "description": "Bundle deep-level dependencies that are loaded at runtime by a module that was not directly imported via 'import' or 'require', defaults to `true`"
                },
                "bundled": {
                    "$ref": "#/definitions/WpwExportConfigExternalsModules",
                    "description": "Array of module names that should always be bundled in vendor.js, or can be used as overrides applied to any matches from regexes specified in 'always'.  Overrides 'external'. Ignored is 'all' if set."
                },
                "external": {
                    "$ref": "#/definitions/WpwExportConfigExternalsModules",
                    "description": "Array of module names that should not be bundled in vendor.js.  Ignored if 'all' is set.  Specific import can be set using the syntax '${externalsType} ${libraryName}', e.g. 'commonjs vscode'"
                },
                "ignored": {
                    "$ref": "#/definitions/WpwExportConfigExternalsModules",
                    "description": "Array of regex strings that when a standalone module dependency (i.e. not imported, in most cases probably temporarily installed for testing) found in the 'dependencies' block of package.json, it is neither treated as external or included in the vendor.js bundle, i.e. it is removed from package.json and ignored/skipped from the build."
                },
                "presets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/WebpackExternalsPreset"
                    }
                },
                "raw": {
                    "type": "object",
                    "propertyNames": {
                        "$ref": "#/definitions/WpwModuleName"
                    },
                    "additionalProperties": {
                        "$ref": "#/definitions/WpwModuleNameWithType"
                    }
                },
                "type": {
                    "$ref": "#/definitions/WebpackExternalsType"
                }
            },
            "examples": [
            {
                "enabled": true,
                "all": true
            },
            {
                "enabled": true,
                "all": false
            },
            {
                "enabled": true,
                "all": true,
                "bundled": [
                    "-utils?$",
                    "^workbox.+?$"
                ]
            },
            {
                "enabled": true,
                "all": false,
                "external": [
                    "esbuild",
                    "eslint",
                    "^lodash$",
                    "^schema-utils$",
                    "^typescript$",
                    "^vscode"
                ]
            }]
        },
        "WpwExportConfigExternalsModules":
        {
            "$id": "#/WpwExportConfigExternalsModules",
            "type": "array",
            "maxItems": 100,
            "items": {
                "type": "string",
                "pattern": "[a-z0-9/_\\-\\^\\$:\\?\\(\\)\\[\\]\\+\\*@]+"
            }
        },
        "WpwExportConfigIgnore":
        {
            "$id": "#/WpwExportConfigIgnore",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                },
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "caniuseLite": {
                    "$ref": "#/definitions/WpwExportConfigIgnoreValue"
                },
                "dynamicDependencies": {
                    "description": "ignore all dynamic dependency warnings such as 'request of a dependency is an expression' or 'require function used in a way in which dependencies cannot be statically extracted'",
                    "oneOf": [{
                        "type": "boolean"
                    },{
                        "$ref": "#/definitions/WpwExportConfigIgnoreValueDynamicDep"
                    }]
                },
                "keyvAdapters": {
                    "$ref": "#/definitions/WpwExportConfigIgnoreValue"
                },
                "momentLocales": {
                    "$ref": "#/definitions/WpwExportConfigIgnoreValue"
                },
                "custom": {
                    "$ref": "#/definitions/WpwExportConfigIgnoreValueCustom"
                }
            }
        },
        "WpwExportConfigIgnoreValue":
        {
            "$id": "#/WpwExportConfigIgnoreValue",
            "oneOf": [{
                "type": "boolean"
            },{
                "$ref": "#/definitions/WpwConfigContextResourcePattern"
            }]
        },
        "WpwExportConfigIgnoreValueCustom":
        {
            "$id": "#/WpwExportConfigIgnoreValueCustom",
            "oneOf": [{
                "$ref": "#/definitions/WpwConfigContextResourcePattern"
            }, {
                "type": "array",
                "items": {
                    "$ref": "#/definitions/WpwConfigContextResourcePattern"
                }
            }]
        },
        "WpwExportConfigIgnoreValueDynamicDep":
        {
            "$id": "#/WpwExportConfigIgnoreValueDynamicDep",
            "type": "object",
            "minProperties": 1,
            "properties": {
                "requestExpression": {
                    "type": "boolean",
                    "description": "ignore all 'full' dynamic dependency warning 'request of a dependency is an expression', see also `module.parser.javascript.*`"
                },
                "requireFunction": {
                    "type": "boolean",
                    "description": "ignore all 'static' dynamic dependency warning 'require function used in a way in which dependencies cannot be statically extracted', see also `module.parser.javascript.*`"
                },
                "requireExtension": {
                    "type": "boolean",
                    "description": "ignore all 'partial' dynamic dependency warning 'require.extensions is not supported by webpack, use a loader instead', see also `module.parser.javascript.*`"
                }
            }
        },
        "WpwExportConfigModule":
        {
            "$id": "#/WpwExportConfigModule",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "enabled": {
                    "$ref": "#/definitions/BooleanReadOnlyTrue"
                },
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "noParse": {
                    "$ref": "#/definitions/WpwExportConfigModuleNoParse"
                },
                "generator": {
                    "$ref": "#/definitions/WpwExportConfigModuleGenerator"
                },
                "parser": {
                    "$ref": "#/definitions/WpwExportConfigModuleParser"
                }
            }
        },
        "WpwExportConfigModuleGenerator":
        {
            "$id": "#/WpwExportConfigModuleGenerator",
            "type": "object",
            "minProperties": 1,
            "additionalProperties": false,
            "properties": {
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "asset": {
                    "$ref": "#/definitions/WpwExportConfigModuleRaw"
                },
                "asset/inline": {
                    "$ref": "#/definitions/WpwExportConfigModuleRaw"
                },
                "asset/resource": {
                    "$ref": "#/definitions/WpwExportConfigModuleRaw"
                },
                "asset/source": {
                    "$ref": "#/definitions/WpwExportConfigModuleRaw"
                },
                "css": {
                    "$ref": "#/definitions/WpwExportConfigModuleRaw"
                },
                "css/auto": {
                    "$ref": "#/definitions/WpwExportConfigModuleRaw"
                },
                "json": {
                    "$ref": "#/definitions/WpwExportConfigModuleRaw"
                }
            }
        },
        "WpwExportConfigModuleNoParse":
        {
            "$id": "#/WpwExportConfigModuleNoParse",
            "oneOf": [{
                "$ref": "#/definitions/PathRegex"
            }, {
                "type": "array",
                "items": {
                    "$ref": "#/definitions/PathRegex"
                }
            }]
        },
        "WpwExportConfigModuleParser":
        {
            "$id": "#/WpwExportConfigModuleParser",
            "type": "object",
            "minProperties": 1,
            "additionalProperties": false,
            "properties": {
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "asset": {
                    "$ref": "#/definitions/WpwExportConfigModuleRaw"
                },
                "css": {
                    "$ref": "#/definitions/WpwExportConfigModuleRaw"
                },
                "javascript": {
                    "$ref": "#/definitions/WpwExportConfigModuleParserJavascript"
                },
                "json": {
                    "$ref": "#/definitions/WpwExportConfigModuleRaw"
                }
            }
        },
        "WpwExportConfigModuleRaw":
        {
            "$id": "#/WpwExportConfigModuleRaw",
            "type": "object",
            "minProperties": 1,
            "additionalProperties": true
        },
        "WpwExportConfigModuleParserJavascript":
        {
            "$id": "#/WpwExportConfigModuleParserJavascript",
            "type": "object",
            "additionalProperties": true,
            "properties": {
                "exprContextCritical": {
                    "type": "boolean",
                    "description": "ignore warnings for full dynamic dependencies, e.g. require(_var_) or import(_var_) | i.e. 'request of a dependency is an expression'"
                },
                "unknownContextCritical": {
                    "type": "boolean",
                    "description": "ignore warnings for require calls that cannot be statically resolved | i.e. 'require function used in a way in which dependencies cannot be statically extracted'"
                },
                "wrappedContextCritical": {
                    "type": "boolean",
                    "description": "ignore warnings for partial dynamic dependencies, e.g. require('./dir/' + _var_) | i.e. 'require.extensions is not supported by webpack, use a loader instead'"
                }
            }
        },
        "WpwExportConfigOptimization":
        {
            "$id": "#/WpwExportConfigOptimization",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "cacheGroups": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationCacheGroups"
                },
                "minifier": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationMinimizer",
                    "description": "defaults to `terser` for '*app', 'svr', or 'lib' type production build, otherwise `esbuild`"
                },
                "mangle": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationMangleMode",
                    "description": "defaults to `minimal` for production mode, otherwise `none`"
                },
                "minify": {
                    "type": "boolean",
                    "description": "defaults to `true` for production mode, otherwise `false`"
                },
                "minimizer": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationMinimizer",
                    "description": "minimizer engine to use, defaults to `terser` for '*app', 'svr', or 'lib' type production build, otherwise `esbuild`"
                },
                "runtimeChunk": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationRuntime"
                }
            },
            "examples": [
            {
                "enabled": true,
                "mangle": "minimal",
                "minify": true,
                "splitChunks": true,
                "runtimeChunk": false
            },
            {
                "enabled": true,
                "minify": true,
                "splitChunks": true,
                "runtimeChunk": "single"
            },
            {
                "enabled": true,
                "mangle": "minimal",
                "minify": true,
                "runtimeChunk": "single",
                "cacheGroups": {
                    "all": false,
                    "builtin": {
                        "vendor": true
                    },
                    "custom": [{
                        "name": "babel",
                        "test": "@babel[\\\\/])"
                    },
                    {
                        "name": "ngx",
                        "test": "ngx\\-pkg\\-$)"
                    }]
                }
            }]
        },
        "WpwExportConfigOptimizationCacheGroups":
        {
            "$id": "#/WpwExportConfigOptimizationCacheGroups",
            "type": "object",
            "minProperties": 1,
            "additionalProperties": false,
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "all": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                },
                "group": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                },
                "groupDir": {
                    "$ref": "#/definitions/DirectoryPathRelativeFwdSlash",
                    "maxLength": 32
                },
                "builtin": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationBuiltinCacheGroups"
                },
                "custom": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationCustomCacheGroups"
                }
            },
            "examples": [{
                "all": true,
                "custom": {
                    "ngx": {
                        "test": "@angular[\\\\/]ngx\\-.+$)"
                    }
                }
            },{
                "enabled": true,
                "all": false,
                "group": true,
                "groupDir": "lib",
                "builtin": {
                    "polyfill": true,
                    "react": true,
                    "vendor": {
                        "name": "vendor-2026",
                        "filename": "lib/vendor/[name].[contenthash].js"
                    }
                }
            },{
                "enabled": true,
                "all": false,
                "group": true,
                "groupDir": "lib",
                "builtin": {
                    "db": true,
                    "express": {
                        "name": "server"
                    },
                    "api": true,
                    "http": true,
                    "react": true,
                    "vendor": true
                },
                "custom": {
                    "ng": {
                        "name": "db",
                        "priority": 0,
                        "test": "(?:angular|ng\\-)"
                    },
                    "ngx": {
                        "name": "ngx",
                        "priority": 1,
                        "test": "@angular[\\\\/]ngx\\-$)"
                    }
                }
            }]
        },
        "WpwExportConfigOptimizationBuiltinCacheGroups":
        {
            "$id": "#/WpwExportConfigOptimizationBuiltinCacheGroups",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "api": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationCacheGroupItem"
                },
                "crypto": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationCacheGroupItem"
                },
                "db": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationCacheGroupItem"
                },
                "eslint": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationCacheGroupItem"
                },
                "express": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationCacheGroupItem"
                },
                "http": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationCacheGroupItem"
                },
                "polyfill": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationCacheGroupItem"
                },
                "react": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationCacheGroupItem"
                },
                "spmhc": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationCacheGroupItem"
                },
                "spmha": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationCacheGroupItem"
                },
                "spmhl": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationCacheGroupItem"
                },
                "vendor": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationCacheGroupItem"
                }
            },
            "examples": [{
                "db": true,
                "express": true,
                "react": true,
                "vendor": true
            },{
                
                "express": {
                    "name": "server"
                },
                "vendor": {
                    "name": "common",
                    "filename": "vendor/[name].[contenthash].js"
                }
            }]
        },
        "WpwExportConfigOptimizationCustomCacheGroups":
        {
            "$id": "#/WpwExportConfigOptimizationCustomCacheGroups",
            "type": "object",
            "minProperties": 1,
            "maxProperties": 16,
            "patternProperties": {
                "^\\w[\\w\\.\\-]{1,32}$": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationCacheGroup"  
                }
            },
            "examples": [{
                "ng": {
                    "name": "db",
                    "priority": 0,
                    "test": "(?:angular|ng\\-)"
                },
                "ngx": {
                    "name": "ngx",
                    "priority": 1,
                    "test": "@angular[\\\\/]ngx\\-$)"
                }
            }]
        },
        "WpwExportConfigOptimizationCacheGroupItem":
        {
            "$id": "#/WpwExportConfigOptimizationCacheGroupItem",
            "oneOf": [{
                "type": "boolean"
            },{
                "$ref": "#/definitions/WpwExportConfigOptimizationCacheGroup"  
            }]
        },
        "WpwExportConfigOptimizationCacheGroup":
        {
            "$id": "#/WpwExportConfigOptimizationCacheGroup",
            "type": "object",
            "additionalProperties": false,
            "minProperties": 1,
            "required": [ "name", "test" ],
            "properties": {
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "chunks": {
                    "$ref": "#/definitions/WpwExportConfigOptimizationCacheGroupChunk",
                    "description": "select chunks for cache group content (defaults to 'initial') ('initial' and 'all' requires adding these chunks to the output)"
                },
                "filename": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 96,
                    "pattern": "\\w[\\w\\.\\-\\\\/]{1,32}$",
                    "description": "sets the template for filenames of created chunk"
                },
                "layer": {
                    "oneOf": [{
                        "const": "debug"
                    },{
                        "const": "release"
                    },{
                        "type": "string",
                        "minLength": 2,
                        "maxLength": 32,
                        "pattern": "[a-z][\\w\\.\\-]+"
                    }],
                    "description": "assign modules to a cache group by module layer"
                },
                "maxSize": {
                    "type": "number",
                    "description": "maximum size hint for created chunk"
                },
                "minSize": {
                    "type": "number",
                    "description": "maximum size hint for created chunk"
                },
                "name": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 32,
                    "pattern": "[a-z][\\w\\.\\-]+",
                    "description": "give chunks for this cache group a name (chunks with equal names are merged)"
                },
                "priority": {
                    "type": "number",
                    "minimum": -249,
                    "maximum": 249,
                    "description": "weighted from  the 'lowest' number (highest priority) to the 'highest' number (lowest priority) found in all configured cache groups"
                },
                "reuseExistingChunk": {
                    "type":"boolean"
                },
                "test": {
                    "$ref": "#/definitions/PathRegex"
                },
                "usedExports": {
                    "type":"boolean"
                }
            },
            "dependencies": {
                "filename": {
                    "if": {
                        "required": [
                            "filename"
                        ],
                        "properties": {
                            "filename": {
                                "pattern": "[\\\\/]"
                            }
                        }
                    },
                    "then": {
                        "properties": {
                            "filename": {
                               "minLength": 4
                            }
                        }
                    }
                }
            }
        },
        "WpwExportConfigOptimizationCacheGroupChunk":
        {
            "$id": "#/WpwExportConfigOptimizationCacheGroupChunk",
            "oneOf": [{
                "const": "all"
            },{
                "const": "initial"
            },{
                "const": "async"
            }]
        },
        "WpwExportConfigOptimizationMangleMode":
        {
            "$id": "#/WpwExportConfigOptimizationMangleMode",
            "oneOf": [{
                "const": "minimal",
                "description": "mangle output, but keep classnames"
            },{
                "const": "full",
                "description": "mangle output, including classnames"
            },{
                "const": "none"
            }]
        },
        "WpwExportConfigOptimizationMinimizer":
        {
            "$id": "#/WpwExportConfigOptimizationMinimizer",
            "oneOf": [{
                "const": "esbuild",
                "description": "default for non-production '*app', 'svr', and 'lib' type builds or 'script' build with yjr `minimize` options enabled"
            },{
                "const": "terser",
                "description": "default flor production '*app', 'svr', and 'lib' type builds"
            }]
        },
        "WpwExportConfigOptimizationRuntime":
        {
            "$id": "#/WpwExportConfigOptimizationRuntime",
            "oneOf": [{
                "const": "multiple"
            },{
                "const": "single"
            },{
                "const": true
            },{
                "const": false
            }]
        },
        "WpwExportConfigOutput":
        {
            "$id": "#/WpwExportConfigOutput",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "enabled": {
                    "$ref": "#/definitions/BooleanReadOnlyTrue"
                },
                "asyncChunks": {
                    "type": "boolean",
                    "description": "Enable/disable creating async chunks that are loaded on demand."
                },
                "ext": {
                    "$ref": "#/definitions/WpwExportConfigOutputFileExt"
                },
                "hashLength": {
                    "type": "number",
                    "default": 16,
                    "minimum": 8,
                    "maximum": 64
                },
                "hashFunction": {
                    "$ref": "#/definitions/WpwOpenSslHashAlgorithm"
                },
                "hashDigest": {
                    "default": "hex",
                    "oneOf": [{
                        "const": "hex"
                    }, {
                        "const": "base64"
                    }]
                },
                "hashSalt": {
                    "type": "string",
                    "minLength": 8,
                    "maxLength": 32
                },
                "library": {
                    "description": "make the output asset files a library, exporting the exports of the entry point",
                    "oneOf": [{
                        "$ref": "#/definitions/WebpackLibrary"
                    },
                    {
                        "$ref": "#/definitions/WpwExportConfigOutputLibrary"
                    }]
                },
                "libraryTarget": {
                    "$ref": "#/definitions/WebpackLibrary"
                },
                "name": {
                    "type": "string",
                    "description": "overrides build.name for main entry output filename",
                    "maxLength": 24
                }
            }
        },
        "WpwExportConfigOutputFileExt":
        {
            "$id": "#/WpwExportConfigOutputFileExt",
            "oneOf": [{
                "const": ".js"
            },{
                "const": ".cjs"
            },{
                "const": ".mjs"
            },{
                "const": ".jsx"
            },{
                "const": ".d.ts"
            }]
        },
        "WpwExportConfigOutputLibrary":
        {
            "$id": "#/WpwExportConfigOutputLibrary",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "amd": {
                    "$ref": "#/definitions/ValueSlugString"
                },
                "amdCont": {
                    "$ref": "#/definitions/ValueSlugString"
                },
                "comment": {
                    "$ref": "#/definitions/ValueSlugString"
                },
                "name": {
                    "$ref": "#/definitions/ValueScopedSlugString"
                },
                "type": {
                    "$ref": "#/definitions/WebpackLibrary"
                },
                "umdCont": {
                    "$ref": "#/definitions/ValueSlugString"
                }
            }
        },
        "WpwExportConfigPerformance":
        {
            "$id": "#/WpwExportConfigPerformance",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "enabled": {
                    "$ref": "#/definitions/BooleanReadOnlyTrue"
                },
                "maxAssetSize": {
                    "type": "number"
                },
                "maxEntrypointSize": {
                    "type": "number"
                },
                "hints": {
                    "oneOf": [{
                        "const": false
                    },{
                        "const": "error"
                    },{
                        "const": "warning"
                    }]
                }
            }
        },
        "WpwExportConfigResolve":
        {
            "$id": "#/WpwExportConfigResolve",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "enabled": {
                    "$ref": "#/definitions/BooleanReadOnlyTrue"
                },
                "raw": {
                    "type": "object",
                    "additionalProperties": true
                }
            }
        },
        "WpwExportConfigRules":
        {
            "$id": "#/WpwExportConfigRules",
            "type": "object",
            "additionalProperties": false,
            "minProperties": 1,
            "properties": {
                "enabled": {
                    "$ref": "#/definitions/BooleanReadOnlyTrue"
                },
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "babel": {
                    "$ref": "#/definitions/WpwExportBabelConfig"
                },
                "ignore": {
                    "$ref": "#/definitions/FileOrDirectoryPathRegex"
                },
                "include": {
                    "$ref": "#/definitions/FileOrDirectoryPathRegex"
                },
                "loader": {
                    "$ref": "#/definitions/WpwWebpackLoaderType"
                },
                "tsloader": {
                    "$ref": "#/definitions/WpwWebpackLoaderTsConfig"
                }
            },
            "examples": [{
                "enabled":  true,
                "loader": "ts",
                "tsloader": {
                    "onlyCompileBundledFiles": true
                }
            },{
                "enabled":  true,
                "loader": "babel",
                "babel": {
                    "plugins": [
                        "@babel/plugin-name"
                    ],
                    "presets": [
                        "@babel/preset-name"
                    ]
                }
            }]
        },
        "WpwWebpackLoaderTsConfig":
        {
            "$id": "#/WpwWebpackLoaderTsConfig",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "onlyCompileBundledFiles": {
                    "type": "boolean"
                }
            }
        },
        "WpwExportBabelConfig":
        {
            "$id": "#/WpwExportBabelConfig",
            "type": "object",
            "additionalProperties": false,
            "minProperties": 1,
            "properties": {
                "defaultPresets": {
                    "type": "boolean"
                },
                "plugins": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "pattern": "^@babel\\/plugin-.+$"
                    }
                },
                "presets": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "pattern": "^@babel\\/preset-.+$"
                    }
                },
                "sourceType": {
                    "$ref": "#/definitions/WpwExportBabelConfigSourceType"
                }
            },
            "dependencies": {
                "defaultPresets": {
                    "if": {
                        "properties": {
                            "defaultPresets": {
                                "const": true
                            }
                        }
                    },
                    "then": {
                        "properties": {
                            "presets": {
                                "oneOf": [{
                                    "maxItems": 0
                                }, {
                                    "const": false
                                }]
                            }
                        }
                    }
                }
            }
        },
        "WpwExportBabelConfigSourceType":
        {
            "$id": "#/WpwExportBabelConfigSourceType",
            "oneOf": [{
                "const": "commonjs"
            },{
                "const": "module"
            },{
                "const": "script"
            },{
                "const": "unambiguous"
            }]
        },
        "WpwLogOptions":
        {
            "$id": "#/WpwLogOptions",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "buffer": {
                    "$ref": "#/definitions/WpwLogBuffer"
                },
                "color": {
                    "$ref": "#/definitions/WpwLogColor"
                },
                "colors": {
                    "type": "object",
                    "$id": "#/WpwLogColoring",
                    "additionalProperties": false,
                    "properties": {
                        "default": {
                            "$ref": "#/definitions/WpwLogColor"
                        },
                        "buildBracket": {
                            "$ref": "#/definitions/WpwLogColor"
                        },
                        "buildText": {
                            "$ref": "#/definitions/WpwLogColor"
                        },
                        "infoIcon": {
                            "$ref": "#/definitions/WpwLogColor"
                        },
                        "tagBracket": {
                            "$ref": "#/definitions/WpwLogColor"
                        },
                        "tagText": {
                            "$ref": "#/definitions/WpwLogColor"
                        }
                    }
                },
                "disablePfx": {
                    "type": "boolean",
                    "description": "disable prepending the prefix on each log entry, i.e. thetimestamp / env tags / etc (primarily used by external scripts when importing the internal WpwLogger module)"
                },
                "disableSuppression": {
                    "type": "boolean",
                    "description": "convenience option for debugging to disable configured suppressed string patterns w/o having to remove the property entirely"
                },
                "envTag1": {
                    "type": "string",
                    "default": "wpw",
                    "minimum": 2,
                    "maxLength": 25,
                    "description": "deprecated - use `prefix.tag*`"
                },
                "envTag2": {
                    "type": "string",
                    "default": "app",
                    "minimum": 2,
                    "maxLength": 25,
                    "description": "deprecated - use `prefix.tag*`"
                },
                "envModuleTag": {
                    "type": "string",
                    "default": "",
                    "minimum": 2,
                    "maxLength": 20,
                    "readOnly": true
                },
                "filter": {
                    "type": "array",
                    "description": "regex patterns to filter in only specific output from log (note, the opposite of `suppress`)",
                    "items": {
                        "type": "string",
                        "minLength": 4,
                        "maxLength": 64,
                        "pattern": "[ a-z0-9/_\\-\\^\\$:\\?\\(\\)\\[\\]\\+\\*@]+"
                    }
                },
                "level": {
                    "$ref": "#/definitions/WpwLogLevel"
                },
                "maxLineLength": {
                    "type": "number",
                    "default": 125,
                    "minValue": 100,
                    "maxValue": 225,
                    "description": "max message length, line breaks will be used for each log entry exceeding this value"
                },
                "output": {
                    "type": "object",
                    "properties": {
                        "console": {
                            "$ref": "#/definitions/WpwLogOutput",
                            "default": {
                                "enabled": true
                            }
                        },
                        "file": {
                            "$ref": "#/definitions/WpwLogOutput"
                        }
                    },
                    "examples": [{
                        "console": {
                            "enabled":  true,
                            "pretty": true
                        },
                        "file": {
                            "enabled":  true,
                            "pretty": true,
                            "path": "node_modules/.cache/wpw/log/{BUILD.NAME}/{BUILD.TARGET}/{YYYY}{MM}{DD}.log"
                        }
                    }]
                },
                "suppress": {
                    "type": "array",
                    "description": "regex patterns to suppress specific output from log (note, the opposite of `filter`)",
                    "items": {
                        "type": "string",
                        "minLength": 4,
                        "maxLength": 64,
                        "pattern": "[ a-z0-9/_\\-\\^\\$:\\?\\(\\)\\[\\]\\+\\*@]+"
                    }
                },
                "console": {
                    "$ref": "#/definitions/WpwLogOutput"
                },
                "prefix": {
                    "$ref": "#/definitions/WpwLogEntryPrefix"
                },
                "valuePad": {
                    "type": "number",
                    "default": 55,
                    "minValue": 40,
                    "maxValue": 95,
                    "description": "padding to use to align the \"value\" in 'value()' calls, note the preceding message space is the difference between 'maxLineLength' and 'valuePad'"
                }
            }
        },
        "WpwLogBuffer":
        {
            "$id": "#/WpwLogBuffer",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "flushTimeout": {
                    "type": "number",
                    "description": "an interval / cyclic timeout (in milliseconds) when buffered log data will be flushed to the output channel(s)",
                    "default": 250,
                    "minimum": 100,
                    "maximum": 5000
                },
                "bytes": {
                    "type": "number",
                    "description": "maximum accumulated disk space (bytes) when buffered log data will be flushed to the output channel(s)",
                    "default": 1024,
                    "minimum": 512,
                    "maximum": 32768
                }
            }
        },
        "WpwLogLevel":
        {
            "$id": "#/WpwLogLevel",
            "title": "WpwLoggerLevel",
            "default": 2,
            "oneOf": [{
                "const": 0,
                "description": "No logging"
            },
            {
                "const": 1,
                "description": "Logging level 1 - Errors, warnings, and function start/end"
            },
            {
                "const": 2,
                "description": "Logging level 2 - Level 1 + parameter values"
            },
            {
                "const": 3,
                "description": "Logging level 3 - Level 2 + non-looping processing detail"
            },
            {
                "const": 4,
                "description": "Logging level 4 - Level 3 + looping processing detail"
            },
            {
                "const": 5,
                "description": "Logging level 5 - Verbose"
            }]
        },
        "WpwLogOutput":
        {
            "$id": "#/WpwLogOutput",
            "type": "object",
            "description": "options for writing log output to filesystem",
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "archive": {
                    "type": "number",
                    "default": 30,
                    "minimum": 1,
                    "maximum": 180
                },
                "delete": {
                    "type": "number",
                    "default": 90,
                    "minimum": 7,
                    "maximum": 365
                },
                "path": {
                    "$ref": "#/definitions/FilePath"
                },
                "pretty": {
                    "type": "boolean"
                }
            }
        },
        "WpwLogStyle":
        {
            "$id": "#/WpwLogStyle",
            "oneOf": [
            {
                "const": "bold"
            },
            {
                "const": "inverse"
            },
            {
                "const": "italic"
            },
            {
                "const": "underline"
            }]
        },
        "WpwLogBasicColor":
        {
            "$id": "#/WpwLogBasicColor",
            "oneOf": [{
                "const": "black"
            },
            {
                "const": "blue"
            },
            {
                "const": "cyan"
            },
            {
                "const": "green"
            },
            {
                "const": "grey"
            },
            {
                "const": "magenta"
            },
            {
                "const": "red"
            },
            {
                "const": "white"
            },
            {
                "const": "yellow"
            }]
        },
        "WpwLogColor":
        {
            "$id": "#/WpwLogColor",
            "oneOf": [{
                "$ref": "#/definitions/WpwLogBasicColor"
            },
            {
                "const": "aliceblue"
            },
            {
                "const": "antiquewhite"
            },
            {
                "const": "aqua"
            },
            {
                "const": "aquamarine"
            },
            {
                "const": "azure"
            },
            {
                "const": "babyblue"
            },
            {
                "const": "beige"
            },
            {
                "const": "bisque"
            },
            {
                "const": "blanchedalmond"
            },
            {
                "const": "blueviolet"
            },
            {
                "const": "brightred"
            },
            {
                "const": "brown"
            },
            {
                "const": "burlywood"
            },
            {
                "const": "cadetblue"
            },
            {
                "const": "chartreuse"
            },
            {
                "const": "cherry"
            },
            {
                "const": "chocolate"
            },
            {
                "const": "coral"
            },
            {
                "const": "cornflowerblue"
            },
            {
                "const": "cornsilk"
            },
            {
                "const": "crimson"
            },
            {
                "const": "darkblue"
            },
            {
                "const": "darkcyan"
            },
            {
                "const": "darkgoldenrod"
            },
            {
                "const": "darkgreen"
            },
            {
                "const": "darkgrey"
            },
            {
                "const": "darkkhaki"
            },
            {
                "const": "darkmagenta"
            },
            {
                "const": "darkolivegreen"
            },
            {
                "const": "darkorange"
            },
            {
                "const": "darkorchid"
            },
            {
                "const": "darkred"
            },
            {
                "const": "darksalmon"
            },
            {
                "const": "darkseagreen"
            },
            {
                "const": "darkslateblue"
            },
            {
                "const": "darkslategrey"
            },
            {
                "const": "darkturquoise"
            },
            {
                "const": "darkviolet"
            },
            {
                "const": "deeppink"
            },
            {
                "const": "deepskyblue"
            },
            {
                "const": "default"
            },
            {
                "const": "dimgrey"
            },
            {
                "const": "dodgerblue"
            },
            {
                "const": "error"
            },
            {
                "const": "fail"
            },
            {
                "const": "failed"
            },
            {
                "const": "firebrick"
            },
            {
                "const": "floralwhite"
            },
            {
                "const": "forestgreen"
            },
            {
                "const": "fuchsia"
            },
            {
                "const": "gainsboro"
            },
            {
                "const": "ghostwhite"
            },
            {
                "const": "gold"
            },
            {
                "const": "goldenrod"
            },
            {
                "const": "greenyellow"
            },
            {
                "const": "honeydew"
            },
            {
                "const": "hotpink"
            },
            {
                "const": "indianred"
            },
            {
                "const": "indigo"
            },
            {
                "const": "ivory"
            },
            {
                "const": "jade"
            },
            {
                "const": "khaki"
            },
            {
                "const": "lavender"
            },
            {
                "const": "lavenderblush"
            },
            {
                "const": "lawngreen"
            },
            {
                "const": "lemonchiffon"
            },
            {
                "const": "lightblue"
            },
            {
                "const": "lightcoral"
            },
            {
                "const": "lightcyan"
            },
            {
                "const": "lightgoldenrodyellow"
            },
            {
                "const": "lightgreen"
            },
            {
                "const": "lightgrey"
            },
            {
                "const": "lightorange"
            },
            {
                "const": "lightpink"
            },
            {
                "const": "lightpurple"
            },
            {
                "const": "lightsalmon"
            },
            {
                "const": "lightseagreen"
            },
            {
                "const": "lightskyblue"
            },
            {
                "const": "lightslategrey"
            },
            {
                "const": "lightsteelblue"
            },
            {
                "const": "lightviolet"
            },
            {
                "const": "lightyellow"
            },
            {
                "const": "lime"
            },
            {
                "const": "limegreen"
            },
            {
                "const": "linen"
            },
            {
                "const": "maroon"
            },
            {
                "const": "mediumaquamarine"
            },
            {
                "const": "mediumblue"
            },
            {
                "const": "mediumorchid"
            },
            {
                "const": "mediumpurple"
            },
            {
                "const": "mediumseagreen"
            },
            {
                "const": "mediumslateblue"
            },
            {
                "const": "mediumspringgreen"
            },
            {
                "const": "mediumturquoise"
            },
            {
                "const": "mediumvioletred"
            },
            {
                "const": "midnightblue"
            },
            {
                "const": "mintcream"
            },
            {
                "const": "mistyrose"
            },
            {
                "const": "moccasin"
            },
            {
                "const": "navajowhite"
            },
            {
                "const": "navy"
            },
            {
                "const": "neonred"
            },
            {
                "const": "oldlace"
            },
            {
                "const": "olive"
            },
            {
                "const": "olivedrab"
            },
            {
                "const": "orange"
            },
            {
                "const": "orangered"
            },
            {
                "const": "orchid"
            },
            {
                "const": "palegoldenrod"
            },
            {
                "const": "palegreen"
            },
            {
                "const": "paleturquoise"
            },
            {
                "const": "palevioletred"
            },
            {
                "const": "papayawhip"
            },
            {
                "const": "pastelblue"
            },
            {
                "const": "pastelpurple"
            },
            {
                "const": "pastelred"
            },
            {
                "const": "peachpuff"
            },
            {
                "const": "periwinkle"
            },
            {
                "const": "peru"
            },
            {
                "const": "pink"
            },
            {
                "const": "plum"
            },
            {
                "const": "powderblue"
            },
            {
                "const": "purple"
            },
            {
                "const": "raspberry"
            },
            {
                "const": "rebeccapurple"
            },
            {
                "const": "rosered"
            },
            {
                "const": "rosybrown"
            },
            {
                "const": "royalblue"
            },
            {
                "const": "rubyred"
            },
            {
                "const": "saddlebrown"
            },
            {
                "const": "salmon"
            },
            {
                "const": "sandybrown"
            },
            {
                "const": "seagreen"
            },
            {
                "const": "seashell"
            },
            {
                "const": "sienna"
            },
            {
                "const": "silver"
            },
            {
                "const": "skyblue"
            },
            {
                "const": "slateblue"
            },
            {
                "const": "slategrey"
            },
            {
                "const": "snow"
            },
            {
                "const": "spmh_blue"
            },
            {
                "const": "spmh_darkblue"
            },
            {
                "const": "spmh_lightblue"
            },
            {
                "const": "springgreen"
            },
            {
                "const": "steelblue"
            },
            {
                "const": "success"
            },
            {
                "const": "system"
            },
            {
                "const": "tan"
            },
            {
                "const": "teal"
            },
            {
                "const": "thistle"
            },
            {
                "const": "tomato"
            },
            {
                "const": "turquoise"
            },
            {
                "const": "violet"
            },
            {
                "const": "ultimategrey"
            },
            {
                "const": "ultramarine"
            },
            {
                "const": "ultraviolet"
            },
            {
                "const": "warn"
            },
            {
                "const": "warning"
            },
            {
                "const": "wheat"
            },
            {
                "const": "whitesmoke"
            },
            {
                "const": "yellowgreen"
            }]
        },
        "WpwLogEntryPrefix":
        {
            "$id": "#/WpwLogEntryPrefix",
            "type": "object",
            "required": [ "enabled" ],
            "additionalProperties": false,
            "properties": {
                "enabled": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                },
                "caret": {
                    "$ref": "#/definitions/BooleanDefaultTrue",
                    "description": "insert right pointing caret following timestamp to mock visualalitty of a common command terminal"
                },
                "icons": {
                    "$ref": "#/definitions/BooleanDefaultTrue",
                    "description": "insert status icons following the timestamp and / or caret (if enabled / disabled)"
                },
                "tag1": {
                    "$ref": "#/definitions/ValueSlugString",
                    "maxLength": 20,
                    "default": "{BUILD.NAME}",
                    "description": "1st .env description tag, following the timestamp and / or caret and / or icon (if enabled / disabled)"
                },
                "tag2": {
                    "$ref": "#/definitions/ValueSlugString",
                    "maxLength": 20,
                    "default": "{BUILD.TYPE}",
                    "description": "additional .env description tag (2nd), following the 1st, if enabled"
                },
                "tag3": {
                    "$ref": "#/definitions/ValueSlugString",
                    "maxLength": 10,
                    "default": "{BUILD.TARGET}|{BUILD.MODE}|{BUILD.LIBRARY}",
                    "description": "additional .env description tag (3rd), following the 2nd, if both the 1st and 2nd are enabled"
                },
                "timestamp": {
                    "type": "string",
                    "description": "formatter for timestamp portion of a logged entry",
                    "default": "{HH00}:{MM00}:{SS00}.{MS000}"
                }
            },
            "examples": [
            {
                "timestamp": "{HH}:{MM}:{SS}.{SSS}",
                "console": {
                    "enabled":  true
                }
            },
            {
                "timestamp": "{HH}:{MM}:{SS}",
                "file": {
                    "enabled":  true,
                    "path": "node_modules/.cache/wpw/log/{BUILD.NAME}/{BUILD.TARGET}/{YYYY}{MM}{DD}.log"
                }
            },
            {
                "timestamp": "{HH}.{MM}.{SS}.{SSS}",
                "console": {
                    "enabled":  true,
                    "pretty": true
                },
                "file": {
                    "enabled":  true,
                    "pretty": true,
                    "path": "node_modules/.cache/wpw/log/{BUILD.NAME}/{BUILD.TARGET}/{YYYY}{MM}{DD}.log"
                }
            }]
        },
        "WpwModuleName":
        {
            "$id": "#/WpwModuleName",
            "type": "string",
            "minLength": 3,
            "maxLength": 50,
            "pattern": "^(?:@[a-z0-9\\-_]{2,}\\/)?[a-z0-9\\-\\.\\/_]{3,}$",
            "description": "node module package name (with scope if applicable) specifying an external",
            "examples": [
                "webpack",
                "typescript"
            ]
        },
        "WpwModuleNameWithType":
        {
            "$id": "#/WpwModuleNameWithType",
            "type": "string",
            "minLength": 7,
            "maxLength": 70,
            "pattern": "^(?:[a-z\\-]{2,}2? )?(?:@[a-z0-9\\-\\.\\/_]{2,}\\/)?[a-z0-9\\-\\.\\/_]{3,}$",
            "description": "node module library type with package name (with scope if applicable) specifying an external with a specific import type to use",
            "examples": [
                "[library_type] [module_name]",
                "commonjs webpack",
                "commonjs vscode",
                "module glob"
            ]
        },
        "WpwPluginConfigBase":
        {
            "$id": "#/WpwPluginConfigBase",
            "type": "object",
            "required": [ "enabled" ],
            "additionalProperties": false,
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "default": false
                }
            },
            "examples": [{
                "enabled": true
            }]
        },
        "WpwPluginConfigBaseReadOnly":
        {
            "$id": "#/WpwPluginConfigBaseReadOnly",
            "type": "object",
            "required": [ "enabled" ],
            "additionalProperties": false,
            "readOnly": true,
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "default": false,
                    "readOnly": true
                }
            }
        },
        "WpwExportConfigBase":
        {
            "$id": "#/WpwExportConfigBase",
            "type": "object",
            "additionalProperties": false,
            "readOnly": true,
            "properties": {
                "enabled": {
                    "const": true,
                    "readOnly": true
                }
            }
        },
        "WpwOpenSslHashAlgorithm":
        {
            "$id": "#/WpwOpenSslHashAlgorithm",
            "oneOf": [{
                "const": "MD4"
            },{
                "const": "MD5"
            },{
                "const": "MD5-SHA1"
            },{
                "const": "MDC2"
            },{
                "const": "RIPEMD160"
            },{
                "const": "SHA1"
            },{
                "const": "SHA224"
            },{
                "const": "SHA256"
            },{
                "const": "SHA384"
            },{
                "const": "SHA512"
            },{
                "const": "SHA3-224"
            },{
                "const": "SHA3-256"
            },{
                "const": "SHA3-384"
            },{
                "const": "SHA3-512"
            },{
                "const": "SM3"
            }]
        },
        "WpwPluginOutputAssetEmitType":
        {
            "$id": "#/WpwPluginOutputAssetEmitType",
            "default": "vbuild",
            "oneOf": [{
                "const": "dist"
            },{
                "const": "none"
            },{
                "const": "src"
            },{
                "const": "vbuild"
            },{
                "const": "vdist"
            }]
        },
        "WpwPackageJson":
        {
            "$id": "#/WpwPackageJson",
            "type": "object",
            "readOnly": true,
            "additionalProperties": false,
            "properties": {
                "author": {
                    "$ref": "#/definitions/WpwPackageJsonAuthor"
                },
                "badges": {
                    "$ref": "#/definitions/StringArray"
                },
                "browser": {
                    "allOf": [{
                        "$ref": "#/definitions/FilePathJs"
                    },{
                        "$ref": "#/definitions/FilePathRelative"
                    }]
                },
                "bugs": {
                    "$ref": "#/definitions/WpwPackageJsonBugs"
                },
                "bundleDependencies": {
                    "$ref": "#/definitions/WpwPackageJsonDependencies"
                },
                "bundledDependencies": {
                    "$ref": "#/definitions/WpwPackageJsonDependencies"
                },
                "categories": {
                    "$ref": "#/definitions/StringArray"
                },
                "cpu": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 16
                },
                "dependencies": {
                    "$ref": "#/definitions/WpwPackageJsonDependencies"
                },
                "devDependencies": {
                    "$ref": "#/definitions/WpwPackageJsonDependencies"
                },
                "description": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 500
                },
                "devEngines": {
                    "$ref": "#/definitions/WpwPackageJsonEngines"
                },
                "displayName": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 100
                },
                "engines": {
                    "$ref": "#/definitions/WpwPackageJsonEngines"
                },
                "extensionDependencies": {
                    "$ref": "#/definitions/WpwPackageJsonDependencies"
                },
                "exports": {
                   "$ref": "#/definitions/WpwPackageJsonExports"
                },
                "files": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/FileOrDirectoryPath"
                    }
                },
                "homepage": {
                    "$ref": "#/definitions/UrlString"
                },
                "imports": {
                   "$ref": "#/definitions/WpwPackageJsonImports"
                },
                "main": {
                    "allOf": [{
                        "$ref": "#/definitions/FilePathJs"
                    },{
                        "$ref": "#/definitions/FilePathRelative"
                    }]
                },
                "module": {
                    "allOf": [{
                        "$ref": "#/definitions/FilePathJs"
                    },{
                        "$ref": "#/definitions/FilePathRelative"
                    }]
                },
                "name": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 60
                },
                "optionalDependencies": {
                    "$ref": "#/definitions/WpwPackageJsonDependencies"
                },
                "peerDependencies": {
                    "$ref": "#/definitions/WpwPackageJsonDependencies"
                },
                "publisher": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 60
                },
                "publishConfig": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 60
                },
                "repository": {
                    "$ref": "#/definitions/WpwPackageJsonRepository"
                },
                "scopedName": {
                    "$ref": "#/definitions/WpwPackageJsonScopedName"
                },
                "scripts": {
                    "$ref": "#/definitions/WpwPackageJsonScripts"
                },
                "sideEffects": {
                    "type": "boolean"
                },
                "type": {
                    "$ref": "#/definitions/WpwPackageJsonType"
                },
                "types": {
                    "allOf": [{
                        "$ref": "#/definitions/FilePathJs"
                    },{
                        "$ref": "#/definitions/FilePathRelative"
                    }]
                },
                "typescript": {
                    "$ref": "#/definitions/WpwPackageJsonTypescript"
                },
                "version": {
                    "$ref": "#/definitions/VersionString"
                }
            }
        },
        "WpwPackageJsonEngines":
        {
            "$id": "#/WpwPackageJsonEngines",
            "type": "object",
            "additionalProperties": true,
            "patternProperties": {
                "[\\w\\-/\\.:|@]+": {
                    "$ref": "#/definitions/VersionStringNpm"
                }
            }
        },
        "WpwPackageJsonAuthor":
        {
            "$id": "#/WpwPackageJsonAuthor",
            "oneOf": [{
                "type": "string"
            }, 
            {
                "type": "object",
                "additionalProperties": false,
                "required": [
                    "name"
                ],
                "properties":
                {
                    "name": {
                        "type": "string",
                        "maxLength": 64
                    },
                    "email": {
                        "$ref": "#/definitions/EmailAddress"
                    }
                }}
            ]
        },
        "WpwPackageJsonBugs":
        {
            "$id": "#/WpwPackageJsonBugs",
            "oneOf": [{
                "$ref": "#/definitions/UrlString"
            }, 
            {
                "type": "object",
                "additionalProperties": false,
                "required": [
                    "url"
                ],
                "properties":
                {
                    "email": {
                        "$ref": "#/definitions/EmailAddress"
                    },
                    "url": {
                        "$ref": "#/definitions/UrlString"
                    }
                }}
            ]
        },
        "WpwPackageJsonDependencies":
        {
            "$id": "#/WpwPackageJsonDependencies",
            "type": "object",
            "additionalProperties": true,
            "patternProperties": {
                "[\\w.:|@-]+": {
                    "$ref": "#/definitions/VersionStringNpm"
                }
            }
        },
        "WpwPackageJsonExports":
        {
            "$id": "#/WpwPackageJsonExports",
            "type": "object",
            "additionalProperties": true,
            "patternProperties": {
                "[\\w.:@-\\\\/~]+": {
                    "allOf": [{
                        "$ref": "#/definitions/FilePathJs"
                    },{
                        "$ref": "#/definitions/FilePathRelative"
                    }]
                }
            }
        },
        "WpwPackageJsonImports":
        {
            "$id": "#/WpwPackageJsonImports",
            "type": "object",
            "additionalProperties": true,
            "patternProperties": {
                "#[\\w.:@-\\\\/~]+": {
                    "allOf": [{
                        "$ref": "#/definitions/FilePathJs"
                    },{
                        "$ref": "#/definitions/FilePathRelative"
                    }]
                }
            }
        },
        "WpwPackageJsonRepository":
        {
            "$id": "#/WpwPackageJsonRepository",
            "oneOf": [{
                "type": "string",
                "minLength": 8,
                "maxLength": 100,
                "pattern": "^[\\w\\.\\-@/:]+$"
            }, 
            {
                "type": "object",
                "additionalProperties": false,
                "required": [
                    "type", "url"
                ],
                "properties":
                {
                    "type": {
                        "oneOf": [{
                            "const": "cvs"
                        },{
                            "const": "git"
                        },{
                            "const": "svn"
                        }]
                    },
                    "url": {
                        "$ref": "#/definitions/UrlString"
                    }
                }
            }]
        },
        "WpwPackageJsonScopedName":
        {
            "$id": "#/WpwPackageJsonScopedName",
            "type": "object",
            "readOnly": true,
            "additionalProperties": false,
            "required": [
                "name"
            ],
            "properties": {
                "name": {
                    "type": "string",
                    "readOnly": true
                },
                "scope": {
                    "type": "string",
                    "pattern": "@[a-z]+",
                    "readOnly": true
                }
            }
        },
        "WpwPackageJsonScripts":
        {
            "$id": "#/WpwPackageJsonScripts",
            "type": "object",
            "additionalProperties": true,
            "patternProperties": {
                "[\\w_\\-/\\.:|@]+": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 512
                }
            }
        },
        "WpwPackageJsonType":
        {
            "$id": "#/WpwPackageJsonType",
            "enum": [
                "module", "commonjs"
            ]
        },
        "WpwPackageJsonTypescript":
        {
            "$id": "#/WpwPackageJsonTypescript",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "definition": {
                    "$ref": "#/definitions/FilePath"
                }
            }
        },
        "WpwPluginConfigAnalyzeAnalyzer":
        {
            "$id": "#/WpwPluginConfigAnalyzeAnalyzer",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "browser": {
                    "$ref": "#/definitions/FilePathAbsolute",
                    "description": "path to browser executable to open and view results when build completes"
                },
                "open": {
                    "type": "boolean",
                    "description": "open and results when build completes using system default browser or browser specified by `analyzer.browser`"
                },
                "size": {
                    "$ref": "#/definitions/WpwPluginConfigAnalyzeAnalyzerSize"
                },
                "verbose": {
                    "type": "boolean"
                }
            },
            "examples": [{
                "enabled": true,
                "verbose": false,
                "browser": "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
                "output": {
                    "report": ".coverage/analyzer.html",
                    "stats": ".coverage/analyzer-stats.json"
                }
            }]
        },
        "WpwPluginConfigAnalyzeAnalyzerSize":
        {
            "$id": "#/WpwPluginConfigAnalyzeAnalyzerSize",
            "oneOf": [{
                "const": "gzip"
            },
            {
                "const": "parsed"
            },
            {
                "const": "stat"
            }]
        },
        "WpwPluginConfigAnalyzeCircular":
        {
            "$id": "#/WpwPluginConfigAnalyzeCircular",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                },
                "fail": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                }
            },
            "examples": [{
                "enabled": true,
                "fail": true
            },
            {
                "enabled": true,
                "fail": false
            }]
        },
        "WpwPluginConfigAnalyzeHooks":
        {
            "$id": "#/WpwPluginConfigAnalyzeHooks",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "description": "hook event logging for increased overview of how webpack stages are executed. enabled by default",
            "properties": {
                "enabled": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                },
                "compiler": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                },
                "compilation": {
                    "$ref": "#/definitions/WpwPluginConfigAnalyzeHooksCompilation"
                }
            },
            "examples": [{
                "enabled": true,
                "compiler": true,
                "compilation": {
                    "default": true
                }
            },
            {
                "enabled": true,
                "compiler": true,
                "compilation": {
                    "deprecated": false,
                    "hashing": false,
                    "optimization": false,
                    "processAssets": true
                }
            },
            {
                "enabled": false
            }],
            "if": {
                "properties": {
                    "enabled": {
                        "const": true
                    }
                }
            },
            "then": {
                "anyOf": [{
                    "required": [
                        "enabled",
                        "compiler"
                    ]
                },{
                    "required": [
                        "enabled",
                        "compilation"
                    ]
                }]
            }
        },
        "WpwPluginConfigAnalyzeHooksCompilation":
        {
            "$id": "#/WpwPluginConfigAnalyzeHooksCompilation",
            "type": "object",
            "minProperties": 1,
            "additionalProperties": false,
            "properties": {
                "all": {
                    "type": "boolean"
                },
                "default": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                },
                "deprecated": {
                    "type": "boolean"
                },
                "hash": {
                    "type": "boolean"
                },
                "optimization": {
                    "type": "boolean"
                },
                "processAssets": {
                    "type": "boolean"
                }
            },
            "examples": [{
                "default": true
            },{
                "all": true
            },{
                "all": false,
                "default": true,
                "deprecated": false,
                "optimization": false,
                "processAssets": true
            }]
        },
        "WpwPluginConfigAnalyzeProgress":
        {
            "$id": "#/WpwPluginConfigAnalyzeProgress",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                }
            }
        },
        "WpwPluginConfigAnalyzeVisualizer":
        {
            "$id": "#/WpwPluginConfigAnalyzeVisualizer",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                }
            }
        },
        "WpwPluginConfigBanner":
        {
            "$id": "#/WpwPluginConfigBanner",
            "type": "object",
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "jsdoc": {
                    "type": "boolean",
                    "description": "when set to `true`, all comments containing the jsdoc tag `@copyright` will be preserved / included in the bundled output file"
                },
                "jsdocTop": {
                    "type": "boolean",
                    "description": "when set to `true`, if the top level comment at the top of a source file contains the jsdoc tag `@copyright`, it will be preserved / included in the bundled output file (ignored if `jsdoc` is set)"
                },
                "text": {
                    "type": "string",
                    "minLength": 5,
                    "maxLength": 500,
                    "pattern": "^[\\w\\-\\.,&%#{} |\\(\\)@\\[\\]\\r\\n]+$"
                }
            },
            "examples": [{
                "enabled": true
            },
            {
                "enabled": true,
                "text": "Copyright #{DATE_STAMP_YEAR} [--My Name or Co.--], All RIghts Reserved"
            },
            {
                "enabled": false
            }],
            "if": {
                "required": [
                    "jsdoc", "jsdocTop"
                ]
            },
            "then": {
                "allOf": [{
                    "properties": {
                        "jsdoc": false,
                        "jsdocTop": false
                    }
                }, {
                    "properties": {
                        "jsdocTop": {
                            "description": "only one of either `jsdoc` or `jsdocTop` an be enabled"
                        }
                    }
                }]
            }
        },
        "WpwPluginConfigCopy":
        {
            "$id": "#/WpwPluginConfigCopy",
            "type": "object",
            "minProperties": 1,
            "additionalProperties": false,
            "required": [
                "items"
            ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "assets": {
                    "$ref": "#/definitions/WpwPluginOutputAssets"
                },
                "glob": {
                    "$ref": "#/definitions/PathGlob",
                    "description": "top level glob pattern applied to each `items` definition if a glob pattern is not defined for the specific item"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/WpwPluginInputOutputPath"
                    }
                }
            },
            "examples": [
            {
                "glob": "**/*.md",
                "items": [{
                    "to": "docs/help",
                    "from": "res/doc/help"
                }]
            },
            {
                "disabled": false,
                "items": [{
                    "glob": "*.md",
                    "to": "docs/welcome",
                    "from": "res/doc/welcome"
                },
                {
                    "glob": "**/*.{html,png,css}",
                    "to": "docs/help",
                    "from": "res/doc/help"
                },
                {
                    "glob": "**/*",
                    "disabled": true,
                    "to": "docs/testing/stuff",
                    "from": "res/doc/testing"
                }]
            }]
        },
        "WpwPluginConfigCtxMod":
        {
            "$id": "#/WpwPluginConfigCtxMod",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled", "items" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "items": {
                    "oneOf": [{
                        "$ref": "#/definitions/WpwPluginConfigCtxModItem"
                    },{
                        "type": "array",
                        "items": {
                            "$ref": "#/definitions/WpwPluginConfigCtxModItem"
                        }
                    }]
                }
            }
        },
        "WpwPluginConfigCtxModType":
        {
            "$id": "#/WpwPluginConfigCtxModType",
            "default": "replacement",
            "oneOf": [{
                "const": "exclusion"
            },{
                "const": "replacement"
            },{
                "const": "suppression",
                "description": "ignore the 'request of a dependency is an expression' for matching resources"
            }]
        },
        "WpwPluginConfigCtxModItem":
        {
            "$id": "#/WpwPluginConfigCtxModItem",
            "allOf": [{
                "$ref": "#/definitions/WpwConfigContextResourcePattern"
            },{
                "type": "object",
                "properties": {
                    "type": {
                        "$ref": "#/definitions/WpwPluginConfigCtxModType"
                    }
                }
            }]
        },
        "WpwPluginConfigDoc":
        {
            "$id": "#/WpwPluginConfigDoc",
            "type": "object",
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "configFile": {
                    "$ref": "#/definitions/FilePath"
                },
                "debug": {
                    "type": "boolean",
                    "description": "enables logging of debugging output from the jsdoc module as it runs"
                },
                "examplesDir": {
                    "$ref": "#/definitions/DirectoryPathRelative"
                },
                "readmeFile": {
                    "$ref": "#/definitions/FilePath"
                },
                "title": {
                    "type": "string",
                    "maxLength": 100,
                    "minLength": 3
                },
                "tutorialsDir": {
                    "$ref": "#/definitions/DirectoryPath"
                },
                "url": {
                    "$ref": "#/definitions/UrlString"
                },
                "verbose": {
                    "type": "boolean",
                    "description": "enables logging of detailed information from the jsdoc module as it runs"
                }
            }
        },
        "WpwPluginConfigDocDoxygen":
        {
            "$id": "#/WpwPluginConfigDocDoxygen",
            "$ref": "#/definitions/FilePathJson"
        },
        "WpwPluginConfigDocExtjsdoc":
        {
            "$id": "#/WpwPluginConfigDocExtjsdoc",
            "$ref": "#/definitions/FilePathJson"
        },
        "WpwPluginConfigDocJsdoc":
        {
            "$id": "#/WpwPluginConfigDocJsdoc",
            "required": [ "enabled", "mode" ],
            "allOf": [{
                "$ref": "#/definitions/WpwPluginConfigDoc"
            },
            {
                "type": "object",
                "properties": {
                    "mode": {
                        "$ref": "#/definitions/WpwPluginConfigDocJsdocMode"
                    },
                    "template": {
                        "$ref": "#/definitions/WpwPluginConfigDocJsdocTemplate"
                    },
                    "theme": {
                        "$ref": "#/definitions/WpwPluginConfigDocJsdocTheme"
                    }
                }
            }],
            "examples": [{
                "enabled": true,
                "mode": "auto",
                "title": "API DOcumentation"
            },
            {
                "enabled": true,
                "mode": "config",
                "title": "API DOcumentation",
                "configFile": "path/to/jsdoc.json"
            }],
            "dependencies": {
                "mode": {
                    "if": {
                        "properties": {
                            "mode": {
                                "const": "config"
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "configFile"
                        ]
                    }
                }
            }
        },
        "WpwPluginConfigDocJsdocMode":
        {
            "$id": "#/WpwPluginConfigDocJsdocMode",
            "default": "auto",
            "oneOf": [{
                "const": "auto",
                "description": "creates documentation using auto populated jsdoc configuration parameters"
            },{
                "const": "config",
                "description": "creates documentation using specified jsdoc json configuration file"
            }]
        },
        "WpwPluginConfigDocJsdocTemplate":
        {
            "$id": "#/WpwPluginConfigDocJsdocTemplate",
            "default": "clean-jsdoc-theme",
            "oneOf": [
            {
                "const": "clean-jsdoc-theme"
            },{
                "const": "jsdoc/default"
            },{
                "const": "docdash"
            },{
                "const": "jsdoc/haruki"
            },{
                "const": "jsdoc/silent"
            }]
        },
        "WpwPluginConfigDocJsdocTheme":
        {
            "$id": "#/WpwPluginConfigDocJsdocTheme",
            "default": "dark",
            "oneOf": [
            {
                "const": "dark"
            },{
                "const": "light"
            }]
        },
        "WpwPluginConfigEncoder":
        {
            "$id": "#/WpwPluginConfigEncoder",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled", "items" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "items": {
                    "oneOf": [{
                        "$ref": "#/definitions/WpwPluginConfigEncoderItem"
                    },{
                        "type": "array",
                        "items": {
                            "$ref": "#/definitions/WpwPluginConfigEncoderItem"
                        }
                    }]
                }
            }
        },
        "WpwPluginConfigEncoderItem":
        {
            "$id": "#/WpwPluginConfigEncoderItem",
            "type": "object",
            "minProperties": 2,
            "additionalProperties": false,
            "required": [
                "resource", "outputEncoding"
            ],
            "properties": {
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "resource": {
                    "$ref": "#/definitions/FileOrDirectoryPathRegex"
                },
                "inputEncoding": {
                    "$ref": "#/definitions/WpwPluginConfigEncoderInputEncoding"
                },
                "outputEncoding": {
                    "$ref": "#/definitions/WpwPluginConfigEncoderOutputEncoding"
                }
            }
        },
        "WpwPluginConfigEncoderInputEncoding":
        {
            "$id": "#/WpwPluginConfigEncoderInputEncoding",
            "oneOf": [{
                "const": "ascii"
            },{
                "const": "base64"
            },{
                "const": "big5"
            },{
                "const": "binary"
            },{
                "const": "cp932"
            },{
                "const": "cp9369"
            },{
                "const": "cp940"
            },{
                "const": "euc-jp"
            },{
                "const": "hex"
            },{
                "const": "iso-8859"
            },{
                "const": "iso-8859-1"
            },{
                "const": "iso-8859-16"
            },{
                "const": "latin1"
            },{
                "const": "ucs2"
            },{
                "const": "utf8"
            },{
                "const": "utf16le"
            },{
                "const": "utf32le"
            },{
                "const": "win1251"
            }]
        },
        "WpwPluginConfigEncoderOutputEncoding":
        {
            "$id": "#/WpwPluginConfigEncoderOutputEncoding",
            "oneOf": [{
                "const": "ascii"
            },{
                "const": "base64"
            },{
                "const": "binary"
            },{
                "const": "hex"
            },{
                "const": "latin1"
            },{
                "const": "utf8"
            },{
                "const": "utf16le"
            }]
        },
        "WpwPluginConfigGroupAnalyze":
        {
            "$id": "#/WpwPluginConfigGroupAnalyze",
            "type": "object",
            "required": [ "enabled" ],
            "default": {
                "enabled": true,
                "circular": {
                    "enabled": true,
                    "fail": true
                },
                "hooks": {
                    "enabled": true,
                    "compiler": true,
                    "compilation": {
                        "default": true
                    }
                }
            },
            "properties": {
                "enabled": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                },
                "analyzer": {
                    "$ref": "#/definitions/WpwPluginConfigAnalyzeAnalyzer"
                },
                "circular": {
                    "$ref": "#/definitions/WpwPluginConfigAnalyzeCircular"
                },
                "hooks": {
                    "$ref": "#/definitions/WpwPluginConfigAnalyzeHooks"
                },
                "progress": {
                    "$ref": "#/definitions/WpwPluginConfigAnalyzeProgress"
                },
                "stats": {
                    "$ref": "#/definitions/WpwPluginConfigStats"
                },
                "visualizer": {
                    "$ref": "#/definitions/WpwPluginConfigAnalyzeVisualizer"
                }
            },
            "examples": [{
                "enabled": true,
                "circular": {
                    "enabled": true
                },
                "hooks": {
                    "enabled": true
                },
                "stats": {
                    "enabled": false
                }
            },
            {
                "enabled": true,
                "analyzer": {
                    "enabled": false
                },
                "circular": {
                    "enabled": true
                },
                "hooks": {
                    "enabled": true
                },
                "progress": {
                    "enabled": false
                },
                "stats": {
                    "enabled": false
                },
                "visualizer": {
                    "enabled": false
                }
            }],
            "if": {
                "properties": {
                    "enabled": {
                        "const": true
                    }
                }
            },
            "then": {
                "anyOf": [{
                    "required": [
                        "enabled",
                        "analyzer"
                    ]
                }, {
                    "required": [
                        "enabled",
                        "circular"
                    ]
                }, {
                    "required": [
                        "enabled",
                        "hooks"
                    ]
                }, {
                    "required": [
                        "enabled",
                        "progress"
                    ]
                }, {
                    "required": [
                        "enabled",
                        "stats"
                    ]
                }, {
                    "required": [
                        "enabled",
                        "visualizer"
                    ]
                }]
            }
        },
        "WpwPluginConfigGroupDoc":
        {
            "$id": "#/WpwPluginConfigGroupDoc",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "jsdoc": {
                    "$ref": "#/definitions/WpwPluginConfigDocJsdoc"
                },
                "doxygen": {
                    "$ref": "#/definitions/WpwPluginConfigDocDoxygen"
                },
                "extjsdoc": {
                    "$ref": "#/definitions/WpwPluginConfigDocExtjsdoc"
                },
                "output": {
                    "$ref": "#/definitions/DirectoryPathRelative"
                }
            },
            "examples": [{
                "enabled": true,
                "jsdoc": {
                    "enabled": true,
                    "mode": "auto",
                    "title": "Source Code Documentation"
                }
            }, {
                "enabled": true,
                "doxygen": {
                    "enabled": false
                },
                "extjsdoc": {
                    "enabled": false
                },
                "jsdoc": {
                    "enabled": true,
                    "mode": "auto",
                    "title": "Source Code Documentation"
                }
            }],
            "if": {
                "properties": {
                    "enabled": {
                        "const": true
                    }
                }
            },
            "then": {
                "anyOf": [
                {
                    "required": [ "enabled", "doxygen" ]
                },
                {
                    "required": [ "enabled", "extjsdoc" ]
                },
                {
                    "required": [ "enabled", "jsdoc" ]
                }]
            }
        },
        "WpwPluginConfigGroupRelease":
        {
            "$id": "#/WpwPluginConfigGroupRelease",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "banner": {
                    "$ref": "#/definitions/WpwPluginConfigBanner"
                },
                "licensefiles": {
                    "$ref": "#/definitions/WpwPluginConfigBase"
                },
                "npmiso": {
                    "$ref": "#/definitions/WpwPluginConfigIsoRelease"
                },
                "pwa": {
                    "$ref": "#/definitions/WpwPluginConfigPwa"
                },
                "schema": {
                    "$ref": "#/definitions/WpwPluginConfigSchema"
                },
                "scm": {
                    "$ref": "#/definitions/WpwPluginConfigBase"
                },
                "typesiso": {
                    "$ref": "#/definitions/WpwPluginConfigIsoRelease"
                },
                "upload": {
                    "$ref": "#/definitions/WpwPluginConfigUpload"
                },
                "vsceiso": {
                    "$ref": "#/definitions/WpwPluginConfigIsoRelease"
                }
            },
            "examples": [{
                "enabled": true,
                "schema": {
                    "enabled": true
                }
            }, {
                "enabled": true,
                "doxygen": {
                    "enabled": false
                },
                "extjsdoc": {
                    "enabled": false
                },
                "jsdoc": {
                    "enabled": true
                }
            }],
            "if": {
                "properties": {
                    "enabled": {
                        "const": true
                    }
                }
            },
            "then": {
                "anyOf": [
                {
                    "required": [ "enabled", "doxygen" ]
                },
                {
                    "required": [ "enabled", "extjsdoc" ]
                },
                {
                    "required": [ "enabled", "jsdoc" ]
                }]
            }
        },
        "WpwPluginConfigHash":
        {
            "$id": "#/WpwPluginConfigHash",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "if `true`, content hash is used to track and differentiate asset content state"
                },
                "emitNoHash": {
                    "type": "boolean",
                    "description": "if `true`, content hash is tracked but is removed from hashed filenames of `all` js assets"
                },
                "emitAppNoHash": {
                    "type": "boolean",
                    "description": "if `true`, content hash is tracked but is removed from hashed filenames of `entry` assets, ignored if `emitNoHash` is set"
                }
            },
            "examples": [{
                "enabled": true,
                "emitNoHash": false,
                "emitAppNoHash": true
            }]
        },
        "WpwPluginConfigInfoProject":
        {
            "$id": "#/WpwPluginConfigInfoProject",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "changelog": {
                    "$ref": "#/definitions/FilePath"
                },
                "commit": {
                    "type": "boolean"
                },
                "path": {
                    "$ref": "#/definitions/DirectoryPath",
                    "description": "base project path of the 'info' project clone, relative or absolute"
                },
                "doc": {
                    "$ref": "#/definitions/DirectoryPath"
                },
                "enabled": {
                    "type": "boolean"
                },
                "items": {
                    "type": "array",
                    "description": "items or directories without a pre-defined flag, or defined items that need a glob / exclusion pattern applied when copied / cloned",
                    "items": {
                        "$ref": "#/definitions/WpwPluginConfigInfoProjectPath"
                    }
                },
                "license": {
                    "$ref": "#/definitions/FilePath"
                },
                "readme": {
                    "$ref": "#/definitions/FilePath"
                },
                "res": {
                    "$ref": "#/definitions/DirectoryPath"
                }
            },
            "examples": [
            {
                "enabled": true,
                "disabled": false,
                "commit": false,
                "changeog": "CHANGELOG",
                "doc": "docs",
                "readme": "README.md",
                "res": "static/resources",
                "path": "../my-app-info",
                "items": [{
                    "glob": "*.md",
                    "path": "docs/welcome"
                }]
            }]
        },
        "WpwPluginConfigInfoProjectPath":
        {
            "$id": "#/WpwPluginConfigInfoProjectPath",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "exclude": {
                    "type": "array",
                    "description": "regex pattern for exclusion (not glob pattern)",
                    "items": {
                        "$ref": "#/definitions/FileOrDirectoryPathRegex"
                    }
                },
                "path": {
                    "$ref": "#/definitions/FileOrDirectoryPath",
                    "description": "relative or absolute path to a file or directory"
                }
            }
        },
        "WpwPluginConfigIsoRelease":
        {
            "$id": "#/WpwPluginConfigIsoRelease",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "changelog": {
                    "oneOf": [{
                        "type": "boolean"
                    },{
                        "$ref": "#/definitions/FilePath",
                        "description": "path to changelog file, if not '/CHANGELOG.md'"
                    }],
                    "description": "emits existing or specified root changelog file to iso release directory"
                },
                "dist": {
                    "$ref": "#/definitions/DirectoryPath",
                    "description": "base directory where npm iso release files will be created, defaults to `build.paths.dist`, or if '' is enabled, defaults to `build.paths.dist`/npm|vsce"
                },
                "license": {
                    "default": true,
                    "oneOf": [{
                        "type": "boolean"
                    },{
                        "$ref": "#/definitions/FilePath",
                        "description": "path to changelog file, if not '/CHANGELOG.md'"
                    }],
                    "description": "emits existing or specified license file to iso release directory, if not 'LICENSE' or 'LICENSE.md'"
                },
                "nls": {
                    "oneOf": [{
                        "type": "boolean"
                    },{
                        "$ref": "#/definitions/FilePath",
                        "description": "path to readme file, if not '/README.md'"
                    }],
                    "description": "emits existing or specified package.nls.json language file to iso release directory"
                },
                "readme": {
                    "oneOf": [{
                        "type": "boolean"
                    },{
                        "$ref": "#/definitions/FilePath",
                        "description": "path to readme file, if not '/README.md'"
                    }],
                    "description": "emits existing or specified include readme file to iso release directory"
                },
                "removeProperties": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/WpwPluginConfigIsoReleaseProperty"
                    }
                },
                "packageJson": {
                    "$ref": "#/definitions/WpwPackageJson",
                    "description": "package.json overrides for this iso release (i.e. property value replacement / override)"
                },
                "packageJsonMinify": {
                    "type": "boolean",
                    "default": true
                }
            },
            "examples": [{
                "enabled": true,
                "changelog": false,
                "dist": "dist/vsce",
                "license": true,
                "nls": false,
                "readme": false,
                "removeProperties": [
                    "devDependencies", "files", "publishConfig", "scripts"
                ]
            }]
        },
        "WpwPluginConfigIsoReleaseProperty":
        {
            "$id": "#/WpwPluginConfigIsoReleaseProperty",
            "default": [ "devDependencies", "scripts" ],
            "additionalItems": false,
            "oneOf": [{
                "const": "ap"
            },{
                "const": "author"
            },{
                "const": "bugs"
            },{
                "const": "devDependencies"
            },{
                "const": "files"
            },{
                "const": "funding"
            },{
                "const": "homepage"
            },{
                "const": "keywords"
            },{
                "const": "optionalDependencies"
            },{
                "const": "overrides"
            },{
                "const": "peerDependencies"
            },{
                "const": "publishConfig"
            },{
                "const": "repository"
            },{
                "const": "scripts"
            },{
                "const": "sideEffects"
            },{
                "const": "type"
            },{
                "const": "wpw"
            }]
        },
        "WpwPluginConfigIstanbul":
        {
            "$id": "#/WpwPluginConfigIstanbul",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "protectRequires": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                }
            },
            "examples": [
            {
                "enabled": true,
                "protectRequires": true
            }]
        },
        "WpwPluginConfigMocha":
        {
            "$id": "#/WpwPluginConfigMocha",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "slow": {
                    "type": "number",
                    "minimum": 1000
                },
                "colors": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                },
                "baseDir": {
                    "$ref": "#/definitions/DirectoryPath"
                },
                "files": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/FilePath"
                    }
                }
            },
            "dependencies": {
                "baseDir": {
                    "if": {
                        "properties": {
                            "baseDir": true
                        }
                    },
                    "then": {
                        "properties": {
                            "files": false
                        }
                    }
                },
                "files": {
                    "if": {
                        "properties": {
                            "files": true
                        }
                    },
                    "then": {
                        "properties": {
                            "baseDir": false
                        }
                    }
                }
            },
            "examples": [
            {
                "enabled": true,
                "slow": 2500,
                "colors": true
            },
            {
                "enabled": false
            }]
        },
        "WpwPluginConfigPwa":
        {
            "$id": "#/WpwPluginConfigPwa",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                }
            }
        },
        "WpwPluginConfigPolyfill":
        {
            "$id": "#/WpwPluginConfigPolyfill",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "all": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                },
                "custom": {
                    "$ref": "#/definitions/WpwPluginConfigPolyfillModulesCustom" 
                },
                "exclude": {
                    "$ref": "#/definitions/WpwPluginConfigPolyfills"
                },
                "ignore": {
                    "$ref": "#/definitions/WpwPluginConfigPolyfills"
                },
                "include": {
                    "$ref": "#/definitions/WpwPluginConfigPolyfills"
                },
                "mode": {
                    "$ref": "#/definitions/WpwPluginConfigPolyfillMode",
                    "description": "defaults to `splitchunk` for app type builds and `bundle` for lib type builds named '*.pf.*' or '*.polyfill.*', otherwise `external`"
                },
                "nodeProtocolUrl": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                }

            },
            "examples": [{
                "enabled": true
            }, {
                "enabled": true,
                "all": true,
                "mode": "bundle",
                "nodeProtocolUrl": true
            }, {
                "enabled": true,
                "all": false,
                "mode": "bundle",
                "nodeProtocolUrl": true,
                "modules": {
                    "buffer": true,
                    "fs": false,
                    "os": true,
                    "path": true
                }
            }],
            "dependencies": {
                "all": {
                    "if": {
                        "properties": {
                            "all": {
                                "const": false
                            }
                        }
                    },
                    "then": {
                        "anyOf": [{
                            "required": [ "custom" ]
                        },{
                            "required": [ "include" ]
                        },{
                            "required": [ "include", "custom" ]
                        }]
                    }
                }
            }
        },
        "WpwPluginConfigPolyfillModulesCustom":
        {
            "$id": "#/WpwPluginConfigPolyfillModulesCustom",
            "type": "object",
            "minProperties": 1,
            "patternProperties": {
                "^[\\w\\-/]+$": {
                    "$ref": "#/definitions/DirectoryPathRelativeFwdSlash"
                }
            },
            "propertyNames": {
                "pattern": "^[\\w\\-/]+$"
            }
        },
        "WpwPluginConfigPolyfillModuleBin":
        {
            "$id": "#/WpwPluginConfigPolyfillModuleBin",
            "oneOf": [{
                "const": "assert"
            }, {
                "const": "buffer"
            }, {
                "const": "child_process"
            }, {
               "const":  "cluster"
            }, {
                "const": "console"
            }, {
                "const": "constants"
            }, {
                "const": "crypto"
            }, {
                "const": "dgram"
            }, {
                "const": "dns"
            }, {
                "const": "domain"
            }, {
                "const": "events"
            }, {
                "const": "fs"
            }, {
                "const": "http"
            }, {
                "const": "https"
            }, {
                "const": "http2"
            }, {
                "const": "module"
            }, {
                "const": "net"
            }, {
                "const": "os"
            }, {
                "const": "path"
            }, {
                "const": "process"
            }, {
                "const": "punycode"
            }, {
                "const": "querystring"
            }, {
                "const": "readline"
            }, {
                "const": "repl"
            }, {
                "const": "stream"
            }, {
                "const": "_stream_duplex"
            }, {
                "const": "_stream_passthrough"
            }, {
                "const": "_stream_readable"
            }, {
                "const": "_stream_transform"
            }, {
                "const": "_stream_writable"
            }, {
                "const": "string_decoder"
            }, {
                "const": "sys"
            }, {
                "const": "timers"
            }, {
                "const": "timers/promises"
            }, {
                "const": "tls"
            }, {
                "const": "tty"
            }, {
                "const": "url"
            }, {
                "const": "util"
            }, {
                "const": "vm"
            }, {
                "const": "zlib"
            }]
        },
        "WpwPluginConfigPolyfillMode":
        {
            "$id": "#/WpwPluginConfigPolyfillMode",
            "oneOf": [{
                "const": "bundle"
            },{
                "const": "external"
            },{
                "const": "splitchunk"
            }]
        },
        "WpwPluginConfigPolyfills":
        {
            "$id": "#/WpwPluginConfigPolyfills",
            "type": "array",
            "items": {
                "$ref": "#/definitions/WpwPluginConfigPolyfillModuleBin"
            }
        },
        "WpwPluginConfigProvide":
        {
            "$id": "#/WpwPluginConfigProvide",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled", "config" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "config": {
                    "$ref": "#/definitions/WpwPluginConfigProvideRawConfig"
                }
            }
        },
        "WpwPluginConfigProvideRawConfig":
        {
            "$id": "#/WpwPluginConfigProvideRawConfig",
            "type": "object",
            "minProperties": 1,
            "propertyNames": {
                "pattern": "^[\\w\\-/]+$"
            },
            "patternProperties": {
                "^[\\w\\-/]+$": {
                    "oneOf": [{
                        "type": "string"
                    },{
                         "$ref": "#/definitions/StringArray"
                    }]
                }
            }
        },
        "WpwPluginConfigAppPublisher":
        {
            "$id": "#/WpwPluginConfigAppPublisher",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "description": "app-publisher integration for releases (npm install @spmhome/app-publisher)",
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "ap": {
                    "type": "object",
                    "minProperties": 1,
                    "additionalProperties": true,
                    "description": "properties (overrides) to be applied directly to the underlying app-publisher configuration"
                },
                "configKey": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 16,
                    "description": "config file key (i.e. .spmhrc.__key__.json)"
                },
                "dryRun": {
                    "type": "boolean"
                },
                "github": {
                    "type": "boolean"
                },
                "gitlab": {
                    "type": "boolean"
                },
                "mantis": {
                    "type": "boolean"
                },
                "npm": {
                    "type": "boolean"
                },
                "onCmdLineOnly": {
                    "$ref": "#/definitions/BooleanDefaultTrue",
                    "description": "run release options only when the `--env release` command line flag is set"
                },
                "preVersion": {
                    "$ref": "#/definitions/WpwPluginConfigReleasePreVersion"
                },
                "printVersionsOnly": {
                    "type": "boolean"
                },
                "promptVersion": {
                    "type": "boolean"
                },
                "verbose": {
                    "type": "boolean"
                },
                "veryVerbose": {
                    "type": "boolean"
                }
            },
            "examples": [{
                "enabled": false,
                "printVersionsOnly": true
            },
            {
                "enabled": true,
                "dryRun": true,
                "npm": true
            },
            {
                "enabled": false
            },
            {
                "enabled": false,
                "configKey": "",
                "dryRun": false,
                "github": false,
                "gitlab": false,
                "mantis": false,
                "npm": true,
                "onCmdLineOnly": true,
                "preVersion": "",
                "promptVersion": false,
                "verbose": false,
                "veryVerbose": false
            }],
            "dependencies": {
                "onCmdLineOnly": {
                    "minProperties": 2
                },
                "github": {
                    "if": {
                        "properties": {
                            "github": {
                                "const": true
                            }
                        }
                    },
                    "then": {
                        "anyOf": [{
                            "properties": {
                                "gitlab": false
                            }
                        },
                        {
                            "properties": {
                                "gitlab": {
                                    "const": false
                                }
                            }
                        }]
                    }
                },
                "gitlab": {
                    "if": {
                        "properties": {
                            "gitlab": {
                                "const": true
                            }
                        }
                    },
                    "then": {
                        "anyOf": [{
                            "properties": {
                                "github": false
                            }
                        },
                        {
                            "properties": {
                                "github": {
                                    "const": false
                                }
                            }
                        }]
                    }
                }
            },
            "if": {
                "properties": {
                    "enabled": {
                        "const": true
                    }
                }
            },
            "then": {
                "anyOf": [{
                    "required": [ "github" ]
                },
                {
                    "required": [ "gitlab" ]
                },
                {
                    "required": [ "mantis" ]
                },
                {
                    "required": [ "npm" ]
                },
                {
                    "required": [ "printVersionsOnly" ]
                }]
            }
        },
        "WpwPluginConfigReleasePreVersion":
        {
            "$id": "#/WpwPluginConfigReleasePreVersion",
            "enum": [
                "alpha", "beta", "gamma", "pre", "test"
            ]
        },
        "WpwPluginConfigResource":
        {
            "$id": "#/WpwPluginConfigResource",
            "type": "object",
            "additionalProperties": false,
            "required": [ "input", "output" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "assets": {
                    "$ref": "#/definitions/WpwPluginOutputAssets"
                },
                "glob": {
                    "$ref": "#/definitions/PathGlob",
                    "description": "top level glob pattern applied to each `items` definition if a glob pattern is not defined for the specific item"
                },
                "input": {
                    "oneOf": [{
                        "$ref": "#/definitions/DirectoryPathRelative"
                        
                    },{
                        "type": "array",
                        "items": {
                            "$ref": "#/definitions/DirectoryPathRelative"
                        }
                    }]
                },
                "output": {
                    "$ref": "#/definitions/DirectoryPathRelative"
                }
            },
            "examples": [
            {
                "disabled": false,
                "glob": "**/*.md",
                "items": [{
                    "to": "docs/help",
                    "from": "res/doc/help"
                }]
            },
            {
                "disabled": false,
                "items": [{
                    "glob": "*.md",
                    "to": "docs/welcome",
                    "from": "res/doc/welcome"
                },
                {
                    "glob": "**/*.{html,png,css}",
                    "to": "docs/help",
                    "from": "res/doc/help"
                },
                {
                    "glob": "**/*",
                    "disabled": true,
                    "to": "docs/testing/stuff",
                    "from": "res/doc/testing"
                }]
            }]
        },
        "WpwPluginConfigRollup":
        {
            "$id": "#/WpwPluginConfigRollup",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled", "entry" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "args": {
                     "$ref": "#/definitions/StringArray"
                },
                "entry": {
                    "$ref": "#/definitions/WpwPluginConfigRollupPath"
                },
                "external": {
                    "$ref": "#/definitions/WpwExportConfigExternalsModules"
                },
                "file": {
                    "$ref": "#/definitions/WpwPluginConfigRollupPath"
                },
                "format": {
                    "$ref": "#/definitions/WpwPluginConfigRollupOutputFormat"
                }
            }
        },
        "WpwPluginConfigRollupPath":
        {
            "$id": "#/WpwPluginConfigRollupPath",
            "oneOf": [
            {
                "$ref": "#/definitions/FilePathRelative"
            },
            {
                "$ref": "#/definitions/FilePathRelativeLeadingDot"
            }]
        },
        "WpwPluginConfigRollupOutputFormat":
        {
            "$id": "#/WpwPluginConfigRollupOutputFormat",
            "default": "esm",
            "enum": [ "commonjs", "esm" ]
        },
        "WpwPluginConfigRunScripts":
        {
            "$id": "#/WpwPluginConfigRunScripts",
            "type": "object",
            "additionalProperties": false,
            "required": [ "items" ],
            "properties": {
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "assets": {
                    "$ref": "#/definitions/WpwPluginOutputAssets"
                },
                "emitType": {
                    "$ref": "#/definitions/WpwPluginOutputAssetEmitType"
                },
                "enabled": {
                    "type": "boolean"
                },
                "hook": {
                    "$ref": "#/definitions/WpwWebpackCompilerHook"
                },
                "hookAsync": {
                    "$ref": "#/definitions/BooleanDefaultTrue",
                    "description": "By default, a hook is ran async if supported by the specified hook]. To force the hook to run in sync mode, set to `false`.  If the specified hook is does not support an async hook (e.g. 'initialize', 'afterDone'), this flag has no effect"
                },
                "hookCompilation": {
                    "$ref": "#/definitions/WpwWebpackCompilationHook"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/WpwPluginConfigScriptDef"
                    }
                },
                "mode": {
                    "$ref": "#/definitions/WpwPluginConfigScriptMode"
                },
                "stage": {
                    "$ref": "#/definitions/WpwWebhookCompilationHookStage"
                },
                "stdout": {
                    "type": "boolean",
                    "description": "pipe script stdout to executing process console"
                },
                "timeout": {
                    "$ref": "#/definitions/WpwPluginConfigTimeout"
                }
            },
            "examples": [{
                "type": "node_script",
                "path": "path/to/script.js",
                "args": [
                    "--arg1flag --arg2value positional_cl_value"
                ],
                "paths": {
                    "output": "path/to/output/file_or_dir",
                    "input": [
                        "path/to/dependency/file_or_dir1", "path/to/dependency/file_or_dir2"
                    ]
                }
            }],
            "dependencies": {
                "hook": {
                    "if": {
                        "properties": {
                            "hook": {
                                "const": "compilation"
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "hook", "hookCompilation", "items"
                        ]
                    },
                    "else": {
                        "required": [
                            "hook", "items"
                        ],
                        "properties": {
                            "stage": false,
                            "hookCompilation": false
                        }
                    }
                },
                "hookCompilation": {
                    "if": {
                        "properties": {
                            "hookCompilation": {
                                "const": "processAssets"
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "hook", "hookCompilation", "items", "stage"
                        ],
                        "properties": {
                            "hook": {
                                "const": "compilation"
                            },
                            "stage": true
                        }
                    }
                },
                "stage": {
                    "if": {
                        "properties": {
                            "stage": true
                        }
                    },
                    "then": {
                        "required": [
                            "hook", "hookCompilation", "items", "stage"
                        ],
                        "properties": {
                            "hook": {
                                "const": "compilation"
                            },
                            "hookCompilation": {
                                "const": "processAssets"
                            }
                        }
                    }
                }
            }
        },
        "WpwPluginConfigSchema":
        {
            "$id": "#/WpwPluginConfigSchema",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled", "jsonPath" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "jsonPath": {
                    "$ref": "#/definitions/DirectoryPathRelative",
                    "description": "path to the root folder conaining the project's json schema files all using naming convention `*.schema.js`, e.g. 'spmh.wpw.schema.json'"
                },
                "minify": {
                    "type": "boolean",
                    "description": "output asset minification"
                },
                "scripts": {
                    "$ref": "#/definitions/WpwPluginConfigRunScripts"
                },
                "upload": {
                    "$ref": "#/definitions/WpwConfigApiEndpoint"
                },
                "validate": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                }
            },
            "examples": [{
                "enabled": true,
                "validate": false,
                "jsonPath": "schema",
                "scripts": {
                    "mode": "parallel",
                    "hookAsync": true,
                    "hook": "beforeCompile",
                    "assets": {
                        "tag": "schema", "immutable": false, "emitType": "dist", "glob": "**/*.{json,d.ts}", "input": [ "rc/interface.js" ], "output": [ "types/schema", "types/interface"]
                    },
                    "items": [{
                        "type": "node_script", "path": "scripts/cleanup.js", "args": [ "--someflag", "--positional_param", "positional_param_value" ]
                    },
                    {
                        "type": "node_module", "command": "rimraf", "args": [ "-g", "dist/**/*.js" ]
                    }]
                },
                "upload": {
                    "protocol": "pscp",
                    "host": "www.xyz.com", "method": "program",
                    "path": "/var/www/xyz.com/public/res/app.name",
                    "credential": {
                        "key": "${REPLACED_ENVVAR_PLINK_KEY}",
                        "user": "${REPLACED_ENVVAR_PLINK_USER}"
                    }
                }
            },{
                "enabled": true,
                "validate": true,
                "emitType": "dist",
                "jsonPath": "public/schema",
                "upload": {
                    "method": "post",
                    "protocol": "https",
                    "host": "app.xyz.com",
                    "path": "/api/v1/schema/app.name",
                    "credential": {
                        "key": "${REPLACED_ENVVAR_PLINK_KEY}",
                        "user": "${REPLACED_ENVVAR_PLINK_USER}"
                    }
                }
            }]
        },
        "WpwPluginConfigScript":
        {
            "$id": "#/WpwPluginConfigScript",
            "type": "object",
            "additionalProperties": false,
            "required": [ "items" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "assets": {
                    "$ref": "#/definitions/WpwPluginOutputAssets"
                },
                "emitType": {
                    "$ref": "#/definitions/WpwPluginOutputAssetEmitType"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/WpwPluginConfigScriptDef"
                    }
                },
                "minify": {
                    "type": "boolean",
                    "description": "output asset minification"
                },
                "mode": {
                    "$ref": "#/definitions/WpwPluginConfigScriptMode"
                },
                "stdout": {
                    "type": "boolean",
                    "description": "pipe script stdout to executing process console"
                },
                "timeout": {
                    "$ref": "#/definitions/WpwPluginConfigTimeout"
                }
            },
            "examples": [
            {
                "enabled": true,
                "minify": false,
                "mode": "inline",
                "assets": {
                    "tag": "welcome",
                    "immutable": false
                },
                "items": [{
                    "type": "node_script",
                    "path": "scripts/make-welcome.js",
                    "args": [ "--someflag", "--positional_param", "positional_param_value" ]
                },
                {
                    "type": "cmd_shell",
                    "command": "npx",
                    "args": [ "copyfiles", "--up", "1", "--all", "--verbose", "doc/help/welcome/**/*", "dist/doc/welcome\\*" ]
                },
                {
                    "command": "npx",
                    "args": [ "rimraf", "-g", "dist/**/*.js" ]
                }]
            },
            {
                "enabled": true,
                "mode": "parallel",
                "minify": true,
                "items": [{
                    "command": "node scripts/mk-webp-img.js",
                    "paths": {
                        "input": [
                            "res/img", "scripts/mk-webp-img.js"
                        ],
                        "output": "dist/res/img"
                    }
                },
                {
                    "path": "node",
                    "args": [ "scripts/mk-src-listing.js", "--glob", "src/**/*.js" ],
                    "paths": {
                        "input": [
                            "src", "scripts/mk-src-listing.js"
                        ],
                        "output": "dist/doc/listing"
                    }
                },
                {
                    "command": "rimraf",
                    "args": [ "-g", "dist/**/*.js" ]
                }]
            },
            {
                "enabled": true,
                "mode": "parallel",
                "items": [{
                    "command": "node",
                    "args": [ "scripts/cleanup.js", "--someflag", "--positional_param", "positional_param_value" ]
                },
                {
                    "command": "npx",
                    "args": [ "rimraf", "-g", "dist/**/*.js" ]
                }]
            }]
        },
        "WpwPluginConfigScriptCmd":
        {
            "$id": "#/WpwPluginConfigScriptCmd",
            "type": "string",
            "maxLength": 64,
            "minLength": 4
        },
        "WpwPluginConfigScriptDef":
        {
            "$id": "#/WpwPluginConfigScriptDef",
            "type": "object",
            "additionalProperties": false,
            "required": [ "command" ],
            "properties": {
                "args": {
                     "$ref": "#/definitions/StringArray"
                },
                "command": {
                    "$ref": "#/definitions/WpwPluginConfigScriptCmd"
                },
                "paths": {
                    "$ref": "#/definitions/WpwPluginInputOutputPaths"
                },
                "skipSanityCheck": {
                    "type": "boolean"
                },
                "timeout": {
                    "$ref": "#/definitions/WpwPluginConfigTimeout"
                }
            },
            "examples": [{
                "path": "node",
                "args": [
                    "path/to/script.js", "--arg1flag", "--arg2value positional_cl_value"
                ],
                "paths": {
                    "output": "path/to/output/file_or_dir",
                    "input": [
                        "path/to/dependency/file_or_dir1",
                        "path/to/dependency/file_or_dir2"
                    ]
                }
            },{
                "command": "npm run create-schema",
                "paths": {
                    "output": "path/to/output/file_or_dir",
                    "input": [
                        "path/to/dependency/file_or_dir2"
                    ]
                }
            },{
                "command": "app-publisher --no-ci --task-version-next",
                "paths": {
                    "output": [
                        "package.json",
                        "package-lock.json",
                        "CHANGELOG.md"
                    ],
                    "input": [
                        "path/to/dependency/file_or_dir"
                    ]
                }
            },
            {
                "command": "tsc",
                "args": [
                    "-p", "./tsconfig.json"
                ],
                "paths": {
                    "output": "path/to/output/file_or_dir",
                    "input": [
                        "path/to/dependency/file_or_dir1", "path/to/dependency/file_or_dir2"
                    ]
                }
            }]
        },
        "WpwPluginConfigScriptMode":
        {
            "$id": "#/WpwPluginConfigScriptMode",
            "default": "parallel",
            "description": "",
            "oneOf": [{
                "const": "parallel"
            },
            {
                "const": "inline"
            }]
        },
        "WpwPluginConfigShebang":
        {
            "$id": "#/WpwPluginConfigShebang",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "force": {
                    "type": "boolean"
                },
                "text": {
                    "type": "string"
                }
            },
            "examples": [{
                "enabled": true,
                 "force": false,
                "text": "#!/usr/bin/env node"
            }]
        },
        "WpwPluginConfigStats":
        {
            "$id": "#/WpwPluginConfigStats",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                },
                "failOnWarnings": {
                    "type": "boolean"
                },
                "telemetry": {
                    "$ref": "#/definitions/BooleanDefaultTrue"
                },
                "upload": {
                    "$ref": "#/definitions/WpwConfigApiEndpoint"
                }
            },
            "examples": [{
                "enabled": true,
                "telemetry": true,
                "upload": {
                    "protocol": "pscp",
                    "method": "program",
                    "host": "https://api.mydomain.com/api/v1",
                    "credential": {
                        "key": "${REPLACED_ENVVAR_PLINK_KEY}",
                        "user": "${REPLACED_ENVVAR_PLINK_USER}"
                    }
                }
            }]
        },
        "WpwPluginConfigTsCheck":
        {
            "$id": "#/WpwPluginConfigTsCheck",
            "type": "object",
            "required": [ "enabled" ],
            "additionalProperties": false,
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "javascript": {
                    "$ref": "#/definitions/WpwPluginConfigTsCheckJs"
                }
            },
            "examples": [{
                "enabled": true,
                "javascript": {
                    "enabled": false
                }
            },
            {
                "enabled": true,
                "javascript": {
                    "enabled": true,
                    "mode": "entry"
                }
            },
            {
                "enabled": false
            }]
        },
        "WpwPluginConfigTsCheckJs":
        {
            "$id": "#/WpwPluginConfigTsCheckJs",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "mode": {
                    "$ref": "#/definitions/WpwPluginConfigTsCheckJsMode"
                },
                "cmd": {
                    "type": "string",
                    "pattern": "^tsc [\\-]{1,2}[a-z]+.+?$"
                }
            },
            "dependencies": {
                "mode": {
                    "if": {
                        "properties": {
                            "mode": {
                                "const": "custom"
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "enabled", "cmd"
                        ]
                    },
                    "else": {
                        "required": [
                            "enabled", "mode"
                        ]
                    }
                }
            }
        },
        "WpwPluginConfigTsCheckJsMode":
        {
            "$id": "#/WpwPluginConfigTsCheckJsMode",
            "oneOf": [
            {
                "const": "custom",
                "description": "provide a custom tsc command w/ arguments to be used for running check"
            },
            {
                "const": "entry",
                "description": "use entry points as tsc source argument when running check"
            },
            {
                "const": "files",
                "description": "use project files (output from tsc --showConfig) as tsc source argument when running check"
            },
            {
                "const": "project",
                "description": "use project/config file as tsc source argument when running check"
            }]
        },
        "WpwPluginConfigTimeout":
        {
            "$id": "#/WpwPluginConfigTimeout",
            "type": "number",
            "default": 30000,
            "minimum": 5000,
            "maximum": 300000,
            "description": "timeout in milliseconds"
        },
        "WpwPluginConfigTypes":
        {
            "$id": "#/WpwPluginConfigTypes",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "bundle": {
                   "$ref": "#/definitions/WpwPluginConfigTypesBundle"
                },
                "configFileNone": {
                     "type": "boolean"
                },
                "declare": {
                    "type": "array",
                    "description": "external module declarations for imports that may not resolve for a dependent project when viewing type definition files",
                    "items": {
                        "$ref": "#/definitions/ValueSlugString"
                    }
                },
                "entry": {
                    "$ref": "#/definitions/FilePathRelativeLeadingDot",
                    "description": "can be used to set the path to the entry point source file if it cannot be auto-located"
                },
                "method": {
                    "$ref": "#/definitions/WpwPluginConfigTypesMethod"
                },
                "mode": {
                    "$ref": "#/definitions/WpwPluginConfigTypesMode"
                },
                "timeout": {
                    "$ref": "#/definitions/WpwPluginConfigTimeout"
                }
            },
            "examples": [{
                "enabled": true,
                "method": "program",
                "mode": "plugin"
            },{
                "enabled": true,
                "method": "tsc",
                "mode": "plugin",
                "bundle": {
                    "enabled": true,
                    "bundler": "tsc"
                }
            },{
                "enabled": true,
                "method": "program",
                "mode": "plugin",
                "bundle": {
                    "enabled": true,
                    "bundler": "spmh",
                    "spmh": {
                        "outputAsModuleFolder": true
                    }
                }
            }]
        },
        "WpwPluginConfigTypesBundle":
        {
            "$id": "#/WpwPluginConfigTypesBundle",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "bundler": {
                    "$ref": "#/definitions/WpwPluginConfigTypesBundler"
                },
                "declare": {
                    "$ref": "#/definitions/WpwPluginConfigTypesBundleDeclare",
                    "description": "modification mode for module declaration syntax (i.e. 'declare module \"???-mod-???\") in the output bundle"
                },
                "entry": {
                    "$ref": "#/definitions/FileOrDirectoryPath",
                    "description": "relative path to the main entry file, or directory - if not specifoed, or a directory is specified, types are generated for all files/modules"
                },
                "internal": {
                    "type": "array",
                    "description": "module names to exclude from the type definition file's consumable exports, i.e. will not be prepended with the npm package name",
                    "items": {
                        "$ref": "#/definitions/ModuleImportExportPath"
                    }
                },
                "name": {
                    "$ref": "#/definitions/FilePathOutput",
                    "description": "bundle name, can be a prefixed w/ a path relative to `paths.dist` | defaults to 'types.d.ts'"
                },
                "spmh": {
                    "$ref" : "#/definitions/WpwPluginConfigTypesBundleSpmh"
                }
            },
            "examples": [{
                "enabled": true,
                "removeSource": false,
                "bundler": "tsc"
            },{
                "enabled": true,
                "bundler": "program",
                "name": "types/index.d.ts"
            },{
                "enabled": true,
                "removeSource": false,
                "bundler": "spmh",
                "spmh": {
                    "outputFile": "types.d.ts"
                }
            }],
            "if": {
                "properties": {
                    "bundler": {
                        "const": "spmh"
                    }
                }
            },
            "then": {
                "required": [
                    "spmh"
                ]
            }
        },
        "WpwPluginConfigTypesBundleDeclare":
        {
            "$id": "#/WpwPluginConfigTypesBundleDeclare",
            "default": "none",
            "description": "the library / program / package to use for bundling",
            "oneOf": [{
                "const": "index",
                "description": "add a package all-inclusive module declaration (i,e, 'declare module\"npm-pkg-name\") that exports all declared 'index' modules"
            },
            {
                "const": "single",
                "description": "add a package all-inclusive module declaration (i,e, 'declare module\"npm-pkg-name\") that exports all declared modules"
            },
            {
                "const": "multi",
                "description": "prepend all module declarations (i,e, 'declare module\"...\") with the package name e.g. 'declare module \"common\" -> 'declare module \"npm-pkg-name/common\""
            },
            {
                "const": "none",
                "description": "no modifications will be made to the bundler's module declarations"
            }]
        },
        "WpwPluginConfigTypesBundleMode":
        {
            "$id": "#/WpwPluginConfigTypesFileMode",
            "default": "file",
            "oneOf": [{
                "const": "directory"
            },
            {
                "const": "directoryRecurse"
            },
            {
                "const": "file"
            }]
        },
        "WpwPluginConfigTypesBundleSpmh":
        {
            "$id": "#/WpwPluginConfigTypesBundleSpmh",
            "type": "object",
            "additionalProperties": false,
            "required": [ "baseDir" ],
            "properties": {
                "baseDir": {
                    "$ref": "#/definitions/DirectoryPath"
                },
                "headerPath": {
                    "$ref": "#/definitions/FilePath"
                },
                "headerText": {
                    "type": "string",
                    "maxLength": 256
                },
                "main": {
                    "$ref": "#/definitions/FileOrDirectoryPath",
                    "description": "relative path to the main entry file, or directory - if a directory is specified, types are generated for all files/modules, defaults to `options.types.bundle.entry` is used"
                },
                "mode": {
                    "$ref" : "#/definitions/WpwPluginConfigTypesBundleMode"
                },
                "out": {
                    "$ref": "#/definitions/FileName",
                    "description": "output file name (ending in .d.ts)"
                },
                "outputAsModuleFolder": {
                    "type": "boolean",
                    "description": "output with module folder structure as opposed to module namespaces"
                },
                "removeSource": {
                    "type": "boolean"
                },
                "timeout": {
                    "$ref": "#/definitions/WpwPluginConfigTimeout"
                }
            }
        },
        "WpwPluginConfigTypesBundler":
        {
            "$id": "#/WpwPluginConfigTypesBundler",
            "default": "tsc",
            "description": "the library / program / package to use for bundling",
            "oneOf": [{
                "const": "program"
            },
            {
                "const": "spmh"
            },
            {
                "const": "tsc"
            }]
        },
        "WpwPluginConfigTypesMethod":
        {
            "$id": "#/WpwPluginConfigTypesMethod",
            "default": "program",
            "oneOf": [{
                "const": "program",
                "description": "use ts.program runtime api as opposed to the tsc cli module"
            },
            {
                "const": "tsc",
                "description": "use the 'tsc' cli module"
            }]
        },
        "WpwPluginConfigTypesMode":
        {
            "$id": "#/WpwPluginConfigTypesBuildMode",
            "default": "plugin",
            "oneOf": [{
                "const": "plugin",
                "description": "perform 'types' build as s standard module build and a virtual entry point using internal plugin"
            },
            {
                "const": "loader",
                "description": "perform 'types' build as s standard module build and a virtual entry point using internal loader"
            },
            {
                "const": "tscheck",
                "description": "perform 'types' build using fork-ts-checker-plugin and ts/jsonconfig.json"
            }]
        },
        "WpwPluginConfigUpload":
        {
            "$id": "#/WpwPluginConfigUpload",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "endpoint", "paths"
            ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "endpoint": {
                    "$ref": "#/definitions/WpwConfigApiEndpoint"
                },
                "glob": {
                    "$ref": "#/definitions/PathGlob"
                },
                "paths": {
                    "$ref": "#/definitions/FileOrDirectoryPaths"
                },
                "recursive": {
                    "type": "boolean",
                    "description": "additionally upload content in all subdirectories within specified `paths`"
                }
            },
            "examples": [{
                "glob": "*.json",
                "disabled": false,
                "recursive": false,
                "paths": [
                    "schema"
                ],
                "endpoint": {
                    "protocol": "pscp",
                    "method": "program",
                    "path": "/var/www/xyz.com/resources",
                    "host": "https://api.mydomain.com/api/v1",
                    "credential": {
                        "key": "${REPLACED_ENVVAR_PLINK_KEY}",
                        "user": "${REPLACED_ENVVAR_PLINK_USER}"
                    }
                }
            }]
        },
        "WpwPluginConfigWait":
        {
            "$id": "#/WpwPluginConfigWait",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "interval": {
                    "type": "number",
                    "default": 750,
                    "description": "for `file` mode, # of milliseconds between each check (ignored in `event` mode)"
                },
                "timeout": {
                    "$ref": "#/definitions/WpwPluginConfigTimeout"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/WpwPluginConfigWaitItem"
                    }
                }
            },
            "examples": [{
                "enabled": true,
                "items": [{
                    "type": "event",
                    "name": "build.name_to_wait_for"
                }]
            },
            {
                "enabled": true,
                "items": [{
                    "type": "file",
                    "name": "dist/somefilename.js"
                }]
            },
            {
                "enabled": true,
                "items": [{
                    "type": "file",
                    "name": "dist/somefilename.js"
                },
                {
                    "type": "event",
                    "name": "build.name_to_wait_for"
                }]
            }]
        },
        "WpwPluginConfigWaitItem":
        {
            "$id": "#/WpwPluginConfigWaitItem",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "mode", "name"
            ],
            "properties": {
                "mode": {
                    "$ref": "#/definitions/WpwPluginConfigWaitMode"
                },
                "source": {
                    "type": "string",
                    "readOnly": true
                },
                "interval": {
                    "type": "number",
                    "default": 750,
                    "description": "for `file` mode, # of milliseconds between each check (ignored in `event` mode)"
                },
                "timeout": {
                    "$ref": "#/definitions/WpwPluginConfigTimeout"
                },
                "name": {
                    "type": "string",
                    "description": "for `file` mode, an absolute or relative path to a file, for `event mode`, a build name"
                }
            },
            "examples": [{
                "type": "event",
                "name": "build.name_to_wait_for"
            },
            {
                "type": "file",
                "name": "dist/somefilename.js"
            }]
        },
        "WpwPluginConfigWaitMode":
        {
            "$id": "#/WpwPluginConfigWaitMode",
            "default": "event",
            "oneOf": [{
                "const": "file"
            },
            {
                "const": "event"
            }]
        },
        "WpwPluginConfigWeb":
        {
            "$id": "#/WpwPluginConfigWeb",
            "type": "object",
            "additionalProperties": false,
            "required": [ "enabled" ],
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "disabled": {
                    "$ref": "#/definitions/BooleanDisabled"
                },
                "camelToDash": {
                    "type": "boolean",
                    "$comment": "convert camel case filename to lowercase and inserts a '-' char preceding each converted char"
                },
                "css": {
                    "type": "boolean",
                    "$comment": "use webpack built-in css support as opposed to 'minicssextractplugin' and 'css-loader' (experimental in wp v5, pre-v6)"
                },
                "jsDirectory": {
                    "type": "boolean",
                    "$comment": "use 'js' subdirectory for javascript output files"
                },
                "optimizeImages": {
                    "type": "boolean"
                },
                "publicPath": {
                    "$ref": "#/definitions/DirectoryPathRelative"
                }
            },
            "examples": [
            {
                "enabled": true,
                "filename": "./${WEB_FILENAME_VAR}",
                "publicPath": "./${WEB_PUBLIC_PATH_VAR}"
            }],
            "if": {
                "properties": {
                    "enabled": {
                        "const": true
                    }
                }
            },
            "then": {
                "anyOf": [{
                    "required": [
                        "enabled", "items"
                    ]
                },
                {
                    "required": [
                        "enabled", "publicPath"
                    ]
                }]
            }
        },
        "WpwPluginInputOutputPath":
        {
            "$id": "#/WpwPluginInputOutputPath",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "assets": {
                    "$ref": "#/definitions/WpwPluginOutputAssets"
                },
                "glob": {
                    "$ref": "#/definitions/PathGlob"
                },
                "input": {
                    "$ref": "#/definitions/FileOrDirectoryPath",
                    "description": "relative or absolute path to a file or directory"
                },
                "output": {
                    "$ref": "#/definitions/FileOrDirectoryPath",
                    "description": "relative or absolute path to a file or directory"
                }
            },
            "examples": [
            {
                "glob": "*.md",
                "disabled": false,
                "to": "docs/welcome",
                "from": "res/doc/welcome"
            }]
        },
        "WpwPluginInputOutputPaths":
        {
            "$id": "#/WpwInputOutputPaths",
            "type": "object",
            "minProperties":1,
            "additionalProperties": false,
            "properties": {
                "glob": {
                    "$ref": "#/definitions/PathGlob"
                },
                "input": {
                    "$ref": "#/definitions/FileOrDirectoryPaths"
                },
                "output": {
                    "$ref": "#/definitions/FileOrDirectoryPaths"
                }
            },
            "examples": [
            {
                "glob": "**/*.md",
                "input":"docs",
                "output": [
                    "docs"
                ]
            },
            {
                "glob": "**/*",
                "input": [ "docs/guides", "docs/welcome.md" ],
                "output": [
                    "docs"
                ]
            }],
            "if": {
                "anyOf": [{
                    "required": [ "assets "]
                },{
                    "required": [ "glob "]
                }]
            },
            "then": {
                "anyOf": [{
                    "required": [ "input "]
                },{
                    "required": [ "output "]
                }]
            }
        },
        "WpwPluginOutputAssets":
        {
            "$id": "#/WpwPluginOutputAssets",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "glob": {
                    "$ref": "#/definitions/PathGlob"
                },
                "immutable": {
                    "type": "boolean"
                },
                "paths": {
                    "$ref": "#/definitions/FileOrDirectoryPaths"
                },
                "tag": {
                    "$ref": "#/definitions/ValueSlugString"
                }
            },
            "examples": [{
                "immutable": false,
                "tag": "doc"
            }]
        },
        "WpwProject":
        {
            "$id": "#/WpwProject",
            "type": "object",
            "minProperties": 1,
            "additionalProperties": false,
            "properties": {
                "company": {
                    "$ref": "#/definitions/ValueNameString"
                },
                "description": {
                    "$ref": "#/definitions/ValueNameString"
                },
                "group": {
                    "$ref": "#/definitions/ValueNameStringOrEmpty"
                },
                "name": {
                    "$ref": "#/definitions/ValueNameString"
                },
                "scope": {
                    "$ref": "#/definitions/ValueNameStringOrEmpty"
                },
                "slug": {
                    "$ref": "#/definitions/ValueSlugString"
                }
            }
        },
        "WpwRcPaths":
        {
            "$id": "#/WpwRcPaths",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "base": {
                    "$ref": "#/definitions/DirectoryPath",
                    "default": ".",
                    "description": "path to the base project directory, i.e. `.` or a fully qualified directory path"
                },
                "ctx": {
                    "$ref": "#/definitions/DirectoryPath",
                    "description": "path to the base context directory of the active build, most likely the `base` directory for projects that do not contain multiple, separate release assets, full path or relative"
                },
                "dist": {
                    "$ref": "#/definitions/DirectoryPath",
                    "description": "path to the distribution / output directory, full path or relative"
                },
                "src": {
                    "anyOf": [{
                        "$ref": "#/definitions/DirectoryPath",
                        "description": "paths to the source directories, full path or relative"
                    },
                    {
                        "$ref": "#/definitions/DirectoryPathDelimited",
                        "description": "paths to the source directories, full path or relative"
                    },
                    {
                        "$ref": "#/definitions/DirectoryPathRegex",
                        "description": "regex matching path(s) to the source directory or directories"
                    }]
                },
                "temp": {
                    "$ref": "#/definitions/DirectoryPath",
                    "description": "path to a temporary directory, full path or relative"
                }
            }
        },
        "WpwRcVirtualPaths":
        {
            "$id": "#/WpwRcVirtualPaths",
            "type": "object",
            "additionalProperties": false,
            "required": [ "base" ],
            "description": "virtual / 'obj' paths used internally during compilation, i.e. `virtualDirs`",
            "properties": {
                "base": {
                    "$ref": "#/definitions/DirectoryPath",
                    "default": "node_modules/.cache/wpw"
                },
                "build": {
                    "$ref": "#/definitions/DirectoryPath",
                    "readOnly": true,
                    "description": "path to the build / compilation directory, full path, will be resolved to an absolute path at runtime, if a relative path is specified"
                },
                "buildRel": {
                    "$ref": "#/definitions/DirectoryPath",
                    "readOnly": true,
                    "description": "path to the build / compilation directory, relative the base project path, i.e. the directory containing the associated package,.jon file"
                },
                "cache": {
                    "$ref": "#/definitions/DirectoryPath",
                    "readOnly": true,
                    "description": "path to the directory used by the WpwCache service module to provide persistent storage to plugin, export, and service modulesvarious internal wpw plugins, exporter, and service type modules"
                },
                "dist": {
                    "$ref": "#/definitions/DirectoryPath",
                    "readOnly": true
                },
                "distRel": {
                    "$ref": "#/definitions/DirectoryPathRelative",
                    "readOnly": true
                },
                "vFile": {
                    "$ref": "#/definitions/FilePath",
                    "readOnly": true
                },
                "vFileName": {
                    "$ref": "#/definitions/FileName",
                    "readOnly": true
                },
                "vFileRel": {
                    "$ref": "#/definitions/FilePathRelative",
                    "readOnly": true
                }
            },
            "examples": [{
                "base": "node_modules/.cache/wpw"
            }]
        },
        "WpwServerDatabase":
        {
            "$id": "#/WpwServerDatabase",
            "enum": [
                "db2", "mariadb", "mssql", "mysql", "oracle", "postgres", "sqlite", "snowflake"
            ]
        },
        "WpwSourceCodeIDE":
        {
            "$id": "#/WpwSourceCodeIDE",
            "oneOf": [
            {
                "const": "androidstudio-goog"
            },
            {
                "const": "arduinoide-gpl"
            },
            {
                "const": "atom-gh"
            },
            {
                "const": "clion-jb"
            },
            {
                "const": "cloud9-amzn"
            },
            {
                "const": "code::blocks-gpl"
            },
            {
                "const": "developerstudio-orcl"
            },
            {
                "const": "eclipse-cpl"
            },
            {
                "const": "goland-jb"
            },
            {
                "const": "intellij-jb"
            },
            {
                "const": "jdeveloper-orcl"
            },
            {
                "const": "komodoedit-gpl"
            },
            {
                "const": "monodevelop-gpl"
            },
            {
                "const": "netbeans-orcl"
            },
            {
                "const": "phpstorm-jb"
            },
            {
                "const": "pycharm-jb"
            },
            {
                "const": "sharpdevelop-gpl"
            },
            {
                "const": "webstorm-jb"
            },
            {
                "const": "visualstudio-ms"
            },
            {
                "const": "visualstudiocode-ms"
            }]
        },
        "WpwSourceCodeConfig":
        {
            "$id": "#/WpwSourceCodeConfig",
            "type": "object",
            "minProperties": 1,
            "additionalProperties": false,
            "description": "details of the underlying project source code as applicable to a specific build",
            "properties": {
                "autoConfig": {
                    "type":"boolean",
                    "description": "in some cases wpw builds the tsconfig build profile/tsconfig at runtime based on the various details of the running build, the project structure, source code type, configuration files and their content, etc... `setting this flag forces this behavior in all cases, likewise, explicitly setting this flag to 'false' will disable it in all cases including when it would be enabled for by default "
                },
                "ext": {
                    "$ref": "#/definitions/WpwSourceCodeExtension"
                },
                "compilerOptions": {
                    "$ref": "#/definitions/WpwTsCompilerOptions",
                    "description": "a partial clone of the tsconfig.json `compilerOptions` options object, taking the 2nd highest priority when merging the final tsconfig runtime build profile (where this config object's `tsconfig` property is the highest."
                },
                "configFile": {
                    "$ref": "#/definitions/FilePathJson"
                },
                "defaultExclude": {
                    "type": "boolean"
                },
                "ide": {
                    "$ref": "#/definitions/WpwSourceCodeIDE"
                },
                "language": {
                    "$ref": "#/definitions/WpwSourceCodeLanguage"
                },
                "tsconfig": {
                    "$ref": "#/definitions/WpwTsConfigFile",
                    "description": "a clone of the tsconfig.json base options, taking the highest priority when merging the final tsconfig runtime build profile"
                },
                "tsconfigMergeArr": {
                    "type": "boolean",
                    "description": "if unset or set to `false` (default) then any of the array value type properties specified in `tsconfig` or `compilerOptions` will override anything configured dynamically at runtime, otherwise, if set to `true`, then properties with array values will be merged with any existing runtime configurations."
                }
            },
            "if": {
                "required": [
                    "tsconfig"
                ]
            },
            "then": {
                "allOf": [
                {
                    "properties": {
                        "compilerOptions": false
                    }
                },{
                    "properties": {
                        "compilerOptions": {
                            "description": "use 'tsconfig.compilerOptions' when 'tsconfig' is defined"
                        }
                    }
                }]
            },
            "dependencies": {
                "ide": {
                    "if": {
                        "properties": {
                            "ide": {
                                "oneOf": [
                                {
                                    "const": "atom-gh"
                                },
                                {
                                    "const": "webstorm-jb"
                                }]
                            }
                        }
                    },
                    "then": {
                        "properties": {
                            "language": {
                                "oneOf": [false, {
                                    "const": "javascript"
                                },{
                                    "const": "typescript"
                                },{
                                    "const": "javascript-typescript"
                                },{
                                    "const": "react.javascript"
                                },{
                                    "const": "react.typescript"
                                },{
                                    "const": "typescript-javascript"
                                }]
                            }
                        }
                    }
                }
            }
        },
        "WpwSourceCodeExtension":
        {
            "$id": "#/WpwSourceCodeExtension",
            "oneOf": [{
                "const": "js"
            },{
                "const": "cjs"
            },{
                "const": "mjs"
            },{
                "const": "jsx"
            },{
                "const": "ts"
            },{
                "const": "cts"
            },{
                "const": "mts"
            },{
                "const": "tsx"
            }]
        },
        "WpwSourceCodeLanguage":
        {
            "$id": "#/WpwSourceCodeLanguage",
            "oneOf": [{
                "const": "angular"
            },{
                "const": "c"
            },{
                "const": "c++"
            },{
                "const": "java"
            },{
                "const": "c#"
            },{
                "const": "extjs"
            },{
                "const": "kotlin"
            },{
                "const": "go"
            },{
                "const": "javascript"
            },{
                "const": "none"
            },{
                "const": "javascript-typescript"
            },{
                "const": "expo.javascript"
            },{
                "const": "expo.typescript"
            },{
                "const": "react.javascript"
            },{
                "const": "react.typescript"
            },{
                "const": "reactnative"
            },{
                "const": "pearl"
            },{
                "const": "php"
            },{
                "const": "python"
            },{
                "const": "typescript"
            },{
                "const": "typescript-javascript"
            }]
        },
        "WpwStaticResources":
        {
            "$id": "#/WpwStaticResources",
            "type": "object",
            "additionalProperties": false,
            "minProperties": 1,
            "description": "static resources to be included as build output, e.g. images, documentation, code examples, etc",
            "properties": {
                "inline": {
                    "$ref": "#/definitions/WpwStaticResourcePaths"
                },
                "resource": {
                    "$ref": "#/definitions/WpwStaticResourcePaths"
                },
                "source": {
                    "$ref": "#/definitions/WpwStaticResourcePaths"
                }
            }
        },
        "WpwStaticResourcePaths":
        {
            "$id": "#/WpwStaticResourcePaths",
            "type": "object",
            "minProperties":1,
            "additionalProperties": false,
            "required": [
                "input", "output"
            ],
            "properties": {
                "input": {
                    "$ref": "#/definitions/WpwStaticResourceInput"
                },
                "output": {
                    "$ref": "#/definitions/WpwStaticResourceOutput"
                }
            },
            "examples": [
            {
                "input": {
                    "glob": "**/*.md",
                    "paths": [
                        "docs/guides", "docs/welcome"
                    ]
                },
                "output": {
                    "paths": [
                        "public/res/doc"
                    ]
                }
            },
            {
                "input": {
                    "glob": "**/*.md",
                    "dependency": true,
                    "paths": [
                        "docs/guides", "docs/welcome"
                    ]
                },
                "output": {
                    "asset": true,
                    "paths": [
                        "public/res/doc"
                    ]
                }
            }]
        },
        "WpwStaticResourceInput":
        {
            "$id": "#/WpwStaticResourceInput",
            "type": "object",
            "minProperties":1,
            "additionalProperties": false,
            "required": [
                "paths"
            ],
            "properties": {
                "dependency": {
                    "type": "boolean"
                },
                "glob": {
                    "$ref": "#/definitions/PathGlob"
                },
                "paths": {
                    "$ref": "#/definitions/FileOrDirectoryPaths"
                }
            }
        },
        "WpwStaticResourceOutput":
        {
            "$id": "#/WpwStaticResourceOutput",
            "type": "object",
            "minProperties":1,
            "additionalProperties": false,
            "required": [
                "paths"
            ],
            "properties": {
                "asset": {
                    "type": "boolean"
                },
                "paths": {
                    "$ref": "#/definitions/FileOrDirectoryPaths"
                }
            }
        },
        "WpwTsConfigFile":
        {
            "$id": "#/WpwTsConfigFile",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "$schema": {
                    "$ref": "#/definitions/SchemaUrl"
                },
                "_version": {
                    "$ref": "#/definitions/VersionString"
                },
                "compilerOptions": {
                    "$ref": "#/definitions/WpwTsCompilerOptions"
                },
                "display":{
                    "type": "string"
                },
                "docs":{
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/UrlString"
                    }
                },
                "exclude": {
                    "$ref": "#/definitions/StringArray"
                },
                "extends": {
                    "oneOf": [
                    {
                        "type": "string"
                    },{
                        "$ref": "#/definitions/StringArray"
                    }]
                },
                "files": {
                    "$ref": "#/definitions/StringArray"
                },
                "include": {
                    "$ref": "#/definitions/StringArray"
                }
            }
        },
        "WpwTsCompilerOptions":
        {
            "$id": "#/WpwTsCompilerOptions",
            "type": "object",
            "additionalProperties": false,
            "description": "tsconfig.json compiler options to override options specified in a singlea j/tsconfig.json file, as opposed to keeping multiple tsconfig files for different builds",
            "properties": {
                "allowJs": {
                    "type": "boolean"
                },
                "alwaysStrict": {
                    "type": "boolean"
                },
                "allowSyntheticDefaultImports": {
                    "type": "boolean"
                },
                "allowUnreachableCode": {
                    "type": "boolean"
                },
                "allowUnusedLabels": {
                    "type": "boolean"
                },
                "baseUrl":{
                    "type": "string"
                },
                "checkJs": {
                    "type": "boolean"
                },
                "composite": {
                    "type": "boolean"
                },
                "customConditions": {
                    "type": "array",
                    "items": {
                        "anyOf": [
                        {
                            "enum": [ "browser", "electron", "node" ]
                        }, {
                            "type": "string",
                            "maxLength": 16,
                            "minLength": 2
                        }]
                    }
                },  
                "declaration": {
                    "type": "boolean"
                },
                "declarationDir": {
                    "type": "string"
                },
                "declarationMap": {
                    "type": "boolean"
                },
                "declarationsOnly": {
                    "type": "boolean"
                },
                "downlevelIteration": {
                    "type": "boolean"
                },
                "emitDeclarationOnly": {
                    "type": "boolean"
                },
                "emitDecoratorMetadata":  {
                    "type": "boolean"
                },
                "esModuleInterop": {
                    "type": "boolean"
                },
                "erasableSyntaxOnly": {
                    "type": "boolean"
                },
                "experimentalDecorators": {
                    "type": "boolean"
                },
                "incremental": {
                    "type": "boolean"
                },  
                "importHelpers": {
                    "type": "boolean"
                },
                "inlineSources": {
                    "type": "boolean"
                },
                "inlineSourceMap": {
                    "type": "boolean"
                },
                "isolatedModules": {
                    "type": "boolean"
                },         
                "jsx": {
                    "type": "string"
                },
                "lib": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/WpwTsCompilerOptionLib"
                    }
                },  
                "mapRoot": {
                    "type": "string"
                },
                "module": {
                    "$ref": "#/definitions/WpwTsCompilerOptionsModule"
                },
                "moduleResolution": {
                    "$ref": "#/definitions/WpwTsCompilerOptionResolution"
                },
                "noEmit": {
                    "type": "boolean"
                },
                "noFallthroughCasesInSwitch": {
                    "type": "boolean"
                },
                "noImplicitAny": {
                    "type": "boolean"
                },
                "noImplicitOverride": {
                    "type": "boolean"
                },
                "noImplicitReturns": {
                    "type": "boolean"
                },
                "noImplicitThis": {
                    "type": "boolean"
                },
                "noImplicitUseStrict": {
                    "type": "boolean"
                },
                "noUncheckedIndexedAccess": {
                    "type": "boolean"
                },
                "noUnusedLocals": {
                    "type": "boolean"
                },
                "noUnusedParameters": {
                    "type": "boolean"
                },
                "outFile": {
                    "type": "string"
                },
                "outDir": {
                    "$ref": "#/definitions/DirectoryPath"
                },
                "paths": {
                    "$ref": "#/definitions/WpwTsCompilerOptionsPaths"
                }, 
                "removeComments": {
                    "type": "boolean"
                },
                "resolveJsonModule": {
                    "type": "boolean"
                },
                "resolvePackageJsonExports": {
                    "type": "boolean"
                },
                "resolvePackageJsonImports": {
                    "type": "boolean"
                },
                "rewriteRelativeImportExtensions": {
                    "type": "boolean"
                },
                "rootDir": {
                    "type": "string"
                },
                "rootDirs": {
                    "$ref": "#/definitions/StringArray"
                },
                "skipLibCheck": {
                    "type": "boolean"
                },
                "sourceMap": {
                    "type": "boolean"
                },
                "sourceRoot": {
                    "type": "string"
                },
                "strict": {
                    "type": "boolean"
                },
                "strictPropertyInitialization": {
                    "type": "boolean"
                },
                "strictFunctionTypes": {
                    "type": "boolean"
                },
                "strictBindCallApply": {
                    "type": "boolean"
                }, 
                "strictNullChecks": {
                    "type": "boolean"
                }, 
                "suppressImplicitAnyIndexErrors": {
                    "type": "boolean"
                },
                "suppressExcessPropertyErrors": {
                    "type": "boolean"
                },
                "target": {
                    "$ref": "#/definitions/WpwTsCompilerOptionTarget"
                },
                "tsBuildInfoFile": {
                    "type": "string"
                },                 
                "typeRoots": {
                    "$ref": "#/definitions/StringArray"
                },                 
                "types": {
                    "$ref": "#/definitions/StringArray"
                },
                "useUnknownInCatchVariables": {
                    "type": "boolean"
                },
                "verbatimModuleSyntax": {
                    "type": "boolean"
                },
                "verbose": {
                    "type": "boolean"
                }
            }
        },
        "WpwTsCompilerOptionLib":
        {
            "$id": "#/WpwTsCompilerOptionLib",
            "type": "string",
            "enum": [
                "es5", "es6", "es2015", "es2016", "es2017", "es2018", "es2019", "es2020", "es2021", "es2022", "es2023", "es2024", "esnext",
                "ES5", "ES6", "ES2015", "ES2016", "ES2017", "ES2018", "ES2019", "ES2020", "ES2021", "ES2022", "ES2023", "ES2024", "ESNEXT",
                "dom", "DOM", "dom.iterable", "DOM.iterable", "ScriptHost", "scripthost", "WebWorker", "webworker", "es2020.promise",
                "es2020.bigint", "es2020.string"
            ]
        },
        "WpwTsCompilerOptionsModule":
        {
            "$id": "#/WpwTsCompilerOptionsModule",
            "oneOf": [{
                "$ref": "#/definitions/WpwConfigEcmaScriptLtsVersion"
            },
            {
                "enum": [
                    "amd", "commonjs", "es5", "es6", "es2015", "es2020", "es2022", "esnext",
                    "node16", "node18", "nodenext", "none", "preserve", "system", "umd"
                ]
            }]
            
        },
        "WpwTsCompilerOptionsPaths":
        {
            "$id": "#/WpwTsCompilerOptionsPaths",
            "type": "object",
            "patternProperties": {
                "^[a-zA-Z:@][\\w:@]+$": {
                    "type": "array",
                    "items": {
                        "anyOf": [{
                            "$ref": "#/definitions/DirectoryPathRelative"
                        }, {
                            "$ref": "#/definitions/PathGlob"
                        }]
                    }
                }
            },
            "propertyNames": {
                "maxLength": 50
            }
        },
        "WpwTsCompilerOptionResolution":
        {
            "$id": "#/WpwTsCompilerOptionResolution",
            "type": "string",
            "enum": [
                "node", "node10", "node16","node18", "nodenext", "bundler"
            ]
        },
        "WpwTsCompilerOptionTarget":
        {
            "$id": "#/WpwTsCompilerOptionTarget",
            "type": "string",
            "enum": [
                "es5", "es6", "es2015", "es2016", "es2017", "es2018", "es2019", "es2020", "es2021", "es2022", "es2023", "es2024", "esnext",
                "ES5", "ES6", "ES2015", "ES2016", "ES2017", "ES2018", "ES2019", "ES2020", "ES2021", "ES2022", "ES2023", "ES2024", "ESNEXT"
            ]
        },
        "WpwWebpackMode":
        {
            "$id": "#/WpwWebpackMode",
            "type": "string",
            "enum": [
                "development",
                "production",
                "none"
            ]
        },
        "WpwWebpackCompilationHook":
        {
            "$id": "#/WpwWebpackCompilationHook",
            "description": "compilation hook name, when the script `hook` is set to 'compilation'",
            "oneOf": [{
                "const": "assetPath"
            },
            {
                "const": "buildModule"
            },
            {
                "const": "executeModule"
            },
            {
                "const": "log"
            },
            {
                "const": "chunkIds"
            },
            {
                "const": "moduleIds"
            },
            {
                "const": "rebuildModule"
            },
            {
                "const": "stillValidModule"
            },
            {
                "const": "succeedModule"
            },
            {
                "const": "addEntry"
            },
            {
                "const": "failedEntry"
            },
            {
                "const": "succeedEntry"
            },
            {
                "const": "optimize"
            },
            {
                "const": "seal"
            },
            {
                "const": "unseal"
            },
            {
                "const": "afterSeal"
            },
            {
                "const": "needAdditionalSeal"
            },
            {
                "const": "renderManifest"
            },
            {
                "const": "beforeModuleAssets"
            },
            {
                "const": "additionalAssets"
            },
            {
                "const": "prepareModuleExecution"
            },
            {
                "const": "afterOptimizeDependencies"
            },
            {
                "const": "dependencyReferencedExports"
            },
            {
                "const": "processAssets"
            },
            {
                "const": "afterProcessAssets"
            },
            {
                "const": "beforeChunks"
            },
            {
                "const": "afterChunks"
            },
            {
                "const": "beforeHash"
            },
            {
                "const": "afterHash"
            },
            {
                "const": "contentHash"
            },
            {
                "const": "chunkHash"
            },
            {
                "const": "chunkAsset"
            },
            {
                "const": "moduleAsset"
            },
            {
                "const": "needAdditionalPass"
            },
            {
                "const": "childCompiler"
            },
            {
                "const": "shouldRecord"
            },
            {
                "const": "record"
            },
            {
                "const": "recordChunks"
            },
            {
                "const": "recordModules"
            },
            {
                "const": "shouldRecord"
            },
            {
                "const": "finishModules"
            },
            {
                "const": "finishRebuildingModule"
            },
            {
                "const": "failedModule"
            },
            {
                "const": "statsPreset"
            },
            {
                "const": "statsNormalize"
            },
            {
                "const": "statsFactory"
            },
            {
                "const": "statsPrinter"
            },
            {
                "const": "processWarnings"
            },
            {
                "const": "processErrors"
            },
            {
                "const": "afterOptimizeAssets"
            },
            {
                "const": "beforeCodeGeneration"
            },
            {
                "const": "afterCodeGeneration"
            },
            {
                "const": "beforeRuntimeRequirements"
            },
            {
                "const": "afterRuntimeRequirements"
            },
            {
                "const": "processAdditionalAssets"
            },
            {
                "const": "beforeChunkAssets"
            },
            {
                "const": "shouldGenerateChunkAssets"
            },
            {
                "const": "beforeModuleHash"
            },
            {
                "const": "afterModuleHash"
            },
            {
                "const": "fullHash"
            },
            {
                "const": "recordHash"
            },
            {
                "const": "optimizeAssets"
            },
            {
                "const": "afterOptimizeChunkAssets"
            },
            {
                "const": "afterOptimizeAssets"
            },
            {
                "const": "additionalChunkAssets"
            },
            {
                "const": "optimizeChunkAssets"
            }]
        },
        "WpwWebhookCompilationHookStage":
        {
            "$id": "#/WpwWebhookCompilationHookStage",
            "description": "asset processing stage, when the script `hook` is set to 'compilation' and `hookCompilation` is set to 'processAssets'.",
            "oneOf": [{
                "const": "additional"
            },
            {
                "const": "pre_process"
            },
            {
                "const": "derived"
            },
            {
                "const": "additions"
            },
            {
                "const": "optimize"
            },
            {
                "const": "optimize_count"
            },
            {
                "const": "optimize_compatibility"
            },
            {
                "const": "optimize_size"
            },
            {
                "const": "dev_tooling"
            },
            {
                "const": "optimize_inline"
            },
            {
                "const": "summarize"
            },
            {
                "const": "optimize_hash"
            },
            {
                "const": "optimize_transfer"
            },
            {
                "const": "analyse"
            },
            {
                "const": "report"
            }]
        },
        "WpwWebpackCompilerHook":
        {
            "$id": "#/WpwWebpackCompilerHook",
            "description": "compiler hook name",
            "oneOf": [{
                "const": "initialize"
            },
            {
                "const": "environment"
            },
            {
                "const": "afterEnvironment"
            },
            {
                "const": "infrastructureLog"
            },
            {
                "const": "beforeRun"
            },
            {
                "const": "run"
            },
            {
                "const": "watchRun"
            },
            {
                "const": "make"
            },
            {
                "const": "finishMake"
            },
            {
                "const": "afterPlugins"
            },
            {
                "const": "afterResolvers"
            },
            {
                "const": "normalModuleFactory"
            },
            {
                "const": "contextModuleFactory"
            },
            {
                "const": "entryOption"
            },
            {
                "const": "beforeCompile"
            },
            {
                "const": "compile"
            },
            {
                "const": "afterCompile"
            },
            {
                "const": "readRecords"
            },
            {
                "const": "emitRecords"
            },
            {
                "const": "thisCompilation"
            },
            {
                "const": "compilation"
            },
            {
                "const": "shouldEmit"
            },
            {
                "const": "emit"
            },
            {
                "const": "afterEmit"
            },
            {
                "const": "assetEmitted"
            },
            {
                "const": "afterEmit"
            },
            {
                "const": "done"
            },
            {
                "const": "afterDone"
            },
            {
                "const": "additionalPass"
            },
            {
                "const": "watchClose"
            },
            {
                "const": "shutdown"
            },
            {
                "const": "invalid"
            },
            {
                "const": "failed"
            }]
        },
        "WebpackConfigRaw":
        {
            "$id": "#/WpwWebpackConfigRaw",
            "type": "object",
            "additionalProperties": true,
            "propertyNames": {
                "enum": [
                    "cache", "devtool", "entry", "experiments", "externals", "infrastructureLogging", "ignoreWarnings", "optimization", "output", "module", "resolve", "resolveLoader", "stats", "watch"
                ]
            }
        },
        "WebpackExternalsPreset":
        {
            "$id": "#/WebpackExternalsPreset",
            "oneOf": [{
                "const": "electron"
            },
            {
                "const": "electronMain"
            },
            {
                "const": "electronPreload"
            },
            {
                "const": "electronRenderer"
            },
            {
                "const": "node"
            },
            {
                "const": "nwjs"
            },
            {
                "const": "web"
            },
            {
                "const": "webAsync"
            }]
        },
        "WebpackExternalsType":
        {
            "$id": "#/WebpackExternalsType",
            "oneOf": [{
                "const": "amd"
            },
            {
                "const": "amd-require"
            },
            {
                "const": "assign"
            },
            {
                "const": "commonjs"
            },
            {
                "const": "commonjs2"
            },
            {
                "const": "commonjs-module"
            },
            {
                "const": "global"
            },
            {
                "const": "import"
            },
            {
                "const": "jsonp"
            },
            {
                "const": "module"
            },
            {
                "const": "module-import"
            },
            {
                "const": "node-commonjs"
            },
            {
                "const": "promise"
            },
            {
                "const": "self"
            },
            {
                "const": "system"
            },
            {
                "const": "script"
            },
            {
                "const": "this"
            },
            {
                "const": "umd"
            },
            {
                "const": "umd2"
            },
            {
                "const": "var"
            },
            {
                "const": "window"
            }]
        },
        "WpwWebpackLoaderType":
        {
            "$id": "#/WpwWebpackLoaderType",
            "oneOf": [{
                "const": "babel"
            },{
                "const": "esbuild"
            },{
                "const": "spmh"
            },{
                "const": "ts"
            }]
        },
        "WebpackLibrary":
        {
            "$id": "#/WebpackLibrary",
            "description": "exported library type",
            "oneOf": [
            {
                "const": "amd"
            },
            {
                "const": "amd-require"
            },
            {
                "const": "assign"
            },
            {
                "const": "commonjs",
                "description": "return value of entry point will be assigned to the exports object using the `output.library.name` value"
            },
            {
                "const": "commonjs2",
                "description": " return value of the entry point will be assigned to module.export"
            },
            {
                "const": "commonjs-module"
            },
            {
                "const": "commonjs-static",
                "description": "individual exports will be set as properties on module.exports"
            },
            {
                "const": "global",
                "description": "return value of the entry point will be assigned to the global object using the `output.library.name` value, where dependent on the `target` value e.g., `self`, `global` or `globalThis`"
            },
            {
                "const": "jsonp",
                "description": "wraps the return value of the entry point into a jsonp wrapper"
            },
            {
                "const": "module",
                "description": "output es module"
            },
            {
                "const": "modern-module",
                "description": "generates tree-shakable output for es modules"
            },
            {
                "const": "self"
            },
            {
                "const": "system"
            },
            {
                "const": "this"
            },
            {
                "const": "umd",
                "description": "return value of the entry point under all the module definitions, allowing it to work with CommonJS, AMD, and as global variable"
            },
            {
                "const": "umd2"
            },
            {
                "const": "var",
                "description": "return value of the entry point (i.e. whatever the entry point exported) using the `output.library.name` value"
            },
            {
                "const": "window",
                "description": "return value of entry point will be assigned to the window object using the `output.library.name` value"
            }]
        },
        "WebpackTarget":
        {
            "$id": "#/WebpackTarget",
            "enum": [
                "node", "web", "webworker", "async-node", "node-webkit", "electron-main", "electron-renderer",
                "electron-preload", "nwjs", "browserlist", "browserslist:modern", "es5", "es6", "es2015", "es2016",
                "es2017", "es2018", "es2019", "es2020", "es2021", "es2022", "es2023", "es2024", "esnext"
            ]
        },
        "WebpackTargetType":
        {
            "$id": "#/WebpackTargetType",
            "oneOf": [{
                "$ref": "#/definitions/WebpackTarget"
            },
            {
                "type":"array",
                "items": {
                    "$ref": "#/definitions/WebpackTarget"
                }
            }]
        }
    }
}