{
  "definitions": {
    "Amd": {
      "description": "Set the value of `require.amd` and `define.amd`. Or disable AMD support.",
      "anyOf": [
        {
          "description": "You can pass `false` to disable AMD support.",
          "enum": [false]
        },
        {
          "description": "You can pass an object to set the value of `require.amd` and `define.amd`.",
          "type": "object"
        }
      ]
    },
    "AssetModuleFilename": {
      "description": "The filename of asset modules as relative path inside the `output.path` directory.",
      "anyOf": [
        {
          "type": "string",
          "absolutePath": false
        },
        {
          "instanceof": "Function",
          "tsType": "((pathData: import(\"../lib/Compilation\").PathData, assetInfo?: import(\"../lib/Compilation\").AssetInfo) => string)"
        }
      ]
    },
    "AuxiliaryComment": {
      "description": "Add a comment in the UMD wrapper.",
      "anyOf": [
        {
          "description": "Append the same comment above each import style.",
          "type": "string"
        },
        {
          "$ref": "#/definitions/LibraryCustomUmdCommentObject"
        }
      ]
    },
    "Bail": {
      "description": "Report the first error as a hard error instead of tolerating it.",
      "type": "boolean"
    },
    "CacheOptions": {
      "description": "Cache generated modules and chunks to improve performance for multiple incremental builds.",
      "anyOf": [
        {
          "description": "Enable in memory caching.",
          "enum": [true]
        },
        {
          "$ref": "#/definitions/CacheOptionsNormalized"
        }
      ]
    },
    "CacheOptionsNormalized": {
      "description": "Cache generated modules and chunks to improve performance for multiple incremental builds.",
      "anyOf": [
        {
          "description": "Disable caching.",
          "enum": [false]
        },
        {
          "$ref": "#/definitions/MemoryCacheOptions"
        },
        {
          "$ref": "#/definitions/FileCacheOptions"
        }
      ]
    },
    "ChunkCallbackName": {
      "description": "The callback function name used by webpack for loading of chunks in WebWorkers.",
      "type": "string"
    },
    "ChunkFilename": {
      "description": "The filename of non-entry chunks as relative path inside the `output.path` directory.",
      "type": "string",
      "absolutePath": false
    },
    "ChunkLoadTimeout": {
      "description": "Number of milliseconds before chunk request expires.",
      "type": "number"
    },
    "CompareBeforeEmit": {
      "description": "Check if to be emitted file already exists and have the same content before writing to output filesystem.",
      "type": "boolean"
    },
    "Context": {
      "description": "The base directory (absolute path!) for resolving the `entry` option. If `output.pathinfo` is set, the included pathinfo is shortened to this directory.",
      "type": "string",
      "absolutePath": true
    },
    "CrossOriginLoading": {
      "description": "This option enables cross-origin loading of chunks.",
      "enum": [false, "anonymous", "use-credentials"]
    },
    "Dependencies": {
      "description": "References to other configurations to depend on.",
      "type": "array",
      "items": {
        "description": "References to another configuration to depend on.",
        "type": "string"
      }
    },
    "DevServer": {
      "description": "Options for the webpack-dev-server.",
      "type": "object"
    },
    "DevTool": {
      "description": "A developer tool to enhance debugging (false | eval | [inline-|hidden-|eval-][nosources-][cheap-[module-]]source-map).",
      "anyOf": [
        {
          "enum": [false, "eval"]
        },
        {
          "type": "string",
          "pattern": "^(inline-|hidden-|eval-)?(nosources-)?(cheap-(module-)?)?source-map$"
        }
      ]
    },
    "DevtoolFallbackModuleFilenameTemplate": {
      "description": "Similar to `output.devtoolModuleFilenameTemplate`, but used in the case of duplicate module identifiers.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "instanceof": "Function",
          "tsType": "Function"
        }
      ]
    },
    "DevtoolModuleFilenameTemplate": {
      "description": "Filename template string of function for the sources array in a generated SourceMap.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "instanceof": "Function",
          "tsType": "Function"
        }
      ]
    },
    "DevtoolNamespace": {
      "description": "Module namespace to use when interpolating filename template string for the sources array in a generated SourceMap. Defaults to `output.library` if not set. It's useful for avoiding runtime collisions in sourcemaps from multiple webpack projects built as libraries.",
      "type": "string"
    },
    "EcmaVersion": {
      "description": "The maximum EcmaScript version of the webpack generated code (doesn't include input source code from modules).",
      "anyOf": [
        {
          "enum": [2009]
        },
        {
          "type": "number",
          "minimum": 5,
          "maximum": 11
        },
        {
          "type": "number",
          "minimum": 2015,
          "maximum": 2020
        }
      ]
    },
    "EnabledLibraryTypes": {
      "description": "List of library types enabled for use by entry points.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/LibraryType"
      }
    },
    "Entry": {
      "description": "The entry point(s) of the compilation.",
      "anyOf": [
        {
          "$ref": "#/definitions/EntryDynamic"
        },
        {
          "$ref": "#/definitions/EntryStatic"
        }
      ]
    },
    "EntryDescription": {
      "description": "An object with entry point description.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "dependOn": {
          "description": "The entrypoints that the current entrypoint depend on. They must be loaded when this entrypoint is loaded.",
          "anyOf": [
            {
              "description": "The entrypoints that the current entrypoint depend on. They must be loaded when this entrypoint is loaded.",
              "type": "array",
              "items": {
                "description": "An entrypoint that the current entrypoint depend on. It must be loaded when this entrypoint is loaded.",
                "type": "string",
                "minLength": 1
              },
              "minItems": 1,
              "uniqueItems": true
            },
            {
              "description": "An entrypoint that the current entrypoint depend on. It must be loaded when this entrypoint is loaded.",
              "type": "string",
              "minLength": 1
            }
          ]
        },
        "filename": {
          "$ref": "#/definitions/Filename"
        },
        "import": {
          "$ref": "#/definitions/EntryItem"
        },
        "library": {
          "$ref": "#/definitions/LibraryOptions"
        }
      },
      "required": ["import"]
    },
    "EntryDescriptionNormalized": {
      "description": "An object with entry point description.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "dependOn": {
          "description": "The entrypoints that the current entrypoint depend on. They must be loaded when this entrypoint is loaded.",
          "type": "array",
          "items": {
            "description": "An entrypoint that the current entrypoint depend on. It must be loaded when this entrypoint is loaded.",
            "type": "string",
            "minLength": 1
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "filename": {
          "$ref": "#/definitions/Filename"
        },
        "import": {
          "description": "Module(s) that are loaded upon startup. The last one is exported.",
          "type": "array",
          "items": {
            "description": "Module that is loaded upon startup. Only the last one is exported.",
            "type": "string",
            "minLength": 1
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "library": {
          "$ref": "#/definitions/LibraryOptions"
        }
      }
    },
    "EntryDynamic": {
      "description": "A Function returning an entry object, an entry string, an entry array or a promise to these things.",
      "instanceof": "Function",
      "tsType": "(() => EntryStatic | Promise<EntryStatic>)"
    },
    "EntryDynamicNormalized": {
      "description": "A Function returning a Promise resolving to a normalized entry.",
      "instanceof": "Function",
      "tsType": "(() => Promise<EntryStaticNormalized>)"
    },
    "EntryItem": {
      "description": "Module(s) that are loaded upon startup.",
      "anyOf": [
        {
          "description": "All modules are loaded upon startup. The last one is exported.",
          "type": "array",
          "items": {
            "description": "A module that is loaded upon startup. Only the last one is exported.",
            "type": "string",
            "minLength": 1
          },
          "minItems": 1,
          "uniqueItems": true
        },
        {
          "description": "The string is resolved to a module which is loaded upon startup.",
          "type": "string",
          "minLength": 1
        }
      ]
    },
    "EntryNormalized": {
      "description": "The entry point(s) of the compilation.",
      "anyOf": [
        {
          "$ref": "#/definitions/EntryDynamicNormalized"
        },
        {
          "$ref": "#/definitions/EntryStaticNormalized"
        }
      ]
    },
    "EntryObject": {
      "description": "Multiple entry bundles are created. The key is the entry name. The value can be a string, an array or an entry description object.",
      "type": "object",
      "additionalProperties": {
        "description": "An entry point with name.",
        "anyOf": [
          {
            "$ref": "#/definitions/EntryItem"
          },
          {
            "$ref": "#/definitions/EntryDescription"
          }
        ]
      }
    },
    "EntryStatic": {
      "description": "A static entry description.",
      "anyOf": [
        {
          "$ref": "#/definitions/EntryObject"
        },
        {
          "$ref": "#/definitions/EntryUnnamed"
        }
      ]
    },
    "EntryStaticNormalized": {
      "description": "Multiple entry bundles are created. The key is the entry name. The value is an entry description object.",
      "type": "object",
      "additionalProperties": {
        "description": "An object with entry point description.",
        "oneOf": [
          {
            "$ref": "#/definitions/EntryDescriptionNormalized"
          }
        ]
      }
    },
    "EntryUnnamed": {
      "description": "An entry point without name.",
      "oneOf": [
        {
          "$ref": "#/definitions/EntryItem"
        }
      ]
    },
    "Experiments": {
      "description": "Enables/Disables experiments (experimental features with relax SemVer compatibility).",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "asset": {
          "description": "Allow module type 'asset' to generate assets.",
          "type": "boolean"
        },
        "asyncWebAssembly": {
          "description": "Support WebAssembly as asynchronous EcmaScript Module.",
          "type": "boolean"
        },
        "importAsync": {
          "description": "Allow 'import/export' syntax to import async modules.",
          "type": "boolean"
        },
        "importAwait": {
          "description": "Allow 'import/export await' syntax to import async modules.",
          "type": "boolean"
        },
        "mjs": {
          "description": "Support .mjs files as way to define strict ESM file (node.js).",
          "type": "boolean"
        },
        "outputModule": {
          "description": "Allow output javascript files as module source type.",
          "type": "boolean"
        },
        "syncWebAssembly": {
          "description": "Support WebAssembly as synchronous EcmaScript Module (outdated).",
          "type": "boolean"
        },
        "topLevelAwait": {
          "description": "Allow using top-level-await in EcmaScript Modules.",
          "type": "boolean"
        }
      }
    },
    "ExternalItem": {
      "description": "Specify dependency that shouldn't be resolved by webpack, but should become dependencies of the resulting bundle. The kind of the dependency depends on `output.libraryTarget`.",
      "anyOf": [
        {
          "description": "Every matched dependency becomes external.",
          "instanceof": "RegExp",
          "tsType": "RegExp"
        },
        {
          "description": "An exact matched dependency becomes external. The same string is used as external dependency.",
          "type": "string"
        },
        {
          "description": "If an dependency matches exactly a property of the object, the property value is used as dependency.",
          "type": "object",
          "additionalProperties": {
            "description": "The dependency used for the external.",
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "description": "A part of the target of the external.",
                  "type": "string",
                  "minLength": 1
                }
              },
              {
                "description": "`true`: The dependency name is used as target of the external.",
                "type": "boolean"
              },
              {
                "description": "The target of the external.",
                "type": "string"
              },
              {
                "type": "object"
              }
            ]
          }
        },
        {
          "description": "The function is called on each dependency (`function(context, request, callback(err, result))`).",
          "instanceof": "Function",
          "tsType": "((data: { context: string, request: string }, callback: (err?: Error, result?: string) => void) => void)"
        }
      ]
    },
    "Externals": {
      "description": "Specify dependencies that shouldn't be resolved by webpack, but should become dependencies of the resulting bundle. The kind of the dependency depends on `output.libraryTarget`.",
      "anyOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExternalItem"
          }
        },
        {
          "$ref": "#/definitions/ExternalItem"
        }
      ]
    },
    "ExternalsType": {
      "description": "Specifies the default type of externals ('amd*', 'umd*', 'system' and 'jsonp' depend on output.libraryTarget set to the same value).",
      "enum": [
        "var",
        "module",
        "assign",
        "this",
        "window",
        "self",
        "global",
        "commonjs",
        "commonjs2",
        "commonjs-module",
        "amd",
        "amd-require",
        "umd",
        "umd2",
        "jsonp",
        "system",
        "promise",
        "import",
        "script"
      ]
    },
    "FileCacheOptions": {
      "description": "Options object for persistent file-based caching.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "buildDependencies": {
          "description": "Dependencies the build depends on (in multiple categories, default categories: 'defaultWebpack').",
          "type": "object",
          "additionalProperties": {
            "description": "List of dependencies the build depends on.",
            "type": "array",
            "items": {
              "description": "Request to a dependency (resolved as directory relative to the context directory).",
              "type": "string",
              "minLength": 1
            }
          }
        },
        "cacheDirectory": {
          "description": "Base directory for the cache (defaults to node_modules/.cache/webpack).",
          "type": "string",
          "absolutePath": true
        },
        "cacheLocation": {
          "description": "Locations for the cache (defaults to cacheDirectory / name).",
          "type": "string",
          "absolutePath": true
        },
        "hashAlgorithm": {
          "description": "Algorithm used for generation the hash (see node.js crypto package).",
          "type": "string"
        },
        "idleTimeout": {
          "description": "Time in ms after which idle period the cache storing should happen (only for store: 'pack' or 'idle').",
          "type": "number",
          "minimum": 0
        },
        "idleTimeoutForInitialStore": {
          "description": "Time in ms after which idle period the initial cache storing should happen (only for store: 'pack' or 'idle').",
          "type": "number",
          "minimum": 0
        },
        "immutablePaths": {
          "description": "List of paths that are managed by a package manager and contain a version or hash in its path so all files are immutable.",
          "type": "array",
          "items": {
            "description": "A path to a immutable directory (usually a package manager cache directory).",
            "type": "string",
            "absolutePath": true,
            "minLength": 1
          }
        },
        "managedPaths": {
          "description": "List of paths that are managed by a package manager and can be trusted to not be modified otherwise.",
          "type": "array",
          "items": {
            "description": "A path to a managed directory (usually a node_modules directory).",
            "type": "string",
            "absolutePath": true,
            "minLength": 1
          }
        },
        "name": {
          "description": "Name for the cache. Different names will lead to different coexisting caches.",
          "type": "string"
        },
        "store": {
          "description": "When to store data to the filesystem. (pack: Store data when compiler is idle in a single file).",
          "enum": ["pack"]
        },
        "type": {
          "description": "Filesystem caching.",
          "enum": ["filesystem"]
        },
        "version": {
          "description": "Version of the cache data. Different versions won't allow to reuse the cache and override existing content. Update the version when config changed in a way which doesn't allow to reuse cache. This will invalidate the cache.",
          "type": "string"
        }
      },
      "required": ["type"]
    },
    "Filename": {
      "description": "Specifies the name of each output file on disk. You must **not** specify an absolute path here! The `output.path` option determines the location on disk the files are written to, filename is used solely for naming the individual files.",
      "anyOf": [
        {
          "type": "string",
          "absolutePath": false,
          "minLength": 1
        },
        {
          "instanceof": "Function",
          "tsType": "((pathData: import(\"../lib/Compilation\").PathData, assetInfo?: import(\"../lib/Compilation\").AssetInfo) => string)"
        }
      ]
    },
    "FilterItemTypes": {
      "description": "Filtering value, regexp or function.",
      "cli": {
        "helper": true
      },
      "anyOf": [
        {
          "instanceof": "RegExp",
          "tsType": "RegExp"
        },
        {
          "type": "string",
          "absolutePath": false
        },
        {
          "instanceof": "Function",
          "tsType": "((value: string) => boolean)"
        }
      ]
    },
    "FilterTypes": {
      "description": "Filtering values.",
      "cli": {
        "helper": true
      },
      "anyOf": [
        {
          "type": "array",
          "items": {
            "description": "Rule to filter.",
            "cli": {
              "helper": true
            },
            "oneOf": [
              {
                "$ref": "#/definitions/FilterItemTypes"
              }
            ]
          }
        },
        {
          "$ref": "#/definitions/FilterItemTypes"
        }
      ]
    },
    "GlobalObject": {
      "description": "An expression which is used to address the global object/scope in runtime code.",
      "type": "string",
      "minLength": 1
    },
    "HashDigest": {
      "description": "Digest type used for the hash.",
      "type": "string"
    },
    "HashDigestLength": {
      "description": "Number of chars which are used for the hash.",
      "type": "number",
      "minimum": 1
    },
    "HashFunction": {
      "description": "Algorithm used for generation the hash (see node.js crypto package).",
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "instanceof": "Function",
          "tsType": "typeof import('../lib/util/Hash')"
        }
      ]
    },
    "HashSalt": {
      "description": "Any string which is added to the hash to salt it.",
      "type": "string",
      "minLength": 1
    },
    "HotUpdateChunkFilename": {
      "description": "The filename of the Hot Update Chunks. They are inside the output.path directory.",
      "type": "string",
      "absolutePath": false
    },
    "HotUpdateFunction": {
      "description": "The JSONP function used by webpack for async loading of hot update chunks.",
      "type": "string"
    },
    "HotUpdateMainFilename": {
      "description": "The filename of the Hot Update Main File. It is inside the `output.path` directory.",
      "type": "string",
      "absolutePath": false
    },
    "Iife": {
      "description": "Wrap javascript code into IIFE's to avoid leaking into global scope.",
      "type": "boolean"
    },
    "ImportFunctionName": {
      "description": "The name of the native import() function (can be exchanged for a polyfill).",
      "type": "string"
    },
    "InfrastructureLogging": {
      "description": "Options for infrastructure level logging.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "debug": {
          "description": "Enable debug logging for specific loggers.",
          "anyOf": [
            {
              "description": "Enable/Disable debug logging for all loggers.",
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/FilterTypes"
            }
          ]
        },
        "level": {
          "description": "Log level.",
          "enum": ["none", "error", "warn", "info", "log", "verbose"]
        }
      }
    },
    "JsonpFunction": {
      "description": "The JSONP function used by webpack for async loading of chunks.",
      "type": "string"
    },
    "Library": {
      "description": "Make the output files a library, exporting the exports of the entry point.",
      "anyOf": [
        {
          "$ref": "#/definitions/LibraryName"
        },
        {
          "$ref": "#/definitions/LibraryOptions"
        }
      ]
    },
    "LibraryCustomUmdCommentObject": {
      "description": "Set explicit comments for `commonjs`, `commonjs2`, `amd`, and `root`.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "amd": {
          "description": "Set comment for `amd` section in UMD.",
          "type": "string"
        },
        "commonjs": {
          "description": "Set comment for `commonjs` (exports) section in UMD.",
          "type": "string"
        },
        "commonjs2": {
          "description": "Set comment for `commonjs2` (module.exports) section in UMD.",
          "type": "string"
        },
        "root": {
          "description": "Set comment for `root` (global variable) section in UMD.",
          "type": "string"
        }
      }
    },
    "LibraryCustomUmdObject": {
      "description": "Description object for all UMD variants of the library name.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "amd": {
          "description": "Name of the exposed AMD library in the UMD.",
          "type": "string",
          "minLength": 1
        },
        "commonjs": {
          "description": "Name of the exposed commonjs export in the UMD.",
          "type": "string",
          "minLength": 1
        },
        "root": {
          "description": "Name of the property exposed globally by a UMD library.",
          "anyOf": [
            {
              "type": "array",
              "items": {
                "description": "Part of the name of the property exposed globally by a UMD library.",
                "type": "string",
                "minLength": 1
              }
            },
            {
              "type": "string",
              "minLength": 1
            }
          ]
        }
      }
    },
    "LibraryExport": {
      "description": "Specify which export should be exposed as library.",
      "anyOf": [
        {
          "type": "array",
          "items": {
            "description": "Part of the export that should be exposed as library.",
            "type": "string",
            "minLength": 1
          }
        },
        {
          "type": "string",
          "minLength": 1
        }
      ]
    },
    "LibraryName": {
      "description": "The name of the library (some types allow unnamed libraries too).",
      "anyOf": [
        {
          "type": "array",
          "items": {
            "description": "A part of the library name.",
            "type": "string",
            "minLength": 1
          }
        },
        {
          "type": "string",
          "minLength": 1
        },
        {
          "$ref": "#/definitions/LibraryCustomUmdObject"
        }
      ]
    },
    "LibraryOptions": {
      "description": "Options for library.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "auxiliaryComment": {
          "$ref": "#/definitions/AuxiliaryComment"
        },
        "export": {
          "$ref": "#/definitions/LibraryExport"
        },
        "name": {
          "$ref": "#/definitions/LibraryName"
        },
        "type": {
          "$ref": "#/definitions/LibraryType"
        },
        "umdNamedDefine": {
          "$ref": "#/definitions/UmdNamedDefine"
        }
      },
      "required": ["type"]
    },
    "LibraryType": {
      "description": "Type of library.",
      "enum": [
        "var",
        "module",
        "assign",
        "this",
        "window",
        "self",
        "global",
        "commonjs",
        "commonjs2",
        "commonjs-module",
        "amd",
        "amd-require",
        "umd",
        "umd2",
        "jsonp",
        "system"
      ]
    },
    "Loader": {
      "description": "Custom values available in the loader context.",
      "type": "object"
    },
    "MemoryCacheOptions": {
      "description": "Options object for in-memory caching.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "immutablePaths": {
          "description": "List of paths that are managed by a package manager and contain a version or hash in its path so all files are immutable.",
          "type": "array",
          "items": {
            "description": "A path to a immutable directory (usually a package manager cache directory).",
            "type": "string",
            "absolutePath": true,
            "minLength": 1
          }
        },
        "managedPaths": {
          "description": "List of paths that are managed by a package manager and can be trusted to not be modified otherwise.",
          "type": "array",
          "items": {
            "description": "A path to a managed directory (usually a node_modules directory).",
            "type": "string",
            "absolutePath": true,
            "minLength": 1
          }
        },
        "type": {
          "description": "In memory caching.",
          "enum": ["memory"]
        }
      },
      "required": ["type"]
    },
    "Mode": {
      "description": "Enable production optimizations or development hints.",
      "enum": ["development", "production", "none"]
    },
    "ModuleOptions": {
      "description": "Options affecting the normal modules (`NormalModuleFactory`).",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "defaultRules": {
          "description": "An array of rules applied by default for modules.",
          "cli": {
            "exclude": true
          },
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetRules"
            }
          ]
        },
        "exprContextCritical": {
          "description": "Enable warnings for full dynamic dependencies.",
          "type": "boolean"
        },
        "exprContextRecursive": {
          "description": "Enable recursive directory lookup for full dynamic dependencies.",
          "type": "boolean"
        },
        "exprContextRegExp": {
          "description": "Sets the default regular expression for full dynamic dependencies.",
          "anyOf": [
            {
              "instanceof": "RegExp",
              "tsType": "RegExp"
            },
            {
              "type": "boolean"
            }
          ]
        },
        "exprContextRequest": {
          "description": "Set the default request for full dynamic dependencies.",
          "type": "string"
        },
        "noParse": {
          "description": "Don't parse files matching. It's matched against the full resolved request.",
          "anyOf": [
            {
              "type": "array",
              "items": {
                "description": "Don't parse files matching. It's matched against the full resolved request.",
                "anyOf": [
                  {
                    "description": "A regular expression, when matched the module is not parsed.",
                    "instanceof": "RegExp",
                    "tsType": "RegExp"
                  },
                  {
                    "description": "An absolute path, when the module starts with this path it is not parsed.",
                    "type": "string",
                    "absolutePath": true
                  },
                  {
                    "instanceof": "Function",
                    "tsType": "Function"
                  }
                ]
              },
              "minItems": 1
            },
            {
              "description": "A regular expression, when matched the module is not parsed.",
              "instanceof": "RegExp",
              "tsType": "RegExp"
            },
            {
              "description": "An absolute path, when the module starts with this path it is not parsed.",
              "type": "string",
              "absolutePath": true
            },
            {
              "instanceof": "Function",
              "tsType": "Function"
            }
          ]
        },
        "rules": {
          "description": "An array of rules applied for modules.",
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetRules"
            }
          ]
        },
        "strictExportPresence": {
          "description": "Emit errors instead of warnings when imported names don't exist in imported module.",
          "type": "boolean"
        },
        "strictThisContextOnImports": {
          "description": "Handle the this context correctly according to the spec for namespace objects.",
          "type": "boolean"
        },
        "unknownContextCritical": {
          "description": "Enable warnings when using the require function in a not statically analyse-able way.",
          "type": "boolean"
        },
        "unknownContextRecursive": {
          "description": "Enable recursive directory lookup when using the require function in a not statically analyse-able way.",
          "type": "boolean"
        },
        "unknownContextRegExp": {
          "description": "Sets the regular expression when using the require function in a not statically analyse-able way.",
          "anyOf": [
            {
              "instanceof": "RegExp",
              "tsType": "RegExp"
            },
            {
              "type": "boolean"
            }
          ]
        },
        "unknownContextRequest": {
          "description": "Sets the request when using the require function in a not statically analyse-able way.",
          "type": "string"
        },
        "unsafeCache": {
          "description": "Cache the resolving of module requests.",
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "instanceof": "Function",
              "tsType": "Function"
            }
          ]
        },
        "wrappedContextCritical": {
          "description": "Enable warnings for partial dynamic dependencies.",
          "type": "boolean"
        },
        "wrappedContextRecursive": {
          "description": "Enable recursive directory lookup for partial dynamic dependencies.",
          "type": "boolean"
        },
        "wrappedContextRegExp": {
          "description": "Set the inner regular expression for partial dynamic dependencies.",
          "instanceof": "RegExp",
          "tsType": "RegExp"
        }
      }
    },
    "Name": {
      "description": "Name of the configuration. Used when loading multiple configurations.",
      "type": "string"
    },
    "Node": {
      "description": "Include polyfills or mocks for various node stuff.",
      "anyOf": [
        {
          "enum": [false]
        },
        {
          "$ref": "#/definitions/NodeOptions"
        }
      ]
    },
    "NodeOptions": {
      "description": "Options object for node compatibility features.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "__dirname": {
          "description": "Include a polyfill for the '__dirname' variable.",
          "enum": [false, true, "mock"]
        },
        "__filename": {
          "description": "Include a polyfill for the '__filename' variable.",
          "enum": [false, true, "mock"]
        },
        "global": {
          "description": "Include a polyfill for the 'global' variable.",
          "type": "boolean"
        }
      }
    },
    "Optimization": {
      "description": "Enables/Disables integrated optimizations.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "checkWasmTypes": {
          "description": "Check for incompatible wasm types when importing/exporting from/to ESM.",
          "type": "boolean"
        },
        "chunkIds": {
          "description": "Define the algorithm to choose chunk ids (named: readable ids for better debugging, deterministic: numeric hash ids for better long term caching, size: numeric ids focused on minimal initial download size, total-size: numeric ids focused on minimal total download size, false: no algorithm used, as custom one can be provided via plugin).",
          "enum": [
            "natural",
            "named",
            "deterministic",
            "size",
            "total-size",
            false
          ]
        },
        "concatenateModules": {
          "description": "Concatenate modules when possible to generate less modules, more efficient code and enable more optimizations by the minimizer.",
          "type": "boolean"
        },
        "flagIncludedChunks": {
          "description": "Also flag chunks as loaded which contain a subset of the modules.",
          "type": "boolean"
        },
        "innerGraph": {
          "description": "Creates a module-internal dependency graph for top level symbols, exports and imports, to improve unused exports detection.",
          "type": "boolean"
        },
        "mangleExports": {
          "description": "Rename exports when possible to generate shorter code (depends on optimization.usedExports and optimization.providedExports).",
          "type": "boolean"
        },
        "mangleWasmImports": {
          "description": "Reduce size of WASM by changing imports to shorter strings.",
          "type": "boolean"
        },
        "mergeDuplicateChunks": {
          "description": "Merge chunks which contain the same modules.",
          "type": "boolean"
        },
        "minimize": {
          "description": "Enable minimizing the output. Uses optimization.minimizer.",
          "type": "boolean"
        },
        "minimizer": {
          "description": "Minimizer(s) to use for minimizing the output.",
          "type": "array",
          "items": {
            "description": "Plugin of type object or instanceof Function.",
            "anyOf": [
              {
                "$ref": "#/definitions/WebpackPluginInstance"
              },
              {
                "$ref": "#/definitions/WebpackPluginFunction"
              }
            ]
          }
        },
        "moduleIds": {
          "description": "Define the algorithm to choose module ids (natural: numeric ids in order of usage, named: readable ids for better debugging, hashed: (deprecated) short hashes as ids for better long term caching, deterministic: numeric hash ids for better long term caching, size: numeric ids focused on minimal initial download size, false: no algorithm used, as custom one can be provided via plugin).",
          "enum": ["natural", "named", "hashed", "deterministic", "size", false]
        },
        "noEmitOnErrors": {
          "description": "Avoid emitting assets when errors occur.",
          "type": "boolean"
        },
        "nodeEnv": {
          "description": "Set process.env.NODE_ENV to a specific value.",
          "anyOf": [
            {
              "enum": [false]
            },
            {
              "type": "string"
            }
          ]
        },
        "portableRecords": {
          "description": "Generate records with relative paths to be able to move the context folder.",
          "type": "boolean"
        },
        "providedExports": {
          "description": "Figure out which exports are provided by modules to generate more efficient code.",
          "type": "boolean"
        },
        "removeAvailableModules": {
          "description": "Removes modules from chunks when these modules are already included in all parents.",
          "type": "boolean"
        },
        "removeEmptyChunks": {
          "description": "Remove chunks which are empty.",
          "type": "boolean"
        },
        "runtimeChunk": {
          "$ref": "#/definitions/OptimizationRuntimeChunk"
        },
        "sideEffects": {
          "description": "Skip over modules which are flagged to contain no side effects when exports are not used.",
          "type": "boolean"
        },
        "splitChunks": {
          "description": "Optimize duplication and caching by splitting chunks by shared modules and cache group.",
          "anyOf": [
            {
              "enum": [false]
            },
            {
              "$ref": "#/definitions/OptimizationSplitChunksOptions"
            }
          ]
        },
        "usedExports": {
          "description": "Figure out which exports are used by modules to mangle export names, omit unused exports and generate more efficient code.",
          "type": "boolean"
        }
      }
    },
    "OptimizationRuntimeChunk": {
      "description": "Create an additional chunk which contains only the webpack runtime and chunk hash maps.",
      "anyOf": [
        {
          "enum": ["single", "multiple"]
        },
        {
          "type": "boolean"
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "name": {
              "description": "The name or name factory for the runtime chunks.",
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "instanceof": "Function",
                  "tsType": "Function"
                }
              ]
            }
          }
        }
      ]
    },
    "OptimizationRuntimeChunkNormalized": {
      "description": "Create an additional chunk which contains only the webpack runtime and chunk hash maps.",
      "anyOf": [
        {
          "enum": [false]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "name": {
              "description": "The name factory for the runtime chunks.",
              "instanceof": "Function",
              "tsType": "Function"
            }
          }
        }
      ]
    },
    "OptimizationSplitChunksCacheGroup": {
      "description": "Options object for describing behavior of a cache group selecting modules that should be cached together.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "automaticNameDelimiter": {
          "description": "Sets the name delimiter for created chunks.",
          "type": "string",
          "minLength": 1
        },
        "chunks": {
          "description": "Select chunks for determining cache group content (defaults to \"initial\", \"initial\" and \"all\" requires adding these chunks to the HTML).",
          "anyOf": [
            {
              "enum": ["initial", "async", "all"]
            },
            {
              "instanceof": "Function",
              "tsType": "((chunk: import('../lib/Chunk')) => boolean)"
            }
          ]
        },
        "enforce": {
          "description": "Ignore minimum size, minimum chunks and maximum requests and always create chunks for this cache group.",
          "type": "boolean"
        },
        "filename": {
          "description": "Sets the template for the filename for created chunks.",
          "anyOf": [
            {
              "type": "string",
              "absolutePath": false,
              "minLength": 1
            },
            {
              "instanceof": "Function",
              "tsType": "((pathData: import(\"../lib/Compilation\").PathData, assetInfo?: import(\"../lib/Compilation\").AssetInfo) => string)"
            }
          ]
        },
        "idHint": {
          "description": "Sets the hint for chunk id.",
          "type": "string"
        },
        "maxAsyncRequests": {
          "description": "Maximum number of requests which are accepted for on-demand loading.",
          "type": "number",
          "minimum": 1
        },
        "maxAsyncSize": {
          "description": "Maximal size hint for the on-demand chunks.",
          "oneOf": [
            {
              "$ref": "#/definitions/OptimizationSplitChunksSizes"
            }
          ]
        },
        "maxInitialRequests": {
          "description": "Maximum number of initial chunks which are accepted for an entry point.",
          "type": "number",
          "minimum": 1
        },
        "maxInitialSize": {
          "description": "Maximal size hint for the initial chunks.",
          "oneOf": [
            {
              "$ref": "#/definitions/OptimizationSplitChunksSizes"
            }
          ]
        },
        "maxSize": {
          "description": "Maximal size hint for the created chunks.",
          "oneOf": [
            {
              "$ref": "#/definitions/OptimizationSplitChunksSizes"
            }
          ]
        },
        "minChunks": {
          "description": "Minimum number of times a module has to be duplicated until it's considered for splitting.",
          "type": "number",
          "minimum": 1
        },
        "minRemainingSize": {
          "description": "Minimal size for the chunks the stay after moving the modules to a new chunk.",
          "oneOf": [
            {
              "$ref": "#/definitions/OptimizationSplitChunksSizes"
            }
          ]
        },
        "minSize": {
          "description": "Minimal size for the created chunk.",
          "oneOf": [
            {
              "$ref": "#/definitions/OptimizationSplitChunksSizes"
            }
          ]
        },
        "name": {
          "description": "Give chunks for this cache group a name (chunks with equal name are merged).",
          "anyOf": [
            {
              "enum": [false]
            },
            {
              "type": "string"
            },
            {
              "instanceof": "Function",
              "tsType": "Function"
            }
          ]
        },
        "priority": {
          "description": "Priority of this cache group.",
          "type": "number"
        },
        "reuseExistingChunk": {
          "description": "Try to reuse existing chunk (with name) when it has matching modules.",
          "type": "boolean"
        },
        "test": {
          "description": "Assign modules to a cache group by module name.",
          "anyOf": [
            {
              "instanceof": "RegExp",
              "tsType": "RegExp"
            },
            {
              "type": "string"
            },
            {
              "instanceof": "Function",
              "tsType": "Function"
            }
          ]
        },
        "type": {
          "description": "Assign modules to a cache group by module type.",
          "anyOf": [
            {
              "instanceof": "RegExp",
              "tsType": "RegExp"
            },
            {
              "type": "string"
            },
            {
              "instanceof": "Function",
              "tsType": "Function"
            }
          ]
        }
      }
    },
    "OptimizationSplitChunksGetCacheGroups": {
      "description": "A function returning cache groups.",
      "instanceof": "Function",
      "tsType": "((module: import('../lib/Module')) => OptimizationSplitChunksCacheGroup | OptimizationSplitChunksCacheGroup[] | void)"
    },
    "OptimizationSplitChunksOptions": {
      "description": "Options object for splitting chunks into smaller chunks.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "automaticNameDelimiter": {
          "description": "Sets the name delimiter for created chunks.",
          "type": "string",
          "minLength": 1
        },
        "cacheGroups": {
          "description": "Assign modules to a cache group (modules from different cache groups are tried to keep in separate chunks, default categories: 'default', 'defaultVendors').",
          "type": "object",
          "additionalProperties": {
            "description": "Configuration for a cache group.",
            "anyOf": [
              {
                "enum": [false]
              },
              {
                "instanceof": "RegExp",
                "tsType": "RegExp"
              },
              {
                "type": "string"
              },
              {
                "instanceof": "Function",
                "tsType": "Function"
              },
              {
                "$ref": "#/definitions/OptimizationSplitChunksCacheGroup"
              }
            ]
          },
          "not": {
            "description": "Using the cacheGroup shorthand syntax with a cache group named 'test' is a potential config error\nDid you intent to define a cache group with a test instead?\ncacheGroups: {\n  <name>: {\n    test: ...\n  }\n}.",
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "test": {
                "description": "The test property is a cache group name, but using the test option of the cache group could be intended instead.",
                "anyOf": [
                  {
                    "instanceof": "Function",
                    "tsType": "Function"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "instanceof": "RegExp",
                    "tsType": "RegExp"
                  }
                ]
              }
            },
            "required": ["test"]
          }
        },
        "chunks": {
          "description": "Select chunks for determining shared modules (defaults to \"async\", \"initial\" and \"all\" requires adding these chunks to the HTML).",
          "anyOf": [
            {
              "enum": ["initial", "async", "all"]
            },
            {
              "instanceof": "Function",
              "tsType": "((chunk: import('../lib/Chunk')) => boolean)"
            }
          ]
        },
        "fallbackCacheGroup": {
          "description": "Options for modules not selected by any other cache group.",
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "automaticNameDelimiter": {
              "description": "Sets the name delimiter for created chunks.",
              "type": "string",
              "minLength": 1
            },
            "maxAsyncSize": {
              "description": "Maximal size hint for the on-demand chunks.",
              "oneOf": [
                {
                  "$ref": "#/definitions/OptimizationSplitChunksSizes"
                }
              ]
            },
            "maxInitialSize": {
              "description": "Maximal size hint for the initial chunks.",
              "oneOf": [
                {
                  "$ref": "#/definitions/OptimizationSplitChunksSizes"
                }
              ]
            },
            "maxSize": {
              "description": "Maximal size hint for the created chunks.",
              "oneOf": [
                {
                  "$ref": "#/definitions/OptimizationSplitChunksSizes"
                }
              ]
            },
            "minSize": {
              "description": "Minimal size for the created chunk.",
              "oneOf": [
                {
                  "$ref": "#/definitions/OptimizationSplitChunksSizes"
                }
              ]
            }
          }
        },
        "filename": {
          "description": "Sets the template for the filename for created chunks.",
          "anyOf": [
            {
              "type": "string",
              "absolutePath": false,
              "minLength": 1
            },
            {
              "instanceof": "Function",
              "tsType": "((pathData: import(\"../lib/Compilation\").PathData, assetInfo?: import(\"../lib/Compilation\").AssetInfo) => string)"
            }
          ]
        },
        "hidePathInfo": {
          "description": "Prevents exposing path info when creating names for parts splitted by maxSize.",
          "type": "boolean"
        },
        "maxAsyncRequests": {
          "description": "Maximum number of requests which are accepted for on-demand loading.",
          "type": "number",
          "minimum": 1
        },
        "maxAsyncSize": {
          "description": "Maximal size hint for the on-demand chunks.",
          "oneOf": [
            {
              "$ref": "#/definitions/OptimizationSplitChunksSizes"
            }
          ]
        },
        "maxInitialRequests": {
          "description": "Maximum number of initial chunks which are accepted for an entry point.",
          "type": "number",
          "minimum": 1
        },
        "maxInitialSize": {
          "description": "Maximal size hint for the initial chunks.",
          "oneOf": [
            {
              "$ref": "#/definitions/OptimizationSplitChunksSizes"
            }
          ]
        },
        "maxSize": {
          "description": "Maximal size hint for the created chunks.",
          "oneOf": [
            {
              "$ref": "#/definitions/OptimizationSplitChunksSizes"
            }
          ]
        },
        "minChunks": {
          "description": "Minimum number of times a module has to be duplicated until it's considered for splitting.",
          "type": "number",
          "minimum": 1
        },
        "minRemainingSize": {
          "description": "Minimal size for the chunks the stay after moving the modules to a new chunk.",
          "oneOf": [
            {
              "$ref": "#/definitions/OptimizationSplitChunksSizes"
            }
          ]
        },
        "minSize": {
          "description": "Minimal size for the created chunks.",
          "oneOf": [
            {
              "$ref": "#/definitions/OptimizationSplitChunksSizes"
            }
          ]
        },
        "name": {
          "description": "Give chunks created a name (chunks with equal name are merged).",
          "anyOf": [
            {
              "enum": [false]
            },
            {
              "type": "string"
            },
            {
              "instanceof": "Function",
              "tsType": "Function"
            }
          ]
        }
      }
    },
    "OptimizationSplitChunksSizes": {
      "description": "Size description for limits.",
      "anyOf": [
        {
          "description": "Size of the javascript part of the chunk.",
          "type": "number",
          "minimum": 0
        },
        {
          "description": "Specify size limits per size type.",
          "type": "object",
          "additionalProperties": {
            "description": "Size of the part of the chunk with the type of the key.",
            "type": "number"
          }
        }
      ]
    },
    "Output": {
      "description": "Options affecting the output of the compilation. `output` options tell webpack how to write the compiled files to disk.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "assetModuleFilename": {
          "$ref": "#/definitions/AssetModuleFilename"
        },
        "auxiliaryComment": {
          "cli": {
            "exclude": true
          },
          "oneOf": [
            {
              "$ref": "#/definitions/AuxiliaryComment"
            }
          ]
        },
        "chunkCallbackName": {
          "$ref": "#/definitions/ChunkCallbackName"
        },
        "chunkFilename": {
          "$ref": "#/definitions/ChunkFilename"
        },
        "chunkLoadTimeout": {
          "$ref": "#/definitions/ChunkLoadTimeout"
        },
        "compareBeforeEmit": {
          "$ref": "#/definitions/CompareBeforeEmit"
        },
        "crossOriginLoading": {
          "$ref": "#/definitions/CrossOriginLoading"
        },
        "devtoolFallbackModuleFilenameTemplate": {
          "$ref": "#/definitions/DevtoolFallbackModuleFilenameTemplate"
        },
        "devtoolModuleFilenameTemplate": {
          "$ref": "#/definitions/DevtoolModuleFilenameTemplate"
        },
        "devtoolNamespace": {
          "$ref": "#/definitions/DevtoolNamespace"
        },
        "ecmaVersion": {
          "$ref": "#/definitions/EcmaVersion"
        },
        "enabledLibraryTypes": {
          "$ref": "#/definitions/EnabledLibraryTypes"
        },
        "filename": {
          "$ref": "#/definitions/Filename"
        },
        "globalObject": {
          "$ref": "#/definitions/GlobalObject"
        },
        "hashDigest": {
          "$ref": "#/definitions/HashDigest"
        },
        "hashDigestLength": {
          "$ref": "#/definitions/HashDigestLength"
        },
        "hashFunction": {
          "$ref": "#/definitions/HashFunction"
        },
        "hashSalt": {
          "$ref": "#/definitions/HashSalt"
        },
        "hotUpdateChunkFilename": {
          "$ref": "#/definitions/HotUpdateChunkFilename"
        },
        "hotUpdateFunction": {
          "$ref": "#/definitions/HotUpdateFunction"
        },
        "hotUpdateMainFilename": {
          "$ref": "#/definitions/HotUpdateMainFilename"
        },
        "iife": {
          "$ref": "#/definitions/Iife"
        },
        "importFunctionName": {
          "$ref": "#/definitions/ImportFunctionName"
        },
        "jsonpFunction": {
          "$ref": "#/definitions/JsonpFunction"
        },
        "library": {
          "$ref": "#/definitions/Library"
        },
        "libraryExport": {
          "cli": {
            "exclude": true
          },
          "oneOf": [
            {
              "$ref": "#/definitions/LibraryExport"
            }
          ]
        },
        "libraryTarget": {
          "cli": {
            "exclude": true
          },
          "oneOf": [
            {
              "$ref": "#/definitions/LibraryType"
            }
          ]
        },
        "module": {
          "$ref": "#/definitions/OutputModule"
        },
        "path": {
          "$ref": "#/definitions/Path"
        },
        "pathinfo": {
          "$ref": "#/definitions/Pathinfo"
        },
        "publicPath": {
          "$ref": "#/definitions/PublicPath"
        },
        "scriptType": {
          "$ref": "#/definitions/ScriptType"
        },
        "sourceMapFilename": {
          "$ref": "#/definitions/SourceMapFilename"
        },
        "sourcePrefix": {
          "$ref": "#/definitions/SourcePrefix"
        },
        "strictModuleExceptionHandling": {
          "$ref": "#/definitions/StrictModuleExceptionHandling"
        },
        "umdNamedDefine": {
          "cli": {
            "exclude": true
          },
          "oneOf": [
            {
              "$ref": "#/definitions/UmdNamedDefine"
            }
          ]
        },
        "uniqueName": {
          "$ref": "#/definitions/UniqueName"
        },
        "webassemblyModuleFilename": {
          "$ref": "#/definitions/WebassemblyModuleFilename"
        }
      }
    },
    "OutputModule": {
      "description": "Output javascript files as module source type.",
      "type": "boolean"
    },
    "OutputNormalized": {
      "description": "Normalized options affecting the output of the compilation. `output` options tell webpack how to write the compiled files to disk.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "assetModuleFilename": {
          "$ref": "#/definitions/AssetModuleFilename"
        },
        "chunkCallbackName": {
          "$ref": "#/definitions/ChunkCallbackName"
        },
        "chunkFilename": {
          "$ref": "#/definitions/ChunkFilename"
        },
        "chunkLoadTimeout": {
          "$ref": "#/definitions/ChunkLoadTimeout"
        },
        "compareBeforeEmit": {
          "$ref": "#/definitions/CompareBeforeEmit"
        },
        "crossOriginLoading": {
          "$ref": "#/definitions/CrossOriginLoading"
        },
        "devtoolFallbackModuleFilenameTemplate": {
          "$ref": "#/definitions/DevtoolFallbackModuleFilenameTemplate"
        },
        "devtoolModuleFilenameTemplate": {
          "$ref": "#/definitions/DevtoolModuleFilenameTemplate"
        },
        "devtoolNamespace": {
          "$ref": "#/definitions/DevtoolNamespace"
        },
        "ecmaVersion": {
          "$ref": "#/definitions/EcmaVersion"
        },
        "enabledLibraryTypes": {
          "$ref": "#/definitions/EnabledLibraryTypes"
        },
        "filename": {
          "$ref": "#/definitions/Filename"
        },
        "globalObject": {
          "$ref": "#/definitions/GlobalObject"
        },
        "hashDigest": {
          "$ref": "#/definitions/HashDigest"
        },
        "hashDigestLength": {
          "$ref": "#/definitions/HashDigestLength"
        },
        "hashFunction": {
          "$ref": "#/definitions/HashFunction"
        },
        "hashSalt": {
          "$ref": "#/definitions/HashSalt"
        },
        "hotUpdateChunkFilename": {
          "$ref": "#/definitions/HotUpdateChunkFilename"
        },
        "hotUpdateFunction": {
          "$ref": "#/definitions/HotUpdateFunction"
        },
        "hotUpdateMainFilename": {
          "$ref": "#/definitions/HotUpdateMainFilename"
        },
        "iife": {
          "$ref": "#/definitions/Iife"
        },
        "importFunctionName": {
          "$ref": "#/definitions/ImportFunctionName"
        },
        "jsonpFunction": {
          "$ref": "#/definitions/JsonpFunction"
        },
        "library": {
          "$ref": "#/definitions/LibraryOptions"
        },
        "module": {
          "$ref": "#/definitions/OutputModule"
        },
        "path": {
          "$ref": "#/definitions/Path"
        },
        "pathinfo": {
          "$ref": "#/definitions/Pathinfo"
        },
        "publicPath": {
          "$ref": "#/definitions/PublicPath"
        },
        "scriptType": {
          "$ref": "#/definitions/ScriptType"
        },
        "sourceMapFilename": {
          "$ref": "#/definitions/SourceMapFilename"
        },
        "sourcePrefix": {
          "$ref": "#/definitions/SourcePrefix"
        },
        "strictModuleExceptionHandling": {
          "$ref": "#/definitions/StrictModuleExceptionHandling"
        },
        "uniqueName": {
          "$ref": "#/definitions/UniqueName"
        },
        "webassemblyModuleFilename": {
          "$ref": "#/definitions/WebassemblyModuleFilename"
        }
      }
    },
    "Parallelism": {
      "description": "The number of parallel processed modules in the compilation.",
      "type": "number",
      "minimum": 1
    },
    "Path": {
      "description": "The output directory as **absolute path** (required).",
      "type": "string",
      "absolutePath": true
    },
    "Pathinfo": {
      "description": "Include comments with information about the modules.",
      "type": "boolean"
    },
    "Performance": {
      "description": "Configuration for web performance recommendations.",
      "anyOf": [
        {
          "enum": [false]
        },
        {
          "$ref": "#/definitions/PerformanceOptions"
        }
      ]
    },
    "PerformanceOptions": {
      "description": "Configuration object for web performance recommendations.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "assetFilter": {
          "description": "Filter function to select assets that are checked.",
          "instanceof": "Function",
          "tsType": "Function"
        },
        "hints": {
          "description": "Sets the format of the hints: warnings, errors or nothing at all.",
          "enum": [false, "warning", "error"]
        },
        "maxAssetSize": {
          "description": "File size limit (in bytes) when exceeded, that webpack will provide performance hints.",
          "type": "number"
        },
        "maxEntrypointSize": {
          "description": "Total size of an entry point (in bytes).",
          "type": "number"
        }
      }
    },
    "Plugins": {
      "description": "Add additional plugins to the compiler.",
      "type": "array",
      "items": {
        "description": "Plugin of type object or instanceof Function.",
        "anyOf": [
          {
            "$ref": "#/definitions/WebpackPluginInstance"
          },
          {
            "$ref": "#/definitions/WebpackPluginFunction"
          }
        ]
      }
    },
    "Profile": {
      "description": "Capture timing information for each module.",
      "type": "boolean"
    },
    "PublicPath": {
      "description": "The `publicPath` specifies the public URL address of the output files when referenced in a browser.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "instanceof": "Function",
          "tsType": "((pathData: import(\"../lib/Compilation\").PathData, assetInfo?: import(\"../lib/Compilation\").AssetInfo) => string)"
        }
      ]
    },
    "RecordsInputPath": {
      "description": "Store compiler state to a json file.",
      "anyOf": [
        {
          "enum": [false]
        },
        {
          "type": "string",
          "absolutePath": true
        }
      ]
    },
    "RecordsOutputPath": {
      "description": "Load compiler state from a json file.",
      "anyOf": [
        {
          "enum": [false]
        },
        {
          "type": "string",
          "absolutePath": true
        }
      ]
    },
    "RecordsPath": {
      "description": "Store/Load compiler state from/to a json file. This will result in persistent ids of modules and chunks. An absolute path is expected. `recordsPath` is used for `recordsInputPath` and `recordsOutputPath` if they left undefined.",
      "anyOf": [
        {
          "enum": [false]
        },
        {
          "type": "string",
          "absolutePath": true
        }
      ]
    },
    "Resolve": {
      "description": "Options for the resolver.",
      "oneOf": [
        {
          "$ref": "#/definitions/ResolveOptions"
        }
      ]
    },
    "ResolveLoader": {
      "description": "Options for the resolver when resolving loaders.",
      "oneOf": [
        {
          "$ref": "#/definitions/ResolveOptions"
        }
      ]
    },
    "ResolveOptions": {
      "description": "Options object for resolving requests.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "alias": {
          "description": "Redirect module requests.",
          "anyOf": [
            {
              "type": "array",
              "items": {
                "description": "Alias configuration.",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "alias": {
                    "description": "New request.",
                    "anyOf": [
                      {
                        "description": "Multiple alternative requests.",
                        "type": "array",
                        "items": {
                          "description": "One choice of request.",
                          "type": "string",
                          "minLength": 1
                        }
                      },
                      {
                        "description": "Ignore request (replace with empty module).",
                        "enum": [false]
                      },
                      {
                        "description": "New request.",
                        "type": "string",
                        "minLength": 1
                      }
                    ]
                  },
                  "name": {
                    "description": "Request to be redirected.",
                    "type": "string"
                  },
                  "onlyModule": {
                    "description": "Redirect only exact matching request.",
                    "type": "boolean"
                  }
                },
                "required": ["alias", "name"]
              }
            },
            {
              "type": "object",
              "additionalProperties": {
                "description": "New request.",
                "anyOf": [
                  {
                    "description": "Multiple alternative requests.",
                    "type": "array",
                    "items": {
                      "description": "One choice of request.",
                      "type": "string",
                      "minLength": 1
                    }
                  },
                  {
                    "description": "Ignore request (replace with empty module).",
                    "enum": [false]
                  },
                  {
                    "description": "New request.",
                    "type": "string",
                    "minLength": 1
                  }
                ]
              }
            }
          ]
        },
        "aliasFields": {
          "description": "Fields in the description file (usually package.json) which are used to redirect requests inside the module.",
          "type": "array",
          "items": {
            "description": "Field in the description file (usually package.json) which are used to redirect requests inside the module.",
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "description": "Part of the field path in the description file (usually package.json) which are used to redirect requests inside the module.",
                  "type": "string",
                  "minLength": 1
                }
              },
              {
                "type": "string",
                "minLength": 1
              }
            ]
          }
        },
        "byDependency": {
          "description": "Extra resolve options per dependency category. Typical categories are \"commonjs\", \"amd\", \"esm\".",
          "type": "object",
          "additionalProperties": {
            "description": "Options object for resolving requests.",
            "oneOf": [
              {
                "$ref": "#/definitions/ResolveOptions"
              }
            ]
          }
        },
        "cache": {
          "description": "Enable caching of successfully resolved requests (cache entries are revalidated).",
          "type": "boolean"
        },
        "cachePredicate": {
          "description": "Predicate function to decide which requests should be cached.",
          "instanceof": "Function",
          "tsType": "((request: import('enhanced-resolve').ResolveRequest) => boolean)"
        },
        "cacheWithContext": {
          "description": "Include the context information in the cache identifier when caching.",
          "type": "boolean"
        },
        "conditionNames": {
          "description": "Condition names for exports field entry point.",
          "type": "array",
          "items": {
            "description": "Condition names for exports field entry point.",
            "type": "string"
          }
        },
        "descriptionFiles": {
          "description": "Filenames used to find a description file (like a package.json).",
          "type": "array",
          "items": {
            "description": "Filename used to find a description file (like a package.json).",
            "type": "string",
            "minLength": 1
          }
        },
        "enforceExtension": {
          "description": "Enforce using one of the extensions from the extensions option.",
          "type": "boolean"
        },
        "exportsFields": {
          "description": "Field names from the description file (usually package.json) which are used to provide entry points of a package.",
          "type": "array",
          "items": {
            "description": "Field name from the description file (usually package.json) which is used to provide entry points of a package.",
            "type": "string"
          }
        },
        "extensions": {
          "description": "Extensions added to the request when trying to find the file.",
          "type": "array",
          "items": {
            "description": "Extension added to the request when trying to find the file.",
            "type": "string",
            "minLength": 1
          }
        },
        "fileSystem": {
          "description": "Filesystem for the resolver.",
          "tsType": "(import('../lib/util/fs').InputFileSystem)"
        },
        "mainFields": {
          "description": "Field names from the description file (package.json) which are used to find the default entry point.",
          "type": "array",
          "items": {
            "description": "Field name from the description file (package.json) which are used to find the default entry point.",
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "description": "Part of the field path from the description file (package.json) which are used to find the default entry point.",
                  "type": "string",
                  "minLength": 1
                }
              },
              {
                "type": "string",
                "minLength": 1
              }
            ]
          }
        },
        "mainFiles": {
          "description": "Filenames used to find the default entry point if there is no description file or main field.",
          "type": "array",
          "items": {
            "description": "Filename used to find the default entry point if there is no description file or main field.",
            "type": "string",
            "minLength": 1
          }
        },
        "modules": {
          "description": "Folder names or directory paths where to find modules.",
          "type": "array",
          "items": {
            "description": "Folder name or directory path where to find modules.",
            "type": "string",
            "minLength": 1
          }
        },
        "plugins": {
          "description": "Plugins for the resolver.",
          "type": "array",
          "items": {
            "description": "Plugin of type object or instanceof Function.",
            "oneOf": [
              {
                "$ref": "#/definitions/ResolvePluginInstance"
              }
            ]
          }
        },
        "resolver": {
          "description": "Custom resolver.",
          "tsType": "(import('enhanced-resolve').Resolver)"
        },
        "restrictions": {
          "description": "A list of resolve restrictions. Resolve results must fulfill all of these restrictions to resolve successfully. Other resolve paths are taken when restrictions are not met.",
          "type": "array",
          "items": {
            "description": "Resolve restriction. Resolve result must fulfill this restriction.",
            "anyOf": [
              {
                "instanceof": "RegExp",
                "tsType": "RegExp"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "roots": {
          "description": "A list of directories in which requests that are server-relative URLs (starting with '/') are resolved. On non-windows system these requests are tried to resolve as absolute path first.",
          "type": "array",
          "items": {
            "description": "Directory in which requests that are server-relative URLs (starting with '/') are resolved.",
            "type": "string"
          }
        },
        "symlinks": {
          "description": "Enable resolving symlinks to the original location.",
          "type": "boolean"
        },
        "unsafeCache": {
          "description": "Enable caching of successfully resolved requests (cache entries are not revalidated).",
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "object",
              "additionalProperties": true
            }
          ]
        },
        "useSyncFileSystemCalls": {
          "description": "Use synchronous filesystem calls for the resolver.",
          "type": "boolean"
        }
      }
    },
    "ResolvePluginInstance": {
      "description": "Plugin instance.",
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "apply": {
          "description": "The run point of the plugin, required method.",
          "instanceof": "Function",
          "tsType": "(resolver: import('enhanced-resolve/lib/Resolver')) => void"
        }
      },
      "required": ["apply"]
    },
    "RuleSetCondition": {
      "description": "A condition matcher.",
      "cli": {
        "helper": true
      },
      "anyOf": [
        {
          "instanceof": "RegExp",
          "tsType": "RegExp"
        },
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "and": {
              "description": "Logical AND.",
              "oneOf": [
                {
                  "$ref": "#/definitions/RuleSetConditions"
                }
              ]
            },
            "not": {
              "description": "Logical NOT.",
              "oneOf": [
                {
                  "$ref": "#/definitions/RuleSetConditions"
                }
              ]
            },
            "or": {
              "description": "Logical OR.",
              "oneOf": [
                {
                  "$ref": "#/definitions/RuleSetConditions"
                }
              ]
            }
          }
        },
        {
          "instanceof": "Function",
          "tsType": "((value: string) => boolean)"
        },
        {
          "$ref": "#/definitions/RuleSetConditions"
        }
      ]
    },
    "RuleSetConditionAbsolute": {
      "description": "A condition matcher matching an absolute path.",
      "cli": {
        "helper": true
      },
      "anyOf": [
        {
          "instanceof": "RegExp",
          "tsType": "RegExp"
        },
        {
          "type": "string",
          "absolutePath": true
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "and": {
              "description": "Logical AND.",
              "oneOf": [
                {
                  "$ref": "#/definitions/RuleSetConditionsAbsolute"
                }
              ]
            },
            "not": {
              "description": "Logical NOT.",
              "oneOf": [
                {
                  "$ref": "#/definitions/RuleSetConditionsAbsolute"
                }
              ]
            },
            "or": {
              "description": "Logical OR.",
              "oneOf": [
                {
                  "$ref": "#/definitions/RuleSetConditionsAbsolute"
                }
              ]
            }
          }
        },
        {
          "instanceof": "Function",
          "tsType": "((value: string) => boolean)"
        },
        {
          "$ref": "#/definitions/RuleSetConditionsAbsolute"
        }
      ]
    },
    "RuleSetConditionOrConditions": {
      "description": "One or multiple rule conditions.",
      "cli": {
        "helper": true
      },
      "anyOf": [
        {
          "$ref": "#/definitions/RuleSetCondition"
        },
        {
          "$ref": "#/definitions/RuleSetConditions"
        }
      ]
    },
    "RuleSetConditionOrConditionsAbsolute": {
      "description": "One or multiple rule conditions matching an absolute path.",
      "cli": {
        "helper": true
      },
      "anyOf": [
        {
          "$ref": "#/definitions/RuleSetConditionAbsolute"
        },
        {
          "$ref": "#/definitions/RuleSetConditionsAbsolute"
        }
      ]
    },
    "RuleSetConditions": {
      "description": "A list of rule conditions.",
      "type": "array",
      "items": {
        "description": "A rule condition.",
        "oneOf": [
          {
            "$ref": "#/definitions/RuleSetCondition"
          }
        ]
      }
    },
    "RuleSetConditionsAbsolute": {
      "description": "A list of rule conditions matching an absolute path.",
      "type": "array",
      "items": {
        "description": "A rule condition matching an absolute path.",
        "oneOf": [
          {
            "$ref": "#/definitions/RuleSetConditionAbsolute"
          }
        ]
      }
    },
    "RuleSetLoader": {
      "description": "A loader request.",
      "type": "string",
      "minLength": 1
    },
    "RuleSetLoaderOptions": {
      "description": "Options passed to a loader.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "object"
        }
      ]
    },
    "RuleSetRule": {
      "description": "A rule description with conditions and effects for modules.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "compiler": {
          "description": "Match the child compiler name.",
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetConditionOrConditions"
            }
          ]
        },
        "enforce": {
          "description": "Enforce this rule as pre or post step.",
          "enum": ["pre", "post"]
        },
        "exclude": {
          "description": "Shortcut for resource.exclude.",
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetConditionOrConditionsAbsolute"
            }
          ]
        },
        "generator": {
          "description": "The options for the module generator.",
          "type": "object"
        },
        "include": {
          "description": "Shortcut for resource.include.",
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetConditionOrConditionsAbsolute"
            }
          ]
        },
        "issuer": {
          "description": "Match the issuer of the module (The module pointing to this module).",
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetConditionOrConditionsAbsolute"
            }
          ]
        },
        "loader": {
          "description": "Shortcut for use.loader.",
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetLoader"
            }
          ]
        },
        "mimetype": {
          "description": "Match module mimetype when load from Data URI.",
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetConditionOrConditions"
            }
          ]
        },
        "oneOf": {
          "description": "Only execute the first matching rule in this array.",
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetRules"
            }
          ]
        },
        "options": {
          "description": "Shortcut for use.options.",
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetLoaderOptions"
            }
          ]
        },
        "parser": {
          "description": "Options for parsing.",
          "type": "object",
          "additionalProperties": true
        },
        "realResource": {
          "description": "Match the real resource path of the module.",
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetConditionOrConditionsAbsolute"
            }
          ]
        },
        "resolve": {
          "description": "Options for the resolver.",
          "type": "object",
          "oneOf": [
            {
              "$ref": "#/definitions/ResolveOptions"
            }
          ]
        },
        "resource": {
          "description": "Match the resource path of the module.",
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetConditionOrConditionsAbsolute"
            }
          ]
        },
        "resourceFragment": {
          "description": "Match the resource fragment of the module.",
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetConditionOrConditions"
            }
          ]
        },
        "resourceQuery": {
          "description": "Match the resource query of the module.",
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetConditionOrConditions"
            }
          ]
        },
        "rules": {
          "description": "Match and execute these rules when this rule is matched.",
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetRules"
            }
          ]
        },
        "sideEffects": {
          "description": "Flags a module as with or without side effects.",
          "type": "boolean"
        },
        "test": {
          "description": "Shortcut for resource.test.",
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetConditionOrConditionsAbsolute"
            }
          ]
        },
        "type": {
          "description": "Module type to use for the module.",
          "type": "string"
        },
        "use": {
          "description": "Modifiers applied to the module when rule is matched.",
          "oneOf": [
            {
              "$ref": "#/definitions/RuleSetUse"
            }
          ]
        }
      }
    },
    "RuleSetRules": {
      "description": "A list of rules.",
      "type": "array",
      "items": {
        "description": "A rule.",
        "oneOf": [
          {
            "$ref": "#/definitions/RuleSetRule"
          }
        ]
      }
    },
    "RuleSetUse": {
      "description": "A list of descriptions of loaders applied.",
      "anyOf": [
        {
          "type": "array",
          "items": {
            "description": "An use item.",
            "oneOf": [
              {
                "$ref": "#/definitions/RuleSetUseItem"
              }
            ]
          }
        },
        {
          "instanceof": "Function",
          "tsType": "((data: { resource: string, realResource: string, resourceQuery: string, issuer: string, compiler: string }) => RuleSetUseItem[])"
        },
        {
          "$ref": "#/definitions/RuleSetUseItem"
        }
      ]
    },
    "RuleSetUseItem": {
      "description": "A description of an applied loader.",
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "ident": {
              "description": "Unique loader options identifier.",
              "type": "string"
            },
            "loader": {
              "description": "Loader name.",
              "oneOf": [
                {
                  "$ref": "#/definitions/RuleSetLoader"
                }
              ]
            },
            "options": {
              "description": "Loader options.",
              "oneOf": [
                {
                  "$ref": "#/definitions/RuleSetLoaderOptions"
                }
              ]
            }
          }
        },
        {
          "instanceof": "Function",
          "tsType": "((data: object) => RuleSetUseItem|RuleSetUseItem[])"
        },
        {
          "$ref": "#/definitions/RuleSetLoader"
        }
      ]
    },
    "ScriptType": {
      "description": "This option enables loading async chunks via a custom script type, such as script type=\"module\".",
      "enum": [false, "text/javascript", "module"]
    },
    "SourceMapFilename": {
      "description": "The filename of the SourceMaps for the JavaScript files. They are inside the `output.path` directory.",
      "type": "string",
      "absolutePath": false
    },
    "SourcePrefix": {
      "description": "Prefixes every line of the source in the bundle with this string.",
      "type": "string"
    },
    "StatsOptions": {
      "description": "Stats options object.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "all": {
          "description": "Fallback value for stats options when an option is not defined (has precedence over local webpack defaults).",
          "type": "boolean"
        },
        "assets": {
          "description": "Add assets information.",
          "type": "boolean"
        },
        "assetsSort": {
          "description": "Sort the assets by that field.",
          "type": "string"
        },
        "builtAt": {
          "description": "Add built at time information.",
          "type": "boolean"
        },
        "cached": {
          "description": "Add information about cached (not built) modules.",
          "type": "boolean"
        },
        "cachedAssets": {
          "description": "Show cached assets (setting this to `false` only shows emitted files).",
          "type": "boolean"
        },
        "children": {
          "description": "Add children information.",
          "type": "boolean"
        },
        "chunkGroups": {
          "description": "Display all chunk groups with the corresponding bundles.",
          "type": "boolean"
        },
        "chunkModules": {
          "description": "Add built modules information to chunk information.",
          "type": "boolean"
        },
        "chunkOrigins": {
          "description": "Add the origins of chunks and chunk merging info.",
          "type": "boolean"
        },
        "chunkRelations": {
          "description": "Add information about parent, children and sibling chunks to chunk information.",
          "type": "boolean"
        },
        "chunkRootModules": {
          "description": "Add root modules information to chunk information.",
          "type": "boolean"
        },
        "chunks": {
          "description": "Add chunk information.",
          "type": "boolean"
        },
        "chunksSort": {
          "description": "Sort the chunks by that field.",
          "type": "string"
        },
        "colors": {
          "description": "Enables/Disables colorful output.",
          "anyOf": [
            {
              "description": "Enables/Disables colorful output.",
              "type": "boolean"
            },
            {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "bold": {
                  "description": "Custom color for bold text.",
                  "type": "string"
                },
                "cyan": {
                  "description": "Custom color for cyan text.",
                  "type": "string"
                },
                "green": {
                  "description": "Custom color for green text.",
                  "type": "string"
                },
                "magenta": {
                  "description": "Custom color for magenta text.",
                  "type": "string"
                },
                "red": {
                  "description": "Custom color for red text.",
                  "type": "string"
                },
                "yellow": {
                  "description": "Custom color for yellow text.",
                  "type": "string"
                }
              }
            }
          ]
        },
        "context": {
          "description": "Context directory for request shortening.",
          "type": "string",
          "absolutePath": true
        },
        "depth": {
          "description": "Add module depth in module graph.",
          "type": "boolean"
        },
        "entrypoints": {
          "description": "Display the entry points with the corresponding bundles.",
          "type": "boolean"
        },
        "env": {
          "description": "Add --env information.",
          "type": "boolean"
        },
        "errorDetails": {
          "description": "Add details to errors (like resolving log).",
          "type": "boolean"
        },
        "errorStack": {
          "description": "Add internal stack trace to errors.",
          "type": "boolean"
        },
        "errors": {
          "description": "Add errors.",
          "type": "boolean"
        },
        "exclude": {
          "description": "Please use excludeModules instead.",
          "cli": {
            "exclude": true
          },
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/FilterTypes"
            }
          ]
        },
        "excludeAssets": {
          "description": "Suppress assets that match the specified filters. Filters can be Strings, RegExps or Functions.",
          "oneOf": [
            {
              "$ref": "#/definitions/FilterTypes"
            }
          ]
        },
        "excludeModules": {
          "description": "Suppress modules that match the specified filters. Filters can be Strings, RegExps, Booleans or Functions.",
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/FilterTypes"
            }
          ]
        },
        "hash": {
          "description": "Add the hash of the compilation.",
          "type": "boolean"
        },
        "ids": {
          "description": "Add ids.",
          "type": "boolean"
        },
        "logging": {
          "description": "Add logging output.",
          "anyOf": [
            {
              "description": "Specify log level of logging output.",
              "enum": ["none", "error", "warn", "info", "log", "verbose"]
            },
            {
              "description": "Enable/disable logging output (`true`: shows normal logging output, loglevel: log).",
              "type": "boolean"
            }
          ]
        },
        "loggingDebug": {
          "description": "Include debug logging of specified loggers (i. e. for plugins or loaders). Filters can be Strings, RegExps or Functions.",
          "anyOf": [
            {
              "description": "Enable/Disable debug logging for all loggers.",
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/FilterTypes"
            }
          ]
        },
        "loggingTrace": {
          "description": "Add stack traces to logging output.",
          "type": "boolean"
        },
        "maxModules": {
          "description": "Set the maximum number of modules to be shown.",
          "type": "number"
        },
        "moduleAssets": {
          "description": "Add information about assets inside modules.",
          "type": "boolean"
        },
        "moduleTrace": {
          "description": "Add dependencies and origin of warnings/errors.",
          "type": "boolean"
        },
        "modules": {
          "description": "Add built modules information.",
          "type": "boolean"
        },
        "modulesSort": {
          "description": "Sort the modules by that field.",
          "type": "string"
        },
        "nestedModules": {
          "description": "Add information about modules nested in other modules (like with module concatenation).",
          "type": "boolean"
        },
        "optimizationBailout": {
          "description": "Show reasons why optimization bailed out for modules.",
          "type": "boolean"
        },
        "orphanModules": {
          "description": "Add information about orphan modules.",
          "type": "boolean"
        },
        "outputPath": {
          "description": "Add output path information.",
          "type": "boolean"
        },
        "performance": {
          "description": "Add performance hint flags.",
          "type": "boolean"
        },
        "preset": {
          "description": "Preset for the default values.",
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string"
            }
          ]
        },
        "providedExports": {
          "description": "Show exports provided by modules.",
          "type": "boolean"
        },
        "publicPath": {
          "description": "Add public path information.",
          "type": "boolean"
        },
        "reasons": {
          "description": "Add information about the reasons why modules are included.",
          "type": "boolean"
        },
        "runtime": {
          "description": "Add information about runtime modules.",
          "type": "boolean"
        },
        "source": {
          "description": "Add the source code of modules.",
          "type": "boolean"
        },
        "timings": {
          "description": "Add timing information.",
          "type": "boolean"
        },
        "usedExports": {
          "description": "Show exports used by modules.",
          "type": "boolean"
        },
        "version": {
          "description": "Add webpack version information.",
          "type": "boolean"
        },
        "warnings": {
          "description": "Add warnings.",
          "type": "boolean"
        },
        "warningsFilter": {
          "description": "Suppress warnings that match the specified filters. Filters can be Strings, RegExps or Functions.",
          "oneOf": [
            {
              "$ref": "#/definitions/FilterTypes"
            }
          ]
        }
      }
    },
    "StatsValue": {
      "description": "Stats options object or preset name.",
      "anyOf": [
        {
          "enum": [
            "none",
            "errors-only",
            "minimal",
            "normal",
            "detailed",
            "verbose",
            "errors-warnings"
          ]
        },
        {
          "type": "boolean"
        },
        {
          "$ref": "#/definitions/StatsOptions"
        }
      ]
    },
    "StrictModuleExceptionHandling": {
      "description": "Handles exceptions in module loading correctly at a performance cost.",
      "type": "boolean"
    },
    "Target": {
      "description": "Environment to build for.",
      "anyOf": [
        {
          "enum": [
            "web",
            "webworker",
            "node",
            "async-node",
            "node-webkit",
            "electron-main",
            "electron-renderer",
            "electron-preload"
          ]
        },
        {
          "instanceof": "Function",
          "tsType": "((compiler: import('../lib/Compiler')) => void)"
        }
      ]
    },
    "UmdNamedDefine": {
      "description": "If `output.libraryTarget` is set to umd and `output.library` is set, setting this to true will name the AMD module.",
      "type": "boolean"
    },
    "UniqueName": {
      "description": "A unique name of the webpack build to avoid multiple webpack runtimes to conflict when using globals.",
      "type": "string",
      "minLength": 1
    },
    "Watch": {
      "description": "Enter watch mode, which rebuilds on file change.",
      "type": "boolean"
    },
    "WatchOptions": {
      "description": "Options for the watcher.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "aggregateTimeout": {
          "description": "Delay the rebuilt after the first change. Value is a time in ms.",
          "type": "number"
        },
        "ignored": {
          "description": "Ignore some files from watching (glob pattern).",
          "anyOf": [
            {
              "type": "array",
              "items": {
                "description": "A glob pattern for files that should be ignored from watching.",
                "type": "string",
                "minLength": 1
              }
            },
            {
              "description": "A single glob pattern for files that should be ignored from watching.",
              "type": "string",
              "minLength": 1
            }
          ]
        },
        "poll": {
          "description": "Enable polling mode for watching.",
          "anyOf": [
            {
              "description": "`number`: use polling with specified interval.",
              "type": "number"
            },
            {
              "description": "`true`: use polling.",
              "type": "boolean"
            }
          ]
        },
        "stdin": {
          "description": "Stop watching when stdin stream has ended.",
          "type": "boolean"
        }
      }
    },
    "WebassemblyModuleFilename": {
      "description": "The filename of WebAssembly modules as relative path inside the `output.path` directory.",
      "type": "string",
      "absolutePath": false
    },
    "WebpackOptionsNormalized": {
      "description": "Normalized webpack options object.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "amd": {
          "$ref": "#/definitions/Amd"
        },
        "bail": {
          "$ref": "#/definitions/Bail"
        },
        "cache": {
          "$ref": "#/definitions/CacheOptionsNormalized"
        },
        "context": {
          "$ref": "#/definitions/Context"
        },
        "dependencies": {
          "$ref": "#/definitions/Dependencies"
        },
        "devServer": {
          "$ref": "#/definitions/DevServer"
        },
        "devtool": {
          "$ref": "#/definitions/DevTool"
        },
        "entry": {
          "$ref": "#/definitions/EntryNormalized"
        },
        "experiments": {
          "$ref": "#/definitions/Experiments"
        },
        "externals": {
          "$ref": "#/definitions/Externals"
        },
        "externalsType": {
          "$ref": "#/definitions/ExternalsType"
        },
        "infrastructureLogging": {
          "$ref": "#/definitions/InfrastructureLogging"
        },
        "loader": {
          "$ref": "#/definitions/Loader"
        },
        "mode": {
          "$ref": "#/definitions/Mode"
        },
        "module": {
          "$ref": "#/definitions/ModuleOptions"
        },
        "name": {
          "$ref": "#/definitions/Name"
        },
        "node": {
          "$ref": "#/definitions/Node"
        },
        "optimization": {
          "$ref": "#/definitions/Optimization"
        },
        "output": {
          "$ref": "#/definitions/OutputNormalized"
        },
        "parallelism": {
          "$ref": "#/definitions/Parallelism"
        },
        "performance": {
          "$ref": "#/definitions/Performance"
        },
        "plugins": {
          "$ref": "#/definitions/Plugins"
        },
        "profile": {
          "$ref": "#/definitions/Profile"
        },
        "recordsInputPath": {
          "$ref": "#/definitions/RecordsInputPath"
        },
        "recordsOutputPath": {
          "$ref": "#/definitions/RecordsOutputPath"
        },
        "resolve": {
          "$ref": "#/definitions/Resolve"
        },
        "resolveLoader": {
          "$ref": "#/definitions/ResolveLoader"
        },
        "stats": {
          "$ref": "#/definitions/StatsValue"
        },
        "target": {
          "$ref": "#/definitions/Target"
        },
        "watch": {
          "$ref": "#/definitions/Watch"
        },
        "watchOptions": {
          "$ref": "#/definitions/WatchOptions"
        }
      },
      "required": [
        "cache",
        "entry",
        "experiments",
        "externals",
        "infrastructureLogging",
        "module",
        "node",
        "optimization",
        "output",
        "plugins",
        "resolve",
        "resolveLoader",
        "stats",
        "watchOptions"
      ]
    },
    "WebpackPluginFunction": {
      "description": "Function acting as plugin.",
      "instanceof": "Function",
      "tsType": "(this: import('../lib/Compiler'), compiler: import('../lib/Compiler')) => void"
    },
    "WebpackPluginInstance": {
      "description": "Plugin instance.",
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "apply": {
          "description": "The run point of the plugin, required method.",
          "instanceof": "Function",
          "tsType": "(compiler: import('../lib/Compiler')) => void"
        }
      },
      "required": ["apply"]
    }
  },
  "description": "Options object as provided by the user.",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "amd": {
      "$ref": "#/definitions/Amd"
    },
    "bail": {
      "$ref": "#/definitions/Bail"
    },
    "cache": {
      "$ref": "#/definitions/CacheOptions"
    },
    "context": {
      "$ref": "#/definitions/Context"
    },
    "dependencies": {
      "$ref": "#/definitions/Dependencies"
    },
    "devServer": {
      "$ref": "#/definitions/DevServer"
    },
    "devtool": {
      "$ref": "#/definitions/DevTool"
    },
    "entry": {
      "$ref": "#/definitions/Entry"
    },
    "experiments": {
      "$ref": "#/definitions/Experiments"
    },
    "externals": {
      "$ref": "#/definitions/Externals"
    },
    "externalsType": {
      "$ref": "#/definitions/ExternalsType"
    },
    "infrastructureLogging": {
      "$ref": "#/definitions/InfrastructureLogging"
    },
    "loader": {
      "$ref": "#/definitions/Loader"
    },
    "mode": {
      "$ref": "#/definitions/Mode"
    },
    "module": {
      "$ref": "#/definitions/ModuleOptions"
    },
    "name": {
      "$ref": "#/definitions/Name"
    },
    "node": {
      "$ref": "#/definitions/Node"
    },
    "optimization": {
      "$ref": "#/definitions/Optimization"
    },
    "output": {
      "$ref": "#/definitions/Output"
    },
    "parallelism": {
      "$ref": "#/definitions/Parallelism"
    },
    "performance": {
      "$ref": "#/definitions/Performance"
    },
    "plugins": {
      "$ref": "#/definitions/Plugins"
    },
    "profile": {
      "$ref": "#/definitions/Profile"
    },
    "recordsInputPath": {
      "$ref": "#/definitions/RecordsInputPath"
    },
    "recordsOutputPath": {
      "$ref": "#/definitions/RecordsOutputPath"
    },
    "recordsPath": {
      "$ref": "#/definitions/RecordsPath"
    },
    "resolve": {
      "$ref": "#/definitions/Resolve"
    },
    "resolveLoader": {
      "$ref": "#/definitions/ResolveLoader"
    },
    "stats": {
      "$ref": "#/definitions/StatsValue"
    },
    "target": {
      "$ref": "#/definitions/Target"
    },
    "watch": {
      "$ref": "#/definitions/Watch"
    },
    "watchOptions": {
      "$ref": "#/definitions/WatchOptions"
    }
  }
}
