{
  "definitions": {
    "AuxiliaryComment": {
      "description": "Add a comment in the UMD wrapper.",
      "anyOf": [
        {
          "description": "Append the same comment above each import style.",
          "type": "string"
        },
        {
          "$ref": "#/definitions/LibraryCustomUmdCommentObject"
        }
      ]
    },
    "Exposes": {
      "description": "Modules that should be exposed by this container. When provided, property name is used as public name, otherwise public name is automatically inferred from request.",
      "anyOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Exposes"
          }
        },
        {
          "description": "Request to a module that should be exposed by this container. Public name is automatically inferred from request.",
          "type": "string",
          "minLength": 1
        },
        {
          "description": "Requests to modules that should be exposed by this container. Property names are used as public names.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/Exposes"
          }
        }
      ]
    },
    "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"
      ]
    },
    "Remotes": {
      "description": "Container locations and request scopes from which modules should be resolved and loaded at runtime. When provided, property name is used as request scope, otherwise request scope is automatically inferred from container location.",
      "anyOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Remotes"
          }
        },
        {
          "description": "Container location from which modules should be resolved and loaded at runtime.",
          "type": "string",
          "minLength": 1
        },
        {
          "description": "Container locations from which modules should be resolved and loaded at runtime. Property names are used as request scopes.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/Remotes"
          }
        }
      ]
    },
    "Shared": {
      "description": "Modules that should be shared with remotes and/or host. When provided, property name is used as shared key, otherwise shared key is automatically inferred from request.",
      "anyOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Shared"
          }
        },
        {
          "description": "Request to a module that should be shared with remotes and/or host.",
          "type": "string",
          "minLength": 1
        },
        {
          "description": "Requests to modules that should be shared with remotes and/or host. Property names are used as shared keys.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/Shared"
          }
        }
      ]
    },
    "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"
    }
  },
  "title": "ModuleFederationPluginOptions",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "exposes": {
      "$ref": "#/definitions/Exposes"
    },
    "filename": {
      "description": "The filename of the container as relative path inside the `output.path` directory.",
      "type": "string",
      "absolutePath": false
    },
    "library": {
      "$ref": "#/definitions/LibraryOptions"
    },
    "name": {
      "description": "The name of the container.",
      "type": "string"
    },
    "remoteType": {
      "description": "The external type of the remote containers.",
      "oneOf": [
        {
          "$ref": "#/definitions/LibraryType"
        }
      ]
    },
    "remotes": {
      "$ref": "#/definitions/Remotes"
    },
    "shared": {
      "$ref": "#/definitions/Shared"
    }
  }
}
