[
  {
    "name": "app",
    "description": "> Control your application's event lifecycle.\n\nProcess: Main\n\nThe following example shows how to quit the application when the last window is closed:",
    "slug": "app",
    "websiteUrl": "https://electronjs.org/docs/api/app",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/app.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "quit",
        "signature": "()",
        "description": "Try to close all windows. The `before-quit` event will be emitted first. If all windows are successfully closed, the `will-quit` event will be emitted and by default the application will terminate.\n\nThis method guarantees that all `beforeunload` and `unload` event handlers are correctly executed. It is possible that a window cancels the quitting by returning `false` in the `beforeunload` event handler.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#appquit"
      },
      {
        "name": "exit",
        "signature": "([exitCode])",
        "description": "Exits immediately with `exitCode`. `exitCode` defaults to 0.\n\nAll windows will be closed immediately without asking the user, and the `before-quit` and `will-quit` events will not be emitted.",
        "parameters": [
          {
            "name": "exitCode",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#appexitexitcode"
      },
      {
        "name": "relaunch",
        "signature": "([options])",
        "description": "Relaunches the app when current instance exits.\n\nBy default, the new instance will use the same working directory and command line arguments with current instance. When `args` is specified, the `args` will be passed as command line arguments instead. When `execPath` is specified, the `execPath` will be executed for relaunch instead of current app.\n\nNote that this method does not quit the app when executed, you have to call `app.quit` or `app.exit` after calling `app.relaunch` to make the app restart.\n\nWhen `app.relaunch` is called for multiple times, multiple instances will be started after current instance exited.\n\nAn example of restarting current instance immediately and adding a new command line argument to the new instance:",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "args",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "execPath",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#apprelaunchoptions"
      },
      {
        "name": "isReady",
        "signature": "()",
        "description": "`true` if Electron has finished initializing, `false` otherwise. See also `app.whenReady()`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#appisready"
      },
      {
        "name": "whenReady",
        "signature": "()",
        "description": "fulfilled when Electron is initialized. May be used as a convenient alternative to checking `app.isReady()` and subscribing to the `ready` event if the app is not ready yet.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#appwhenready"
      },
      {
        "name": "focus",
        "signature": "([options])",
        "description": "On Linux, focuses on the first visible window. On macOS, makes the application the active app. On Windows, focuses on the application's first window.\n\nYou should seek to use the `steal` option as sparingly as possible.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "steal",
                "description": "Make the receiver the active app even if another app is currently active.",
                "required": true,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#appfocusoptions"
      },
      {
        "name": "hide",
        "signature": "()",
        "description": "Hides all application windows without minimizing them.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#apphide-macos"
      },
      {
        "name": "isHidden",
        "signature": "()",
        "description": "`true` if the application—including all of its windows—is hidden (e.g. with `Command-H`), `false` otherwise.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#appishidden-macos"
      },
      {
        "name": "show",
        "signature": "()",
        "description": "Shows application windows after they were hidden. Does not automatically focus them.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#appshow-macos"
      },
      {
        "name": "setAppLogsPath",
        "signature": "([path])",
        "description": "Sets or creates a directory your app's logs which can then be manipulated with `app.getPath()` or `app.setPath(pathName, newPath)`.\n\nCalling `app.setAppLogsPath()` without a `path` parameter will result in this directory being set to `~/Library/Logs/YourAppName` on _macOS_, and inside the `userData` directory on _Linux_ and _Windows_.",
        "parameters": [
          {
            "name": "path",
            "description": "A custom path for your logs. Must be absolute.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#appsetapplogspathpath"
      },
      {
        "name": "getAppPath",
        "signature": "()",
        "description": "The current application directory.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#appgetapppath"
      },
      {
        "name": "getPath",
        "signature": "(name)",
        "description": "A path to a special directory or file associated with `name`. On failure, an `Error` is thrown.\n\nIf `app.getPath('logs')` is called without called `app.setAppLogsPath()` being called first, a default log directory will be created equivalent to calling `app.setAppLogsPath()` without a `path` parameter.",
        "parameters": [
          {
            "name": "name",
            "description": "You can request the following paths by the name:",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "home",
                "description": ""
              },
              {
                "value": "appData",
                "description": "user application data directory, which by default points to:"
              },
              {
                "value": "userData",
                "description": ""
              },
              {
                "value": "sessionData",
                "description": ""
              },
              {
                "value": "temp",
                "description": ""
              },
              {
                "value": "exe",
                "description": ""
              },
              {
                "value": "module",
                "description": ""
              },
              {
                "value": "desktop",
                "description": ""
              },
              {
                "value": "documents",
                "description": ""
              },
              {
                "value": "downloads",
                "description": ""
              },
              {
                "value": "music",
                "description": ""
              },
              {
                "value": "pictures",
                "description": ""
              },
              {
                "value": "videos",
                "description": ""
              },
              {
                "value": "recent",
                "description": ""
              },
              {
                "value": "logs",
                "description": ""
              },
              {
                "value": "crashDumps",
                "description": ""
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#appgetpathname"
      },
      {
        "name": "getFileIcon",
        "signature": "(path[, options])",
        "description": "fulfilled with the app's icon, which is a NativeImage.\n\nFetches a path's associated icon.\n\nOn _Windows_, there a 2 kinds of icons:\n\n* Icons associated with certain file extensions, like `.mp3`, `.png`, etc.\n* Icons inside the file itself, like `.exe`, `.dll`, `.ico`.\n\nOn _Linux_ and _macOS_, icons depend on the application associated with file mime type.",
        "parameters": [
          {
            "name": "path",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "size",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "small",
                    "description": "16x16"
                  },
                  {
                    "value": "normal",
                    "description": "32x32"
                  },
                  {
                    "value": "large",
                    "description": "48x48 on _Linux_, 32x32 on _Windows_, unsupported on _macOS_."
                  }
                ]
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "NativeImage"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#appgetfileiconpath-options"
      },
      {
        "name": "setPath",
        "signature": "(name, path)",
        "description": "Overrides the `path` to a special directory or file associated with `name`. If the path specifies a directory that does not exist, an `Error` is thrown. In that case, the directory should be created with `fs.mkdirSync` or similar.\n\nYou can only override paths of a `name` defined in `app.getPath`.\n\nBy default, web pages' cookies and caches will be stored under the `sessionData` directory. If you want to change this location, you have to override the `sessionData` path before the `ready` event of the `app` module is emitted.",
        "parameters": [
          {
            "name": "name",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "path",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#appsetpathname-path"
      },
      {
        "name": "getVersion",
        "signature": "()",
        "description": "The version of the loaded application. If no version is found in the application's `package.json` file, the version of the current bundle or executable is returned.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#appgetversion"
      },
      {
        "name": "getName",
        "signature": "()",
        "description": "The current application's name, which is the name in the application's `package.json` file.\n\nUsually the `name` field of `package.json` is a short lowercase name, according to the npm modules spec. You should usually also specify a `productName` field, which is your application's full capitalized name, and which will be preferred over `name` by Electron.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#appgetname"
      },
      {
        "name": "setName",
        "signature": "(name)",
        "description": "Overrides the current application's name.\n\n**Note:** This function overrides the name used internally by Electron; it does not affect the name that the OS uses.",
        "parameters": [
          {
            "name": "name",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#appsetnamename"
      },
      {
        "name": "getLocale",
        "signature": "()",
        "description": "The current application locale, fetched using Chromium's `l10n_util` library. Possible return values are documented here.\n\nTo set the locale, you'll want to use a command line switch at app startup, which may be found here.\n\n**Note:** When distributing your packaged app, you have to also ship the `locales` folder.\n\n**Note:** This API must be called after the `ready` event is emitted.\n\n**Note:** To see example return values of this API compared to other locale and language APIs, see `app.getPreferredSystemLanguages()`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#appgetlocale"
      },
      {
        "name": "getLocaleCountryCode",
        "signature": "()",
        "description": "User operating system's locale two-letter ISO 3166 country code. The value is taken from native OS APIs.\n\n**Note:** When unable to detect locale country code, it returns empty string.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#appgetlocalecountrycode"
      },
      {
        "name": "getSystemLocale",
        "signature": "()",
        "description": "The current system locale. On Windows and Linux, it is fetched using Chromium's `i18n` library. On macOS, `[NSLocale currentLocale]` is used instead. To get the user's current system language, which is not always the same as the locale, it is better to use `app.getPreferredSystemLanguages()`.\n\nDifferent operating systems also use the regional data differently:\n\n* Windows 11 uses the regional format for numbers, dates, and times.\n* macOS Monterey uses the region for formatting numbers, dates, times, and for selecting the currency symbol to use.\n\nTherefore, this API can be used for purposes such as choosing a format for rendering dates and times in a calendar app, especially when the developer wants the format to be consistent with the OS.\n\n**Note:** This API must be called after the `ready` event is emitted.\n\n**Note:** To see example return values of this API compared to other locale and language APIs, see `app.getPreferredSystemLanguages()`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#appgetsystemlocale"
      },
      {
        "name": "getPreferredSystemLanguages",
        "signature": "()",
        "description": "The user's preferred system languages from most preferred to least preferred, including the country codes if applicable. A user can modify and add to this list on Windows or macOS through the Language and Region settings.\n\nThe API uses `GlobalizationPreferences` (with a fallback to `GetSystemPreferredUILanguages`) on Windows, `\\[NSLocale preferredLanguages\\]` on macOS, and `g_get_language_names` on Linux.\n\nThis API can be used for purposes such as deciding what language to present the application in.\n\nHere are some examples of return values of the various language and locale APIs with different configurations:\n\nOn Windows, given application locale is German, the regional format is Finnish (Finland), and the preferred system languages from most to least preferred are French (Canada), English (US), Simplified Chinese (China), Finnish, and Spanish (Latin America):\n\nOn macOS, given the application locale is German, the region is Finland, and the preferred system languages from most to least preferred are French (Canada), English (US), Simplified Chinese, and Spanish (Latin America):\n\nBoth the available languages and regions and the possible return values differ between the two operating systems.\n\nAs can be seen with the example above, on Windows, it is possible that a preferred system language has no country code, and that one of the preferred system languages corresponds with the language used for the regional format. On macOS, the region serves more as a default country code: the user doesn't need to have Finnish as a preferred language to use Finland as the region,and the country code `FI` is used as the country code for preferred system languages that do not have associated countries in the language name.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#appgetpreferredsystemlanguages"
      },
      {
        "name": "addRecentDocument",
        "signature": "(path)",
        "description": "Adds `path` to the recent documents list.\n\nThis list is managed by the OS. On Windows, you can visit the list from the task bar, and on macOS, you can visit it from dock menu.",
        "parameters": [
          {
            "name": "path",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#appaddrecentdocumentpath-macos-windows"
      },
      {
        "name": "clearRecentDocuments",
        "signature": "()",
        "description": "Clears the recent documents list.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#appclearrecentdocuments-macos-windows"
      },
      {
        "name": "setAsDefaultProtocolClient",
        "signature": "(protocol[, path, args])",
        "description": "Whether the call succeeded.\n\nSets the current executable as the default handler for a protocol (aka URI scheme). It allows you to integrate your app deeper into the operating system. Once registered, all links with `your-protocol://` will be opened with the current executable. The whole link, including protocol, will be passed to your application as a parameter.\n\n**Note:** On macOS, you can only register protocols that have been added to your app's `info.plist`, which cannot be modified at runtime. However, you can change the file during build time via Electron Forge, Electron Packager, or by editing `info.plist` with a text editor. Please refer to Apple's documentation for details.\n\n**Note:** In a Windows Store environment (when packaged as an `appx`) this API will return `true` for all calls but the registry key it sets won't be accessible by other applications.  In order to register your Windows Store application as a default protocol handler you must declare the protocol in your manifest.\n\nThe API uses the Windows Registry and `LSSetDefaultHandlerForURLScheme` internally.",
        "parameters": [
          {
            "name": "protocol",
            "description": "The name of your protocol, without `://`. For example, if you want your app to handle `electron://` links, call this method with `electron` as the parameter.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "path",
            "description": "The path to the Electron executable. Defaults to `process.execPath`",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "args",
            "description": "Arguments passed to the executable. Defaults to an empty array",
            "required": false,
            "collection": true,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#appsetasdefaultprotocolclientprotocol-path-args"
      },
      {
        "name": "removeAsDefaultProtocolClient",
        "signature": "(protocol[, path, args])",
        "description": "Whether the call succeeded.\n\nThis method checks if the current executable as the default handler for a protocol (aka URI scheme). If so, it will remove the app as the default handler.",
        "parameters": [
          {
            "name": "protocol",
            "description": "The name of your protocol, without `://`.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "path",
            "description": "Defaults to `process.execPath`",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "args",
            "description": "Defaults to an empty array",
            "required": false,
            "collection": true,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#appremoveasdefaultprotocolclientprotocol-path-args-macos-windows"
      },
      {
        "name": "isDefaultProtocolClient",
        "signature": "(protocol[, path, args])",
        "description": "Whether the current executable is the default handler for a protocol (aka URI scheme).\n\n**Note:** On macOS, you can use this method to check if the app has been registered as the default protocol handler for a protocol. You can also verify this by checking `~/Library/Preferences/com.apple.LaunchServices.plist` on the macOS machine. Please refer to Apple's documentation for details.\n\nThe API uses the Windows Registry and `LSCopyDefaultHandlerForURLScheme` internally.",
        "parameters": [
          {
            "name": "protocol",
            "description": "The name of your protocol, without `://`.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "path",
            "description": "Defaults to `process.execPath`",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "args",
            "description": "Defaults to an empty array",
            "required": false,
            "collection": true,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#appisdefaultprotocolclientprotocol-path-args"
      },
      {
        "name": "getApplicationNameForProtocol",
        "signature": "(url)",
        "description": "Name of the application handling the protocol, or an empty string if there is no handler. For instance, if Electron is the default handler of the URL, this could be `Electron` on Windows and Mac. However, don't rely on the precise format which is not guaranteed to remain unchanged. Expect a different format on Linux, possibly with a `.desktop` suffix.\n\nThis method returns the application name of the default handler for the protocol (aka URI scheme) of a URL.",
        "parameters": [
          {
            "name": "url",
            "description": "a URL with the protocol name to check. Unlike the other methods in this family, this accepts an entire URL, including `://` at a minimum (e.g. `https://`).",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#appgetapplicationnameforprotocolurl"
      },
      {
        "name": "getApplicationInfoForProtocol",
        "signature": "(url)",
        "description": "Resolve with an object containing the following:\n\n* `icon` NativeImage - the display icon of the app handling the protocol.\n* `path` string  - installation path of the app handling the protocol.\n* `name` string - display name of the app handling the protocol.\n\nThis method returns a promise that contains the application name, icon and path of the default handler for the protocol (aka URI scheme) of a URL.",
        "parameters": [
          {
            "name": "url",
            "description": "a URL with the protocol name to check. Unlike the other methods in this family, this accepts an entire URL, including `://` at a minimum (e.g. `https://`).",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "Object",
              "properties": [
                {
                  "name": "icon",
                  "description": "the display icon of the app handling the protocol.",
                  "required": true,
                  "additionalTags": [],
                  "collection": false,
                  "type": "NativeImage"
                },
                {
                  "name": "path",
                  "description": "installation path of the app handling the protocol.",
                  "required": true,
                  "additionalTags": [],
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                },
                {
                  "name": "name",
                  "description": "display name of the app handling the protocol.",
                  "required": true,
                  "additionalTags": [],
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                }
              ]
            }
          ]
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#appgetapplicationinfoforprotocolurl-macos-windows"
      },
      {
        "name": "setUserTasks",
        "signature": "(tasks)",
        "description": "Adds `tasks` to the Tasks category of the Jump List on Windows.\n\n`tasks` is an array of `Task` objects.\n\nWhether the call succeeded.\n\n**Note:** If you'd like to customize the Jump List even more use `app.setJumpList(categories)` instead.",
        "parameters": [
          {
            "name": "tasks",
            "description": "Array of `Task` objects",
            "required": true,
            "collection": true,
            "type": "Task"
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#appsetusertaskstasks-windows"
      },
      {
        "name": "getJumpListSettings",
        "signature": "()",
        "description": "* `minItems` Integer - The minimum number of items that will be shown in the Jump List (for a more detailed description of this value see the MSDN docs).\n* `removedItems` JumpListItem[] - Array of `JumpListItem` objects that correspond to items that the user has explicitly removed from custom categories in the Jump List. These items must not be re-added to the Jump List in the **next** call to `app.setJumpList()`, Windows will not display any custom category that contains any of the removed items.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "minItems",
              "description": "The minimum number of items that will be shown in the Jump List (for a more detailed description of this value see the MSDN docs).",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "removedItems",
              "description": "Array of `JumpListItem` objects that correspond to items that the user has explicitly removed from custom categories in the Jump List. These items must not be re-added to the Jump List in the **next** call to `app.setJumpList()`, Windows will not display any custom category that contains any of the removed items.",
              "required": true,
              "additionalTags": [],
              "collection": true,
              "type": "JumpListItem"
            }
          ]
        },
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#appgetjumplistsettings-windows"
      },
      {
        "name": "setJumpList",
        "signature": "(categories)",
        "description": "Sets or removes a custom Jump List for the application, and returns one of the following strings:\n\n* `ok` - Nothing went wrong.\n* `error` - One or more errors occurred, enable runtime logging to figure out the likely cause.\n* `invalidSeparatorError` - An attempt was made to add a separator to a custom category in the Jump List. Separators are only allowed in the standard `Tasks` category.\n* `fileTypeRegistrationError` - An attempt was made to add a file link to the Jump List for a file type the app isn't registered to handle.\n* `customCategoryAccessDeniedError` - Custom categories can't be added to the Jump List due to user privacy or group policy settings.\n\nIf `categories` is `null` the previously set custom Jump List (if any) will be replaced by the standard Jump List for the app (managed by Windows).\n\n**Note:** If a `JumpListCategory` object has neither the `type` nor the `name` property set then its `type` is assumed to be `tasks`. If the `name` property is set but the `type` property is omitted then the `type` is assumed to be `custom`.\n\n**Note:** Users can remove items from custom categories, and Windows will not allow a removed item to be added back into a custom category until **after** the next successful call to `app.setJumpList(categories)`. Any attempt to re-add a removed item to a custom category earlier than that will result in the entire custom category being omitted from the Jump List. The list of removed items can be obtained using `app.getJumpListSettings()`.\n\n**Note:** The maximum length of a Jump List item's `description` property is 260 characters. Beyond this limit, the item will not be added to the Jump List, nor will it be displayed.\n\nHere's a very simple example of creating a custom Jump List:",
        "parameters": [
          {
            "name": "categories",
            "description": "Array of `JumpListCategory` objects.",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": true,
                "type": "JumpListCategory"
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": [
            {
              "value": "ok",
              "description": "Nothing went wrong."
            },
            {
              "value": "error",
              "description": "One or more errors occurred, enable runtime logging to figure out the likely cause."
            },
            {
              "value": "invalidSeparatorError",
              "description": "An attempt was made to add a separator to a custom category in the Jump List. Separators are only allowed in the standard `Tasks` category."
            },
            {
              "value": "fileTypeRegistrationError",
              "description": "An attempt was made to add a file link to the Jump List for a file type the app isn't registered to handle."
            },
            {
              "value": "customCategoryAccessDeniedError",
              "description": "Custom categories can't be added to the Jump List due to user privacy or group policy settings."
            }
          ]
        },
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#appsetjumplistcategories-windows"
      },
      {
        "name": "requestSingleInstanceLock",
        "signature": "([additionalData])",
        "description": "The return value of this method indicates whether or not this instance of your application successfully obtained the lock.  If it failed to obtain the lock, you can assume that another instance of your application is already running with the lock and exit immediately.\n\nI.e. This method returns `true` if your process is the primary instance of your application and your app should continue loading.  It returns `false` if your process should immediately quit as it has sent its parameters to another instance that has already acquired the lock.\n\nOn macOS, the system enforces single instance automatically when users try to open a second instance of your app in Finder, and the `open-file` and `open-url` events will be emitted for that. However when users start your app in command line, the system's single instance mechanism will be bypassed, and you have to use this method to ensure single instance.\n\nAn example of activating the window of primary instance when a second instance starts:",
        "parameters": [
          {
            "name": "additionalData",
            "description": "A JSON object containing additional data to send to the first instance.",
            "required": false,
            "collection": false,
            "type": "Record",
            "innerTypes": [
              {
                "collection": false,
                "type": "any"
              },
              {
                "collection": false,
                "type": "any"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#apprequestsingleinstancelockadditionaldata"
      },
      {
        "name": "hasSingleInstanceLock",
        "signature": "()",
        "description": "This method returns whether or not this instance of your app is currently holding the single instance lock.  You can request the lock with `app.requestSingleInstanceLock()` and release with `app.releaseSingleInstanceLock()`",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#apphassingleinstancelock"
      },
      {
        "name": "releaseSingleInstanceLock",
        "signature": "()",
        "description": "Releases all locks that were created by `requestSingleInstanceLock`. This will allow multiple instances of the application to once again run side by side.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#appreleasesingleinstancelock"
      },
      {
        "name": "setUserActivity",
        "signature": "(type, userInfo[, webpageURL])",
        "description": "Creates an `NSUserActivity` and sets it as the current activity. The activity is eligible for Handoff to another device afterward.",
        "parameters": [
          {
            "name": "type",
            "description": "Uniquely identifies the activity. Maps to `NSUserActivity.activityType`.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "userInfo",
            "description": "App-specific state to store for use by another device.",
            "required": true,
            "collection": false,
            "type": "any"
          },
          {
            "name": "webpageURL",
            "description": "The webpage to load in a browser if no suitable app is installed on the resuming device. The scheme must be `http` or `https`.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#appsetuseractivitytype-userinfo-webpageurl-macos"
      },
      {
        "name": "getCurrentActivityType",
        "signature": "()",
        "description": "The type of the currently running activity.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#appgetcurrentactivitytype-macos"
      },
      {
        "name": "invalidateCurrentActivity",
        "signature": "()",
        "description": "Invalidates the current Handoff user activity.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#appinvalidatecurrentactivity-macos"
      },
      {
        "name": "resignCurrentActivity",
        "signature": "()",
        "description": "Marks the current Handoff user activity as inactive without invalidating it.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#appresigncurrentactivity-macos"
      },
      {
        "name": "updateCurrentActivity",
        "signature": "(type, userInfo)",
        "description": "Updates the current activity if its type matches `type`, merging the entries from `userInfo` into its current `userInfo` dictionary.",
        "parameters": [
          {
            "name": "type",
            "description": "Uniquely identifies the activity. Maps to `NSUserActivity.activityType`.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "userInfo",
            "description": "App-specific state to store for use by another device.",
            "required": true,
            "collection": false,
            "type": "any"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#appupdatecurrentactivitytype-userinfo-macos"
      },
      {
        "name": "setAppUserModelId",
        "signature": "(id)",
        "description": "Changes the Application User Model ID to `id`.",
        "parameters": [
          {
            "name": "id",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#appsetappusermodelidid-windows"
      },
      {
        "name": "setActivationPolicy",
        "signature": "(policy)",
        "description": "Sets the activation policy for a given app.\n\nActivation policy types:\n\n* 'regular' - The application is an ordinary app that appears in the Dock and may have a user interface.\n* 'accessory' - The application doesn’t appear in the Dock and doesn’t have a menu bar, but it may be activated programmatically or by clicking on one of its windows.\n* 'prohibited' - The application doesn’t appear in the Dock and may not create windows or be activated.",
        "parameters": [
          {
            "name": "policy",
            "description": "Can be 'regular', 'accessory', or 'prohibited'.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "regular",
                "description": ""
              },
              {
                "value": "accessory",
                "description": ""
              },
              {
                "value": "prohibited",
                "description": ""
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#appsetactivationpolicypolicy-macos"
      },
      {
        "name": "importCertificate",
        "signature": "(options, callback)",
        "description": "Imports the certificate in pkcs12 format into the platform certificate store. `callback` is called with the `result` of import operation, a value of `0` indicates success while any other value indicates failure according to Chromium net_error_list.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "certificate",
                "description": "Path for the pkcs12 file.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "password",
                "description": "Passphrase for the certificate.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          },
          {
            "name": "callback",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "result",
                "description": "Result of import.",
                "required": true,
                "collection": false,
                "type": "Integer"
              }
            ],
            "returns": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_linux"
        ],
        "urlFragment": "#appimportcertificateoptions-callback-linux"
      },
      {
        "name": "configureHostResolver",
        "signature": "(options)",
        "description": "Configures host resolution (DNS and DNS-over-HTTPS). By default, the following resolvers will be used, in order:\n\n* DNS-over-HTTPS, if the DNS provider supports it, then\n* the built-in resolver (enabled on macOS only by default), then\n* the system's resolver (e.g. `getaddrinfo`).\n\nThis can be configured to either restrict usage of non-encrypted DNS (`secureDnsMode: \"secure\"`), or disable DNS-over-HTTPS (`secureDnsMode: \"off\"`). It is also possible to enable or disable the built-in resolver.\n\nTo disable insecure DNS, you can specify a `secureDnsMode` of `\"secure\"`. If you do so, you should make sure to provide a list of DNS-over-HTTPS servers to use, in case the user's DNS configuration does not include a provider that supports DoH.\n\nThis API must be called after the `ready` event is emitted.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "enableBuiltInResolver",
                "description": "Whether the built-in host resolver is used in preference to getaddrinfo. When enabled, the built-in resolver will attempt to use the system's DNS settings to do DNS lookups itself. Enabled by default on macOS, disabled by default on Windows and Linux.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "secureDnsMode",
                "description": "Can be 'off', 'automatic' or 'secure'. Configures the DNS-over-HTTP mode. When 'off', no DoH lookups will be performed. When 'automatic', DoH lookups will be performed first if DoH is available, and insecure DNS lookups will be performed as a fallback. When 'secure', only DoH lookups will be performed. Defaults to 'automatic'.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "off",
                    "description": ""
                  },
                  {
                    "value": "automatic",
                    "description": ""
                  },
                  {
                    "value": "secure",
                    "description": ""
                  }
                ]
              },
              {
                "name": "secureDnsServers",
                "description": "A list of DNS-over-HTTP server templates. See RFC8484 § 3 for details on the template format. Most servers support the POST method; the template for such servers is simply a URI. Note that for some DNS providers, the resolver will automatically upgrade to DoH unless DoH is explicitly disabled, even if there are no DoH servers provided in this list.",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "enableAdditionalDnsQueryTypes",
                "description": "Controls whether additional DNS query types, e.g. HTTPS (DNS type 65) will be allowed besides the traditional A and AAAA queries when a request is being made via insecure DNS. Has no effect on Secure DNS which always allows additional types. Defaults to true.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#appconfigurehostresolveroptions"
      },
      {
        "name": "disableHardwareAcceleration",
        "signature": "()",
        "description": "Disables hardware acceleration for current app.\n\nThis method can only be called before app is ready.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#appdisablehardwareacceleration"
      },
      {
        "name": "disableDomainBlockingFor3DAPIs",
        "signature": "()",
        "description": "By default, Chromium disables 3D APIs (e.g. WebGL) until restart on a per domain basis if the GPU processes crashes too frequently. This function disables that behavior.\n\nThis method can only be called before app is ready.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#appdisabledomainblockingfor3dapis"
      },
      {
        "name": "getAppMetrics",
        "signature": "()",
        "description": "Array of `ProcessMetric` objects that correspond to memory and CPU usage statistics of all the processes associated with the app.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "ProcessMetric"
        },
        "additionalTags": [],
        "urlFragment": "#appgetappmetrics"
      },
      {
        "name": "getGPUFeatureStatus",
        "signature": "()",
        "description": "The Graphics Feature Status from `chrome://gpu/`.\n\n**Note:** This information is only usable after the `gpu-info-update` event is emitted.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "GPUFeatureStatus"
        },
        "additionalTags": [],
        "urlFragment": "#appgetgpufeaturestatus"
      },
      {
        "name": "getGPUInfo",
        "signature": "(infoType)",
        "description": "For `infoType` equal to `complete`: Promise is fulfilled with `Object` containing all the GPU Information as in chromium's GPUInfo object. This includes the version and driver information that's shown on `chrome://gpu` page.\n\nFor `infoType` equal to `basic`: Promise is fulfilled with `Object` containing fewer attributes than when requested with `complete`. Here's an example of basic response:\n\nUsing `basic` should be preferred if only basic information like `vendorId` or `deviceId` is needed.",
        "parameters": [
          {
            "name": "infoType",
            "description": "Can be `basic` or `complete`.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "basic",
                "description": ""
              },
              {
                "value": "complete",
                "description": ""
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "unknown"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#appgetgpuinfoinfotype"
      },
      {
        "name": "setBadgeCount",
        "signature": "([count])",
        "description": "Whether the call succeeded.\n\nSets the counter badge for current app. Setting the count to `0` will hide the badge.\n\nOn macOS, it shows on the dock icon. On Linux, it only works for Unity launcher.\n\n**Note:** Unity launcher requires a `.desktop` file to work. For more information, please read the Unity integration documentation.\n\n**Note:** On macOS, you need to ensure that your application has the permission to display notifications for this method to work.",
        "parameters": [
          {
            "name": "count",
            "description": "If a value is provided, set the badge to the provided value otherwise, on macOS, display a plain white dot (e.g. unknown number of notifications). On Linux, if a value is not provided the badge will not display.",
            "required": false,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_linux",
          "os_macos"
        ],
        "urlFragment": "#appsetbadgecountcount-linux-macos"
      },
      {
        "name": "getBadgeCount",
        "signature": "()",
        "description": "The current value displayed in the counter badge.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Integer"
        },
        "additionalTags": [
          "os_linux",
          "os_macos"
        ],
        "urlFragment": "#appgetbadgecount-linux-macos"
      },
      {
        "name": "isUnityRunning",
        "signature": "()",
        "description": "Whether the current desktop environment is Unity launcher.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_linux"
        ],
        "urlFragment": "#appisunityrunning-linux"
      },
      {
        "name": "getLoginItemSettings",
        "signature": "([options])",
        "description": "If you provided `path` and `args` options to `app.setLoginItemSettings`, then you need to pass the same arguments here for `openAtLogin` to be set correctly.\n\n\n* `openAtLogin` boolean - `true` if the app is set to open at login.\n* `openAsHidden` boolean _macOS_ _Deprecated_ - `true` if the app is set to open as hidden at login. This does not work on macOS 13 and up.\n* `wasOpenedAtLogin` boolean _macOS_ - `true` if the app was opened at login automatically.\n* `wasOpenedAsHidden` boolean _macOS_ _Deprecated_ - `true` if the app was opened as a hidden login item. This indicates that the app should not open any windows at startup. This setting is not available on MAS builds or on macOS 13 and up.\n* `restoreState` boolean _macOS_ _Deprecated_ - `true` if the app was opened as a login item that should restore the state from the previous session. This indicates that the app should restore the windows that were open the last time the app was closed. This setting is not available on MAS builds or on macOS 13 and up.\n* `status` string _macOS_ - can be one of `not-registered`, `enabled`, `requires-approval`, or `not-found`.\n* `executableWillLaunchAtLogin` boolean _Windows_ - `true` if app is set to open at login and its run key is not deactivated. This differs from `openAtLogin` as it ignores the `args` option, this property will be true if the given executable would be launched at login with **any** arguments.\n* `launchItems` Object[] _Windows_\n  * `name` string _Windows_ - name value of a registry entry.\n  * `path` string _Windows_ - The executable to an app that corresponds to a registry entry.\n  * `args` string[] _Windows_ - the command-line arguments to pass to the executable.\n  * `scope` string _Windows_ - one of `user` or `machine`. Indicates whether the registry entry is under `HKEY_CURRENT USER` or `HKEY_LOCAL_MACHINE`.\n  * `enabled` boolean _Windows_ - `true` if the app registry key is startup approved and therefore shows as `enabled` in Task Manager and Windows settings.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "type",
                "description": "Can be one of `mainAppService`, `agentService`, `daemonService`, or `loginItemService`. Defaults to `mainAppService`. Only available on macOS 13 and up. See app.setLoginItemSettings for more information about each type.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "serviceName",
                "description": "The name of the service. Required if `type` is non-default. Only available on macOS 13 and up.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "path",
                "description": "The executable path to compare against. Defaults to `process.execPath`.",
                "required": false,
                "additionalTags": [
                  "os_windows"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "args",
                "description": "The command-line arguments to compare against. Defaults to an empty array.",
                "required": false,
                "additionalTags": [
                  "os_windows"
                ],
                "collection": true,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "openAtLogin",
              "description": "`true` if the app is set to open at login.",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "openAsHidden",
              "description": "`true` if the app is set to open as hidden at login. This does not work on macOS 13 and up.",
              "required": true,
              "additionalTags": [
                "os_macos",
                "stability_deprecated"
              ],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "wasOpenedAtLogin",
              "description": "`true` if the app was opened at login automatically.",
              "required": true,
              "additionalTags": [
                "os_macos"
              ],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "wasOpenedAsHidden",
              "description": "`true` if the app was opened as a hidden login item. This indicates that the app should not open any windows at startup. This setting is not available on MAS builds or on macOS 13 and up.",
              "required": true,
              "additionalTags": [
                "os_macos",
                "stability_deprecated"
              ],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "restoreState",
              "description": "`true` if the app was opened as a login item that should restore the state from the previous session. This indicates that the app should restore the windows that were open the last time the app was closed. This setting is not available on MAS builds or on macOS 13 and up.",
              "required": true,
              "additionalTags": [
                "os_macos",
                "stability_deprecated"
              ],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "status",
              "description": "can be one of `not-registered`, `enabled`, `requires-approval`, or `not-found`.",
              "required": true,
              "additionalTags": [
                "os_macos"
              ],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "executableWillLaunchAtLogin",
              "description": "`true` if app is set to open at login and its run key is not deactivated. This differs from `openAtLogin` as it ignores the `args` option, this property will be true if the given executable would be launched at login with **any** arguments.",
              "required": true,
              "additionalTags": [
                "os_windows"
              ],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "launchItems",
              "description": "",
              "required": true,
              "additionalTags": [
                "os_windows"
              ],
              "collection": true,
              "type": "Object",
              "properties": [
                {
                  "name": "name",
                  "description": "name value of a registry entry.",
                  "required": true,
                  "additionalTags": [
                    "os_windows"
                  ],
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                },
                {
                  "name": "path",
                  "description": "The executable to an app that corresponds to a registry entry.",
                  "required": true,
                  "additionalTags": [
                    "os_windows"
                  ],
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                },
                {
                  "name": "args",
                  "description": "the command-line arguments to pass to the executable.",
                  "required": true,
                  "additionalTags": [
                    "os_windows"
                  ],
                  "collection": true,
                  "type": "String",
                  "possibleValues": null
                },
                {
                  "name": "scope",
                  "description": "one of `user` or `machine`. Indicates whether the registry entry is under `HKEY_CURRENT USER` or `HKEY_LOCAL_MACHINE`.",
                  "required": true,
                  "additionalTags": [
                    "os_windows"
                  ],
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                },
                {
                  "name": "enabled",
                  "description": "`true` if the app registry key is startup approved and therefore shows as `enabled` in Task Manager and Windows settings.",
                  "required": true,
                  "additionalTags": [
                    "os_windows"
                  ],
                  "collection": false,
                  "type": "boolean"
                }
              ]
            }
          ]
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#appgetloginitemsettingsoptions-macos-windows"
      },
      {
        "name": "setLoginItemSettings",
        "signature": "(settings)",
        "description": "Set the app's login item settings.\n\nTo work with Electron's `autoUpdater` on Windows, which uses Squirrel, you'll want to set the launch path to Update.exe, and pass arguments that specify your application name. For example:\n\nFor more information about setting different services as login items on macOS 13 and up, see `SMAppService`.",
        "parameters": [
          {
            "name": "settings",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "openAtLogin",
                "description": "`true` to open the app at login, `false` to remove the app as a login item. Defaults to `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "openAsHidden",
                "description": "`true` to open the app as hidden. Defaults to `false`. The user can edit this setting from the System Preferences so `app.getLoginItemSettings().wasOpenedAsHidden` should be checked when the app is opened to know the current value. This setting is not available on MAS builds or on macOS 13 and up.",
                "required": false,
                "additionalTags": [
                  "os_macos",
                  "stability_deprecated"
                ],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "type",
                "description": "The type of service to add as a login item. Defaults to `mainAppService`. Only available on macOS 13 and up.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "mainAppService",
                    "description": "The primary application."
                  },
                  {
                    "value": "agentService",
                    "description": "The property list name for a launch agent. The property list name must correspond to a property list in the app’s `Contents/Library/LaunchAgents` directory."
                  },
                  {
                    "value": "daemonService",
                    "description": "The property list name for a launch agent. The property list name must correspond to a property list in the app’s `Contents/Library/LaunchDaemons` directory."
                  },
                  {
                    "value": "loginItemService",
                    "description": "The property list name for a login item service. The property list name must correspond to a property list in the app’s `Contents/Library/LoginItems` directory."
                  }
                ]
              },
              {
                "name": "serviceName",
                "description": "The name of the service. Required if `type` is non-default. Only available on macOS 13 and up.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "path",
                "description": "The executable to launch at login. Defaults to `process.execPath`.",
                "required": false,
                "additionalTags": [
                  "os_windows"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "args",
                "description": "The command-line arguments to pass to the executable. Defaults to an empty array. Take care to wrap paths in quotes.",
                "required": false,
                "additionalTags": [
                  "os_windows"
                ],
                "collection": true,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "enabled",
                "description": "`true` will change the startup approved registry key and `enable / disable` the App in Task Manager and Windows Settings. Defaults to `true`.",
                "required": false,
                "additionalTags": [
                  "os_windows"
                ],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "name",
                "description": "value name to write into registry. Defaults to the app's AppUserModelId().",
                "required": false,
                "additionalTags": [
                  "os_windows"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#appsetloginitemsettingssettings-macos-windows"
      },
      {
        "name": "isAccessibilitySupportEnabled",
        "signature": "()",
        "description": "`true` if Chrome's accessibility support is enabled, `false` otherwise. This API will return `true` if the use of assistive technologies, such as screen readers, has been detected. See https://www.chromium.org/developers/design-documents/accessibility for more details.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#appisaccessibilitysupportenabled-macos-windows"
      },
      {
        "name": "setAccessibilitySupportEnabled",
        "signature": "(enabled)",
        "description": "Manually enables Chrome's accessibility support, allowing to expose accessibility switch to users in application settings. See Chromium's accessibility docs for more details. Disabled by default.\n\nThis API must be called after the `ready` event is emitted.\n\n**Note:** Rendering accessibility tree can significantly affect the performance of your app. It should not be enabled by default.",
        "parameters": [
          {
            "name": "enabled",
            "description": "Enable or disable accessibility tree rendering",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#appsetaccessibilitysupportenabledenabled-macos-windows"
      },
      {
        "name": "showAboutPanel",
        "signature": "()",
        "description": "Show the app's about panel options. These options can be overridden with `app.setAboutPanelOptions(options)`. This function runs asynchronously.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#appshowaboutpanel"
      },
      {
        "name": "setAboutPanelOptions",
        "signature": "(options)",
        "description": "Set the about panel options. This will override the values defined in the app's `.plist` file on macOS. See the Apple docs for more details. On Linux, values must be set in order to be shown; there are no defaults.\n\nIf you do not set `credits` but still wish to surface them in your app, AppKit will look for a file named \"Credits.html\", \"Credits.rtf\", and \"Credits.rtfd\", in that order, in the bundle returned by the NSBundle class method main. The first file found is used, and if none is found, the info area is left blank. See Apple documentation for more information.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "applicationName",
                "description": "The app's name.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "applicationVersion",
                "description": "The app's version.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "copyright",
                "description": "Copyright information.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "version",
                "description": "The app's build version number.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "credits",
                "description": "Credit information.",
                "required": false,
                "additionalTags": [
                  "os_macos",
                  "os_windows"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "authors",
                "description": "List of app authors.",
                "required": false,
                "additionalTags": [
                  "os_linux"
                ],
                "collection": true,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "website",
                "description": "The app's website.",
                "required": false,
                "additionalTags": [
                  "os_linux"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "iconPath",
                "description": "Path to the app's icon in a JPEG or PNG file format. On Linux, will be shown as 64x64 pixels while retaining aspect ratio. On Windows, a 48x48 PNG will result in the best visual quality.",
                "required": false,
                "additionalTags": [
                  "os_linux",
                  "os_windows"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#appsetaboutpaneloptionsoptions"
      },
      {
        "name": "isEmojiPanelSupported",
        "signature": "()",
        "description": "whether or not the current OS version allows for native emoji pickers.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#appisemojipanelsupported"
      },
      {
        "name": "showEmojiPanel",
        "signature": "()",
        "description": "Show the platform's native emoji picker.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#appshowemojipanel-macos-windows"
      },
      {
        "name": "startAccessingSecurityScopedResource",
        "signature": "(bookmarkData)",
        "description": "This function **must** be called once you have finished accessing the security scoped file. If you do not remember to stop accessing the bookmark, kernel resources will be leaked and your app will lose its ability to reach outside the sandbox completely, until your app is restarted.\n\nStart accessing a security scoped resource. With this method Electron applications that are packaged for the Mac App Store may reach outside their sandbox to access files chosen by the user. See Apple's documentation for a description of how this system works.",
        "parameters": [
          {
            "name": "bookmarkData",
            "description": "The base64 encoded security scoped bookmark data returned by the `dialog.showOpenDialog` or `dialog.showSaveDialog` methods.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Function",
          "parameters": [],
          "returns": null
        },
        "additionalTags": [
          "os_mas"
        ],
        "urlFragment": "#appstartaccessingsecurityscopedresourcebookmarkdata-mas"
      },
      {
        "name": "enableSandbox",
        "signature": "()",
        "description": "Enables full sandbox mode on the app. This means that all renderers will be launched sandboxed, regardless of the value of the `sandbox` flag in `WebPreferences`.\n\nThis method can only be called before app is ready.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#appenablesandbox"
      },
      {
        "name": "isInApplicationsFolder",
        "signature": "()",
        "description": "Whether the application is currently running from the systems Application folder. Use in combination with `app.moveToApplicationsFolder()`",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#appisinapplicationsfolder-macos"
      },
      {
        "name": "moveToApplicationsFolder",
        "signature": "([options])",
        "description": "Whether the move was successful. Please note that if the move is successful, your application will quit and relaunch.\n\nNo confirmation dialog will be presented by default. If you wish to allow the user to confirm the operation, you may do so using the `dialog` API.\n\n**NOTE:** This method throws errors if anything other than the user causes the move to fail. For instance if the user cancels the authorization dialog, this method returns false. If we fail to perform the copy, then this method will throw an error. The message in the error should be informative and tell you exactly what went wrong.\n\nBy default, if an app of the same name as the one being moved exists in the Applications directory and is _not_ running, the existing app will be trashed and the active app moved into its place. If it _is_ running, the preexisting running app will assume focus and the previously active app will quit itself. This behavior can be changed by providing the optional conflict handler, where the boolean returned by the handler determines whether or not the move conflict is resolved with default behavior.  i.e. returning `false` will ensure no further action is taken, returning `true` will result in the default behavior and the method continuing.\n\nFor example:\n\nWould mean that if an app already exists in the user directory, if the user chooses to 'Continue Move' then the function would continue with its default behavior and the existing app will be trashed and the active app moved into its place.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "conflictHandler",
                "description": "A handler for potential conflict in move failure.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "conflictType",
                    "description": "The type of move conflict encountered by the handler; can be `exists` or `existsAndRunning`, where `exists` means that an app of the same name is present in the Applications directory and `existsAndRunning` means both that it exists and that it's presently running.",
                    "required": true,
                    "collection": false,
                    "type": "String",
                    "possibleValues": [
                      {
                        "value": "exists",
                        "description": ""
                      },
                      {
                        "value": "existsAndRunning",
                        "description": ""
                      }
                    ]
                  }
                ],
                "returns": {
                  "collection": false,
                  "type": "boolean"
                }
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#appmovetoapplicationsfolderoptions-macos"
      },
      {
        "name": "isSecureKeyboardEntryEnabled",
        "signature": "()",
        "description": "whether `Secure Keyboard Entry` is enabled.\n\nBy default this API will return `false`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#appissecurekeyboardentryenabled-macos"
      },
      {
        "name": "setSecureKeyboardEntryEnabled",
        "signature": "(enabled)",
        "description": "Set the `Secure Keyboard Entry` is enabled in your application.\n\nBy using this API, important information such as password and other sensitive information can be prevented from being intercepted by other processes.\n\nSee Apple's documentation for more details.\n\n**Note:** Enable `Secure Keyboard Entry` only when it is needed and disable it when it is no longer needed.",
        "parameters": [
          {
            "name": "enabled",
            "description": "Enable or disable `Secure Keyboard Entry`",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#appsetsecurekeyboardentryenabledenabled-macos"
      },
      {
        "name": "setProxy",
        "signature": "(config)",
        "description": "",
        "parameters": [
          {
            "name": "config",
            "description": "",
            "required": true,
            "collection": false,
            "type": "ProxyConfig"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#appsetproxyconfig"
      },
      {
        "name": "resolveProxy",
        "signature": "(url)",
        "description": "Resolves with the proxy information for `url` that will be used when attempting to make requests using Net in the utility process.",
        "parameters": [
          {
            "name": "url",
            "description": "",
            "required": true,
            "collection": false,
            "type": "URL"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "String",
              "possibleValues": null
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#appresolveproxyurl"
      }
    ],
    "properties": [
      {
        "name": "accessibilitySupportEnabled",
        "description": "A `boolean` property that's `true` if Chrome's accessibility support is enabled, `false` otherwise. This property will be `true` if the use of assistive technologies, such as screen readers, has been detected. Setting this property to `true` manually enables Chrome's accessibility support, allowing developers to expose accessibility switch to users in application settings.\n\nSee Chromium's accessibility docs for more details. Disabled by default.\n\nThis API must be called after the `ready` event is emitted.\n\n**Note:** Rendering accessibility tree can significantly affect the performance of your app. It should not be enabled by default.",
        "required": true,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#appaccessibilitysupportenabled-macos-windows",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "applicationMenu",
        "description": "A `Menu | null` property that returns `Menu` if one has been set and `null` otherwise. Users can pass a Menu to set this property.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#appapplicationmenu",
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "Menu"
          },
          {
            "type": "null",
            "collection": false
          }
        ]
      },
      {
        "name": "badgeCount",
        "description": "An `Integer` property that returns the badge count for current app. Setting the count to `0` will hide the badge.\n\nOn macOS, setting this with any nonzero integer shows on the dock icon. On Linux, this property only works for Unity launcher.\n\n**Note:** Unity launcher requires a `.desktop` file to work. For more information, please read the Unity integration documentation.\n\n**Note:** On macOS, you need to ensure that your application has the permission to display notifications for this property to take effect.",
        "required": true,
        "additionalTags": [
          "os_linux",
          "os_macos"
        ],
        "urlFragment": "#appbadgecount-linux-macos",
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "commandLine",
        "description": "A `CommandLine` object that allows you to read and manipulate the command line arguments that Chromium uses.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#appcommandline-readonly",
        "collection": false,
        "type": "CommandLine"
      },
      {
        "name": "dock",
        "description": "A `Dock` `| undefined` object that allows you to perform actions on your app icon in the user's dock on macOS.",
        "required": true,
        "additionalTags": [
          "os_macos",
          "availability_readonly"
        ],
        "urlFragment": "#appdock-macos-readonly",
        "collection": false,
        "type": "Dock"
      },
      {
        "name": "isPackaged",
        "description": "A `boolean` property that returns  `true` if the app is packaged, `false` otherwise. For many apps, this property can be used to distinguish development and production environments.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#appispackaged-readonly",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "name",
        "description": "A `string` property that indicates the current application's name, which is the name in the application's `package.json` file.\n\nUsually the `name` field of `package.json` is a short lowercase name, according to the npm modules spec. You should usually also specify a `productName` field, which is your application's full capitalized name, and which will be preferred over `name` by Electron.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#appname",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "userAgentFallback",
        "description": "A `string` which is the user agent string Electron will use as a global fallback.\n\nThis is the user agent that will be used when no user agent is set at the `webContents` or `session` level.  It is useful for ensuring that your entire app has the same user agent.  Set to a custom value as early as possible in your app's initialization to ensure that your overridden value is used.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#appuseragentfallback",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "runningUnderARM64Translation",
        "description": "A `boolean` which when `true` indicates that the app is currently running under an ARM64 translator (like the macOS Rosetta Translator Environment or Windows WOW).\n\nYou can use this property to prompt users to download the arm64 version of your application when they are mistakenly running the x64 version under Rosetta or WOW.",
        "required": true,
        "additionalTags": [
          "availability_readonly",
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#apprunningunderarm64translation-readonly-macos-windows",
        "collection": false,
        "type": "boolean"
      }
    ],
    "events": [
      {
        "name": "will-finish-launching",
        "description": "Emitted when the application has finished basic startup. On Windows and Linux, the `will-finish-launching` event is the same as the `ready` event; on macOS, this event represents the `applicationWillFinishLaunching` notification of `NSApplication`.\n\nIn most cases, you should do everything in the `ready` event handler.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-will-finish-launching"
      },
      {
        "name": "ready",
        "description": "Emitted once, when Electron has finished initializing. On macOS, `launchInfo` holds the `userInfo` of the `NSUserNotification` or information from `UNNotificationResponse` that was used to open the application, if it was launched from Notification Center. You can also call `app.isReady()` to check if this event has already fired and `app.whenReady()` to get a Promise that is fulfilled when Electron is initialized.\n\n**Note**: The `ready` event is only fired after the main process has finished running the first tick of the event loop. If an Electron API needs to be called before the `ready` event, ensure that it is called synchronously in the top-level context of the main process.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "launchInfo",
            "description": "",
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Record",
                "innerTypes": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "any"
                  }
                ]
              },
              {
                "collection": false,
                "type": "NotificationResponse"
              }
            ],
            "additionalTags": [
              "os_macos"
            ],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-ready"
      },
      {
        "name": "window-all-closed",
        "description": "Emitted when all windows have been closed.\n\nIf you do not subscribe to this event and all windows are closed, the default behavior is to quit the app; however, if you subscribe, you control whether the app quits or not. If the user pressed `Cmd + Q`, or the developer called `app.quit()`, Electron will first try to close all the windows and then emit the `will-quit` event, and in this case the `window-all-closed` event would not be emitted.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-window-all-closed"
      },
      {
        "name": "before-quit",
        "description": "Emitted before the application starts closing its windows. Calling `event.preventDefault()` will prevent the default behavior, which is terminating the application.\n\n**Note:** If application quit was initiated by `autoUpdater.quitAndInstall()`, then `before-quit` is emitted _after_ emitting `close` event on all windows and closing them.\n\n**Note:** On Windows, this event will not be emitted if the app is closed due to a shutdown/restart of the system or a user logout.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-before-quit"
      },
      {
        "name": "will-quit",
        "description": "Emitted when all windows have been closed and the application will quit. Calling `event.preventDefault()` will prevent the default behavior, which is terminating the application.\n\nSee the description of the `window-all-closed` event for the differences between the `will-quit` and `window-all-closed` events.\n\n**Note:** On Windows, this event will not be emitted if the app is closed due to a shutdown/restart of the system or a user logout.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-will-quit"
      },
      {
        "name": "quit",
        "description": "Emitted when the application is quitting.\n\n**Note:** On Windows, this event will not be emitted if the app is closed due to a shutdown/restart of the system or a user logout.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "exitCode",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-quit"
      },
      {
        "name": "open-file",
        "description": "Emitted when the user wants to open a file with the application. The `open-file` event is usually emitted when the application is already open and the OS wants to reuse the application to open the file. `open-file` is also emitted when a file is dropped onto the dock and the application is not yet running. Make sure to listen for the `open-file` event very early in your application startup to handle this case (even before the `ready` event is emitted).\n\nYou should call `event.preventDefault()` if you want to handle this event.\n\nOn Windows, you have to parse `process.argv` (in the main process) to get the filepath.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "path",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-open-file-macos"
      },
      {
        "name": "open-url",
        "description": "Emitted when the user wants to open a URL with the application. Your application's `Info.plist` file must define the URL scheme within the `CFBundleURLTypes` key, and set `NSPrincipalClass` to `AtomApplication`.\n\nAs with the `open-file` event, be sure to register a listener for the `open-url` event early in your application startup to detect if the application is being opened to handle a URL. If you register the listener in response to a `ready` event, you'll miss URLs that trigger the launch of your application.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-open-url-macos"
      },
      {
        "name": "activate",
        "description": "Emitted when the application is activated. Various actions can trigger this event, such as launching the application for the first time, attempting to re-launch the application when it's already running, or clicking on the application's dock or taskbar icon.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "hasVisibleWindows",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-activate-macos"
      },
      {
        "name": "did-become-active",
        "description": "Emitted when the application becomes active. This differs from the `activate` event in that `did-become-active` is emitted every time the app becomes active, not only when Dock icon is clicked or application is re-launched. It is also emitted when a user switches to the app via the macOS App Switcher.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-did-become-active-macos"
      },
      {
        "name": "did-resign-active",
        "description": "Emitted when the app is no longer active and doesn’t have focus. This can be triggered, for example, by clicking on another application or by using the macOS App Switcher to switch to another application.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-did-resign-active-macos"
      },
      {
        "name": "continue-activity",
        "description": "Emitted during Handoff when an activity from a different device wants to be resumed. You should call `event.preventDefault()` if you want to handle this event.\n\nA user activity can be continued only in an app that has the same developer Team ID as the activity's source app and that supports the activity's type. Supported activity types are specified in the app's `Info.plist` under the `NSUserActivityTypes` key.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "type",
            "description": "A string identifying the activity. Maps to `NSUserActivity.activityType`.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "userInfo",
            "description": "Contains app-specific state stored by the activity on another device.",
            "collection": false,
            "type": "unknown",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "webpageURL",
                "description": "A string identifying the URL of the webpage accessed by the activity on another device, if available.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-continue-activity-macos"
      },
      {
        "name": "will-continue-activity",
        "description": "Emitted during Handoff before an activity from a different device wants to be resumed. You should call `event.preventDefault()` if you want to handle this event.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "type",
            "description": "A string identifying the activity. Maps to `NSUserActivity.activityType`.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-will-continue-activity-macos"
      },
      {
        "name": "continue-activity-error",
        "description": "Emitted during Handoff when an activity from a different device fails to be resumed.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "type",
            "description": "A string identifying the activity. Maps to `NSUserActivity.activityType`.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "error",
            "description": "A string with the error's localized description.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-continue-activity-error-macos"
      },
      {
        "name": "activity-was-continued",
        "description": "Emitted during Handoff after an activity from this device was successfully resumed on another one.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "type",
            "description": "A string identifying the activity. Maps to `NSUserActivity.activityType`.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "userInfo",
            "description": "Contains app-specific state stored by the activity.",
            "collection": false,
            "type": "unknown",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-activity-was-continued-macos"
      },
      {
        "name": "update-activity-state",
        "description": "Emitted when Handoff is about to be resumed on another device. If you need to update the state to be transferred, you should call `event.preventDefault()` immediately, construct a new `userInfo` dictionary and call `app.updateCurrentActivity()` in a timely manner. Otherwise, the operation will fail and `continue-activity-error` will be called.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "type",
            "description": "A string identifying the activity. Maps to `NSUserActivity.activityType`.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "userInfo",
            "description": "Contains app-specific state stored by the activity.",
            "collection": false,
            "type": "unknown",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-update-activity-state-macos"
      },
      {
        "name": "new-window-for-tab",
        "description": "Emitted when the user clicks the native macOS new tab button. The new tab button is only visible if the current `BrowserWindow` has a `tabbingIdentifier`",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-new-window-for-tab-macos"
      },
      {
        "name": "browser-window-blur",
        "description": "Emitted when a browserWindow gets blurred.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "window",
            "description": "",
            "collection": false,
            "type": "BrowserWindow",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-browser-window-blur"
      },
      {
        "name": "browser-window-focus",
        "description": "Emitted when a browserWindow gets focused.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "window",
            "description": "",
            "collection": false,
            "type": "BrowserWindow",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-browser-window-focus"
      },
      {
        "name": "browser-window-created",
        "description": "Emitted when a new browserWindow is created.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "window",
            "description": "",
            "collection": false,
            "type": "BrowserWindow",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-browser-window-created"
      },
      {
        "name": "web-contents-created",
        "description": "Emitted when a new webContents is created.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "webContents",
            "description": "",
            "collection": false,
            "type": "WebContents",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-web-contents-created"
      },
      {
        "name": "certificate-error",
        "description": "Emitted when failed to verify the `certificate` for `url`, to trust the certificate you should prevent the default behavior with `event.preventDefault()` and call `callback(true)`.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "webContents",
            "description": "",
            "collection": false,
            "type": "WebContents",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "error",
            "description": "The error code",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "certificate",
            "description": "",
            "collection": false,
            "type": "Certificate",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "callback",
            "description": "",
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "isTrusted",
                "description": "Whether to consider the certificate as trusted",
                "required": true,
                "collection": false,
                "type": "boolean"
              }
            ],
            "returns": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-certificate-error"
      },
      {
        "name": "select-client-certificate",
        "description": "Emitted when a client certificate is requested.\n\nThe `url` corresponds to the navigation entry requesting the client certificate and `callback` can be called with an entry filtered from the list. Using `event.preventDefault()` prevents the application from using the first certificate from the store.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "webContents",
            "description": "",
            "collection": false,
            "type": "WebContents",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "URL",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "certificateList",
            "description": "",
            "collection": true,
            "type": "Certificate",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "callback",
            "description": "",
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "certificate",
                "description": "",
                "required": false,
                "collection": false,
                "type": "Certificate"
              }
            ],
            "returns": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-select-client-certificate"
      },
      {
        "name": "login",
        "description": "Emitted when `webContents` wants to do basic auth.\n\nThe default behavior is to cancel all authentications. To override this you should prevent the default behavior with `event.preventDefault()` and call `callback(username, password)` with the credentials.\n\nIf `callback` is called without a username or password, the authentication request will be cancelled and the authentication error will be returned to the page.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "webContents",
            "description": "",
            "collection": false,
            "type": "WebContents",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "authenticationResponseDetails",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "url",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "URL"
              }
            ],
            "additionalTags": [],
            "required": true
          },
          {
            "name": "authInfo",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "isProxy",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "scheme",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "host",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "port",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "realm",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "additionalTags": [],
            "required": true
          },
          {
            "name": "callback",
            "description": "",
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "username",
                "description": "",
                "required": false,
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "password",
                "description": "",
                "required": false,
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "returns": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-login"
      },
      {
        "name": "gpu-info-update",
        "description": "Emitted whenever there is a GPU info update.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-gpu-info-update"
      },
      {
        "name": "render-process-gone",
        "description": "Emitted when the renderer process unexpectedly disappears.  This is normally because it was crashed or killed.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "webContents",
            "description": "",
            "collection": false,
            "type": "WebContents",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "RenderProcessGoneDetails",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-render-process-gone"
      },
      {
        "name": "child-process-gone",
        "description": "Emitted when the child process unexpectedly disappears. This is normally because it was crashed or killed. It does not include renderer processes.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "type",
                "description": "Process type. One of the following values:",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "Utility",
                    "description": ""
                  },
                  {
                    "value": "Zygote",
                    "description": ""
                  },
                  {
                    "value": "Sandbox helper",
                    "description": ""
                  },
                  {
                    "value": "GPU",
                    "description": ""
                  },
                  {
                    "value": "Pepper Plugin",
                    "description": ""
                  },
                  {
                    "value": "Pepper Plugin Broker",
                    "description": ""
                  },
                  {
                    "value": "Unknown",
                    "description": ""
                  }
                ]
              },
              {
                "name": "reason",
                "description": "The reason the child process is gone. Possible values:",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "clean-exit",
                    "description": "Process exited with an exit code of zero"
                  },
                  {
                    "value": "abnormal-exit",
                    "description": "Process exited with a non-zero exit code"
                  },
                  {
                    "value": "killed",
                    "description": "Process was sent a SIGTERM or otherwise killed externally"
                  },
                  {
                    "value": "crashed",
                    "description": "Process crashed"
                  },
                  {
                    "value": "oom",
                    "description": "Process ran out of memory"
                  },
                  {
                    "value": "launch-failed",
                    "description": "Process never successfully launched"
                  },
                  {
                    "value": "integrity-failure",
                    "description": "Windows code integrity checks failed"
                  }
                ]
              },
              {
                "name": "exitCode",
                "description": "The exit code for the process (e.g. status from waitpid if on posix, from GetExitCodeProcess on Windows).",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              },
              {
                "name": "serviceName",
                "description": "The non-localized name of the process.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "name",
                "description": "The name of the process. Examples for utility: `Audio Service`, `Content Decryption Module Service`, `Network Service`, `Video Capture`, etc.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-child-process-gone"
      },
      {
        "name": "accessibility-support-changed",
        "description": "Emitted when Chrome's accessibility support changes. This event fires when assistive technologies, such as screen readers, are enabled or disabled. See https://www.chromium.org/developers/design-documents/accessibility for more details.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "accessibilitySupportEnabled",
            "description": "`true` when Chrome's accessibility support is enabled, `false` otherwise.",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-accessibility-support-changed-macos-windows"
      },
      {
        "name": "session-created",
        "description": "Emitted when Electron has created a new `session`.",
        "parameters": [
          {
            "name": "session",
            "description": "",
            "collection": false,
            "type": "Session",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-session-created"
      },
      {
        "name": "second-instance",
        "description": "This event will be emitted inside the primary instance of your application when a second instance has been executed and calls `app.requestSingleInstanceLock()`.\n\n`argv` is an Array of the second instance's command line arguments, and `workingDirectory` is its current working directory. Usually applications respond to this by making their primary window focused and non-minimized.\n\n**Note:** `argv` will not be exactly the same list of arguments as those passed to the second instance. The order might change and additional arguments might be appended. If you need to maintain the exact same arguments, it's advised to use `additionalData` instead.\n\n**Note:** If the second instance is started by a different user than the first, the `argv` array will not include the arguments.\n\nThis event is guaranteed to be emitted after the `ready` event of `app` gets emitted.\n\n**Note:** Extra command line arguments might be added by Chromium, such as `--original-process-start-time`.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "argv",
            "description": "An array of the second instance's command line arguments",
            "collection": true,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "workingDirectory",
            "description": "The second instance's working directory",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "additionalData",
            "description": "A JSON object of additional data passed from the second instance",
            "collection": false,
            "type": "unknown",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-second-instance"
      }
    ],
    "exportedClasses": []
  },
  {
    "name": "autoUpdater",
    "description": "> Enable apps to automatically update themselves.\n\nProcess: Main\n\n**See also: A detailed guide about how to implement updates in your application.**\n\n`autoUpdater` is an EventEmitter.\n\n### Platform Notices\n\nCurrently, only macOS and Windows are supported. There is no built-in support for auto-updater on Linux, so it is recommended to use the distribution's package manager to update your app.\n\nIn addition, there are some subtle differences on each platform:\n\n### macOS\n\nOn macOS, the `autoUpdater` module is built upon Squirrel.Mac, meaning you don't need any special setup to make it work. For server-side requirements, you can read Server Support. Note that App Transport Security (ATS) applies to all requests made as part of the update process. Apps that need to disable ATS can add the `NSAllowsArbitraryLoads` key to their app's plist.\n\n**Note:** Your application must be signed for automatic updates on macOS. This is a requirement of `Squirrel.Mac`.\n\n### Windows\n\nOn Windows, you have to install your app into a user's machine before you can use the `autoUpdater`, so it is recommended that you use the electron-winstaller, Electron Forge or the grunt-electron-installer package to generate a Windows installer.\n\nWhen using electron-winstaller or Electron Forge make sure you do not try to update your app the first time it runs (Also see this issue for more info). It's also recommended to use electron-squirrel-startup to get desktop shortcuts for your app.\n\nThe installer generated with Squirrel will create a shortcut icon with an Application User Model ID in the format of `com.squirrel.PACKAGE_ID.YOUR_EXE_WITHOUT_DOT_EXE`, examples are `com.squirrel.slack.Slack` and `com.squirrel.code.Code`. You have to use the same ID for your app with `app.setAppUserModelId` API, otherwise Windows will not be able to pin your app properly in task bar.\n\nLike Squirrel.Mac, Windows can host updates on S3 or any other static file host. You can read the documents of Squirrel.Windows to get more details about how Squirrel.Windows works.",
    "slug": "auto-updater",
    "websiteUrl": "https://electronjs.org/docs/api/auto-updater",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/auto-updater.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "setFeedURL",
        "signature": "(options)",
        "description": "Sets the `url` and initialize the auto updater.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "url",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "headers",
                "description": "HTTP request headers.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "Record",
                "innerTypes": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  }
                ]
              },
              {
                "name": "serverType",
                "description": "Can be `json` or `default`, see the Squirrel.Mac README for more information.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "json",
                    "description": ""
                  },
                  {
                    "value": "default",
                    "description": ""
                  }
                ]
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#autoupdatersetfeedurloptions"
      },
      {
        "name": "getFeedURL",
        "signature": "()",
        "description": "The current update feed URL.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#autoupdatergetfeedurl"
      },
      {
        "name": "checkForUpdates",
        "signature": "()",
        "description": "Asks the server whether there is an update. You must call `setFeedURL` before using this API.\n\n**Note:** If an update is available it will be downloaded automatically. Calling `autoUpdater.checkForUpdates()` twice will download the update two times.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#autoupdatercheckforupdates"
      },
      {
        "name": "quitAndInstall",
        "signature": "()",
        "description": "Restarts the app and installs the update after it has been downloaded. It should only be called after `update-downloaded` has been emitted.\n\nUnder the hood calling `autoUpdater.quitAndInstall()` will close all application windows first, and automatically call `app.quit()` after all windows have been closed.\n\n**Note:** It is not strictly necessary to call this function to apply an update, as a successfully downloaded update will always be applied the next time the application starts.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#autoupdaterquitandinstall"
      }
    ],
    "properties": [],
    "events": [
      {
        "name": "error",
        "description": "Emitted when there is an error while updating.",
        "parameters": [
          {
            "name": "error",
            "description": "",
            "collection": false,
            "type": "Error",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-error"
      },
      {
        "name": "checking-for-update",
        "description": "Emitted when checking if an update has started.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-checking-for-update"
      },
      {
        "name": "update-available",
        "description": "Emitted when there is an available update. The update is downloaded automatically.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-update-available"
      },
      {
        "name": "update-not-available",
        "description": "Emitted when there is no available update.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-update-not-available"
      },
      {
        "name": "update-downloaded",
        "description": "Emitted when an update has been downloaded.\n\nOn Windows only `releaseName` is available.\n\n**Note:** It is not strictly necessary to handle this event. A successfully downloaded update will still be applied the next time the application starts.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "releaseNotes",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "releaseName",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "releaseDate",
            "description": "",
            "collection": false,
            "type": "Date",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "updateURL",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-update-downloaded"
      },
      {
        "name": "before-quit-for-update",
        "description": "This event is emitted after a user calls `quitAndInstall()`.\n\nWhen this API is called, the `before-quit` event is not emitted before all windows are closed. As a result you should listen to this event if you wish to perform actions before the windows are closed while a process is quitting, as well as listening to `before-quit`.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-before-quit-for-update"
      }
    ],
    "exportedClasses": []
  },
  {
    "name": "BaseWindow",
    "description": "> Create and control windows.\n\nProcess: Main\n\n> **Note** `BaseWindow` provides a flexible way to compose multiple web views in a single window. For windows with only a single, full-size web view, the `BrowserWindow` class may be a simpler option.\n\nThis module cannot be used until the `ready` event of the `app` module is emitted.\n\n### Parent and child windows\n\nBy using `parent` option, you can create child windows:\n\n```\nconst { BaseWindow } = require('electron')\n\nconst parent = new BaseWindow()\nconst child = new BaseWindow({ parent })\n```\n\nThe `child` window will always show on top of the `parent` window.\n\n### Modal windows\n\nA modal window is a child window that disables parent window. To create a modal window, you have to set both the `parent` and `modal` options:\n\n```\nconst { BaseWindow } = require('electron')\n\nconst parent = new BaseWindow()\nconst child = new BaseWindow({ parent, modal: true })\n```\n\n### Platform notices\n\n* On macOS modal windows will be displayed as sheets attached to the parent window.\n* On macOS the child windows will keep the relative position to parent window when parent window moves, while on Windows and Linux child windows will not move.\n* On Linux the type of modal windows will be changed to `dialog`.\n* On Linux many desktop environments do not support hiding a modal window.\n\n### Class: BaseWindow\n\n> Create and control windows.\n\nProcess: Main\n\n`BaseWindow` is an EventEmitter.\n\nIt creates a new `BaseWindow` with native properties as set by the `options`.",
    "slug": "base-window",
    "websiteUrl": "https://electronjs.org/docs/api/base-window",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/base-window.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "constructorMethod": {
      "signature": "([options])",
      "parameters": [
        {
          "name": "options",
          "description": "",
          "required": false,
          "collection": false,
          "type": "BaseWindowConstructorOptions"
        }
      ]
    },
    "staticMethods": [
      {
        "name": "getAllWindows",
        "signature": "()",
        "description": "An array of all opened browser windows.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "BaseWindow"
        },
        "additionalTags": [],
        "urlFragment": "#basewindowgetallwindows"
      },
      {
        "name": "getFocusedWindow",
        "signature": "()",
        "description": "The window that is focused in this application, otherwise returns `null`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "BaseWindow"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#basewindowgetfocusedwindow"
      },
      {
        "name": "fromId",
        "signature": "(id)",
        "description": "The window with the given `id`.",
        "parameters": [
          {
            "name": "id",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "BaseWindow"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#basewindowfromidid"
      }
    ],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "setContentView",
        "signature": "(view)",
        "description": "Sets the content view of the window.",
        "parameters": [
          {
            "name": "view",
            "description": "",
            "required": true,
            "collection": false,
            "type": "View"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetcontentviewview"
      },
      {
        "name": "getContentView",
        "signature": "()",
        "description": "Returns View - The content view of the window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#wingetcontentview"
      },
      {
        "name": "destroy",
        "signature": "()",
        "description": "Force closing the window, the `unload` and `beforeunload` event won't be emitted for the web page, and `close` event will also not be emitted for this window, but it guarantees the `closed` event will be emitted.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#windestroy"
      },
      {
        "name": "close",
        "signature": "()",
        "description": "Try to close the window. This has the same effect as a user manually clicking the close button of the window. The web page may cancel the close though. See the close event.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winclose"
      },
      {
        "name": "focus",
        "signature": "()",
        "description": "Focuses on the window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winfocus"
      },
      {
        "name": "blur",
        "signature": "()",
        "description": "Removes focus from the window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winblur"
      },
      {
        "name": "isFocused",
        "signature": "()",
        "description": "Whether the window is focused.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisfocused"
      },
      {
        "name": "isDestroyed",
        "signature": "()",
        "description": "Whether the window is destroyed.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisdestroyed"
      },
      {
        "name": "show",
        "signature": "()",
        "description": "Shows and gives focus to the window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winshow"
      },
      {
        "name": "showInactive",
        "signature": "()",
        "description": "Shows the window but doesn't focus on it.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winshowinactive"
      },
      {
        "name": "hide",
        "signature": "()",
        "description": "Hides the window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winhide"
      },
      {
        "name": "isVisible",
        "signature": "()",
        "description": "Whether the window is visible to the user in the foreground of the app.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisvisible"
      },
      {
        "name": "isModal",
        "signature": "()",
        "description": "Whether current window is a modal window.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winismodal"
      },
      {
        "name": "maximize",
        "signature": "()",
        "description": "Maximizes the window. This will also show (but not focus) the window if it isn't being displayed already.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winmaximize"
      },
      {
        "name": "unmaximize",
        "signature": "()",
        "description": "Unmaximizes the window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winunmaximize"
      },
      {
        "name": "isMaximized",
        "signature": "()",
        "description": "Whether the window is maximized.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winismaximized"
      },
      {
        "name": "minimize",
        "signature": "()",
        "description": "Minimizes the window. On some platforms the minimized window will be shown in the Dock.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winminimize"
      },
      {
        "name": "restore",
        "signature": "()",
        "description": "Restores the window from minimized state to its previous state.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winrestore"
      },
      {
        "name": "isMinimized",
        "signature": "()",
        "description": "Whether the window is minimized.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisminimized"
      },
      {
        "name": "setFullScreen",
        "signature": "(flag)",
        "description": "Sets whether the window should be in fullscreen mode.\n\n**Note:** On macOS, fullscreen transitions take place asynchronously. If further actions depend on the fullscreen state, use the 'enter-full-screen' or 'leave-full-screen' events.",
        "parameters": [
          {
            "name": "flag",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetfullscreenflag"
      },
      {
        "name": "isFullScreen",
        "signature": "()",
        "description": "Whether the window is in fullscreen mode.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisfullscreen"
      },
      {
        "name": "setSimpleFullScreen",
        "signature": "(flag)",
        "description": "Enters or leaves simple fullscreen mode.\n\nSimple fullscreen mode emulates the native fullscreen behavior found in versions of macOS prior to Lion (10.7).",
        "parameters": [
          {
            "name": "flag",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsetsimplefullscreenflag-macos"
      },
      {
        "name": "isSimpleFullScreen",
        "signature": "()",
        "description": "Whether the window is in simple (pre-Lion) fullscreen mode.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winissimplefullscreen-macos"
      },
      {
        "name": "isNormal",
        "signature": "()",
        "description": "Whether the window is in normal state (not maximized, not minimized, not in fullscreen mode).",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisnormal"
      },
      {
        "name": "setAspectRatio",
        "signature": "(aspectRatio[, extraSize])",
        "description": "This will make a window maintain an aspect ratio. The extra size allows a developer to have space, specified in pixels, not included within the aspect ratio calculations. This API already takes into account the difference between a window's size and its content size.\n\nConsider a normal window with an HD video player and associated controls. Perhaps there are 15 pixels of controls on the left edge, 25 pixels of controls on the right edge and 50 pixels of controls below the player. In order to maintain a 16:9 aspect ratio (standard aspect ratio for HD @1920x1080) within the player itself we would call this function with arguments of 16/9 and { width: 40, height: 50 }. The second argument doesn't care where the extra width and height are within the content view--only that they exist. Sum any extra width and height areas you have within the overall content view.\n\nThe aspect ratio is not respected when window is resized programmatically with APIs like `win.setSize`.\n\nTo reset an aspect ratio, pass 0 as the `aspectRatio` value: `win.setAspectRatio(0)`.",
        "parameters": [
          {
            "name": "aspectRatio",
            "description": "The aspect ratio to maintain for some portion of the content view.",
            "required": true,
            "collection": false,
            "type": "Float"
          },
          {
            "name": "extraSize",
            "description": "The extra size not to be included while maintaining the aspect ratio.",
            "required": false,
            "collection": false,
            "type": "Size"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetaspectratioaspectratio-extrasize"
      },
      {
        "name": "setBackgroundColor",
        "signature": "(backgroundColor)",
        "description": "Examples of valid `backgroundColor` values:\n\n* Hex\n  * #fff (shorthand RGB)\n  * #ffff (shorthand ARGB)\n  * #ffffff (RGB)\n  * #ffffffff (ARGB)\n* RGB\n  * `rgb\\(([\\d]+),\\s*([\\d]+),\\s*([\\d]+)\\)`\n    * e.g. rgb(255, 255, 255)\n* RGBA\n  * `rgba\\(([\\d]+),\\s*([\\d]+),\\s*([\\d]+),\\s*([\\d.]+)\\)`\n    * e.g. rgba(255, 255, 255, 1.0)\n* HSL\n  * `hsl\\((-?[\\d.]+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)`\n    * e.g. hsl(200, 20%, 50%)\n* HSLA\n  * `hsla\\((-?[\\d.]+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)`\n    * e.g. hsla(200, 20%, 50%, 0.5)\n* Color name\n  * Options are listed in SkParseColor.cpp\n  * Similar to CSS Color Module Level 3 keywords, but case-sensitive.\n    * e.g. `blueviolet` or `red`\n\nSets the background color of the window. See Setting `backgroundColor`.",
        "parameters": [
          {
            "name": "backgroundColor",
            "description": "Color in Hex, RGB, RGBA, HSL, HSLA or named CSS color format. The alpha channel is optional for the hex type.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetbackgroundcolorbackgroundcolor"
      },
      {
        "name": "previewFile",
        "signature": "(path[, displayName])",
        "description": "Uses Quick Look to preview a file at a given path.",
        "parameters": [
          {
            "name": "path",
            "description": "The absolute path to the file to preview with QuickLook. This is important as Quick Look uses the file name and file extension on the path to determine the content type of the file to open.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "displayName",
            "description": "The name of the file to display on the Quick Look modal view. This is purely visual and does not affect the content type of the file. Defaults to `path`.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winpreviewfilepath-displayname-macos"
      },
      {
        "name": "closeFilePreview",
        "signature": "()",
        "description": "Closes the currently open Quick Look panel.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winclosefilepreview-macos"
      },
      {
        "name": "setBounds",
        "signature": "(bounds[, animate])",
        "description": "Resizes and moves the window to the supplied bounds. Any properties that are not supplied will default to their current values.\n\n**Note:** On macOS, the y-coordinate value cannot be smaller than the Tray height. The tray height has changed over time and depends on the operating system, but is between 20-40px. Passing a value lower than the tray height will result in a window that is flush to the tray.",
        "parameters": [
          {
            "name": "bounds",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Partial",
            "innerTypes": [
              {
                "collection": false,
                "type": "Rectangle"
              }
            ]
          },
          {
            "name": "animate",
            "description": "",
            "required": false,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetboundsbounds-animate"
      },
      {
        "name": "getBounds",
        "signature": "()",
        "description": "The `bounds` of the window as `Object`.\n\n**Note:** On macOS, the y-coordinate value returned will be at minimum the Tray height. For example, calling `win.setBounds({ x: 25, y: 20, width: 800, height: 600 })` with a tray height of 38 means that `win.getBounds()` will return `{ x: 25, y: 38, width: 800, height: 600 }`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Rectangle"
        },
        "additionalTags": [],
        "urlFragment": "#wingetbounds"
      },
      {
        "name": "getBackgroundColor",
        "signature": "()",
        "description": "Gets the background color of the window in Hex (`#RRGGBB`) format.\n\nSee Setting `backgroundColor`.\n\n**Note:** The alpha value is _not_ returned alongside the red, green, and blue values.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#wingetbackgroundcolor"
      },
      {
        "name": "setContentBounds",
        "signature": "(bounds[, animate])",
        "description": "Resizes and moves the window's client area (e.g. the web page) to the supplied bounds.",
        "parameters": [
          {
            "name": "bounds",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Rectangle"
          },
          {
            "name": "animate",
            "description": "",
            "required": false,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetcontentboundsbounds-animate"
      },
      {
        "name": "getContentBounds",
        "signature": "()",
        "description": "The `bounds` of the window's client area as `Object`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Rectangle"
        },
        "additionalTags": [],
        "urlFragment": "#wingetcontentbounds"
      },
      {
        "name": "getNormalBounds",
        "signature": "()",
        "description": "Contains the window bounds of the normal state\n\n**Note:** whatever the current state of the window : maximized, minimized or in fullscreen, this function always returns the position and size of the window in normal state. In normal state, getBounds and getNormalBounds returns the same `Rectangle`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Rectangle"
        },
        "additionalTags": [],
        "urlFragment": "#wingetnormalbounds"
      },
      {
        "name": "setEnabled",
        "signature": "(enable)",
        "description": "Disable or enable the window.",
        "parameters": [
          {
            "name": "enable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetenabledenable"
      },
      {
        "name": "isEnabled",
        "signature": "()",
        "description": "whether the window is enabled.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisenabled"
      },
      {
        "name": "setSize",
        "signature": "(width, height[, animate])",
        "description": "Resizes the window to `width` and `height`. If `width` or `height` are below any set minimum size constraints the window will snap to its minimum size.",
        "parameters": [
          {
            "name": "width",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "height",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "animate",
            "description": "",
            "required": false,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetsizewidth-height-animate"
      },
      {
        "name": "getSize",
        "signature": "()",
        "description": "Contains the window's width and height.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#wingetsize"
      },
      {
        "name": "setContentSize",
        "signature": "(width, height[, animate])",
        "description": "Resizes the window's client area (e.g. the web page) to `width` and `height`.",
        "parameters": [
          {
            "name": "width",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "height",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "animate",
            "description": "",
            "required": false,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetcontentsizewidth-height-animate"
      },
      {
        "name": "getContentSize",
        "signature": "()",
        "description": "Contains the window's client area's width and height.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#wingetcontentsize"
      },
      {
        "name": "setMinimumSize",
        "signature": "(width, height)",
        "description": "Sets the minimum size of window to `width` and `height`.",
        "parameters": [
          {
            "name": "width",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "height",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetminimumsizewidth-height"
      },
      {
        "name": "getMinimumSize",
        "signature": "()",
        "description": "Contains the window's minimum width and height.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#wingetminimumsize"
      },
      {
        "name": "setMaximumSize",
        "signature": "(width, height)",
        "description": "Sets the maximum size of window to `width` and `height`.",
        "parameters": [
          {
            "name": "width",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "height",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetmaximumsizewidth-height"
      },
      {
        "name": "getMaximumSize",
        "signature": "()",
        "description": "Contains the window's maximum width and height.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#wingetmaximumsize"
      },
      {
        "name": "setResizable",
        "signature": "(resizable)",
        "description": "Sets whether the window can be manually resized by the user.",
        "parameters": [
          {
            "name": "resizable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetresizableresizable"
      },
      {
        "name": "isResizable",
        "signature": "()",
        "description": "Whether the window can be manually resized by the user.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisresizable"
      },
      {
        "name": "setMovable",
        "signature": "(movable)",
        "description": "Sets whether the window can be moved by user. On Linux does nothing.",
        "parameters": [
          {
            "name": "movable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winsetmovablemovable-macos-windows"
      },
      {
        "name": "isMovable",
        "signature": "()",
        "description": "Whether the window can be moved by user.\n\nOn Linux always returns `true`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winismovable-macos-windows"
      },
      {
        "name": "setMinimizable",
        "signature": "(minimizable)",
        "description": "Sets whether the window can be manually minimized by user. On Linux does nothing.",
        "parameters": [
          {
            "name": "minimizable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winsetminimizableminimizable-macos-windows"
      },
      {
        "name": "isMinimizable",
        "signature": "()",
        "description": "Whether the window can be manually minimized by the user.\n\nOn Linux always returns `true`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winisminimizable-macos-windows"
      },
      {
        "name": "setMaximizable",
        "signature": "(maximizable)",
        "description": "Sets whether the window can be manually maximized by user. On Linux does nothing.",
        "parameters": [
          {
            "name": "maximizable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winsetmaximizablemaximizable-macos-windows"
      },
      {
        "name": "isMaximizable",
        "signature": "()",
        "description": "Whether the window can be manually maximized by user.\n\nOn Linux always returns `true`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winismaximizable-macos-windows"
      },
      {
        "name": "setFullScreenable",
        "signature": "(fullscreenable)",
        "description": "Sets whether the maximize/zoom window button toggles fullscreen mode or maximizes the window.",
        "parameters": [
          {
            "name": "fullscreenable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetfullscreenablefullscreenable"
      },
      {
        "name": "isFullScreenable",
        "signature": "()",
        "description": "Whether the maximize/zoom window button toggles fullscreen mode or maximizes the window.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisfullscreenable"
      },
      {
        "name": "setClosable",
        "signature": "(closable)",
        "description": "Sets whether the window can be manually closed by user. On Linux does nothing.",
        "parameters": [
          {
            "name": "closable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winsetclosableclosable-macos-windows"
      },
      {
        "name": "isClosable",
        "signature": "()",
        "description": "Whether the window can be manually closed by user.\n\nOn Linux always returns `true`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winisclosable-macos-windows"
      },
      {
        "name": "setHiddenInMissionControl",
        "signature": "(hidden)",
        "description": "Sets whether the window will be hidden when the user toggles into mission control.",
        "parameters": [
          {
            "name": "hidden",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsethiddeninmissioncontrolhidden-macos"
      },
      {
        "name": "isHiddenInMissionControl",
        "signature": "()",
        "description": "Whether the window will be hidden when the user toggles into mission control.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winishiddeninmissioncontrol-macos"
      },
      {
        "name": "setAlwaysOnTop",
        "signature": "(flag[, level][, relativeLevel])",
        "description": "Sets whether the window should show always on top of other windows. After setting this, the window is still a normal window, not a toolbox window which can not be focused on.",
        "parameters": [
          {
            "name": "flag",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          },
          {
            "name": "level",
            "description": "Values include `normal`, `floating`, `torn-off-menu`, `modal-panel`, `main-menu`, `status`, `pop-up-menu`, `screen-saver`, and ~~`dock`~~ (Deprecated). The default is `floating` when `flag` is true. The `level` is reset to `normal` when the flag is false. Note that from `floating` to `status` included, the window is placed below the Dock on macOS and below the taskbar on Windows. From `pop-up-menu` to a higher it is shown above the Dock on macOS and above the taskbar on Windows. See the macOS docs for more details.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "normal",
                "description": ""
              },
              {
                "value": "floating",
                "description": ""
              },
              {
                "value": "torn-off-menu",
                "description": ""
              },
              {
                "value": "modal-panel",
                "description": ""
              },
              {
                "value": "main-menu",
                "description": ""
              },
              {
                "value": "status",
                "description": ""
              },
              {
                "value": "pop-up-menu",
                "description": ""
              },
              {
                "value": "screen-saver",
                "description": ""
              },
              {
                "value": "dock",
                "description": ""
              }
            ]
          },
          {
            "name": "relativeLevel",
            "description": "The number of layers higher to set this window relative to the given `level`. The default is `0`. Note that Apple discourages setting levels higher than 1 above `screen-saver`.",
            "required": false,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetalwaysontopflag-level-relativelevel"
      },
      {
        "name": "isAlwaysOnTop",
        "signature": "()",
        "description": "Whether the window is always on top of other windows.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisalwaysontop"
      },
      {
        "name": "moveAbove",
        "signature": "(mediaSourceId)",
        "description": "Moves window above the source window in the sense of z-order. If the `mediaSourceId` is not of type window or if the window does not exist then this method throws an error.",
        "parameters": [
          {
            "name": "mediaSourceId",
            "description": "Window id in the format of DesktopCapturerSource's id. For example \"window:1869:0\".",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winmoveabovemediasourceid"
      },
      {
        "name": "moveTop",
        "signature": "()",
        "description": "Moves window to top(z-order) regardless of focus",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winmovetop"
      },
      {
        "name": "center",
        "signature": "()",
        "description": "Moves window to the center of the screen.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#wincenter"
      },
      {
        "name": "setPosition",
        "signature": "(x, y[, animate])",
        "description": "Moves window to `x` and `y`.",
        "parameters": [
          {
            "name": "x",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "y",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "animate",
            "description": "",
            "required": false,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetpositionx-y-animate"
      },
      {
        "name": "getPosition",
        "signature": "()",
        "description": "Contains the window's current position.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#wingetposition"
      },
      {
        "name": "setTitle",
        "signature": "(title)",
        "description": "Changes the title of native window to `title`.",
        "parameters": [
          {
            "name": "title",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsettitletitle"
      },
      {
        "name": "getTitle",
        "signature": "()",
        "description": "The title of the native window.\n\n**Note:** The title of the web page can be different from the title of the native window.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#wingettitle"
      },
      {
        "name": "setSheetOffset",
        "signature": "(offsetY[, offsetX])",
        "description": "Changes the attachment point for sheets on macOS. By default, sheets are attached just below the window frame, but you may want to display them beneath a HTML-rendered toolbar. For example:",
        "parameters": [
          {
            "name": "offsetY",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Float"
          },
          {
            "name": "offsetX",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Float"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsetsheetoffsetoffsety-offsetx-macos"
      },
      {
        "name": "flashFrame",
        "signature": "(flag)",
        "description": "Starts or stops flashing the window to attract user's attention.",
        "parameters": [
          {
            "name": "flag",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winflashframeflag"
      },
      {
        "name": "setSkipTaskbar",
        "signature": "(skip)",
        "description": "Makes the window not show in the taskbar.",
        "parameters": [
          {
            "name": "skip",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winsetskiptaskbarskip-macos-windows"
      },
      {
        "name": "setKiosk",
        "signature": "(flag)",
        "description": "Enters or leaves kiosk mode.",
        "parameters": [
          {
            "name": "flag",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetkioskflag"
      },
      {
        "name": "isKiosk",
        "signature": "()",
        "description": "Whether the window is in kiosk mode.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winiskiosk"
      },
      {
        "name": "isTabletMode",
        "signature": "()",
        "description": "Whether the window is in Windows 10 tablet mode.\n\nSince Windows 10 users can use their PC as tablet, under this mode apps can choose to optimize their UI for tablets, such as enlarging the titlebar and hiding titlebar buttons.\n\nThis API returns whether the window is in tablet mode, and the `resize` event can be be used to listen to changes to tablet mode.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winistabletmode-windows"
      },
      {
        "name": "getMediaSourceId",
        "signature": "()",
        "description": "Window id in the format of DesktopCapturerSource's id. For example \"window:1324:0\".\n\nMore precisely the format is `window:id:other_id` where `id` is `HWND` on Windows, `CGWindowID` (`uint64_t`) on macOS and `Window` (`unsigned long`) on Linux. `other_id` is used to identify web contents (tabs) so within the same top level window.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#wingetmediasourceid"
      },
      {
        "name": "getNativeWindowHandle",
        "signature": "()",
        "description": "The platform-specific handle of the window.\n\nThe native type of the handle is `HWND` on Windows, `NSView*` on macOS, and `Window` (`unsigned long`) on Linux.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Buffer"
        },
        "additionalTags": [],
        "urlFragment": "#wingetnativewindowhandle"
      },
      {
        "name": "hookWindowMessage",
        "signature": "(message, callback)",
        "description": "Hooks a windows message. The `callback` is called when the message is received in the WndProc.",
        "parameters": [
          {
            "name": "message",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "callback",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "wParam",
                "description": "The `wParam` provided to the WndProc",
                "required": true,
                "collection": false,
                "type": "Buffer"
              },
              {
                "name": "lParam",
                "description": "The `lParam` provided to the WndProc",
                "required": true,
                "collection": false,
                "type": "Buffer"
              }
            ],
            "returns": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winhookwindowmessagemessage-callback-windows"
      },
      {
        "name": "isWindowMessageHooked",
        "signature": "(message)",
        "description": "`true` or `false` depending on whether the message is hooked.",
        "parameters": [
          {
            "name": "message",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winiswindowmessagehookedmessage-windows"
      },
      {
        "name": "unhookWindowMessage",
        "signature": "(message)",
        "description": "Unhook the window message.",
        "parameters": [
          {
            "name": "message",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winunhookwindowmessagemessage-windows"
      },
      {
        "name": "unhookAllWindowMessages",
        "signature": "()",
        "description": "Unhooks all of the window messages.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winunhookallwindowmessages-windows"
      },
      {
        "name": "setRepresentedFilename",
        "signature": "(filename)",
        "description": "Sets the pathname of the file the window represents, and the icon of the file will show in window's title bar.",
        "parameters": [
          {
            "name": "filename",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsetrepresentedfilenamefilename-macos"
      },
      {
        "name": "getRepresentedFilename",
        "signature": "()",
        "description": "The pathname of the file the window represents.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#wingetrepresentedfilename-macos"
      },
      {
        "name": "setDocumentEdited",
        "signature": "(edited)",
        "description": "Specifies whether the window’s document has been edited, and the icon in title bar will become gray when set to `true`.",
        "parameters": [
          {
            "name": "edited",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsetdocumenteditededited-macos"
      },
      {
        "name": "isDocumentEdited",
        "signature": "()",
        "description": "Whether the window's document has been edited.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winisdocumentedited-macos"
      },
      {
        "name": "setMenu",
        "signature": "(menu)",
        "description": "Sets the `menu` as the window's menu bar.",
        "parameters": [
          {
            "name": "menu",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Menu"
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_linux",
          "os_windows"
        ],
        "urlFragment": "#winsetmenumenu-linux-windows"
      },
      {
        "name": "removeMenu",
        "signature": "()",
        "description": "Remove the window's menu bar.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_linux",
          "os_windows"
        ],
        "urlFragment": "#winremovemenu-linux-windows"
      },
      {
        "name": "setProgressBar",
        "signature": "(progress[, options])",
        "description": "Sets progress value in progress bar. Valid range is [0, 1.0].\n\nRemove progress bar when progress < 0; Change to indeterminate mode when progress > 1.\n\nOn Linux platform, only supports Unity desktop environment, you need to specify the `*.desktop` file name to `desktopName` field in `package.json`. By default, it will assume `{app.name}.desktop`.\n\nOn Windows, a mode can be passed. Accepted values are `none`, `normal`, `indeterminate`, `error`, and `paused`. If you call `setProgressBar` without a mode set (but with a value within the valid range), `normal` will be assumed.",
        "parameters": [
          {
            "name": "progress",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Double"
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "mode",
                "description": "Mode for the progress bar. Can be `none`, `normal`, `indeterminate`, `error` or `paused`.",
                "required": true,
                "additionalTags": [
                  "os_windows"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "none",
                    "description": ""
                  },
                  {
                    "value": "normal",
                    "description": ""
                  },
                  {
                    "value": "indeterminate",
                    "description": ""
                  },
                  {
                    "value": "error",
                    "description": ""
                  },
                  {
                    "value": "paused",
                    "description": ""
                  }
                ]
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetprogressbarprogress-options"
      },
      {
        "name": "setOverlayIcon",
        "signature": "(overlay, description)",
        "description": "Sets a 16 x 16 pixel overlay onto the current taskbar icon, usually used to convey some sort of application status or to passively notify the user.",
        "parameters": [
          {
            "name": "overlay",
            "description": "the icon to display on the bottom right corner of the taskbar icon. If this parameter is `null`, the overlay is cleared",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "NativeImage"
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          },
          {
            "name": "description",
            "description": "a description that will be provided to Accessibility screen readers",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winsetoverlayiconoverlay-description-windows"
      },
      {
        "name": "invalidateShadow",
        "signature": "()",
        "description": "Invalidates the window shadow so that it is recomputed based on the current window shape.\n\n`BaseWindow`s that are transparent can sometimes leave behind visual artifacts on macOS. This method can be used to clear these artifacts when, for example, performing an animation.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#wininvalidateshadow-macos"
      },
      {
        "name": "setHasShadow",
        "signature": "(hasShadow)",
        "description": "Sets whether the window should have a shadow.",
        "parameters": [
          {
            "name": "hasShadow",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsethasshadowhasshadow"
      },
      {
        "name": "hasShadow",
        "signature": "()",
        "description": "Whether the window has a shadow.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winhasshadow"
      },
      {
        "name": "setOpacity",
        "signature": "(opacity)",
        "description": "Sets the opacity of the window. On Linux, does nothing. Out of bound number values are clamped to the [0, 1] range.",
        "parameters": [
          {
            "name": "opacity",
            "description": "between 0.0 (fully transparent) and 1.0 (fully opaque)",
            "required": true,
            "collection": false,
            "type": "number"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows",
          "os_macos"
        ],
        "urlFragment": "#winsetopacityopacity-windows-macos"
      },
      {
        "name": "getOpacity",
        "signature": "()",
        "description": "between 0.0 (fully transparent) and 1.0 (fully opaque). On Linux, always returns 1.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "number"
        },
        "additionalTags": [],
        "urlFragment": "#wingetopacity"
      },
      {
        "name": "setShape",
        "signature": "(rects)",
        "description": "Setting a window shape determines the area within the window where the system permits drawing and user interaction. Outside of the given region, no pixels will be drawn and no mouse events will be registered. Mouse events outside of the region will not be received by that window, but will fall through to whatever is behind the window.",
        "parameters": [
          {
            "name": "rects",
            "description": "Sets a shape on the window. Passing an empty list reverts the window to being rectangular.",
            "required": true,
            "collection": true,
            "type": "Rectangle"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows",
          "os_linux",
          "stability_experimental"
        ],
        "urlFragment": "#winsetshaperects-windows-linux-experimental"
      },
      {
        "name": "setThumbarButtons",
        "signature": "(buttons)",
        "description": "Whether the buttons were added successfully\n\nAdd a thumbnail toolbar with a specified set of buttons to the thumbnail image of a window in a taskbar button layout. Returns a `boolean` object indicates whether the thumbnail has been added successfully.\n\nThe number of buttons in thumbnail toolbar should be no greater than 7 due to the limited room. Once you setup the thumbnail toolbar, the toolbar cannot be removed due to the platform's limitation. But you can call the API with an empty array to clean the buttons.\n\nThe `buttons` is an array of `Button` objects:\n\n* `Button` Object\n  * `icon` NativeImage - The icon showing in thumbnail toolbar.\n  * `click` Function\n  * `tooltip` string (optional) - The text of the button's tooltip.\n  * `flags` string[] (optional) - Control specific states and behaviors of the button. By default, it is `['enabled']`.\n\nThe `flags` is an array that can include following `string`s:\n\n* `enabled` - The button is active and available to the user.\n* `disabled` - The button is disabled. It is present, but has a visual state indicating it will not respond to user action.\n* `dismissonclick` - When the button is clicked, the thumbnail window closes immediately.\n* `nobackground` - Do not draw a button border, use only the image.\n* `hidden` - The button is not shown to the user.\n* `noninteractive` - The button is enabled but not interactive; no pressed button state is drawn. This value is intended for instances where the button is used in a notification.",
        "parameters": [
          {
            "name": "buttons",
            "description": "",
            "required": true,
            "collection": true,
            "type": "ThumbarButton"
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winsetthumbarbuttonsbuttons-windows"
      },
      {
        "name": "setThumbnailClip",
        "signature": "(region)",
        "description": "Sets the region of the window to show as the thumbnail image displayed when hovering over the window in the taskbar. You can reset the thumbnail to be the entire window by specifying an empty region: `{ x: 0, y: 0, width: 0, height: 0 }`.",
        "parameters": [
          {
            "name": "region",
            "description": "Region of the window",
            "required": true,
            "collection": false,
            "type": "Rectangle"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winsetthumbnailclipregion-windows"
      },
      {
        "name": "setThumbnailToolTip",
        "signature": "(toolTip)",
        "description": "Sets the toolTip that is displayed when hovering over the window thumbnail in the taskbar.",
        "parameters": [
          {
            "name": "toolTip",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winsetthumbnailtooltiptooltip-windows"
      },
      {
        "name": "setAppDetails",
        "signature": "(options)",
        "description": "Sets the properties for the window's taskbar button.\n\n**Note:** `relaunchCommand` and `relaunchDisplayName` must always be set together. If one of those properties is not set, then neither will be used.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "appId",
                "description": "Window's App User Model ID. It has to be set, otherwise the other options will have no effect.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "appIconPath",
                "description": "Window's Relaunch Icon.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "appIconIndex",
                "description": "Index of the icon in `appIconPath`. Ignored when `appIconPath` is not set. Default is `0`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "relaunchCommand",
                "description": "Window's Relaunch Command.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "relaunchDisplayName",
                "description": "Window's Relaunch Display Name.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winsetappdetailsoptions-windows"
      },
      {
        "name": "setIcon",
        "signature": "(icon)",
        "description": "Changes window icon.",
        "parameters": [
          {
            "name": "icon",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "NativeImage"
              },
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#winseticonicon-windows-linux"
      },
      {
        "name": "setWindowButtonVisibility",
        "signature": "(visible)",
        "description": "Sets whether the window traffic light buttons should be visible.",
        "parameters": [
          {
            "name": "visible",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsetwindowbuttonvisibilityvisible-macos"
      },
      {
        "name": "setAutoHideMenuBar",
        "signature": "(hide)",
        "description": "Sets whether the window menu bar should hide itself automatically. Once set the menu bar will only show when users press the single `Alt` key.\n\nIf the menu bar is already visible, calling `setAutoHideMenuBar(true)` won't hide it immediately.",
        "parameters": [
          {
            "name": "hide",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#winsetautohidemenubarhide-windows-linux"
      },
      {
        "name": "isMenuBarAutoHide",
        "signature": "()",
        "description": "Whether menu bar automatically hides itself.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#winismenubarautohide-windows-linux"
      },
      {
        "name": "setMenuBarVisibility",
        "signature": "(visible)",
        "description": "Sets whether the menu bar should be visible. If the menu bar is auto-hide, users can still bring up the menu bar by pressing the single `Alt` key.",
        "parameters": [
          {
            "name": "visible",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#winsetmenubarvisibilityvisible-windows-linux"
      },
      {
        "name": "isMenuBarVisible",
        "signature": "()",
        "description": "Whether the menu bar is visible.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#winismenubarvisible-windows-linux"
      },
      {
        "name": "setVisibleOnAllWorkspaces",
        "signature": "(visible[, options])",
        "description": "Sets whether the window should be visible on all workspaces.\n\n**Note:** This API does nothing on Windows.",
        "parameters": [
          {
            "name": "visible",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "visibleOnFullScreen",
                "description": "Sets whether the window should be visible above fullscreen windows.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "skipTransformProcessType",
                "description": "Calling setVisibleOnAllWorkspaces will by default transform the process type between UIElementApplication and ForegroundApplication to ensure the correct behavior. However, this will hide the window and dock for a short time every time it is called. If your window is already of type UIElementApplication, you can bypass this transformation by passing true to skipTransformProcessType.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_linux"
        ],
        "urlFragment": "#winsetvisibleonallworkspacesvisible-options-macos-linux"
      },
      {
        "name": "isVisibleOnAllWorkspaces",
        "signature": "()",
        "description": "Whether the window is visible on all workspaces.\n\n**Note:** This API always returns false on Windows.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos",
          "os_linux"
        ],
        "urlFragment": "#winisvisibleonallworkspaces-macos-linux"
      },
      {
        "name": "setIgnoreMouseEvents",
        "signature": "(ignore[, options])",
        "description": "Makes the window ignore all mouse events.\n\nAll mouse events happened in this window will be passed to the window below this window, but if this window has focus, it will still receive keyboard events.",
        "parameters": [
          {
            "name": "ignore",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "forward",
                "description": "If true, forwards mouse move messages to Chromium, enabling mouse related events such as `mouseleave`. Only used when `ignore` is true. If `ignore` is false, forwarding is always disabled regardless of this value.",
                "required": false,
                "additionalTags": [
                  "os_macos",
                  "os_windows"
                ],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetignoremouseeventsignore-options"
      },
      {
        "name": "setContentProtection",
        "signature": "(enable)",
        "description": "Prevents the window contents from being captured by other apps.\n\nOn macOS it sets the NSWindow's sharingType to NSWindowSharingNone. On Windows it calls SetWindowDisplayAffinity with `WDA_EXCLUDEFROMCAPTURE`. For Windows 10 version 2004 and up the window will be removed from capture entirely, older Windows versions behave as if `WDA_MONITOR` is applied capturing a black window.",
        "parameters": [
          {
            "name": "enable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winsetcontentprotectionenable-macos-windows"
      },
      {
        "name": "setFocusable",
        "signature": "(focusable)",
        "description": "Changes whether the window can be focused.\n\nOn macOS it does not remove the focus from the window.",
        "parameters": [
          {
            "name": "focusable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winsetfocusablefocusable-macos-windows"
      },
      {
        "name": "isFocusable",
        "signature": "()",
        "description": "Whether the window can be focused.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winisfocusable-macos-windows"
      },
      {
        "name": "setParentWindow",
        "signature": "(parent)",
        "description": "Sets `parent` as current window's parent window, passing `null` will turn current window into a top-level window.",
        "parameters": [
          {
            "name": "parent",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "BaseWindow"
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetparentwindowparent"
      },
      {
        "name": "getParentWindow",
        "signature": "()",
        "description": "The parent window or `null` if there is no parent.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "BaseWindow"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#wingetparentwindow"
      },
      {
        "name": "getChildWindows",
        "signature": "()",
        "description": "All child windows.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "BaseWindow"
        },
        "additionalTags": [],
        "urlFragment": "#wingetchildwindows"
      },
      {
        "name": "setAutoHideCursor",
        "signature": "(autoHide)",
        "description": "Controls whether to hide cursor when typing.",
        "parameters": [
          {
            "name": "autoHide",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsetautohidecursorautohide-macos"
      },
      {
        "name": "selectPreviousTab",
        "signature": "()",
        "description": "Selects the previous tab when native tabs are enabled and there are other tabs in the window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winselectprevioustab-macos"
      },
      {
        "name": "selectNextTab",
        "signature": "()",
        "description": "Selects the next tab when native tabs are enabled and there are other tabs in the window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winselectnexttab-macos"
      },
      {
        "name": "showAllTabs",
        "signature": "()",
        "description": "Shows or hides the tab overview when native tabs are enabled.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winshowalltabs-macos"
      },
      {
        "name": "mergeAllWindows",
        "signature": "()",
        "description": "Merges all windows into one window with multiple tabs when native tabs are enabled and there is more than one open window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winmergeallwindows-macos"
      },
      {
        "name": "moveTabToNewWindow",
        "signature": "()",
        "description": "Moves the current tab into a new window if native tabs are enabled and there is more than one tab in the current window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winmovetabtonewwindow-macos"
      },
      {
        "name": "toggleTabBar",
        "signature": "()",
        "description": "Toggles the visibility of the tab bar if native tabs are enabled and there is only one tab in the current window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#wintoggletabbar-macos"
      },
      {
        "name": "addTabbedWindow",
        "signature": "(baseWindow)",
        "description": "Adds a window as a tab on this window, after the tab for the window instance.",
        "parameters": [
          {
            "name": "baseWindow",
            "description": "",
            "required": true,
            "collection": false,
            "type": "BaseWindow"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winaddtabbedwindowbasewindow-macos"
      },
      {
        "name": "setVibrancy",
        "signature": "(type)",
        "description": "Adds a vibrancy effect to the window. Passing `null` or an empty string will remove the vibrancy effect on the window.",
        "parameters": [
          {
            "name": "type",
            "description": "Can be `titlebar`, `selection`, `menu`, `popover`, `sidebar`, `header`, `sheet`, `window`, `hud`, `fullscreen-ui`, `tooltip`, `content`, `under-window`, or `under-page`. See the macOS documentation for more details.",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "titlebar",
                    "description": ""
                  },
                  {
                    "value": "selection",
                    "description": ""
                  },
                  {
                    "value": "menu",
                    "description": ""
                  },
                  {
                    "value": "popover",
                    "description": ""
                  },
                  {
                    "value": "sidebar",
                    "description": ""
                  },
                  {
                    "value": "header",
                    "description": ""
                  },
                  {
                    "value": "sheet",
                    "description": ""
                  },
                  {
                    "value": "window",
                    "description": ""
                  },
                  {
                    "value": "hud",
                    "description": ""
                  },
                  {
                    "value": "fullscreen-ui",
                    "description": ""
                  },
                  {
                    "value": "tooltip",
                    "description": ""
                  },
                  {
                    "value": "content",
                    "description": ""
                  },
                  {
                    "value": "under-window",
                    "description": ""
                  },
                  {
                    "value": "under-page",
                    "description": ""
                  }
                ]
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsetvibrancytype-macos"
      },
      {
        "name": "setBackgroundMaterial",
        "signature": "(material)",
        "description": "This method sets the browser window's system-drawn background material, including behind the non-client area.\n\nSee the Windows documentation for more details.\n\n**Note:** This method is only supported on Windows 11 22H2 and up.",
        "parameters": [
          {
            "name": "material",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "auto",
                "description": "Let the Desktop Window Manager (DWM) automatically decide the system-drawn backdrop material for this window. This is the default."
              },
              {
                "value": "none",
                "description": "Don't draw any system backdrop."
              },
              {
                "value": "mica",
                "description": "Draw the backdrop material effect corresponding to a long-lived window."
              },
              {
                "value": "acrylic",
                "description": "Draw the backdrop material effect corresponding to a transient window."
              },
              {
                "value": "tabbed",
                "description": "Draw the backdrop material effect corresponding to a window with a tabbed title bar."
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winsetbackgroundmaterialmaterial-windows"
      },
      {
        "name": "setWindowButtonPosition",
        "signature": "(position)",
        "description": "Set a custom position for the traffic light buttons in frameless window. Passing `null` will reset the position to default.",
        "parameters": [
          {
            "name": "position",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Point"
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsetwindowbuttonpositionposition-macos"
      },
      {
        "name": "getWindowButtonPosition",
        "signature": "()",
        "description": "The custom position for the traffic light buttons in frameless window, `null` will be returned when there is no custom position.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "Point"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#wingetwindowbuttonposition-macos"
      },
      {
        "name": "setTouchBar",
        "signature": "(touchBar)",
        "description": "Sets the touchBar layout for the current window. Specifying `null` or `undefined` clears the touch bar. This method only has an effect if the machine has a touch bar.\n\n**Note:** The TouchBar API is currently experimental and may change or be removed in future Electron releases.",
        "parameters": [
          {
            "name": "touchBar",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "TouchBar"
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsettouchbartouchbar-macos"
      },
      {
        "name": "setTitleBarOverlay",
        "signature": "(options)",
        "description": "On a Window with Window Controls Overlay already enabled, this method updates the style of the title bar overlay.\n\nOn Linux, the `symbolColor` is automatically calculated to have minimum accessible contrast to the `color` if not explicitly set.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "color",
                "description": "The CSS color of the Window Controls Overlay when enabled.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "symbolColor",
                "description": "The CSS color of the symbols on the Window Controls Overlay when enabled.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "height",
                "description": "The height of the title bar and Window Controls Overlay in pixels.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#winsettitlebaroverlayoptions-windows-linux"
      }
    ],
    "instanceProperties": [
      {
        "name": "id",
        "description": "A `Integer` property representing the unique ID of the window. Each ID is unique among all `BaseWindow` instances of the entire Electron application.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#winid-readonly",
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "contentView",
        "description": "A `View` property for the content view of the window.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#wincontentview",
        "collection": false,
        "type": "View"
      },
      {
        "name": "tabbingIdentifier",
        "description": "A `string` (optional) property that is equal to the `tabbingIdentifier` passed to the `BrowserWindow` constructor or `undefined` if none was set.",
        "required": false,
        "additionalTags": [
          "os_macos",
          "availability_readonly"
        ],
        "urlFragment": "#wintabbingidentifier-macos-readonly",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "autoHideMenuBar",
        "description": "A `boolean` property that determines whether the window menu bar should hide itself automatically. Once set, the menu bar will only show when users press the single `Alt` key.\n\nIf the menu bar is already visible, setting this property to `true` won't hide it immediately.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#winautohidemenubar",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "simpleFullScreen",
        "description": "A `boolean` property that determines whether the window is in simple (pre-Lion) fullscreen mode.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#winsimplefullscreen",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "fullScreen",
        "description": "A `boolean` property that determines whether the window is in fullscreen mode.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#winfullscreen",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "focusable",
        "description": "A `boolean` property that determines whether the window is focusable.",
        "required": true,
        "additionalTags": [
          "os_windows",
          "os_macos"
        ],
        "urlFragment": "#winfocusable-windows-macos",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "visibleOnAllWorkspaces",
        "description": "A `boolean` property that determines whether the window is visible on all workspaces.\n\n**Note:** Always returns false on Windows.",
        "required": true,
        "additionalTags": [
          "os_macos",
          "os_linux"
        ],
        "urlFragment": "#winvisibleonallworkspaces-macos-linux",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "shadow",
        "description": "A `boolean` property that determines whether the window has a shadow.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#winshadow",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "menuBarVisible",
        "description": "A `boolean` property that determines whether the menu bar should be visible.\n\n**Note:** If the menu bar is auto-hide, users can still bring up the menu bar by pressing the single `Alt` key.",
        "required": true,
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#winmenubarvisible-windows-linux",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "kiosk",
        "description": "A `boolean` property that determines whether the window is in kiosk mode.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#winkiosk",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "documentEdited",
        "description": "A `boolean` property that specifies whether the window’s document has been edited.\n\nThe icon in title bar will become gray when set to `true`.",
        "required": true,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#windocumentedited-macos",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "representedFilename",
        "description": "A `string` property that determines the pathname of the file the window represents, and the icon of the file will show in window's title bar.",
        "required": true,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winrepresentedfilename-macos",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "title",
        "description": "A `string` property that determines the title of the native window.\n\n**Note:** The title of the web page can be different from the title of the native window.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#wintitle",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "minimizable",
        "description": "A `boolean` property that determines whether the window can be manually minimized by user.\n\nOn Linux the setter is a no-op, although the getter returns `true`.",
        "required": true,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winminimizable-macos-windows",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "maximizable",
        "description": "A `boolean` property that determines whether the window can be manually maximized by user.\n\nOn Linux the setter is a no-op, although the getter returns `true`.",
        "required": true,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winmaximizable-macos-windows",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "fullScreenable",
        "description": "A `boolean` property that determines whether the maximize/zoom window button toggles fullscreen mode or maximizes the window.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#winfullscreenable",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "resizable",
        "description": "A `boolean` property that determines whether the window can be manually resized by user.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#winresizable",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "closable",
        "description": "A `boolean` property that determines whether the window can be manually closed by user.\n\nOn Linux the setter is a no-op, although the getter returns `true`.",
        "required": true,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winclosable-macos-windows",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "movable",
        "description": "A `boolean` property that determines Whether the window can be moved by user.\n\nOn Linux the setter is a no-op, although the getter returns `true`.",
        "required": true,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winmovable-macos-windows",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "excludedFromShownWindowsMenu",
        "description": "A `boolean` property that determines whether the window is excluded from the application’s Windows menu. `false` by default.",
        "required": true,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winexcludedfromshownwindowsmenu-macos",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "accessibleTitle",
        "description": "A `string` property that defines an alternative title provided only to accessibility tools such as screen readers. This string is not directly visible to users.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#winaccessibletitle",
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ],
    "instanceEvents": [
      {
        "name": "close",
        "description": "Emitted when the window is going to be closed. It's emitted before the `beforeunload` and `unload` event of the DOM. Calling `event.preventDefault()` will cancel the close.\n\nUsually you would want to use the `beforeunload` handler to decide whether the window should be closed, which will also be called when the window is reloaded. In Electron, returning any value other than `undefined` would cancel the close. For example:\n\n_**Note**: There is a subtle difference between the behaviors of `window.onbeforeunload = handler` and `window.addEventListener('beforeunload', handler)`. It is recommended to always set the `event.returnValue` explicitly, instead of only returning a value, as the former works more consistently within Electron._",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-close"
      },
      {
        "name": "closed",
        "description": "Emitted when the window is closed. After you have received this event you should remove the reference to the window and avoid using it any more.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-closed"
      },
      {
        "name": "session-end",
        "description": "Emitted when window session is going to end due to force shutdown or machine restart or session log off.",
        "parameters": [],
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#event-session-end-windows"
      },
      {
        "name": "blur",
        "description": "Emitted when the window loses focus.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-blur"
      },
      {
        "name": "focus",
        "description": "Emitted when the window gains focus.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-focus"
      },
      {
        "name": "show",
        "description": "Emitted when the window is shown.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-show"
      },
      {
        "name": "hide",
        "description": "Emitted when the window is hidden.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-hide"
      },
      {
        "name": "maximize",
        "description": "Emitted when window is maximized.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-maximize"
      },
      {
        "name": "unmaximize",
        "description": "Emitted when the window exits from a maximized state.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-unmaximize"
      },
      {
        "name": "minimize",
        "description": "Emitted when the window is minimized.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-minimize"
      },
      {
        "name": "restore",
        "description": "Emitted when the window is restored from a minimized state.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-restore"
      },
      {
        "name": "will-resize",
        "description": "Emitted before the window is resized. Calling `event.preventDefault()` will prevent the window from being resized.\n\nNote that this is only emitted when the window is being resized manually. Resizing the window with `setBounds`/`setSize` will not emit this event.\n\nThe possible values and behaviors of the `edge` option are platform dependent. Possible values are:\n\n* On Windows, possible values are `bottom`, `top`, `left`, `right`, `top-left`, `top-right`, `bottom-left`, `bottom-right`.\n* On macOS, possible values are `bottom` and `right`.\n  * The value `bottom` is used to denote vertical resizing.\n  * The value `right` is used to denote horizontal resizing.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "newBounds",
            "description": "Size the window is being resized to.",
            "collection": false,
            "type": "Rectangle",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "edge",
                "description": "The edge of the window being dragged for resizing. Can be `bottom`, `left`, `right`, `top-left`, `top-right`, `bottom-left` or `bottom-right`.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "bottom",
                    "description": ""
                  },
                  {
                    "value": "left",
                    "description": ""
                  },
                  {
                    "value": "right",
                    "description": ""
                  },
                  {
                    "value": "top-left",
                    "description": ""
                  },
                  {
                    "value": "top-right",
                    "description": ""
                  },
                  {
                    "value": "bottom-left",
                    "description": ""
                  },
                  {
                    "value": "bottom-right",
                    "description": ""
                  }
                ]
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-will-resize-macos-windows"
      },
      {
        "name": "resize",
        "description": "Emitted after the window has been resized.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-resize"
      },
      {
        "name": "resized",
        "description": "Emitted once when the window has finished being resized.\n\nThis is usually emitted when the window has been resized manually. On macOS, resizing the window with `setBounds`/`setSize` and setting the `animate` parameter to `true` will also emit this event once resizing has finished.",
        "parameters": [],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-resized-macos-windows"
      },
      {
        "name": "will-move",
        "description": "Emitted before the window is moved. On Windows, calling `event.preventDefault()` will prevent the window from being moved.\n\nNote that this is only emitted when the window is being moved manually. Moving the window with `setPosition`/`setBounds`/`center` will not emit this event.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "newBounds",
            "description": "Location the window is being moved to.",
            "collection": false,
            "type": "Rectangle",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-will-move-macos-windows"
      },
      {
        "name": "move",
        "description": "Emitted when the window is being moved to a new position.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-move"
      },
      {
        "name": "moved",
        "description": "Emitted once when the window is moved to a new position.\n\n**Note**: On macOS this event is an alias of `move`.",
        "parameters": [],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-moved-macos-windows"
      },
      {
        "name": "enter-full-screen",
        "description": "Emitted when the window enters a full-screen state.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-enter-full-screen"
      },
      {
        "name": "leave-full-screen",
        "description": "Emitted when the window leaves a full-screen state.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-leave-full-screen"
      },
      {
        "name": "always-on-top-changed",
        "description": "Emitted when the window is set or unset to show always on top of other windows.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isAlwaysOnTop",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-always-on-top-changed"
      },
      {
        "name": "app-command",
        "description": "Emitted when an App Command is invoked. These are typically related to keyboard media keys or browser commands, as well as the \"Back\" button built into some mice on Windows.\n\nCommands are lowercased, underscores are replaced with hyphens, and the `APPCOMMAND_` prefix is stripped off. e.g. `APPCOMMAND_BROWSER_BACKWARD` is emitted as `browser-backward`.\n\nThe following app commands are explicitly supported on Linux:\n\n* `browser-backward`\n* `browser-forward`",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "command",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#event-app-command-windows-linux"
      },
      {
        "name": "swipe",
        "description": "Emitted on 3-finger swipe. Possible directions are `up`, `right`, `down`, `left`.\n\nThe method underlying this event is built to handle older macOS-style trackpad swiping, where the content on the screen doesn't move with the swipe. Most macOS trackpads are not configured to allow this kind of swiping anymore, so in order for it to emit properly the 'Swipe between pages' preference in `System Preferences > Trackpad > More Gestures` must be set to 'Swipe with two or three fingers'.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "direction",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-swipe-macos"
      },
      {
        "name": "rotate-gesture",
        "description": "Emitted on trackpad rotation gesture. Continually emitted until rotation gesture is ended. The `rotation` value on each emission is the angle in degrees rotated since the last emission. The last emitted event upon a rotation gesture will always be of value `0`. Counter-clockwise rotation values are positive, while clockwise ones are negative.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "rotation",
            "description": "",
            "collection": false,
            "type": "Float",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-rotate-gesture-macos"
      },
      {
        "name": "sheet-begin",
        "description": "Emitted when the window opens a sheet.",
        "parameters": [],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-sheet-begin-macos"
      },
      {
        "name": "sheet-end",
        "description": "Emitted when the window has closed a sheet.",
        "parameters": [],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-sheet-end-macos"
      },
      {
        "name": "new-window-for-tab",
        "description": "Emitted when the native new tab button is clicked.",
        "parameters": [],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-new-window-for-tab-macos"
      },
      {
        "name": "system-context-menu",
        "description": "Emitted when the system context menu is triggered on the window, this is normally only triggered when the user right clicks on the non-client area of your window.  This is the window titlebar or any area you have declared as `-webkit-app-region: drag` in a frameless window.\n\nCalling `event.preventDefault()` will prevent the menu from being displayed.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "point",
            "description": "The screen coordinates the context menu was triggered at",
            "collection": false,
            "type": "Point",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#event-system-context-menu-windows"
      }
    ],
    "instanceName": "baseWindow"
  },
  {
    "name": "BrowserView",
    "description": "> **Note** The `BrowserView` class is deprecated, and replaced by the new `WebContentsView` class.\n\nA `BrowserView` can be used to embed additional web content into a `BrowserWindow`. It is like a child window, except that it is positioned relative to its owning window. It is meant to be an alternative to the `webview` tag.\n\n### Class: BrowserView\n\n> Create and control views.\n\n> **Note** The `BrowserView` class is deprecated, and replaced by the new `WebContentsView` class.\n\nProcess: Main\n\nThis module cannot be used until the `ready` event of the `app` module is emitted.\n\n### Example\n\n```\n// In the main process.\nconst { app, BrowserView, BrowserWindow } = require('electron')\n\napp.whenReady().then(() => {\n  const win = new BrowserWindow({ width: 800, height: 600 })\n\n  const view = new BrowserView()\n  win.setBrowserView(view)\n  view.setBounds({ x: 0, y: 0, width: 300, height: 300 })\n  view.webContents.loadURL('https://electronjs.org')\n})\n```",
    "slug": "browser-view",
    "websiteUrl": "https://electronjs.org/docs/api/browser-view",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/browser-view.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "constructorMethod": {
      "signature": "([options])",
      "parameters": [
        {
          "name": "options",
          "description": "",
          "required": false,
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "webPreferences",
              "description": "Settings of web page's features.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "WebPreferences"
            }
          ]
        }
      ]
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "setAutoResize",
        "signature": "(options)",
        "description": "",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "width",
                "description": "If `true`, the view's width will grow and shrink together with the window. `false` by default.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "height",
                "description": "If `true`, the view's height will grow and shrink together with the window. `false` by default.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "horizontal",
                "description": "If `true`, the view's x position and width will grow and shrink proportionally with the window. `false` by default.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "vertical",
                "description": "If `true`, the view's y position and height will grow and shrink proportionally with the window. `false` by default.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "stability_experimental",
          "stability_deprecated"
        ],
        "urlFragment": "#viewsetautoresizeoptions-experimental-deprecated"
      },
      {
        "name": "setBounds",
        "signature": "(bounds)",
        "description": "Resizes and moves the view to the supplied bounds relative to the window.",
        "parameters": [
          {
            "name": "bounds",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Rectangle"
          }
        ],
        "returns": null,
        "additionalTags": [
          "stability_experimental",
          "stability_deprecated"
        ],
        "urlFragment": "#viewsetboundsbounds-experimental-deprecated"
      },
      {
        "name": "getBounds",
        "signature": "()",
        "description": "The `bounds` of this BrowserView instance as `Object`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Rectangle"
        },
        "additionalTags": [
          "stability_experimental",
          "stability_deprecated"
        ],
        "urlFragment": "#viewgetbounds-experimental-deprecated"
      },
      {
        "name": "setBackgroundColor",
        "signature": "(color)",
        "description": "Examples of valid `color` values:\n\n* Hex\n  * `#fff` (RGB)\n  * `#ffff` (ARGB)\n  * `#ffffff` (RRGGBB)\n  * `#ffffffff` (AARRGGBB)\n* RGB\n  * `rgb\\(([\\d]+),\\s*([\\d]+),\\s*([\\d]+)\\)`\n    * e.g. `rgb(255, 255, 255)`\n* RGBA\n  * `rgba\\(([\\d]+),\\s*([\\d]+),\\s*([\\d]+),\\s*([\\d.]+)\\)`\n    * e.g. `rgba(255, 255, 255, 1.0)`\n* HSL\n  * `hsl\\((-?[\\d.]+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)`\n    * e.g. `hsl(200, 20%, 50%)`\n* HSLA\n  * `hsla\\((-?[\\d.]+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)`\n    * e.g. `hsla(200, 20%, 50%, 0.5)`\n* Color name\n  * Options are listed in SkParseColor.cpp\n  * Similar to CSS Color Module Level 3 keywords, but case-sensitive.\n    * e.g. `blueviolet` or `red`\n\n**Note:** Hex format with alpha takes `AARRGGBB` or `ARGB`, _not_ `RRGGBBAA` or `RGB`.",
        "parameters": [
          {
            "name": "color",
            "description": "Color in Hex, RGB, ARGB, HSL, HSLA or named CSS color format. The alpha channel is optional for the hex type.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "stability_experimental",
          "stability_deprecated"
        ],
        "urlFragment": "#viewsetbackgroundcolorcolor-experimental-deprecated"
      }
    ],
    "instanceProperties": [
      {
        "name": "webContents",
        "description": "A `WebContents` object owned by this view.",
        "required": true,
        "additionalTags": [
          "stability_experimental",
          "stability_deprecated"
        ],
        "urlFragment": "#viewwebcontents-experimental-deprecated",
        "collection": false,
        "type": "WebContents"
      }
    ],
    "instanceEvents": [],
    "instanceName": "view"
  },
  {
    "name": "BrowserWindow",
    "extends": "BaseWindow",
    "description": "> Create and control browser windows.\n\nProcess: Main\n\nThis module cannot be used until the `ready` event of the `app` module is emitted.\n\n### Window customization\n\nThe `BrowserWindow` class exposes various ways to modify the look and behavior of your app's windows. For more details, see the Window Customization tutorial.\n\n### Showing the window gracefully\n\nWhen loading a page in the window directly, users may see the page load incrementally, which is not a good experience for a native app. To make the window display without a visual flash, there are two solutions for different situations.\n\n### Using the `ready-to-show` event\n\nWhile loading the page, the `ready-to-show` event will be emitted when the renderer process has rendered the page for the first time if the window has not been shown yet. Showing the window after this event will have no visual flash:\n\n```\nconst { BrowserWindow } = require('electron')\nconst win = new BrowserWindow({ show: false })\nwin.once('ready-to-show', () => {\n  win.show()\n})\n```\n\nThis event is usually emitted after the `did-finish-load` event, but for pages with many remote resources, it may be emitted before the `did-finish-load` event.\n\nPlease note that using this event implies that the renderer will be considered \"visible\" and paint even though `show` is false.  This event will never fire if you use `paintWhenInitiallyHidden: false`\n\n### Setting the `backgroundColor` property\n\nFor a complex app, the `ready-to-show` event could be emitted too late, making the app feel slow. In this case, it is recommended to show the window immediately, and use a `backgroundColor` close to your app's background:\n\n```\nconst { BrowserWindow } = require('electron')\n\nconst win = new BrowserWindow({ backgroundColor: '#2e2c29' })\nwin.loadURL('https://github.com')\n```\n\nNote that even for apps that use `ready-to-show` event, it is still recommended to set `backgroundColor` to make the app feel more native.\n\nSome examples of valid `backgroundColor` values include:\n\n```\nconst win = new BrowserWindow()\nwin.setBackgroundColor('hsl(230, 100%, 50%)')\nwin.setBackgroundColor('rgb(255, 145, 145)')\nwin.setBackgroundColor('#ff00a3')\nwin.setBackgroundColor('blueviolet')\n```\n\nFor more information about these color types see valid options in win.setBackgroundColor.\n\n### Parent and child windows\n\nBy using `parent` option, you can create child windows:\n\n```\nconst { BrowserWindow } = require('electron')\n\nconst top = new BrowserWindow()\nconst child = new BrowserWindow({ parent: top })\nchild.show()\ntop.show()\n```\n\nThe `child` window will always show on top of the `top` window.\n\n### Modal windows\n\nA modal window is a child window that disables parent window. To create a modal window, you have to set both the `parent` and `modal` options:\n\n```\nconst { BrowserWindow } = require('electron')\n\nconst top = new BrowserWindow()\nconst child = new BrowserWindow({ parent: top, modal: true, show: false })\nchild.loadURL('https://github.com')\nchild.once('ready-to-show', () => {\n  child.show()\n})\n```\n\n### Page visibility\n\nThe Page Visibility API works as follows:\n\n* On all platforms, the visibility state tracks whether the window is hidden/minimized or not.\n* Additionally, on macOS, the visibility state also tracks the window occlusion state. If the window is occluded (i.e. fully covered) by another window, the visibility state will be `hidden`. On other platforms, the visibility state will be `hidden` only when the window is minimized or explicitly hidden with `win.hide()`.\n* If a `BrowserWindow` is created with `show: false`, the initial visibility state will be `visible` despite the window actually being hidden.\n* If `backgroundThrottling` is disabled, the visibility state will remain `visible` even if the window is minimized, occluded, or hidden.\n\nIt is recommended that you pause expensive operations when the visibility state is `hidden` in order to minimize power consumption.\n\n### Platform notices\n\n* On macOS modal windows will be displayed as sheets attached to the parent window.\n* On macOS the child windows will keep the relative position to parent window when parent window moves, while on Windows and Linux child windows will not move.\n* On Linux the type of modal windows will be changed to `dialog`.\n* On Linux many desktop environments do not support hiding a modal window.\n\n### Class: BrowserWindow extends `BaseWindow`\n\n> Create and control browser windows.\n\nProcess: Main\n\n`BrowserWindow` is an EventEmitter.\n\nIt creates a new `BrowserWindow` with native properties as set by the `options`.",
    "slug": "browser-window",
    "websiteUrl": "https://electronjs.org/docs/api/browser-window",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/browser-window.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "constructorMethod": {
      "signature": "([options])",
      "parameters": [
        {
          "name": "options",
          "description": "",
          "required": false,
          "collection": false,
          "type": "BrowserWindowConstructorOptions"
        }
      ]
    },
    "staticMethods": [
      {
        "name": "getAllWindows",
        "signature": "()",
        "description": "An array of all opened browser windows.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "BrowserWindow"
        },
        "additionalTags": [],
        "urlFragment": "#browserwindowgetallwindows"
      },
      {
        "name": "getFocusedWindow",
        "signature": "()",
        "description": "The window that is focused in this application, otherwise returns `null`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "BrowserWindow"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#browserwindowgetfocusedwindow"
      },
      {
        "name": "fromWebContents",
        "signature": "(webContents)",
        "description": "The window that owns the given `webContents` or `null` if the contents are not owned by a window.",
        "parameters": [
          {
            "name": "webContents",
            "description": "",
            "required": true,
            "collection": false,
            "type": "WebContents"
          }
        ],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "BrowserWindow"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#browserwindowfromwebcontentswebcontents"
      },
      {
        "name": "fromBrowserView",
        "signature": "(browserView)",
        "description": "> **Note** The `BrowserView` class is deprecated, and replaced by the new `WebContentsView` class.\n\nThe window that owns the given `browserView`. If the given view is not attached to any window, returns `null`.",
        "parameters": [
          {
            "name": "browserView",
            "description": "",
            "required": true,
            "collection": false,
            "type": "BrowserView"
          }
        ],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "BrowserWindow"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [
          "stability_deprecated"
        ],
        "urlFragment": "#browserwindowfrombrowserviewbrowserview-deprecated"
      },
      {
        "name": "fromId",
        "signature": "(id)",
        "description": "The window with the given `id`.",
        "parameters": [
          {
            "name": "id",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "BrowserWindow"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#browserwindowfromidid"
      }
    ],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "destroy",
        "signature": "()",
        "description": "Force closing the window, the `unload` and `beforeunload` event won't be emitted for the web page, and `close` event will also not be emitted for this window, but it guarantees the `closed` event will be emitted.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#windestroy"
      },
      {
        "name": "close",
        "signature": "()",
        "description": "Try to close the window. This has the same effect as a user manually clicking the close button of the window. The web page may cancel the close though. See the close event.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winclose"
      },
      {
        "name": "focus",
        "signature": "()",
        "description": "Focuses on the window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winfocus"
      },
      {
        "name": "blur",
        "signature": "()",
        "description": "Removes focus from the window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winblur"
      },
      {
        "name": "isFocused",
        "signature": "()",
        "description": "Whether the window is focused.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisfocused"
      },
      {
        "name": "isDestroyed",
        "signature": "()",
        "description": "Whether the window is destroyed.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisdestroyed"
      },
      {
        "name": "show",
        "signature": "()",
        "description": "Shows and gives focus to the window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winshow"
      },
      {
        "name": "showInactive",
        "signature": "()",
        "description": "Shows the window but doesn't focus on it.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winshowinactive"
      },
      {
        "name": "hide",
        "signature": "()",
        "description": "Hides the window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winhide"
      },
      {
        "name": "isVisible",
        "signature": "()",
        "description": "Whether the window is visible to the user in the foreground of the app.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisvisible"
      },
      {
        "name": "isModal",
        "signature": "()",
        "description": "Whether current window is a modal window.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winismodal"
      },
      {
        "name": "maximize",
        "signature": "()",
        "description": "Maximizes the window. This will also show (but not focus) the window if it isn't being displayed already.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winmaximize"
      },
      {
        "name": "unmaximize",
        "signature": "()",
        "description": "Unmaximizes the window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winunmaximize"
      },
      {
        "name": "isMaximized",
        "signature": "()",
        "description": "Whether the window is maximized.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winismaximized"
      },
      {
        "name": "minimize",
        "signature": "()",
        "description": "Minimizes the window. On some platforms the minimized window will be shown in the Dock.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winminimize"
      },
      {
        "name": "restore",
        "signature": "()",
        "description": "Restores the window from minimized state to its previous state.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winrestore"
      },
      {
        "name": "isMinimized",
        "signature": "()",
        "description": "Whether the window is minimized.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisminimized"
      },
      {
        "name": "setFullScreen",
        "signature": "(flag)",
        "description": "Sets whether the window should be in fullscreen mode.\n\n**Note:** On macOS, fullscreen transitions take place asynchronously. If further actions depend on the fullscreen state, use the 'enter-full-screen' or 'leave-full-screen' events.",
        "parameters": [
          {
            "name": "flag",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetfullscreenflag"
      },
      {
        "name": "isFullScreen",
        "signature": "()",
        "description": "Whether the window is in fullscreen mode.\n\n**Note:** On macOS, fullscreen transitions take place asynchronously. When querying for a BrowserWindow's fullscreen status, you should ensure that either the 'enter-full-screen' or 'leave-full-screen' events have been emitted.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisfullscreen"
      },
      {
        "name": "setSimpleFullScreen",
        "signature": "(flag)",
        "description": "Enters or leaves simple fullscreen mode.\n\nSimple fullscreen mode emulates the native fullscreen behavior found in versions of macOS prior to Lion (10.7).",
        "parameters": [
          {
            "name": "flag",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsetsimplefullscreenflag-macos"
      },
      {
        "name": "isSimpleFullScreen",
        "signature": "()",
        "description": "Whether the window is in simple (pre-Lion) fullscreen mode.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winissimplefullscreen-macos"
      },
      {
        "name": "isNormal",
        "signature": "()",
        "description": "Whether the window is in normal state (not maximized, not minimized, not in fullscreen mode).",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisnormal"
      },
      {
        "name": "setAspectRatio",
        "signature": "(aspectRatio[, extraSize])",
        "description": "This will make a window maintain an aspect ratio. The extra size allows a developer to have space, specified in pixels, not included within the aspect ratio calculations. This API already takes into account the difference between a window's size and its content size.\n\nConsider a normal window with an HD video player and associated controls. Perhaps there are 15 pixels of controls on the left edge, 25 pixels of controls on the right edge and 50 pixels of controls below the player. In order to maintain a 16:9 aspect ratio (standard aspect ratio for HD @1920x1080) within the player itself we would call this function with arguments of 16/9 and { width: 40, height: 50 }. The second argument doesn't care where the extra width and height are within the content view--only that they exist. Sum any extra width and height areas you have within the overall content view.\n\nThe aspect ratio is not respected when window is resized programmatically with APIs like `win.setSize`.\n\nTo reset an aspect ratio, pass 0 as the `aspectRatio` value: `win.setAspectRatio(0)`.",
        "parameters": [
          {
            "name": "aspectRatio",
            "description": "The aspect ratio to maintain for some portion of the content view.",
            "required": true,
            "collection": false,
            "type": "Float"
          },
          {
            "name": "extraSize",
            "description": "The extra size not to be included while maintaining the aspect ratio.",
            "required": false,
            "collection": false,
            "type": "Size"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetaspectratioaspectratio-extrasize"
      },
      {
        "name": "setBackgroundColor",
        "signature": "(backgroundColor)",
        "description": "Examples of valid `backgroundColor` values:\n\n* Hex\n  * #fff (shorthand RGB)\n  * #ffff (shorthand ARGB)\n  * #ffffff (RGB)\n  * #ffffffff (ARGB)\n* RGB\n  * `rgb\\(([\\d]+),\\s*([\\d]+),\\s*([\\d]+)\\)`\n    * e.g. rgb(255, 255, 255)\n* RGBA\n  * `rgba\\(([\\d]+),\\s*([\\d]+),\\s*([\\d]+),\\s*([\\d.]+)\\)`\n    * e.g. rgba(255, 255, 255, 1.0)\n* HSL\n  * `hsl\\((-?[\\d.]+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)`\n    * e.g. hsl(200, 20%, 50%)\n* HSLA\n  * `hsla\\((-?[\\d.]+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)`\n    * e.g. hsla(200, 20%, 50%, 0.5)\n* Color name\n  * Options are listed in SkParseColor.cpp\n  * Similar to CSS Color Module Level 3 keywords, but case-sensitive.\n    * e.g. `blueviolet` or `red`\n\nSets the background color of the window. See Setting `backgroundColor`.",
        "parameters": [
          {
            "name": "backgroundColor",
            "description": "Color in Hex, RGB, RGBA, HSL, HSLA or named CSS color format. The alpha channel is optional for the hex type.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetbackgroundcolorbackgroundcolor"
      },
      {
        "name": "previewFile",
        "signature": "(path[, displayName])",
        "description": "Uses Quick Look to preview a file at a given path.",
        "parameters": [
          {
            "name": "path",
            "description": "The absolute path to the file to preview with QuickLook. This is important as Quick Look uses the file name and file extension on the path to determine the content type of the file to open.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "displayName",
            "description": "The name of the file to display on the Quick Look modal view. This is purely visual and does not affect the content type of the file. Defaults to `path`.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winpreviewfilepath-displayname-macos"
      },
      {
        "name": "closeFilePreview",
        "signature": "()",
        "description": "Closes the currently open Quick Look panel.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winclosefilepreview-macos"
      },
      {
        "name": "setBounds",
        "signature": "(bounds[, animate])",
        "description": "Resizes and moves the window to the supplied bounds. Any properties that are not supplied will default to their current values.\n\n**Note:** On macOS, the y-coordinate value cannot be smaller than the Tray height. The tray height has changed over time and depends on the operating system, but is between 20-40px. Passing a value lower than the tray height will result in a window that is flush to the tray.",
        "parameters": [
          {
            "name": "bounds",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Partial",
            "innerTypes": [
              {
                "collection": false,
                "type": "Rectangle"
              }
            ]
          },
          {
            "name": "animate",
            "description": "",
            "required": false,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetboundsbounds-animate"
      },
      {
        "name": "getBounds",
        "signature": "()",
        "description": "The `bounds` of the window as `Object`.\n\n**Note:** On macOS, the y-coordinate value returned will be at minimum the Tray height. For example, calling `win.setBounds({ x: 25, y: 20, width: 800, height: 600 })` with a tray height of 38 means that `win.getBounds()` will return `{ x: 25, y: 38, width: 800, height: 600 }`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Rectangle"
        },
        "additionalTags": [],
        "urlFragment": "#wingetbounds"
      },
      {
        "name": "getBackgroundColor",
        "signature": "()",
        "description": "Gets the background color of the window in Hex (`#RRGGBB`) format.\n\nSee Setting `backgroundColor`.\n\n**Note:** The alpha value is _not_ returned alongside the red, green, and blue values.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#wingetbackgroundcolor"
      },
      {
        "name": "setContentBounds",
        "signature": "(bounds[, animate])",
        "description": "Resizes and moves the window's client area (e.g. the web page) to the supplied bounds.",
        "parameters": [
          {
            "name": "bounds",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Rectangle"
          },
          {
            "name": "animate",
            "description": "",
            "required": false,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetcontentboundsbounds-animate"
      },
      {
        "name": "getContentBounds",
        "signature": "()",
        "description": "The `bounds` of the window's client area as `Object`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Rectangle"
        },
        "additionalTags": [],
        "urlFragment": "#wingetcontentbounds"
      },
      {
        "name": "getNormalBounds",
        "signature": "()",
        "description": "Contains the window bounds of the normal state\n\n**Note:** whatever the current state of the window : maximized, minimized or in fullscreen, this function always returns the position and size of the window in normal state. In normal state, getBounds and getNormalBounds returns the same `Rectangle`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Rectangle"
        },
        "additionalTags": [],
        "urlFragment": "#wingetnormalbounds"
      },
      {
        "name": "setEnabled",
        "signature": "(enable)",
        "description": "Disable or enable the window.",
        "parameters": [
          {
            "name": "enable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetenabledenable"
      },
      {
        "name": "isEnabled",
        "signature": "()",
        "description": "whether the window is enabled.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisenabled"
      },
      {
        "name": "setSize",
        "signature": "(width, height[, animate])",
        "description": "Resizes the window to `width` and `height`. If `width` or `height` are below any set minimum size constraints the window will snap to its minimum size.",
        "parameters": [
          {
            "name": "width",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "height",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "animate",
            "description": "",
            "required": false,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetsizewidth-height-animate"
      },
      {
        "name": "getSize",
        "signature": "()",
        "description": "Contains the window's width and height.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#wingetsize"
      },
      {
        "name": "setContentSize",
        "signature": "(width, height[, animate])",
        "description": "Resizes the window's client area (e.g. the web page) to `width` and `height`.",
        "parameters": [
          {
            "name": "width",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "height",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "animate",
            "description": "",
            "required": false,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetcontentsizewidth-height-animate"
      },
      {
        "name": "getContentSize",
        "signature": "()",
        "description": "Contains the window's client area's width and height.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#wingetcontentsize"
      },
      {
        "name": "setMinimumSize",
        "signature": "(width, height)",
        "description": "Sets the minimum size of window to `width` and `height`.",
        "parameters": [
          {
            "name": "width",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "height",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetminimumsizewidth-height"
      },
      {
        "name": "getMinimumSize",
        "signature": "()",
        "description": "Contains the window's minimum width and height.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#wingetminimumsize"
      },
      {
        "name": "setMaximumSize",
        "signature": "(width, height)",
        "description": "Sets the maximum size of window to `width` and `height`.",
        "parameters": [
          {
            "name": "width",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "height",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetmaximumsizewidth-height"
      },
      {
        "name": "getMaximumSize",
        "signature": "()",
        "description": "Contains the window's maximum width and height.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#wingetmaximumsize"
      },
      {
        "name": "setResizable",
        "signature": "(resizable)",
        "description": "Sets whether the window can be manually resized by the user.",
        "parameters": [
          {
            "name": "resizable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetresizableresizable"
      },
      {
        "name": "isResizable",
        "signature": "()",
        "description": "Whether the window can be manually resized by the user.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisresizable"
      },
      {
        "name": "setMovable",
        "signature": "(movable)",
        "description": "Sets whether the window can be moved by user. On Linux does nothing.",
        "parameters": [
          {
            "name": "movable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winsetmovablemovable-macos-windows"
      },
      {
        "name": "isMovable",
        "signature": "()",
        "description": "Whether the window can be moved by user.\n\nOn Linux always returns `true`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winismovable-macos-windows"
      },
      {
        "name": "setMinimizable",
        "signature": "(minimizable)",
        "description": "Sets whether the window can be manually minimized by user. On Linux does nothing.",
        "parameters": [
          {
            "name": "minimizable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winsetminimizableminimizable-macos-windows"
      },
      {
        "name": "isMinimizable",
        "signature": "()",
        "description": "Whether the window can be manually minimized by the user.\n\nOn Linux always returns `true`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winisminimizable-macos-windows"
      },
      {
        "name": "setMaximizable",
        "signature": "(maximizable)",
        "description": "Sets whether the window can be manually maximized by user. On Linux does nothing.",
        "parameters": [
          {
            "name": "maximizable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winsetmaximizablemaximizable-macos-windows"
      },
      {
        "name": "isMaximizable",
        "signature": "()",
        "description": "Whether the window can be manually maximized by user.\n\nOn Linux always returns `true`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winismaximizable-macos-windows"
      },
      {
        "name": "setFullScreenable",
        "signature": "(fullscreenable)",
        "description": "Sets whether the maximize/zoom window button toggles fullscreen mode or maximizes the window.",
        "parameters": [
          {
            "name": "fullscreenable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetfullscreenablefullscreenable"
      },
      {
        "name": "isFullScreenable",
        "signature": "()",
        "description": "Whether the maximize/zoom window button toggles fullscreen mode or maximizes the window.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisfullscreenable"
      },
      {
        "name": "setClosable",
        "signature": "(closable)",
        "description": "Sets whether the window can be manually closed by user. On Linux does nothing.",
        "parameters": [
          {
            "name": "closable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winsetclosableclosable-macos-windows"
      },
      {
        "name": "isClosable",
        "signature": "()",
        "description": "Whether the window can be manually closed by user.\n\nOn Linux always returns `true`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winisclosable-macos-windows"
      },
      {
        "name": "setHiddenInMissionControl",
        "signature": "(hidden)",
        "description": "Sets whether the window will be hidden when the user toggles into mission control.",
        "parameters": [
          {
            "name": "hidden",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsethiddeninmissioncontrolhidden-macos"
      },
      {
        "name": "isHiddenInMissionControl",
        "signature": "()",
        "description": "Whether the window will be hidden when the user toggles into mission control.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winishiddeninmissioncontrol-macos"
      },
      {
        "name": "setAlwaysOnTop",
        "signature": "(flag[, level][, relativeLevel])",
        "description": "Sets whether the window should show always on top of other windows. After setting this, the window is still a normal window, not a toolbox window which can not be focused on.",
        "parameters": [
          {
            "name": "flag",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          },
          {
            "name": "level",
            "description": "Values include `normal`, `floating`, `torn-off-menu`, `modal-panel`, `main-menu`, `status`, `pop-up-menu`, `screen-saver`, and ~~`dock`~~ (Deprecated). The default is `floating` when `flag` is true. The `level` is reset to `normal` when the flag is false. Note that from `floating` to `status` included, the window is placed below the Dock on macOS and below the taskbar on Windows. From `pop-up-menu` to a higher it is shown above the Dock on macOS and above the taskbar on Windows. See the macOS docs for more details.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "normal",
                "description": ""
              },
              {
                "value": "floating",
                "description": ""
              },
              {
                "value": "torn-off-menu",
                "description": ""
              },
              {
                "value": "modal-panel",
                "description": ""
              },
              {
                "value": "main-menu",
                "description": ""
              },
              {
                "value": "status",
                "description": ""
              },
              {
                "value": "pop-up-menu",
                "description": ""
              },
              {
                "value": "screen-saver",
                "description": ""
              },
              {
                "value": "dock",
                "description": ""
              }
            ]
          },
          {
            "name": "relativeLevel",
            "description": "The number of layers higher to set this window relative to the given `level`. The default is `0`. Note that Apple discourages setting levels higher than 1 above `screen-saver`.",
            "required": false,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetalwaysontopflag-level-relativelevel"
      },
      {
        "name": "isAlwaysOnTop",
        "signature": "()",
        "description": "Whether the window is always on top of other windows.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winisalwaysontop"
      },
      {
        "name": "moveAbove",
        "signature": "(mediaSourceId)",
        "description": "Moves window above the source window in the sense of z-order. If the `mediaSourceId` is not of type window or if the window does not exist then this method throws an error.",
        "parameters": [
          {
            "name": "mediaSourceId",
            "description": "Window id in the format of DesktopCapturerSource's id. For example \"window:1869:0\".",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winmoveabovemediasourceid"
      },
      {
        "name": "moveTop",
        "signature": "()",
        "description": "Moves window to top(z-order) regardless of focus",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winmovetop"
      },
      {
        "name": "center",
        "signature": "()",
        "description": "Moves window to the center of the screen.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#wincenter"
      },
      {
        "name": "setPosition",
        "signature": "(x, y[, animate])",
        "description": "Moves window to `x` and `y`.",
        "parameters": [
          {
            "name": "x",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "y",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "animate",
            "description": "",
            "required": false,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetpositionx-y-animate"
      },
      {
        "name": "getPosition",
        "signature": "()",
        "description": "Contains the window's current position.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#wingetposition"
      },
      {
        "name": "setTitle",
        "signature": "(title)",
        "description": "Changes the title of native window to `title`.",
        "parameters": [
          {
            "name": "title",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsettitletitle"
      },
      {
        "name": "getTitle",
        "signature": "()",
        "description": "The title of the native window.\n\n**Note:** The title of the web page can be different from the title of the native window.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#wingettitle"
      },
      {
        "name": "setSheetOffset",
        "signature": "(offsetY[, offsetX])",
        "description": "Changes the attachment point for sheets on macOS. By default, sheets are attached just below the window frame, but you may want to display them beneath a HTML-rendered toolbar. For example:",
        "parameters": [
          {
            "name": "offsetY",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Float"
          },
          {
            "name": "offsetX",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Float"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsetsheetoffsetoffsety-offsetx-macos"
      },
      {
        "name": "flashFrame",
        "signature": "(flag)",
        "description": "Starts or stops flashing the window to attract user's attention.",
        "parameters": [
          {
            "name": "flag",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winflashframeflag"
      },
      {
        "name": "setSkipTaskbar",
        "signature": "(skip)",
        "description": "Makes the window not show in the taskbar.",
        "parameters": [
          {
            "name": "skip",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winsetskiptaskbarskip-macos-windows"
      },
      {
        "name": "setKiosk",
        "signature": "(flag)",
        "description": "Enters or leaves kiosk mode.",
        "parameters": [
          {
            "name": "flag",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetkioskflag"
      },
      {
        "name": "isKiosk",
        "signature": "()",
        "description": "Whether the window is in kiosk mode.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winiskiosk"
      },
      {
        "name": "isTabletMode",
        "signature": "()",
        "description": "Whether the window is in Windows 10 tablet mode.\n\nSince Windows 10 users can use their PC as tablet, under this mode apps can choose to optimize their UI for tablets, such as enlarging the titlebar and hiding titlebar buttons.\n\nThis API returns whether the window is in tablet mode, and the `resize` event can be be used to listen to changes to tablet mode.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winistabletmode-windows"
      },
      {
        "name": "getMediaSourceId",
        "signature": "()",
        "description": "Window id in the format of DesktopCapturerSource's id. For example \"window:1324:0\".\n\nMore precisely the format is `window:id:other_id` where `id` is `HWND` on Windows, `CGWindowID` (`uint64_t`) on macOS and `Window` (`unsigned long`) on Linux. `other_id` is used to identify web contents (tabs) so within the same top level window.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#wingetmediasourceid"
      },
      {
        "name": "getNativeWindowHandle",
        "signature": "()",
        "description": "The platform-specific handle of the window.\n\nThe native type of the handle is `HWND` on Windows, `NSView*` on macOS, and `Window` (`unsigned long`) on Linux.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Buffer"
        },
        "additionalTags": [],
        "urlFragment": "#wingetnativewindowhandle"
      },
      {
        "name": "hookWindowMessage",
        "signature": "(message, callback)",
        "description": "Hooks a windows message. The `callback` is called when the message is received in the WndProc.",
        "parameters": [
          {
            "name": "message",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "callback",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "wParam",
                "description": "The `wParam` provided to the WndProc",
                "required": true,
                "collection": false,
                "type": "Buffer"
              },
              {
                "name": "lParam",
                "description": "The `lParam` provided to the WndProc",
                "required": true,
                "collection": false,
                "type": "Buffer"
              }
            ],
            "returns": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winhookwindowmessagemessage-callback-windows"
      },
      {
        "name": "isWindowMessageHooked",
        "signature": "(message)",
        "description": "`true` or `false` depending on whether the message is hooked.",
        "parameters": [
          {
            "name": "message",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winiswindowmessagehookedmessage-windows"
      },
      {
        "name": "unhookWindowMessage",
        "signature": "(message)",
        "description": "Unhook the window message.",
        "parameters": [
          {
            "name": "message",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winunhookwindowmessagemessage-windows"
      },
      {
        "name": "unhookAllWindowMessages",
        "signature": "()",
        "description": "Unhooks all of the window messages.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winunhookallwindowmessages-windows"
      },
      {
        "name": "setRepresentedFilename",
        "signature": "(filename)",
        "description": "Sets the pathname of the file the window represents, and the icon of the file will show in window's title bar.",
        "parameters": [
          {
            "name": "filename",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsetrepresentedfilenamefilename-macos"
      },
      {
        "name": "getRepresentedFilename",
        "signature": "()",
        "description": "The pathname of the file the window represents.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#wingetrepresentedfilename-macos"
      },
      {
        "name": "setDocumentEdited",
        "signature": "(edited)",
        "description": "Specifies whether the window’s document has been edited, and the icon in title bar will become gray when set to `true`.",
        "parameters": [
          {
            "name": "edited",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsetdocumenteditededited-macos"
      },
      {
        "name": "isDocumentEdited",
        "signature": "()",
        "description": "Whether the window's document has been edited.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winisdocumentedited-macos"
      },
      {
        "name": "focusOnWebView",
        "signature": "()",
        "description": "",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winfocusonwebview"
      },
      {
        "name": "blurWebView",
        "signature": "()",
        "description": "",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winblurwebview"
      },
      {
        "name": "capturePage",
        "signature": "([rect, opts])",
        "description": "Resolves with a NativeImage\n\nCaptures a snapshot of the page within `rect`. Omitting `rect` will capture the whole visible page. If the page is not visible, `rect` may be empty. The page is considered visible when its browser window is hidden and the capturer count is non-zero. If you would like the page to stay hidden, you should ensure that `stayHidden` is set to true.",
        "parameters": [
          {
            "name": "rect",
            "description": "The bounds to capture",
            "required": false,
            "collection": false,
            "type": "Rectangle"
          },
          {
            "name": "opts",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "stayHidden",
                "description": " Keep the page hidden instead of visible. Default is `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "stayAwake",
                "description": " Keep the system awake instead of allowing it to sleep. Default is `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "NativeImage"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#wincapturepagerect-opts"
      },
      {
        "name": "loadURL",
        "signature": "(url[, options])",
        "description": "the promise will resolve when the page has finished loading (see `did-finish-load`), and rejects if the page fails to load (see `did-fail-load`).\n\nSame as `webContents.loadURL(url[, options])`.\n\nThe `url` can be a remote address (e.g. `http://`) or a path to a local HTML file using the `file://` protocol.\n\nTo ensure that file URLs are properly formatted, it is recommended to use Node's `url.format` method:\n\nYou can load a URL using a `POST` request with URL-encoded data by doing the following:",
        "parameters": [
          {
            "name": "url",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "httpReferrer",
                "description": "An HTTP Referrer URL.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "Referrer"
                  }
                ]
              },
              {
                "name": "userAgent",
                "description": "A user agent originating the request.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "extraHeaders",
                "description": "Extra headers separated by \"\\n\"",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "postData",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": [
                  {
                    "collection": false,
                    "type": "UploadRawData"
                  },
                  {
                    "collection": false,
                    "type": "UploadFile"
                  }
                ]
              },
              {
                "name": "baseURLForDataURL",
                "description": "Base URL (with trailing path separator) for files to be loaded by the data URL. This is needed only if the specified `url` is a data URL and needs to load other files.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#winloadurlurl-options"
      },
      {
        "name": "loadFile",
        "signature": "(filePath[, options])",
        "description": "the promise will resolve when the page has finished loading (see `did-finish-load`), and rejects if the page fails to load (see `did-fail-load`).\n\nSame as `webContents.loadFile`, `filePath` should be a path to an HTML file relative to the root of your application.  See the `webContents` docs for more information.",
        "parameters": [
          {
            "name": "filePath",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "query",
                "description": "Passed to `url.format()`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Record",
                "innerTypes": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  }
                ]
              },
              {
                "name": "search",
                "description": "Passed to `url.format()`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "hash",
                "description": "Passed to `url.format()`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#winloadfilefilepath-options"
      },
      {
        "name": "reload",
        "signature": "()",
        "description": "Same as `webContents.reload`.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winreload"
      },
      {
        "name": "setMenu",
        "signature": "(menu)",
        "description": "Sets the `menu` as the window's menu bar.",
        "parameters": [
          {
            "name": "menu",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Menu"
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_linux",
          "os_windows"
        ],
        "urlFragment": "#winsetmenumenu-linux-windows"
      },
      {
        "name": "removeMenu",
        "signature": "()",
        "description": "Remove the window's menu bar.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_linux",
          "os_windows"
        ],
        "urlFragment": "#winremovemenu-linux-windows"
      },
      {
        "name": "setProgressBar",
        "signature": "(progress[, options])",
        "description": "Sets progress value in progress bar. Valid range is [0, 1.0].\n\nRemove progress bar when progress < 0; Change to indeterminate mode when progress > 1.\n\nOn Linux platform, only supports Unity desktop environment, you need to specify the `*.desktop` file name to `desktopName` field in `package.json`. By default, it will assume `{app.name}.desktop`.\n\nOn Windows, a mode can be passed. Accepted values are `none`, `normal`, `indeterminate`, `error`, and `paused`. If you call `setProgressBar` without a mode set (but with a value within the valid range), `normal` will be assumed.",
        "parameters": [
          {
            "name": "progress",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Double"
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "mode",
                "description": "Mode for the progress bar. Can be `none`, `normal`, `indeterminate`, `error` or `paused`.",
                "required": true,
                "additionalTags": [
                  "os_windows"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "none",
                    "description": ""
                  },
                  {
                    "value": "normal",
                    "description": ""
                  },
                  {
                    "value": "indeterminate",
                    "description": ""
                  },
                  {
                    "value": "error",
                    "description": ""
                  },
                  {
                    "value": "paused",
                    "description": ""
                  }
                ]
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetprogressbarprogress-options"
      },
      {
        "name": "setOverlayIcon",
        "signature": "(overlay, description)",
        "description": "Sets a 16 x 16 pixel overlay onto the current taskbar icon, usually used to convey some sort of application status or to passively notify the user.",
        "parameters": [
          {
            "name": "overlay",
            "description": "the icon to display on the bottom right corner of the taskbar icon. If this parameter is `null`, the overlay is cleared",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "NativeImage"
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          },
          {
            "name": "description",
            "description": "a description that will be provided to Accessibility screen readers",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winsetoverlayiconoverlay-description-windows"
      },
      {
        "name": "invalidateShadow",
        "signature": "()",
        "description": "Invalidates the window shadow so that it is recomputed based on the current window shape.\n\n`BrowserWindows` that are transparent can sometimes leave behind visual artifacts on macOS. This method can be used to clear these artifacts when, for example, performing an animation.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#wininvalidateshadow-macos"
      },
      {
        "name": "setHasShadow",
        "signature": "(hasShadow)",
        "description": "Sets whether the window should have a shadow.",
        "parameters": [
          {
            "name": "hasShadow",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsethasshadowhasshadow"
      },
      {
        "name": "hasShadow",
        "signature": "()",
        "description": "Whether the window has a shadow.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#winhasshadow"
      },
      {
        "name": "setOpacity",
        "signature": "(opacity)",
        "description": "Sets the opacity of the window. On Linux, does nothing. Out of bound number values are clamped to the [0, 1] range.",
        "parameters": [
          {
            "name": "opacity",
            "description": "between 0.0 (fully transparent) and 1.0 (fully opaque)",
            "required": true,
            "collection": false,
            "type": "number"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows",
          "os_macos"
        ],
        "urlFragment": "#winsetopacityopacity-windows-macos"
      },
      {
        "name": "getOpacity",
        "signature": "()",
        "description": "between 0.0 (fully transparent) and 1.0 (fully opaque). On Linux, always returns 1.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "number"
        },
        "additionalTags": [],
        "urlFragment": "#wingetopacity"
      },
      {
        "name": "setShape",
        "signature": "(rects)",
        "description": "Setting a window shape determines the area within the window where the system permits drawing and user interaction. Outside of the given region, no pixels will be drawn and no mouse events will be registered. Mouse events outside of the region will not be received by that window, but will fall through to whatever is behind the window.",
        "parameters": [
          {
            "name": "rects",
            "description": "Sets a shape on the window. Passing an empty list reverts the window to being rectangular.",
            "required": true,
            "collection": true,
            "type": "Rectangle"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows",
          "os_linux",
          "stability_experimental"
        ],
        "urlFragment": "#winsetshaperects-windows-linux-experimental"
      },
      {
        "name": "setThumbarButtons",
        "signature": "(buttons)",
        "description": "Whether the buttons were added successfully\n\nAdd a thumbnail toolbar with a specified set of buttons to the thumbnail image of a window in a taskbar button layout. Returns a `boolean` object indicates whether the thumbnail has been added successfully.\n\nThe number of buttons in thumbnail toolbar should be no greater than 7 due to the limited room. Once you setup the thumbnail toolbar, the toolbar cannot be removed due to the platform's limitation. But you can call the API with an empty array to clean the buttons.\n\nThe `buttons` is an array of `Button` objects:\n\n* `Button` Object\n  * `icon` NativeImage - The icon showing in thumbnail toolbar.\n  * `click` Function\n  * `tooltip` string (optional) - The text of the button's tooltip.\n  * `flags` string[] (optional) - Control specific states and behaviors of the button. By default, it is `['enabled']`.\n\nThe `flags` is an array that can include following `string`s:\n\n* `enabled` - The button is active and available to the user.\n* `disabled` - The button is disabled. It is present, but has a visual state indicating it will not respond to user action.\n* `dismissonclick` - When the button is clicked, the thumbnail window closes immediately.\n* `nobackground` - Do not draw a button border, use only the image.\n* `hidden` - The button is not shown to the user.\n* `noninteractive` - The button is enabled but not interactive; no pressed button state is drawn. This value is intended for instances where the button is used in a notification.",
        "parameters": [
          {
            "name": "buttons",
            "description": "",
            "required": true,
            "collection": true,
            "type": "ThumbarButton"
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winsetthumbarbuttonsbuttons-windows"
      },
      {
        "name": "setThumbnailClip",
        "signature": "(region)",
        "description": "Sets the region of the window to show as the thumbnail image displayed when hovering over the window in the taskbar. You can reset the thumbnail to be the entire window by specifying an empty region: `{ x: 0, y: 0, width: 0, height: 0 }`.",
        "parameters": [
          {
            "name": "region",
            "description": "Region of the window",
            "required": true,
            "collection": false,
            "type": "Rectangle"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winsetthumbnailclipregion-windows"
      },
      {
        "name": "setThumbnailToolTip",
        "signature": "(toolTip)",
        "description": "Sets the toolTip that is displayed when hovering over the window thumbnail in the taskbar.",
        "parameters": [
          {
            "name": "toolTip",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winsetthumbnailtooltiptooltip-windows"
      },
      {
        "name": "setAppDetails",
        "signature": "(options)",
        "description": "Sets the properties for the window's taskbar button.\n\n**Note:** `relaunchCommand` and `relaunchDisplayName` must always be set together. If one of those properties is not set, then neither will be used.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "appId",
                "description": "Window's App User Model ID. It has to be set, otherwise the other options will have no effect.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "appIconPath",
                "description": "Window's Relaunch Icon.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "appIconIndex",
                "description": "Index of the icon in `appIconPath`. Ignored when `appIconPath` is not set. Default is `0`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "relaunchCommand",
                "description": "Window's Relaunch Command.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "relaunchDisplayName",
                "description": "Window's Relaunch Display Name.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winsetappdetailsoptions-windows"
      },
      {
        "name": "showDefinitionForSelection",
        "signature": "()",
        "description": "Same as `webContents.showDefinitionForSelection()`.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winshowdefinitionforselection-macos"
      },
      {
        "name": "setIcon",
        "signature": "(icon)",
        "description": "Changes window icon.",
        "parameters": [
          {
            "name": "icon",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "NativeImage"
              },
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#winseticonicon-windows-linux"
      },
      {
        "name": "setWindowButtonVisibility",
        "signature": "(visible)",
        "description": "Sets whether the window traffic light buttons should be visible.",
        "parameters": [
          {
            "name": "visible",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsetwindowbuttonvisibilityvisible-macos"
      },
      {
        "name": "setAutoHideMenuBar",
        "signature": "(hide)",
        "description": "Sets whether the window menu bar should hide itself automatically. Once set the menu bar will only show when users press the single `Alt` key.\n\nIf the menu bar is already visible, calling `setAutoHideMenuBar(true)` won't hide it immediately.",
        "parameters": [
          {
            "name": "hide",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#winsetautohidemenubarhide-windows-linux"
      },
      {
        "name": "isMenuBarAutoHide",
        "signature": "()",
        "description": "Whether menu bar automatically hides itself.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#winismenubarautohide-windows-linux"
      },
      {
        "name": "setMenuBarVisibility",
        "signature": "(visible)",
        "description": "Sets whether the menu bar should be visible. If the menu bar is auto-hide, users can still bring up the menu bar by pressing the single `Alt` key.",
        "parameters": [
          {
            "name": "visible",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#winsetmenubarvisibilityvisible-windows-linux"
      },
      {
        "name": "isMenuBarVisible",
        "signature": "()",
        "description": "Whether the menu bar is visible.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#winismenubarvisible-windows-linux"
      },
      {
        "name": "setVisibleOnAllWorkspaces",
        "signature": "(visible[, options])",
        "description": "Sets whether the window should be visible on all workspaces.\n\n**Note:** This API does nothing on Windows.",
        "parameters": [
          {
            "name": "visible",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "visibleOnFullScreen",
                "description": "Sets whether the window should be visible above fullscreen windows.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "skipTransformProcessType",
                "description": "Calling setVisibleOnAllWorkspaces will by default transform the process type between UIElementApplication and ForegroundApplication to ensure the correct behavior. However, this will hide the window and dock for a short time every time it is called. If your window is already of type UIElementApplication, you can bypass this transformation by passing true to skipTransformProcessType.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_linux"
        ],
        "urlFragment": "#winsetvisibleonallworkspacesvisible-options-macos-linux"
      },
      {
        "name": "isVisibleOnAllWorkspaces",
        "signature": "()",
        "description": "Whether the window is visible on all workspaces.\n\n**Note:** This API always returns false on Windows.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos",
          "os_linux"
        ],
        "urlFragment": "#winisvisibleonallworkspaces-macos-linux"
      },
      {
        "name": "setIgnoreMouseEvents",
        "signature": "(ignore[, options])",
        "description": "Makes the window ignore all mouse events.\n\nAll mouse events happened in this window will be passed to the window below this window, but if this window has focus, it will still receive keyboard events.",
        "parameters": [
          {
            "name": "ignore",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "forward",
                "description": "If true, forwards mouse move messages to Chromium, enabling mouse related events such as `mouseleave`. Only used when `ignore` is true. If `ignore` is false, forwarding is always disabled regardless of this value.",
                "required": false,
                "additionalTags": [
                  "os_macos",
                  "os_windows"
                ],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetignoremouseeventsignore-options"
      },
      {
        "name": "setContentProtection",
        "signature": "(enable)",
        "description": "Prevents the window contents from being captured by other apps.\n\nOn macOS it sets the NSWindow's sharingType to NSWindowSharingNone. On Windows it calls SetWindowDisplayAffinity with `WDA_EXCLUDEFROMCAPTURE`. For Windows 10 version 2004 and up the window will be removed from capture entirely, older Windows versions behave as if `WDA_MONITOR` is applied capturing a black window.",
        "parameters": [
          {
            "name": "enable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winsetcontentprotectionenable-macos-windows"
      },
      {
        "name": "setFocusable",
        "signature": "(focusable)",
        "description": "Changes whether the window can be focused.\n\nOn macOS it does not remove the focus from the window.",
        "parameters": [
          {
            "name": "focusable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winsetfocusablefocusable-macos-windows"
      },
      {
        "name": "isFocusable",
        "signature": "()",
        "description": "Whether the window can be focused.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winisfocusable-macos-windows"
      },
      {
        "name": "setParentWindow",
        "signature": "(parent)",
        "description": "Sets `parent` as current window's parent window, passing `null` will turn current window into a top-level window.",
        "parameters": [
          {
            "name": "parent",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "BrowserWindow"
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#winsetparentwindowparent"
      },
      {
        "name": "getParentWindow",
        "signature": "()",
        "description": "The parent window or `null` if there is no parent.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "BrowserWindow"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#wingetparentwindow"
      },
      {
        "name": "getChildWindows",
        "signature": "()",
        "description": "All child windows.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "BrowserWindow"
        },
        "additionalTags": [],
        "urlFragment": "#wingetchildwindows"
      },
      {
        "name": "setAutoHideCursor",
        "signature": "(autoHide)",
        "description": "Controls whether to hide cursor when typing.",
        "parameters": [
          {
            "name": "autoHide",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsetautohidecursorautohide-macos"
      },
      {
        "name": "selectPreviousTab",
        "signature": "()",
        "description": "Selects the previous tab when native tabs are enabled and there are other tabs in the window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winselectprevioustab-macos"
      },
      {
        "name": "selectNextTab",
        "signature": "()",
        "description": "Selects the next tab when native tabs are enabled and there are other tabs in the window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winselectnexttab-macos"
      },
      {
        "name": "showAllTabs",
        "signature": "()",
        "description": "Shows or hides the tab overview when native tabs are enabled.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winshowalltabs-macos"
      },
      {
        "name": "mergeAllWindows",
        "signature": "()",
        "description": "Merges all windows into one window with multiple tabs when native tabs are enabled and there is more than one open window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winmergeallwindows-macos"
      },
      {
        "name": "moveTabToNewWindow",
        "signature": "()",
        "description": "Moves the current tab into a new window if native tabs are enabled and there is more than one tab in the current window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winmovetabtonewwindow-macos"
      },
      {
        "name": "toggleTabBar",
        "signature": "()",
        "description": "Toggles the visibility of the tab bar if native tabs are enabled and there is only one tab in the current window.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#wintoggletabbar-macos"
      },
      {
        "name": "addTabbedWindow",
        "signature": "(browserWindow)",
        "description": "Adds a window as a tab on this window, after the tab for the window instance.",
        "parameters": [
          {
            "name": "browserWindow",
            "description": "",
            "required": true,
            "collection": false,
            "type": "BrowserWindow"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winaddtabbedwindowbrowserwindow-macos"
      },
      {
        "name": "setVibrancy",
        "signature": "(type)",
        "description": "Adds a vibrancy effect to the browser window. Passing `null` or an empty string will remove the vibrancy effect on the window.",
        "parameters": [
          {
            "name": "type",
            "description": "Can be `titlebar`, `selection`, `menu`, `popover`, `sidebar`, `header`, `sheet`, `window`, `hud`, `fullscreen-ui`, `tooltip`, `content`, `under-window`, or `under-page`. See the macOS documentation for more details.",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "titlebar",
                    "description": ""
                  },
                  {
                    "value": "selection",
                    "description": ""
                  },
                  {
                    "value": "menu",
                    "description": ""
                  },
                  {
                    "value": "popover",
                    "description": ""
                  },
                  {
                    "value": "sidebar",
                    "description": ""
                  },
                  {
                    "value": "header",
                    "description": ""
                  },
                  {
                    "value": "sheet",
                    "description": ""
                  },
                  {
                    "value": "window",
                    "description": ""
                  },
                  {
                    "value": "hud",
                    "description": ""
                  },
                  {
                    "value": "fullscreen-ui",
                    "description": ""
                  },
                  {
                    "value": "tooltip",
                    "description": ""
                  },
                  {
                    "value": "content",
                    "description": ""
                  },
                  {
                    "value": "under-window",
                    "description": ""
                  },
                  {
                    "value": "under-page",
                    "description": ""
                  }
                ]
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsetvibrancytype-macos"
      },
      {
        "name": "setBackgroundMaterial",
        "signature": "(material)",
        "description": "This method sets the browser window's system-drawn background material, including behind the non-client area.\n\nSee the Windows documentation for more details.\n\n**Note:** This method is only supported on Windows 11 22H2 and up.",
        "parameters": [
          {
            "name": "material",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "auto",
                "description": "Let the Desktop Window Manager (DWM) automatically decide the system-drawn backdrop material for this window. This is the default."
              },
              {
                "value": "none",
                "description": "Don't draw any system backdrop."
              },
              {
                "value": "mica",
                "description": "Draw the backdrop material effect corresponding to a long-lived window."
              },
              {
                "value": "acrylic",
                "description": "Draw the backdrop material effect corresponding to a transient window."
              },
              {
                "value": "tabbed",
                "description": "Draw the backdrop material effect corresponding to a window with a tabbed title bar."
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#winsetbackgroundmaterialmaterial-windows"
      },
      {
        "name": "setWindowButtonPosition",
        "signature": "(position)",
        "description": "Set a custom position for the traffic light buttons in frameless window. Passing `null` will reset the position to default.",
        "parameters": [
          {
            "name": "position",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Point"
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsetwindowbuttonpositionposition-macos"
      },
      {
        "name": "getWindowButtonPosition",
        "signature": "()",
        "description": "The custom position for the traffic light buttons in frameless window, `null` will be returned when there is no custom position.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "Point"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#wingetwindowbuttonposition-macos"
      },
      {
        "name": "setTouchBar",
        "signature": "(touchBar)",
        "description": "Sets the touchBar layout for the current window. Specifying `null` or `undefined` clears the touch bar. This method only has an effect if the machine has a touch bar.\n\n**Note:** The TouchBar API is currently experimental and may change or be removed in future Electron releases.",
        "parameters": [
          {
            "name": "touchBar",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "TouchBar"
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winsettouchbartouchbar-macos"
      },
      {
        "name": "setBrowserView",
        "signature": "(browserView)",
        "description": "> **Note** The `BrowserView` class is deprecated, and replaced by the new `WebContentsView` class.",
        "parameters": [
          {
            "name": "browserView",
            "description": "Attach `browserView` to `win`. If there are other `BrowserView`s attached, they will be removed from this window.",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "BrowserView"
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "stability_experimental",
          "stability_deprecated"
        ],
        "urlFragment": "#winsetbrowserviewbrowserview-experimental-deprecated"
      },
      {
        "name": "getBrowserView",
        "signature": "()",
        "description": "The `BrowserView` attached to `win`. Returns `null` if one is not attached. Throws an error if multiple `BrowserView`s are attached.\n\n> **Note** The `BrowserView` class is deprecated, and replaced by the new `WebContentsView` class.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "BrowserView"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [
          "stability_experimental",
          "stability_deprecated"
        ],
        "urlFragment": "#wingetbrowserview-experimental-deprecated"
      },
      {
        "name": "addBrowserView",
        "signature": "(browserView)",
        "description": "Replacement API for setBrowserView supporting work with multi browser views.\n\n> **Note** The `BrowserView` class is deprecated, and replaced by the new `WebContentsView` class.",
        "parameters": [
          {
            "name": "browserView",
            "description": "",
            "required": true,
            "collection": false,
            "type": "BrowserView"
          }
        ],
        "returns": null,
        "additionalTags": [
          "stability_experimental",
          "stability_deprecated"
        ],
        "urlFragment": "#winaddbrowserviewbrowserview-experimental-deprecated"
      },
      {
        "name": "removeBrowserView",
        "signature": "(browserView)",
        "description": "> **Note** The `BrowserView` class is deprecated, and replaced by the new `WebContentsView` class.",
        "parameters": [
          {
            "name": "browserView",
            "description": "",
            "required": true,
            "collection": false,
            "type": "BrowserView"
          }
        ],
        "returns": null,
        "additionalTags": [
          "stability_experimental",
          "stability_deprecated"
        ],
        "urlFragment": "#winremovebrowserviewbrowserview-experimental-deprecated"
      },
      {
        "name": "setTopBrowserView",
        "signature": "(browserView)",
        "description": "Raises `browserView` above other `BrowserView`s attached to `win`. Throws an error if `browserView` is not attached to `win`.\n\n> **Note** The `BrowserView` class is deprecated, and replaced by the new `WebContentsView` class.",
        "parameters": [
          {
            "name": "browserView",
            "description": "",
            "required": true,
            "collection": false,
            "type": "BrowserView"
          }
        ],
        "returns": null,
        "additionalTags": [
          "stability_experimental",
          "stability_deprecated"
        ],
        "urlFragment": "#winsettopbrowserviewbrowserview-experimental-deprecated"
      },
      {
        "name": "getBrowserViews",
        "signature": "()",
        "description": "a sorted by z-index array of all BrowserViews that have been attached with `addBrowserView` or `setBrowserView`. The top-most BrowserView is the last element of the array.\n\n> **Note** The `BrowserView` class is deprecated, and replaced by the new `WebContentsView` class.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "BrowserView"
        },
        "additionalTags": [
          "stability_experimental",
          "stability_deprecated"
        ],
        "urlFragment": "#wingetbrowserviews-experimental-deprecated"
      },
      {
        "name": "setTitleBarOverlay",
        "signature": "(options)",
        "description": "On a window with Window Controls Overlay already enabled, this method updates the style of the title bar overlay.\n\nOn Linux, the `symbolColor` is automatically calculated to have minimum accessible contrast to the `color` if not explicitly set.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "color",
                "description": "The CSS color of the Window Controls Overlay when enabled.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "symbolColor",
                "description": "The CSS color of the symbols on the Window Controls Overlay when enabled.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "height",
                "description": "The height of the title bar and Window Controls Overlay in pixels.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#winsettitlebaroverlayoptions-windows-linux"
      }
    ],
    "instanceProperties": [
      {
        "name": "webContents",
        "description": "A `WebContents` object this window owns. All web page related events and operations will be done via it.\n\nSee the `webContents` documentation for its methods and events.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#winwebcontents-readonly",
        "collection": false,
        "type": "WebContents"
      },
      {
        "name": "id",
        "description": "A `Integer` property representing the unique ID of the window. Each ID is unique among all `BrowserWindow` instances of the entire Electron application.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#winid-readonly",
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "tabbingIdentifier",
        "description": "A `string` (optional) property that is equal to the `tabbingIdentifier` passed to the `BrowserWindow` constructor or `undefined` if none was set.",
        "required": false,
        "additionalTags": [
          "os_macos",
          "availability_readonly"
        ],
        "urlFragment": "#wintabbingidentifier-macos-readonly",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "autoHideMenuBar",
        "description": "A `boolean` property that determines whether the window menu bar should hide itself automatically. Once set, the menu bar will only show when users press the single `Alt` key.\n\nIf the menu bar is already visible, setting this property to `true` won't hide it immediately.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#winautohidemenubar",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "simpleFullScreen",
        "description": "A `boolean` property that determines whether the window is in simple (pre-Lion) fullscreen mode.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#winsimplefullscreen",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "fullScreen",
        "description": "A `boolean` property that determines whether the window is in fullscreen mode.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#winfullscreen",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "focusable",
        "description": "A `boolean` property that determines whether the window is focusable.",
        "required": true,
        "additionalTags": [
          "os_windows",
          "os_macos"
        ],
        "urlFragment": "#winfocusable-windows-macos",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "visibleOnAllWorkspaces",
        "description": "A `boolean` property that determines whether the window is visible on all workspaces.\n\n**Note:** Always returns false on Windows.",
        "required": true,
        "additionalTags": [
          "os_macos",
          "os_linux"
        ],
        "urlFragment": "#winvisibleonallworkspaces-macos-linux",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "shadow",
        "description": "A `boolean` property that determines whether the window has a shadow.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#winshadow",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "menuBarVisible",
        "description": "A `boolean` property that determines whether the menu bar should be visible.\n\n**Note:** If the menu bar is auto-hide, users can still bring up the menu bar by pressing the single `Alt` key.",
        "required": true,
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#winmenubarvisible-windows-linux",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "kiosk",
        "description": "A `boolean` property that determines whether the window is in kiosk mode.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#winkiosk",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "documentEdited",
        "description": "A `boolean` property that specifies whether the window’s document has been edited.\n\nThe icon in title bar will become gray when set to `true`.",
        "required": true,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#windocumentedited-macos",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "representedFilename",
        "description": "A `string` property that determines the pathname of the file the window represents, and the icon of the file will show in window's title bar.",
        "required": true,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winrepresentedfilename-macos",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "title",
        "description": "A `string` property that determines the title of the native window.\n\n**Note:** The title of the web page can be different from the title of the native window.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#wintitle",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "minimizable",
        "description": "A `boolean` property that determines whether the window can be manually minimized by user.\n\nOn Linux the setter is a no-op, although the getter returns `true`.",
        "required": true,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winminimizable-macos-windows",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "maximizable",
        "description": "A `boolean` property that determines whether the window can be manually maximized by user.\n\nOn Linux the setter is a no-op, although the getter returns `true`.",
        "required": true,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winmaximizable-macos-windows",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "fullScreenable",
        "description": "A `boolean` property that determines whether the maximize/zoom window button toggles fullscreen mode or maximizes the window.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#winfullscreenable",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "resizable",
        "description": "A `boolean` property that determines whether the window can be manually resized by user.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#winresizable",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "closable",
        "description": "A `boolean` property that determines whether the window can be manually closed by user.\n\nOn Linux the setter is a no-op, although the getter returns `true`.",
        "required": true,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winclosable-macos-windows",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "movable",
        "description": "A `boolean` property that determines Whether the window can be moved by user.\n\nOn Linux the setter is a no-op, although the getter returns `true`.",
        "required": true,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#winmovable-macos-windows",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "excludedFromShownWindowsMenu",
        "description": "A `boolean` property that determines whether the window is excluded from the application’s Windows menu. `false` by default.",
        "required": true,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#winexcludedfromshownwindowsmenu-macos",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "accessibleTitle",
        "description": "A `string` property that defines an alternative title provided only to accessibility tools such as screen readers. This string is not directly visible to users.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#winaccessibletitle",
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ],
    "instanceEvents": [
      {
        "name": "page-title-updated",
        "description": "Emitted when the document changed its title, calling `event.preventDefault()` will prevent the native window's title from changing. `explicitSet` is false when title is synthesized from file URL.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "title",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "explicitSet",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-page-title-updated"
      },
      {
        "name": "close",
        "description": "Emitted when the window is going to be closed. It's emitted before the `beforeunload` and `unload` event of the DOM. Calling `event.preventDefault()` will cancel the close.\n\nUsually you would want to use the `beforeunload` handler to decide whether the window should be closed, which will also be called when the window is reloaded. In Electron, returning any value other than `undefined` would cancel the close. For example:\n\n_**Note**: There is a subtle difference between the behaviors of `window.onbeforeunload = handler` and `window.addEventListener('beforeunload', handler)`. It is recommended to always set the `event.returnValue` explicitly, instead of only returning a value, as the former works more consistently within Electron._",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-close"
      },
      {
        "name": "closed",
        "description": "Emitted when the window is closed. After you have received this event you should remove the reference to the window and avoid using it any more.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-closed"
      },
      {
        "name": "session-end",
        "description": "Emitted when window session is going to end due to force shutdown or machine restart or session log off.",
        "parameters": [],
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#event-session-end-windows"
      },
      {
        "name": "unresponsive",
        "description": "Emitted when the web page becomes unresponsive.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-unresponsive"
      },
      {
        "name": "responsive",
        "description": "Emitted when the unresponsive web page becomes responsive again.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-responsive"
      },
      {
        "name": "blur",
        "description": "Emitted when the window loses focus.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-blur"
      },
      {
        "name": "focus",
        "description": "Emitted when the window gains focus.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-focus"
      },
      {
        "name": "show",
        "description": "Emitted when the window is shown.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-show"
      },
      {
        "name": "hide",
        "description": "Emitted when the window is hidden.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-hide"
      },
      {
        "name": "ready-to-show",
        "description": "Emitted when the web page has been rendered (while not being shown) and window can be displayed without a visual flash.\n\nPlease note that using this event implies that the renderer will be considered \"visible\" and paint even though `show` is false.  This event will never fire if you use `paintWhenInitiallyHidden: false`",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-ready-to-show"
      },
      {
        "name": "maximize",
        "description": "Emitted when window is maximized.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-maximize"
      },
      {
        "name": "unmaximize",
        "description": "Emitted when the window exits from a maximized state.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-unmaximize"
      },
      {
        "name": "minimize",
        "description": "Emitted when the window is minimized.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-minimize"
      },
      {
        "name": "restore",
        "description": "Emitted when the window is restored from a minimized state.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-restore"
      },
      {
        "name": "will-resize",
        "description": "Emitted before the window is resized. Calling `event.preventDefault()` will prevent the window from being resized.\n\nNote that this is only emitted when the window is being resized manually. Resizing the window with `setBounds`/`setSize` will not emit this event.\n\nThe possible values and behaviors of the `edge` option are platform dependent. Possible values are:\n\n* On Windows, possible values are `bottom`, `top`, `left`, `right`, `top-left`, `top-right`, `bottom-left`, `bottom-right`.\n* On macOS, possible values are `bottom` and `right`.\n  * The value `bottom` is used to denote vertical resizing.\n  * The value `right` is used to denote horizontal resizing.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "newBounds",
            "description": "Size the window is being resized to.",
            "collection": false,
            "type": "Rectangle",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "edge",
                "description": "The edge of the window being dragged for resizing. Can be `bottom`, `left`, `right`, `top-left`, `top-right`, `bottom-left` or `bottom-right`.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "bottom",
                    "description": ""
                  },
                  {
                    "value": "left",
                    "description": ""
                  },
                  {
                    "value": "right",
                    "description": ""
                  },
                  {
                    "value": "top-left",
                    "description": ""
                  },
                  {
                    "value": "top-right",
                    "description": ""
                  },
                  {
                    "value": "bottom-left",
                    "description": ""
                  },
                  {
                    "value": "bottom-right",
                    "description": ""
                  }
                ]
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-will-resize-macos-windows"
      },
      {
        "name": "resize",
        "description": "Emitted after the window has been resized.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-resize"
      },
      {
        "name": "resized",
        "description": "Emitted once when the window has finished being resized.\n\nThis is usually emitted when the window has been resized manually. On macOS, resizing the window with `setBounds`/`setSize` and setting the `animate` parameter to `true` will also emit this event once resizing has finished.",
        "parameters": [],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-resized-macos-windows"
      },
      {
        "name": "will-move",
        "description": "Emitted before the window is moved. On Windows, calling `event.preventDefault()` will prevent the window from being moved.\n\nNote that this is only emitted when the window is being moved manually. Moving the window with `setPosition`/`setBounds`/`center` will not emit this event.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "newBounds",
            "description": "Location the window is being moved to.",
            "collection": false,
            "type": "Rectangle",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-will-move-macos-windows"
      },
      {
        "name": "move",
        "description": "Emitted when the window is being moved to a new position.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-move"
      },
      {
        "name": "moved",
        "description": "Emitted once when the window is moved to a new position.\n\n**Note**: On macOS this event is an alias of `move`.",
        "parameters": [],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-moved-macos-windows"
      },
      {
        "name": "enter-full-screen",
        "description": "Emitted when the window enters a full-screen state.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-enter-full-screen"
      },
      {
        "name": "leave-full-screen",
        "description": "Emitted when the window leaves a full-screen state.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-leave-full-screen"
      },
      {
        "name": "enter-html-full-screen",
        "description": "Emitted when the window enters a full-screen state triggered by HTML API.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-enter-html-full-screen"
      },
      {
        "name": "leave-html-full-screen",
        "description": "Emitted when the window leaves a full-screen state triggered by HTML API.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-leave-html-full-screen"
      },
      {
        "name": "always-on-top-changed",
        "description": "Emitted when the window is set or unset to show always on top of other windows.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isAlwaysOnTop",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-always-on-top-changed"
      },
      {
        "name": "app-command",
        "description": "Emitted when an App Command is invoked. These are typically related to keyboard media keys or browser commands, as well as the \"Back\" button built into some mice on Windows.\n\nCommands are lowercased, underscores are replaced with hyphens, and the `APPCOMMAND_` prefix is stripped off. e.g. `APPCOMMAND_BROWSER_BACKWARD` is emitted as `browser-backward`.\n\nThe following app commands are explicitly supported on Linux:\n\n* `browser-backward`\n* `browser-forward`",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "command",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#event-app-command-windows-linux"
      },
      {
        "name": "swipe",
        "description": "Emitted on 3-finger swipe. Possible directions are `up`, `right`, `down`, `left`.\n\nThe method underlying this event is built to handle older macOS-style trackpad swiping, where the content on the screen doesn't move with the swipe. Most macOS trackpads are not configured to allow this kind of swiping anymore, so in order for it to emit properly the 'Swipe between pages' preference in `System Preferences > Trackpad > More Gestures` must be set to 'Swipe with two or three fingers'.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "direction",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-swipe-macos"
      },
      {
        "name": "rotate-gesture",
        "description": "Emitted on trackpad rotation gesture. Continually emitted until rotation gesture is ended. The `rotation` value on each emission is the angle in degrees rotated since the last emission. The last emitted event upon a rotation gesture will always be of value `0`. Counter-clockwise rotation values are positive, while clockwise ones are negative.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "rotation",
            "description": "",
            "collection": false,
            "type": "Float",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-rotate-gesture-macos"
      },
      {
        "name": "sheet-begin",
        "description": "Emitted when the window opens a sheet.",
        "parameters": [],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-sheet-begin-macos"
      },
      {
        "name": "sheet-end",
        "description": "Emitted when the window has closed a sheet.",
        "parameters": [],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-sheet-end-macos"
      },
      {
        "name": "new-window-for-tab",
        "description": "Emitted when the native new tab button is clicked.",
        "parameters": [],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-new-window-for-tab-macos"
      },
      {
        "name": "system-context-menu",
        "description": "Emitted when the system context menu is triggered on the window, this is normally only triggered when the user right clicks on the non-client area of your window.  This is the window titlebar or any area you have declared as `-webkit-app-region: drag` in a frameless window.\n\nCalling `event.preventDefault()` will prevent the menu from being displayed.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "point",
            "description": "The screen coordinates the context menu was triggered at",
            "collection": false,
            "type": "Point",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#event-system-context-menu-windows"
      }
    ],
    "instanceName": "browserWindow"
  },
  {
    "name": "ClientRequest",
    "description": "> Make HTTP/HTTPS requests.\n\nProcess: Main, Utility\n _This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._\n\n`ClientRequest` implements the Writable Stream interface and is therefore an EventEmitter.",
    "slug": "client-request",
    "websiteUrl": "https://electronjs.org/docs/api/client-request",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/client-request.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": true,
      "exported": false
    },
    "constructorMethod": {
      "signature": "(options)",
      "parameters": [
        {
          "name": "options",
          "description": "If `options` is a string, it is interpreted as the request URL. If it is an object, it is expected to fully specify an HTTP request via the following properties:",
          "required": true,
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "Object",
              "properties": [
                {
                  "name": "method",
                  "description": "The HTTP request method. Defaults to the GET method.",
                  "required": false,
                  "additionalTags": [],
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                },
                {
                  "name": "url",
                  "description": "The request URL. Must be provided in the absolute form with the protocol scheme specified as http or https.",
                  "required": false,
                  "additionalTags": [],
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                },
                {
                  "name": "headers",
                  "description": "Headers to be sent with the request.",
                  "required": false,
                  "additionalTags": [],
                  "collection": false,
                  "type": "Record",
                  "innerTypes": [
                    {
                      "collection": false,
                      "type": "String",
                      "possibleValues": null
                    },
                    {
                      "collection": false,
                      "type": [
                        {
                          "collection": false,
                          "type": "String",
                          "possibleValues": null
                        },
                        {
                          "collection": true,
                          "type": "String",
                          "possibleValues": null
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "session",
                  "description": "The `Session` instance with which the request is associated.",
                  "required": false,
                  "additionalTags": [],
                  "collection": false,
                  "type": "Session"
                },
                {
                  "name": "partition",
                  "description": "The name of the `partition` with which the request is associated. Defaults to the empty string. The `session` option supersedes `partition`. Thus if a `session` is explicitly specified, `partition` is ignored.",
                  "required": false,
                  "additionalTags": [],
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                },
                {
                  "name": "credentials",
                  "description": "Can be `include`, `omit` or `same-origin`. Whether to send credentials with this request. If set to `include`, credentials from the session associated with the request will be used. If set to `omit`, credentials will not be sent with the request (and the `'login'` event will not be triggered in the event of a 401). If set to `same-origin`, `origin` must also be specified. This matches the behavior of the fetch option of the same name. If this option is not specified, authentication data from the session will be sent, and cookies will not be sent (unless `useSessionCookies` is set).",
                  "required": false,
                  "additionalTags": [],
                  "collection": false,
                  "type": "String",
                  "possibleValues": [
                    {
                      "value": "include",
                      "description": ""
                    },
                    {
                      "value": "omit",
                      "description": ""
                    },
                    {
                      "value": "same-origin",
                      "description": ""
                    }
                  ]
                },
                {
                  "name": "useSessionCookies",
                  "description": "Whether to send cookies with this request from the provided session. If `credentials` is specified, this option has no effect. Default is `false`.",
                  "required": false,
                  "additionalTags": [],
                  "collection": false,
                  "type": "boolean"
                },
                {
                  "name": "protocol",
                  "description": "Can be `http:` or `https:`. The protocol scheme in the form 'scheme:'. Defaults to 'http:'.",
                  "required": false,
                  "additionalTags": [],
                  "collection": false,
                  "type": "String",
                  "possibleValues": [
                    {
                      "value": "http:",
                      "description": ""
                    },
                    {
                      "value": "https:",
                      "description": ""
                    }
                  ]
                },
                {
                  "name": "host",
                  "description": "The server host provided as a concatenation of the hostname and the port number 'hostname:port'.",
                  "required": false,
                  "additionalTags": [],
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                },
                {
                  "name": "hostname",
                  "description": "The server host name.",
                  "required": false,
                  "additionalTags": [],
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                },
                {
                  "name": "port",
                  "description": "The server's listening port number.",
                  "required": false,
                  "additionalTags": [],
                  "collection": false,
                  "type": "Integer"
                },
                {
                  "name": "path",
                  "description": "The path part of the request URL.",
                  "required": false,
                  "additionalTags": [],
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                },
                {
                  "name": "redirect",
                  "description": "Can be `follow`, `error` or `manual`. The redirect mode for this request. When mode is `error`, any redirection will be aborted. When mode is `manual` the redirection will be cancelled unless `request.followRedirect` is invoked synchronously during the `redirect` event.  Defaults to `follow`.",
                  "required": false,
                  "additionalTags": [],
                  "collection": false,
                  "type": "String",
                  "possibleValues": [
                    {
                      "value": "follow",
                      "description": ""
                    },
                    {
                      "value": "error",
                      "description": ""
                    },
                    {
                      "value": "manual",
                      "description": ""
                    }
                  ]
                },
                {
                  "name": "origin",
                  "description": "The origin URL of the request.",
                  "required": false,
                  "additionalTags": [],
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                },
                {
                  "name": "referrerPolicy",
                  "description": "can be \"\", `no-referrer`, `no-referrer-when-downgrade`, `origin`, `origin-when-cross-origin`, `unsafe-url`, `same-origin`, `strict-origin`, or `strict-origin-when-cross-origin`. Defaults to `strict-origin-when-cross-origin`.",
                  "required": false,
                  "additionalTags": [],
                  "collection": false,
                  "type": "String",
                  "possibleValues": [
                    {
                      "value": "",
                      "description": ""
                    },
                    {
                      "value": "no-referrer",
                      "description": ""
                    },
                    {
                      "value": "no-referrer-when-downgrade",
                      "description": ""
                    },
                    {
                      "value": "origin",
                      "description": ""
                    },
                    {
                      "value": "origin-when-cross-origin",
                      "description": ""
                    },
                    {
                      "value": "unsafe-url",
                      "description": ""
                    },
                    {
                      "value": "same-origin",
                      "description": ""
                    },
                    {
                      "value": "strict-origin",
                      "description": ""
                    },
                    {
                      "value": "strict-origin-when-cross-origin",
                      "description": ""
                    }
                  ]
                },
                {
                  "name": "cache",
                  "description": "can be `default`, `no-store`, `reload`, `no-cache`, `force-cache` or `only-if-cached`.",
                  "required": false,
                  "additionalTags": [],
                  "collection": false,
                  "type": "String",
                  "possibleValues": [
                    {
                      "value": "default",
                      "description": ""
                    },
                    {
                      "value": "no-store",
                      "description": ""
                    },
                    {
                      "value": "reload",
                      "description": ""
                    },
                    {
                      "value": "no-cache",
                      "description": ""
                    },
                    {
                      "value": "force-cache",
                      "description": ""
                    },
                    {
                      "value": "only-if-cached",
                      "description": ""
                    }
                  ]
                }
              ]
            },
            {
              "collection": false,
              "type": "String",
              "possibleValues": null
            }
          ]
        }
      ]
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "setHeader",
        "signature": "(name, value)",
        "description": "Adds an extra HTTP header. The header name will be issued as-is without lowercasing. It can be called only before first write. Calling this method after the first write will throw an error. If the passed value is not a `string`, its `toString()` method will be called to obtain the final value.\n\nCertain headers are restricted from being set by apps. These headers are listed below. More information on restricted headers can be found in Chromium's header utils.\n\n* `Content-Length`\n* `Host`\n* `Trailer` or `Te`\n* `Upgrade`\n* `Cookie2`\n* `Keep-Alive`\n* `Transfer-Encoding`\n\nAdditionally, setting the `Connection` header to the value `upgrade` is also disallowed.",
        "parameters": [
          {
            "name": "name",
            "description": "An extra HTTP header name.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "value",
            "description": "An extra HTTP header value.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#requestsetheadername-value"
      },
      {
        "name": "getHeader",
        "signature": "(name)",
        "description": "The value of a previously set extra header name.",
        "parameters": [
          {
            "name": "name",
            "description": "Specify an extra header name.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#requestgetheadername"
      },
      {
        "name": "removeHeader",
        "signature": "(name)",
        "description": "Removes a previously set extra header name. This method can be called only before first write. Trying to call it after the first write will throw an error.",
        "parameters": [
          {
            "name": "name",
            "description": "Specify an extra header name.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#requestremoveheadername"
      },
      {
        "name": "write",
        "signature": "(chunk[, encoding][, callback])",
        "description": "`callback` is essentially a dummy function introduced in the purpose of keeping similarity with the Node.js API. It is called asynchronously in the next tick after `chunk` content have been delivered to the Chromium networking layer. Contrary to the Node.js implementation, it is not guaranteed that `chunk` content have been flushed on the wire before `callback` is called.\n\nAdds a chunk of data to the request body. The first write operation may cause the request headers to be issued on the wire. After the first write operation, it is not allowed to add or remove a custom header.",
        "parameters": [
          {
            "name": "chunk",
            "description": "A chunk of the request body's data. If it is a string, it is converted into a Buffer using the specified encoding.",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "collection": false,
                "type": "Buffer"
              }
            ]
          },
          {
            "name": "encoding",
            "description": "Used to convert string chunks into Buffer objects. Defaults to 'utf-8'.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "callback",
            "description": "Called after the write operation ends.",
            "required": false,
            "collection": false,
            "type": "Function",
            "parameters": [],
            "returns": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#requestwritechunk-encoding-callback"
      },
      {
        "name": "end",
        "signature": "([chunk][, encoding][, callback])",
        "description": "Sends the last chunk of the request data. Subsequent write or end operations will not be allowed. The `finish` event is emitted just after the end operation.",
        "parameters": [
          {
            "name": "chunk",
            "description": "",
            "required": false,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "collection": false,
                "type": "Buffer"
              }
            ]
          },
          {
            "name": "encoding",
            "description": "",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "callback",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Function",
            "parameters": [],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "this"
        },
        "additionalTags": [],
        "urlFragment": "#requestendchunk-encoding-callback"
      },
      {
        "name": "abort",
        "signature": "()",
        "description": "Cancels an ongoing HTTP transaction. If the request has already emitted the `close` event, the abort operation will have no effect. Otherwise an ongoing event will emit `abort` and `close` events. Additionally, if there is an ongoing response object,it will emit the `aborted` event.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#requestabort"
      },
      {
        "name": "followRedirect",
        "signature": "()",
        "description": "Continues any pending redirection. Can only be called during a `'redirect'` event.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#requestfollowredirect"
      },
      {
        "name": "getUploadProgress",
        "signature": "()",
        "description": "* `active` boolean - Whether the request is currently active. If this is false no other properties will be set\n* `started` boolean - Whether the upload has started. If this is false both `current` and `total` will be set to 0.\n* `current` Integer - The number of bytes that have been uploaded so far\n* `total` Integer - The number of bytes that will be uploaded this request\n\nYou can use this method in conjunction with `POST` requests to get the progress of a file upload or other data transfer.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "active",
              "description": "Whether the request is currently active. If this is false no other properties will be set",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "started",
              "description": "Whether the upload has started. If this is false both `current` and `total` will be set to 0.",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "current",
              "description": "The number of bytes that have been uploaded so far",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "total",
              "description": "The number of bytes that will be uploaded this request",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#requestgetuploadprogress"
      }
    ],
    "instanceProperties": [
      {
        "name": "chunkedEncoding",
        "description": "A `boolean` specifying whether the request will use HTTP chunked transfer encoding or not. Defaults to false. The property is readable and writable, however it can be set only before the first write operation as the HTTP headers are not yet put on the wire. Trying to set the `chunkedEncoding` property after the first write will throw an error.\n\nUsing chunked encoding is strongly recommended if you need to send a large request body as data will be streamed in small chunks instead of being internally buffered inside Electron process memory.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#requestchunkedencoding",
        "collection": false,
        "type": "boolean"
      }
    ],
    "instanceEvents": [
      {
        "name": "response",
        "description": "",
        "parameters": [
          {
            "name": "response",
            "description": "An object representing the HTTP response message.",
            "collection": false,
            "type": "IncomingMessage",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-response"
      },
      {
        "name": "login",
        "description": "Emitted when an authenticating proxy is asking for user credentials.\n\nThe `callback` function is expected to be called back with user credentials:\n\n* `username` string\n* `password` string\n\nProviding empty credentials will cancel the request and report an authentication error on the response object:",
        "parameters": [
          {
            "name": "authInfo",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "isProxy",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "scheme",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "host",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "port",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "realm",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "additionalTags": [],
            "required": true
          },
          {
            "name": "callback",
            "description": "",
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "username",
                "description": "",
                "required": false,
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "password",
                "description": "",
                "required": false,
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "returns": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-login"
      },
      {
        "name": "finish",
        "description": "Emitted just after the last chunk of the `request`'s data has been written into the `request` object.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-finish"
      },
      {
        "name": "abort",
        "description": "Emitted when the `request` is aborted. The `abort` event will not be fired if the `request` is already closed.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-abort"
      },
      {
        "name": "error",
        "description": "Emitted when the `net` module fails to issue a network request. Typically when the `request` object emits an `error` event, a `close` event will subsequently follow and no response object will be provided.",
        "parameters": [
          {
            "name": "error",
            "description": "an error object providing some information about the failure.",
            "collection": false,
            "type": "Error",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-error"
      },
      {
        "name": "close",
        "description": "Emitted as the last event in the HTTP request-response transaction. The `close` event indicates that no more events will be emitted on either the `request` or `response` objects.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-close"
      },
      {
        "name": "redirect",
        "description": "Emitted when the server returns a redirect response (e.g. 301 Moved Permanently). Calling `request.followRedirect` will continue with the redirection.  If this event is handled, `request.followRedirect` must be called **synchronously**, otherwise the request will be cancelled.",
        "parameters": [
          {
            "name": "statusCode",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "method",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "redirectUrl",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "responseHeaders",
            "description": "",
            "collection": false,
            "type": "Record",
            "innerTypes": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "collection": true,
                "type": "String",
                "possibleValues": null
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-redirect"
      }
    ],
    "instanceName": "clientRequest"
  },
  {
    "name": "clipboard",
    "description": "> Perform copy and paste operations on the system clipboard.\n\nProcess: Main, Renderer (non-sandboxed only)\n\nOn Linux, there is also a `selection` clipboard. To manipulate it you need to pass `selection` to each method:",
    "slug": "clipboard",
    "websiteUrl": "https://electronjs.org/docs/api/clipboard",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/clipboard.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": true,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "readText",
        "signature": "([type])",
        "description": "The content in the clipboard as plain text.",
        "parameters": [
          {
            "name": "type",
            "description": "Can be `selection` or `clipboard`; default is 'clipboard'. `selection` is only available on Linux.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "selection",
                "description": ""
              },
              {
                "value": "clipboard",
                "description": ""
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#clipboardreadtexttype"
      },
      {
        "name": "writeText",
        "signature": "(text[, type])",
        "description": "Writes the `text` into the clipboard as plain text.",
        "parameters": [
          {
            "name": "text",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "type",
            "description": "Can be `selection` or `clipboard`; default is 'clipboard'. `selection` is only available on Linux.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "selection",
                "description": ""
              },
              {
                "value": "clipboard",
                "description": ""
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#clipboardwritetexttext-type"
      },
      {
        "name": "readHTML",
        "signature": "([type])",
        "description": "The content in the clipboard as markup.",
        "parameters": [
          {
            "name": "type",
            "description": "Can be `selection` or `clipboard`; default is 'clipboard'. `selection` is only available on Linux.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "selection",
                "description": ""
              },
              {
                "value": "clipboard",
                "description": ""
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#clipboardreadhtmltype"
      },
      {
        "name": "writeHTML",
        "signature": "(markup[, type])",
        "description": "Writes `markup` to the clipboard.",
        "parameters": [
          {
            "name": "markup",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "type",
            "description": "Can be `selection` or `clipboard`; default is 'clipboard'. `selection` is only available on Linux.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "selection",
                "description": ""
              },
              {
                "value": "clipboard",
                "description": ""
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#clipboardwritehtmlmarkup-type"
      },
      {
        "name": "readImage",
        "signature": "([type])",
        "description": "The image content in the clipboard.",
        "parameters": [
          {
            "name": "type",
            "description": "Can be `selection` or `clipboard`; default is 'clipboard'. `selection` is only available on Linux.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "selection",
                "description": ""
              },
              {
                "value": "clipboard",
                "description": ""
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "NativeImage"
        },
        "additionalTags": [],
        "urlFragment": "#clipboardreadimagetype"
      },
      {
        "name": "writeImage",
        "signature": "(image[, type])",
        "description": "Writes `image` to the clipboard.",
        "parameters": [
          {
            "name": "image",
            "description": "",
            "required": true,
            "collection": false,
            "type": "NativeImage"
          },
          {
            "name": "type",
            "description": "Can be `selection` or `clipboard`; default is 'clipboard'. `selection` is only available on Linux.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "selection",
                "description": ""
              },
              {
                "value": "clipboard",
                "description": ""
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#clipboardwriteimageimage-type"
      },
      {
        "name": "readRTF",
        "signature": "([type])",
        "description": "The content in the clipboard as RTF.",
        "parameters": [
          {
            "name": "type",
            "description": "Can be `selection` or `clipboard`; default is 'clipboard'. `selection` is only available on Linux.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "selection",
                "description": ""
              },
              {
                "value": "clipboard",
                "description": ""
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#clipboardreadrtftype"
      },
      {
        "name": "writeRTF",
        "signature": "(text[, type])",
        "description": "Writes the `text` into the clipboard in RTF.",
        "parameters": [
          {
            "name": "text",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "type",
            "description": "Can be `selection` or `clipboard`; default is 'clipboard'. `selection` is only available on Linux.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "selection",
                "description": ""
              },
              {
                "value": "clipboard",
                "description": ""
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#clipboardwritertftext-type"
      },
      {
        "name": "readBookmark",
        "signature": "()",
        "description": "* `title` string\n* `url` string\n\nReturns an Object containing `title` and `url` keys representing the bookmark in the clipboard. The `title` and `url` values will be empty strings when the bookmark is unavailable.  The `title` value will always be empty on Windows.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "title",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "url",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            }
          ]
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#clipboardreadbookmark-macos-windows"
      },
      {
        "name": "writeBookmark",
        "signature": "(title, url[, type])",
        "description": "Writes the `title` (macOS only) and `url` into the clipboard as a bookmark.\n\n**Note:** Most apps on Windows don't support pasting bookmarks into them so you can use `clipboard.write` to write both a bookmark and fallback text to the clipboard.",
        "parameters": [
          {
            "name": "title",
            "description": "Unused on Windows",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "url",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "type",
            "description": "Can be `selection` or `clipboard`; default is 'clipboard'. `selection` is only available on Linux.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "selection",
                "description": ""
              },
              {
                "value": "clipboard",
                "description": ""
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#clipboardwritebookmarktitle-url-type-macos-windows"
      },
      {
        "name": "readFindText",
        "signature": "()",
        "description": "The text on the find pasteboard, which is the pasteboard that holds information about the current state of the active application’s find panel.\n\nThis method uses synchronous IPC when called from the renderer process. The cached value is reread from the find pasteboard whenever the application is activated.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#clipboardreadfindtext-macos"
      },
      {
        "name": "writeFindText",
        "signature": "(text)",
        "description": "Writes the `text` into the find pasteboard (the pasteboard that holds information about the current state of the active application’s find panel) as plain text. This method uses synchronous IPC when called from the renderer process.",
        "parameters": [
          {
            "name": "text",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#clipboardwritefindtexttext-macos"
      },
      {
        "name": "clear",
        "signature": "([type])",
        "description": "Clears the clipboard content.",
        "parameters": [
          {
            "name": "type",
            "description": "Can be `selection` or `clipboard`; default is 'clipboard'. `selection` is only available on Linux.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "selection",
                "description": ""
              },
              {
                "value": "clipboard",
                "description": ""
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#clipboardcleartype"
      },
      {
        "name": "availableFormats",
        "signature": "([type])",
        "description": "An array of supported formats for the clipboard `type`.",
        "parameters": [
          {
            "name": "type",
            "description": "Can be `selection` or `clipboard`; default is 'clipboard'. `selection` is only available on Linux.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "selection",
                "description": ""
              },
              {
                "value": "clipboard",
                "description": ""
              }
            ]
          }
        ],
        "returns": {
          "collection": true,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#clipboardavailableformatstype"
      },
      {
        "name": "has",
        "signature": "(format[, type])",
        "description": "Whether the clipboard supports the specified `format`.",
        "parameters": [
          {
            "name": "format",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "type",
            "description": "Can be `selection` or `clipboard`; default is 'clipboard'. `selection` is only available on Linux.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "selection",
                "description": ""
              },
              {
                "value": "clipboard",
                "description": ""
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "stability_experimental"
        ],
        "urlFragment": "#clipboardhasformat-type-experimental"
      },
      {
        "name": "read",
        "signature": "(format)",
        "description": "Reads `format` type from the clipboard.\n\n`format` should contain valid ASCII characters and have `/` separator. `a/c`, `a/bc` are valid formats while `/abc`, `abc/`, `a/`, `/a`, `a` are not valid.",
        "parameters": [
          {
            "name": "format",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [
          "stability_experimental"
        ],
        "urlFragment": "#clipboardreadformat-experimental"
      },
      {
        "name": "readBuffer",
        "signature": "(format)",
        "description": "Reads `format` type from the clipboard.",
        "parameters": [
          {
            "name": "format",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Buffer"
        },
        "additionalTags": [
          "stability_experimental"
        ],
        "urlFragment": "#clipboardreadbufferformat-experimental"
      },
      {
        "name": "writeBuffer",
        "signature": "(format, buffer[, type])",
        "description": "Writes the `buffer` into the clipboard as `format`.",
        "parameters": [
          {
            "name": "format",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "buffer",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Buffer"
          },
          {
            "name": "type",
            "description": "Can be `selection` or `clipboard`; default is 'clipboard'. `selection` is only available on Linux.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "selection",
                "description": ""
              },
              {
                "value": "clipboard",
                "description": ""
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "stability_experimental"
        ],
        "urlFragment": "#clipboardwritebufferformat-buffer-type-experimental"
      },
      {
        "name": "write",
        "signature": "(data[, type])",
        "description": "Writes `data` to the clipboard.",
        "parameters": [
          {
            "name": "data",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "text",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "html",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "image",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "NativeImage"
              },
              {
                "name": "rtf",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "bookmark",
                "description": "The title of the URL at `text`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          },
          {
            "name": "type",
            "description": "Can be `selection` or `clipboard`; default is 'clipboard'. `selection` is only available on Linux.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "selection",
                "description": ""
              },
              {
                "value": "clipboard",
                "description": ""
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#clipboardwritedata-type"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "CommandLine",
    "description": "",
    "slug": "command-line",
    "websiteUrl": "https://electronjs.org/docs/api/command-line",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/command-line.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": null,
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "appendSwitch",
        "signature": "(switch[, value])",
        "description": "Append a switch (with optional `value`) to Chromium's command line.\n\n**Note:** This will not affect `process.argv`. The intended usage of this function is to control Chromium's behavior.",
        "parameters": [
          {
            "name": "switch",
            "description": "A command-line switch, without the leading `--`",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "value",
            "description": "A value for the given switch",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#commandlineappendswitchswitch-value"
      },
      {
        "name": "appendArgument",
        "signature": "(value)",
        "description": "Append an argument to Chromium's command line. The argument will be quoted correctly. Switches will precede arguments regardless of appending order.\n\nIf you're appending an argument like `--switch=value`, consider using `appendSwitch('switch', 'value')` instead.\n\n**Note:** This will not affect `process.argv`. The intended usage of this function is to control Chromium's behavior.",
        "parameters": [
          {
            "name": "value",
            "description": "The argument to append to the command line",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#commandlineappendargumentvalue"
      },
      {
        "name": "hasSwitch",
        "signature": "(switch)",
        "description": "Whether the command-line switch is present.",
        "parameters": [
          {
            "name": "switch",
            "description": "A command-line switch",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#commandlinehasswitchswitch"
      },
      {
        "name": "getSwitchValue",
        "signature": "(switch)",
        "description": "The command-line switch value.\n\n**Note:** When the switch is not present or has no value, it returns empty string.",
        "parameters": [
          {
            "name": "switch",
            "description": "A command-line switch",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#commandlinegetswitchvalueswitch"
      },
      {
        "name": "removeSwitch",
        "signature": "(switch)",
        "description": "Removes the specified switch from Chromium's command line.\n\n**Note:** This will not affect `process.argv`. The intended usage of this function is to control Chromium's behavior.",
        "parameters": [
          {
            "name": "switch",
            "description": "A command-line switch",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#commandlineremoveswitchswitch"
      }
    ],
    "instanceProperties": [],
    "instanceEvents": [],
    "instanceName": "commandLine"
  },
  {
    "name": "contentTracing",
    "description": "> Collect tracing data from Chromium to find performance bottlenecks and slow operations.\n\nProcess: Main\n\nThis module does not include a web interface. To view recorded traces, use trace viewer, available at `chrome://tracing` in Chrome.\n\n**Note:** You should not use this module until the `ready` event of the app module is emitted.",
    "slug": "content-tracing",
    "websiteUrl": "https://electronjs.org/docs/api/content-tracing",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/content-tracing.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "getCategories",
        "signature": "()",
        "description": "resolves with an array of category groups once all child processes have acknowledged the `getCategories` request\n\nGet a set of category groups. The category groups can change as new code paths are reached. See also the list of built-in tracing categories.\n\n> **NOTE:** Electron adds a non-default tracing category called `\"electron\"`. This category can be used to capture Electron-specific tracing events.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": true,
              "type": "String",
              "possibleValues": null
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contenttracinggetcategories"
      },
      {
        "name": "startRecording",
        "signature": "(options)",
        "description": "resolved once all child processes have acknowledged the `startRecording` request.\n\nStart recording on all processes.\n\nRecording begins immediately locally and asynchronously on child processes as soon as they receive the EnableRecording request.\n\nIf a recording is already running, the promise will be immediately resolved, as only one trace operation can be in progress at a time.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "TraceConfig"
              },
              {
                "collection": false,
                "type": "TraceCategoriesAndOptions"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contenttracingstartrecordingoptions"
      },
      {
        "name": "stopRecording",
        "signature": "([resultFilePath])",
        "description": "resolves with a path to a file that contains the traced data once all child processes have acknowledged the `stopRecording` request\n\nStop recording on all processes.\n\nChild processes typically cache trace data and only rarely flush and send trace data back to the main process. This helps to minimize the runtime overhead of tracing since sending trace data over IPC can be an expensive operation. So, to end tracing, Chromium asynchronously asks all child processes to flush any pending trace data.\n\nTrace data will be written into `resultFilePath`. If `resultFilePath` is empty or not provided, trace data will be written to a temporary file, and the path will be returned in the promise.",
        "parameters": [
          {
            "name": "resultFilePath",
            "description": "",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "String",
              "possibleValues": null
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contenttracingstoprecordingresultfilepath"
      },
      {
        "name": "getTraceBufferUsage",
        "signature": "()",
        "description": "Resolves with an object containing the `value` and `percentage` of trace buffer maximum usage\n\n* `value` number\n* `percentage` number\n\nGet the maximum usage across processes of trace buffer as a percentage of the full state.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "Object",
              "properties": [
                {
                  "name": "value",
                  "description": "",
                  "required": true,
                  "additionalTags": [],
                  "collection": false,
                  "type": "number"
                },
                {
                  "name": "percentage",
                  "description": "",
                  "required": true,
                  "additionalTags": [],
                  "collection": false,
                  "type": "number"
                }
              ]
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contenttracinggettracebufferusage"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "contextBridge",
    "description": "> Create a safe, bi-directional, synchronous bridge across isolated contexts\n\nProcess: Renderer\n\nAn example of exposing an API to a renderer from an isolated preload script is given below:\n\n```\n// Preload (Isolated World)\nconst { contextBridge, ipcRenderer } = require('electron')\n\ncontextBridge.exposeInMainWorld(\n  'electron',\n  {\n    doThing: () => ipcRenderer.send('do-a-thing')\n  }\n)\n```\n\n### Glossary\n\n\n\n### Main World\n\nThe \"Main World\" is the JavaScript context that your main renderer code runs in. By default, the page you load in your renderer executes code in this world.\n\n### Isolated World\n\nWhen `contextIsolation` is enabled in your `webPreferences` (this is the default behavior since Electron 12.0.0), your `preload` scripts run in an \"Isolated World\".  You can read more about context isolation and what it affects in the security docs.",
    "slug": "context-bridge",
    "websiteUrl": "https://electronjs.org/docs/api/context-bridge",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/context-bridge.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": false,
      "renderer": true,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "exposeInMainWorld",
        "signature": "(apiKey, api)",
        "description": "",
        "parameters": [
          {
            "name": "apiKey",
            "description": "The key to inject the API onto `window` with.  The API will be accessible on `window[apiKey]`.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "api",
            "description": "Your API, more information on what this API can be and how it works is available below.",
            "required": true,
            "collection": false,
            "type": "any"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contextbridgeexposeinmainworldapikey-api"
      },
      {
        "name": "exposeInIsolatedWorld",
        "signature": "(worldId, apiKey, api)",
        "description": "",
        "parameters": [
          {
            "name": "worldId",
            "description": "The ID of the world to inject the API into. `0` is the default world, `999` is the world used by Electron's `contextIsolation` feature. Using 999 would expose the object for preload context. We recommend using 1000+ while creating isolated world.",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "apiKey",
            "description": "The key to inject the API onto `window` with.  The API will be accessible on `window[apiKey]`.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "api",
            "description": "Your API, more information on what this API can be and how it works is available below.",
            "required": true,
            "collection": false,
            "type": "any"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contextbridgeexposeinisolatedworldworldid-apikey-api"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "Cookies",
    "description": "",
    "slug": "cookies",
    "websiteUrl": "https://electronjs.org/docs/api/cookies",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/cookies.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": null,
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "get",
        "signature": "(filter)",
        "description": "A promise which resolves an array of cookie objects.\n\nSends a request to get all cookies matching `filter`, and resolves a promise with the response.",
        "parameters": [
          {
            "name": "filter",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "url",
                "description": "Retrieves cookies which are associated with `url`. Empty implies retrieving cookies of all URLs.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "name",
                "description": "Filters cookies by name.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "domain",
                "description": "Retrieves cookies whose domains match or are subdomains of `domains`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "path",
                "description": "Retrieves cookies whose path matches `path`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "secure",
                "description": "Filters cookies by their Secure property.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "session",
                "description": "Filters out session or persistent cookies.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "httpOnly",
                "description": "Filters cookies by httpOnly.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": true,
              "type": "Cookie"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#cookiesgetfilter"
      },
      {
        "name": "set",
        "signature": "(details)",
        "description": "A promise which resolves when the cookie has been set\n\nSets a cookie with `details`.",
        "parameters": [
          {
            "name": "details",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "url",
                "description": "The URL to associate the cookie with. The promise will be rejected if the URL is invalid.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "name",
                "description": "The name of the cookie. Empty by default if omitted.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "value",
                "description": "The value of the cookie. Empty by default if omitted.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "domain",
                "description": "The domain of the cookie; this will be normalized with a preceding dot so that it's also valid for subdomains. Empty by default if omitted.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "path",
                "description": "The path of the cookie. Empty by default if omitted.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "secure",
                "description": "Whether the cookie should be marked as Secure. Defaults to false unless Same Site=None attribute is used.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "httpOnly",
                "description": "Whether the cookie should be marked as HTTP only. Defaults to false.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "expirationDate",
                "description": "The expiration date of the cookie as the number of seconds since the UNIX epoch. If omitted then the cookie becomes a session cookie and will not be retained between sessions.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Double"
              },
              {
                "name": "sameSite",
                "description": "The Same Site policy to apply to this cookie.  Can be `unspecified`, `no_restriction`, `lax` or `strict`.  Default is `lax`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "unspecified",
                    "description": ""
                  },
                  {
                    "value": "no_restriction",
                    "description": ""
                  },
                  {
                    "value": "lax",
                    "description": ""
                  },
                  {
                    "value": "strict",
                    "description": ""
                  }
                ]
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#cookiessetdetails"
      },
      {
        "name": "remove",
        "signature": "(url, name)",
        "description": "A promise which resolves when the cookie has been removed\n\nRemoves the cookies matching `url` and `name`",
        "parameters": [
          {
            "name": "url",
            "description": "The URL associated with the cookie.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "name",
            "description": "The name of cookie to remove.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#cookiesremoveurl-name"
      },
      {
        "name": "flushStore",
        "signature": "()",
        "description": "A promise which resolves when the cookie store has been flushed\n\nWrites any unwritten cookies data to disk\n\nCookies written by any method will not be written to disk immediately, but will be written every 30 seconds or 512 operations\n\nCalling this method can cause the cookie to be written to disk immediately.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#cookiesflushstore"
      }
    ],
    "instanceProperties": [],
    "instanceEvents": [
      {
        "name": "changed",
        "description": "Emitted when a cookie is changed because it was added, edited, removed, or expired.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "cookie",
            "description": "The cookie that was changed.",
            "collection": false,
            "type": "Cookie",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "cause",
            "description": "The cause of the change with one of the following values:",
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "explicit",
                "description": "The cookie was changed directly by a consumer's action."
              },
              {
                "value": "overwrite",
                "description": "The cookie was automatically removed due to an insert operation that overwrote it."
              },
              {
                "value": "expired",
                "description": "The cookie was automatically removed as it expired."
              },
              {
                "value": "evicted",
                "description": "The cookie was automatically evicted during garbage collection."
              },
              {
                "value": "expired-overwrite",
                "description": "The cookie was overwritten with an already-expired expiration date."
              }
            ],
            "additionalTags": [],
            "required": true
          },
          {
            "name": "removed",
            "description": "`true` if the cookie was removed, `false` otherwise.",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-changed"
      }
    ],
    "instanceName": "cookies"
  },
  {
    "name": "crashReporter",
    "description": "> Submit crash reports to a remote server.\n\nProcess: Main, Renderer\n\nThe following is an example of setting up Electron to automatically submit crash reports to a remote server:\n\n```\nconst { crashReporter } = require('electron')\n\ncrashReporter.start({ submitURL: 'https://your-domain.com/url-to-submit' })\n```\n\nFor setting up a server to accept and process crash reports, you can use following projects:\n\n* socorro\n* mini-breakpad-server\n\n> **Note:** Electron uses Crashpad, not Breakpad, to collect and upload crashes, but for the time being, the upload protocol is the same.\n\nOr use a 3rd party hosted solution:\n\n* Backtrace\n* Sentry\n* BugSplat\n* Bugsnag\n\nCrash reports are stored temporarily before being uploaded in a directory underneath the app's user data directory, called 'Crashpad'. You can override this directory by calling `app.setPath('crashDumps', '/path/to/crashes')` before starting the crash reporter.\n\nElectron uses crashpad to monitor and report crashes.",
    "slug": "crash-reporter",
    "websiteUrl": "https://electronjs.org/docs/api/crash-reporter",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/crash-reporter.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": true,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "start",
        "signature": "(options)",
        "description": "This method must be called before using any other `crashReporter` APIs. Once initialized this way, the crashpad handler collects crashes from all subsequently created processes. The crash reporter cannot be disabled once started.\n\nThis method should be called as early as possible in app startup, preferably before `app.on('ready')`. If the crash reporter is not initialized at the time a renderer process is created, then that renderer process will not be monitored by the crash reporter.\n\n**Note:** You can test out the crash reporter by generating a crash using `process.crash()`.\n\n**Note:** If you need to send additional/updated `extra` parameters after your first call `start` you can call `addExtraParameter`.\n\n**Note:** Parameters passed in `extra`, `globalExtra` or set with `addExtraParameter` have limits on the length of the keys and values. Key names must be at most 39 bytes long, and values must be no longer than 127 bytes. Keys with names longer than the maximum will be silently ignored. Key values longer than the maximum length will be truncated.\n\n**Note:** This method is only available in the main process.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "submitURL",
                "description": "URL that crash reports will be sent to as POST. Required unless `uploadToServer` is `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "productName",
                "description": "Defaults to `app.name`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "companyName",
                "description": "Deprecated alias for `{ globalExtra: { _companyName: ... } }`.",
                "required": false,
                "additionalTags": [
                  "stability_deprecated"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "uploadToServer",
                "description": "Whether crash reports should be sent to the server. If false, crash reports will be collected and stored in the crashes directory, but not uploaded. Default is `true`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "ignoreSystemCrashHandler",
                "description": "If true, crashes generated in the main process will not be forwarded to the system crash handler. Default is `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "rateLimit",
                "description": "If true, limit the number of crashes uploaded to 1/hour. Default is `false`.",
                "required": false,
                "additionalTags": [
                  "os_macos",
                  "os_windows"
                ],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "compress",
                "description": "If true, crash reports will be compressed and uploaded with `Content-Encoding: gzip`. Default is `true`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "extra",
                "description": "Extra string key/value annotations that will be sent along with crash reports that are generated in the main process. Only string values are supported. Crashes generated in child processes will not contain these extra parameters to crash reports generated from child processes, call `addExtraParameter` from the child process.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Record",
                "innerTypes": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  }
                ]
              },
              {
                "name": "globalExtra",
                "description": "Extra string key/value annotations that will be sent along with any crash reports generated in any process. These annotations cannot be changed once the crash reporter has been started. If a key is present in both the global extra parameters and the process-specific extra parameters, then the global one will take precedence. By default, `productName` and the app version are included, as well as the Electron version.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Record",
                "innerTypes": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  }
                ]
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#crashreporterstartoptions"
      },
      {
        "name": "getLastCrashReport",
        "signature": "()",
        "description": "The date and ID of the last crash report. Only crash reports that have been uploaded will be returned; even if a crash report is present on disk it will not be returned until it is uploaded. In the case that there are no uploaded reports, `null` is returned.\n\n**Note:** This method is only available in the main process.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "CrashReport"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#crashreportergetlastcrashreport"
      },
      {
        "name": "getUploadedReports",
        "signature": "()",
        "description": "Returns all uploaded crash reports. Each report contains the date and uploaded ID.\n\n**Note:** This method is only available in the main process.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "CrashReport"
        },
        "additionalTags": [],
        "urlFragment": "#crashreportergetuploadedreports"
      },
      {
        "name": "getUploadToServer",
        "signature": "()",
        "description": "Whether reports should be submitted to the server. Set through the `start` method or `setUploadToServer`.\n\n**Note:** This method is only available in the main process.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#crashreportergetuploadtoserver"
      },
      {
        "name": "setUploadToServer",
        "signature": "(uploadToServer)",
        "description": "This would normally be controlled by user preferences. This has no effect if called before `start` is called.\n\n**Note:** This method is only available in the main process.",
        "parameters": [
          {
            "name": "uploadToServer",
            "description": "Whether reports should be submitted to the server.",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#crashreportersetuploadtoserveruploadtoserver"
      },
      {
        "name": "addExtraParameter",
        "signature": "(key, value)",
        "description": "Set an extra parameter to be sent with the crash report. The values specified here will be sent in addition to any values set via the `extra` option when `start` was called.\n\nParameters added in this fashion (or via the `extra` parameter to `crashReporter.start`) are specific to the calling process. Adding extra parameters in the main process will not cause those parameters to be sent along with crashes from renderer or other child processes. Similarly, adding extra parameters in a renderer process will not result in those parameters being sent with crashes that occur in other renderer processes or in the main process.\n\n**Note:** Parameters have limits on the length of the keys and values. Key names must be no longer than 39 bytes, and values must be no longer than 20320 bytes. Keys with names longer than the maximum will be silently ignored. Key values longer than the maximum length will be truncated.",
        "parameters": [
          {
            "name": "key",
            "description": "Parameter key, must be no longer than 39 bytes.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "value",
            "description": "Parameter value, must be no longer than 127 bytes.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#crashreporteraddextraparameterkey-value"
      },
      {
        "name": "removeExtraParameter",
        "signature": "(key)",
        "description": "Remove an extra parameter from the current set of parameters. Future crashes will not include this parameter.",
        "parameters": [
          {
            "name": "key",
            "description": "Parameter key, must be no longer than 39 bytes.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#crashreporterremoveextraparameterkey"
      },
      {
        "name": "getParameters",
        "signature": "()",
        "description": "The current 'extra' parameters of the crash reporter.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Record",
          "innerTypes": [
            {
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "collection": false,
              "type": "String",
              "possibleValues": null
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#crashreportergetparameters"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "Debugger",
    "description": "",
    "slug": "debugger",
    "websiteUrl": "https://electronjs.org/docs/api/debugger",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/debugger.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": null,
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "attach",
        "signature": "([protocolVersion])",
        "description": "Attaches the debugger to the `webContents`.",
        "parameters": [
          {
            "name": "protocolVersion",
            "description": "Requested debugging protocol version.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#debuggerattachprotocolversion"
      },
      {
        "name": "isAttached",
        "signature": "()",
        "description": "Whether a debugger is attached to the `webContents`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#debuggerisattached"
      },
      {
        "name": "detach",
        "signature": "()",
        "description": "Detaches the debugger from the `webContents`.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#debuggerdetach"
      },
      {
        "name": "sendCommand",
        "signature": "(method[, commandParams, sessionId])",
        "description": "A promise that resolves with the response defined by the 'returns' attribute of the command description in the remote debugging protocol or is rejected indicating the failure of the command.\n\nSend given command to the debugging target.",
        "parameters": [
          {
            "name": "method",
            "description": "Method name, should be one of the methods defined by the remote debugging protocol.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "commandParams",
            "description": "JSON object with request parameters.",
            "required": false,
            "collection": false,
            "type": "any"
          },
          {
            "name": "sessionId",
            "description": "send command to the target with associated debugging session id. The initial value can be obtained by sending Target.attachToTarget message.",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "any"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#debuggersendcommandmethod-commandparams-sessionid"
      }
    ],
    "instanceProperties": [],
    "instanceEvents": [
      {
        "name": "detach",
        "description": "Emitted when the debugging session is terminated. This happens either when `webContents` is closed or devtools is invoked for the attached `webContents`.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "reason",
            "description": "Reason for detaching debugger.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-detach"
      },
      {
        "name": "message",
        "description": "Emitted whenever the debugging target issues an instrumentation event.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "method",
            "description": "Method name.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "params",
            "description": "Event parameters defined by the 'parameters' attribute in the remote debugging protocol.",
            "collection": false,
            "type": "any",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "sessionId",
            "description": "Unique identifier of attached debugging session, will match the value sent from `debugger.sendCommand`.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-message"
      }
    ],
    "instanceName": "debugger"
  },
  {
    "name": "desktopCapturer",
    "description": "> Access information about media sources that can be used to capture audio and video from the desktop using the `navigator.mediaDevices.getUserMedia` API.\n\nProcess: Main\n\nThe following example shows how to capture video from a desktop window whose title is `Electron`:\n\n```\n// main.js\nconst { app, BrowserWindow, desktopCapturer, session } = require('electron')\n\napp.whenReady().then(() => {\n  const mainWindow = new BrowserWindow()\n\n  session.defaultSession.setDisplayMediaRequestHandler((request, callback) => {\n    desktopCapturer.getSources({ types: ['screen'] }).then((sources) => {\n      // Grant access to the first screen found.\n      callback({ video: sources[0], audio: 'loopback' })\n    })\n  })\n\n  mainWindow.loadFile('index.html')\n})\n```\n\n```\n// renderer.js\nconst startButton = document.getElementById('startButton')\nconst stopButton = document.getElementById('stopButton')\nconst video = document.querySelector('video')\n\nstartButton.addEventListener('click', () => {\n  navigator.mediaDevices.getDisplayMedia({\n    audio: true,\n    video: {\n      width: 320,\n      height: 240,\n      frameRate: 30\n    }\n  }).then(stream => {\n    video.srcObject = stream\n    video.onloadedmetadata = (e) => video.play()\n  }).catch(e => console.log(e))\n})\n\nstopButton.addEventListener('click', () => {\n  video.pause()\n})\n```\n\n```\n<!-- index.html -->\n<html>\n<meta http-equiv=\"content-security-policy\" content=\"script-src 'self' 'unsafe-inline'\" />\n  <body>\n    <button id=\"startButton\" class=\"button\">Start</button>\n    <button id=\"stopButton\" class=\"button\">Stop</button>\n    <video width=\"320\" height=\"240\" autoplay></video>\n    <script src=\"renderer.js\"></script>\n  </body>\n</html>\n```\n\nSee `navigator.mediaDevices.getDisplayMedia` for more information.\n\n**Note:** `navigator.mediaDevices.getDisplayMedia` does not permit the use of `deviceId` for selection of a source - see specification.",
    "slug": "desktop-capturer",
    "websiteUrl": "https://electronjs.org/docs/api/desktop-capturer",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/desktop-capturer.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "getSources",
        "signature": "(options)",
        "description": "Resolves with an array of `DesktopCapturerSource` objects, each `DesktopCapturerSource` represents a screen or an individual window that can be captured.\n\n**Note** Capturing the screen contents requires user consent on macOS 10.15 Catalina or higher, which can detected by `systemPreferences.getMediaAccessStatus`.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "types",
                "description": "An array of strings that lists the types of desktop sources to be captured, available types can be `screen` and `window`.",
                "required": true,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "screen",
                    "description": ""
                  },
                  {
                    "value": "window",
                    "description": ""
                  }
                ]
              },
              {
                "name": "thumbnailSize",
                "description": "The size that the media source thumbnail should be scaled to. Default is `150` x `150`. Set width or height to 0 when you do not need the thumbnails. This will save the processing time required for capturing the content of each window and screen.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Size"
              },
              {
                "name": "fetchWindowIcons",
                "description": "Set to true to enable fetching window icons. The default value is false. When false the appIcon property of the sources return null. Same if a source has the type screen.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": true,
              "type": "DesktopCapturerSource"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#desktopcapturergetsourcesoptions"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "dialog",
    "description": "> Display native system dialogs for opening and saving files, alerting, etc.\n\nProcess: Main\n\nAn example of showing a dialog to select multiple files:",
    "slug": "dialog",
    "websiteUrl": "https://electronjs.org/docs/api/dialog",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/dialog.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "showOpenDialogSync",
        "signature": "([browserWindow, ]options)",
        "description": "the file paths chosen by the user; if the dialog is cancelled it returns `undefined`.\n\nThe `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.\n\nThe `filters` specifies an array of file types that can be displayed or selected when you want to limit the user to a specific type. For example:\n\nThe `extensions` array should contain extensions without wildcards or dots (e.g. `'png'` is good but `'.png'` and `'*.png'` are bad). To show all files, use the `'*'` wildcard (no other wildcard is supported).\n\n**Note:** On Windows and Linux an open dialog can not be both a file selector and a directory selector, so if you set `properties` to `['openFile', 'openDirectory']` on these platforms, a directory selector will be shown.",
        "parameters": [
          {
            "name": "browserWindow",
            "description": "",
            "required": false,
            "collection": false,
            "type": "BrowserWindow"
          },
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "title",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "defaultPath",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "buttonLabel",
                "description": "Custom label for the confirmation button, when left empty the default label will be used.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "filters",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "FileFilter"
              },
              {
                "name": "properties",
                "description": "Contains which features the dialog should use. The following values are supported:",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "openFile",
                    "description": "Allow files to be selected."
                  },
                  {
                    "value": "openDirectory",
                    "description": "Allow directories to be selected."
                  },
                  {
                    "value": "multiSelections",
                    "description": "Allow multiple paths to be selected."
                  },
                  {
                    "value": "showHiddenFiles",
                    "description": "Show hidden files in dialog."
                  },
                  {
                    "value": "createDirectory",
                    "description": "Allow creating new directories from dialog."
                  },
                  {
                    "value": "promptToCreate",
                    "description": "Prompt for creation if the file path entered in the dialog does not exist. This does not actually create the file at the path but allows non-existent paths to be returned that should be created by the application."
                  },
                  {
                    "value": "noResolveAliases",
                    "description": "Disable the automatic alias (symlink) path resolution. Selected aliases will now return the alias path instead of their target path."
                  },
                  {
                    "value": "treatPackageAsDirectory",
                    "description": "Treat packages, such as `.app` folders, as a directory instead of a file."
                  },
                  {
                    "value": "dontAddToRecent",
                    "description": "Do not add the item being opened to the recent documents list."
                  }
                ]
              },
              {
                "name": "message",
                "description": "Message to display above input boxes.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "securityScopedBookmarks",
                "description": "Create security scoped bookmarks when packaged for the Mac App Store.",
                "required": false,
                "additionalTags": [
                  "os_macos",
                  "os_mas"
                ],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": true,
              "type": "String",
              "possibleValues": null
            },
            {
              "collection": false,
              "type": "undefined"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#dialogshowopendialogsyncbrowserwindow-options"
      },
      {
        "name": "showOpenDialog",
        "signature": "([browserWindow, ]options)",
        "description": "Resolve with an object containing the following:\n\n* `canceled` boolean - whether or not the dialog was canceled.\n* `filePaths` string[] - An array of file paths chosen by the user. If the dialog is cancelled this will be an empty array.\n* `bookmarks` string[] (optional) _macOS_ _mas_ - An array matching the `filePaths` array of base64 encoded strings which contains security scoped bookmark data. `securityScopedBookmarks` must be enabled for this to be populated. (For return values, see table here.)\n\nThe `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.\n\nThe `filters` specifies an array of file types that can be displayed or selected when you want to limit the user to a specific type. For example:\n\nThe `extensions` array should contain extensions without wildcards or dots (e.g. `'png'` is good but `'.png'` and `'*.png'` are bad). To show all files, use the `'*'` wildcard (no other wildcard is supported).\n\n**Note:** On Windows and Linux an open dialog can not be both a file selector and a directory selector, so if you set `properties` to `['openFile', 'openDirectory']` on these platforms, a directory selector will be shown.",
        "parameters": [
          {
            "name": "browserWindow",
            "description": "",
            "required": false,
            "collection": false,
            "type": "BrowserWindow"
          },
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "title",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "defaultPath",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "buttonLabel",
                "description": "Custom label for the confirmation button, when left empty the default label will be used.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "filters",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "FileFilter"
              },
              {
                "name": "properties",
                "description": "Contains which features the dialog should use. The following values are supported:",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "openFile",
                    "description": "Allow files to be selected."
                  },
                  {
                    "value": "openDirectory",
                    "description": "Allow directories to be selected."
                  },
                  {
                    "value": "multiSelections",
                    "description": "Allow multiple paths to be selected."
                  },
                  {
                    "value": "showHiddenFiles",
                    "description": "Show hidden files in dialog."
                  },
                  {
                    "value": "createDirectory",
                    "description": "Allow creating new directories from dialog."
                  },
                  {
                    "value": "promptToCreate",
                    "description": "Prompt for creation if the file path entered in the dialog does not exist. This does not actually create the file at the path but allows non-existent paths to be returned that should be created by the application."
                  },
                  {
                    "value": "noResolveAliases",
                    "description": "Disable the automatic alias (symlink) path resolution. Selected aliases will now return the alias path instead of their target path."
                  },
                  {
                    "value": "treatPackageAsDirectory",
                    "description": "Treat packages, such as `.app` folders, as a directory instead of a file."
                  },
                  {
                    "value": "dontAddToRecent",
                    "description": "Do not add the item being opened to the recent documents list."
                  }
                ]
              },
              {
                "name": "message",
                "description": "Message to display above input boxes.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "securityScopedBookmarks",
                "description": "Create security scoped bookmarks when packaged for the Mac App Store.",
                "required": false,
                "additionalTags": [
                  "os_macos",
                  "os_mas"
                ],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "Object",
              "properties": [
                {
                  "name": "canceled",
                  "description": "whether or not the dialog was canceled.",
                  "required": true,
                  "additionalTags": [],
                  "collection": false,
                  "type": "boolean"
                },
                {
                  "name": "filePaths",
                  "description": "An array of file paths chosen by the user. If the dialog is cancelled this will be an empty array.",
                  "required": true,
                  "additionalTags": [],
                  "collection": true,
                  "type": "String",
                  "possibleValues": null
                },
                {
                  "name": "bookmarks",
                  "description": "An array matching the `filePaths` array of base64 encoded strings which contains security scoped bookmark data. `securityScopedBookmarks` must be enabled for this to be populated. (For return values, see table here.)",
                  "required": false,
                  "additionalTags": [
                    "os_macos",
                    "os_mas"
                  ],
                  "collection": true,
                  "type": "String",
                  "possibleValues": null
                }
              ]
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#dialogshowopendialogbrowserwindow-options"
      },
      {
        "name": "showSaveDialogSync",
        "signature": "([browserWindow, ]options)",
        "description": "the path of the file chosen by the user; if the dialog is cancelled it returns an empty string.\n\nThe `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.\n\nThe `filters` specifies an array of file types that can be displayed, see `dialog.showOpenDialog` for an example.",
        "parameters": [
          {
            "name": "browserWindow",
            "description": "",
            "required": false,
            "collection": false,
            "type": "BrowserWindow"
          },
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "title",
                "description": "The dialog title. Cannot be displayed on some _Linux_ desktop environments.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "defaultPath",
                "description": "Absolute directory path, absolute file path, or file name to use by default.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "buttonLabel",
                "description": "Custom label for the confirmation button, when left empty the default label will be used.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "filters",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "FileFilter"
              },
              {
                "name": "message",
                "description": "Message to display above text fields.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "nameFieldLabel",
                "description": "Custom label for the text displayed in front of the filename text field.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "showsTagField",
                "description": "Show the tags input box, defaults to `true`.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "properties",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "showHiddenFiles",
                    "description": "Show hidden files in dialog."
                  },
                  {
                    "value": "createDirectory",
                    "description": "Allow creating new directories from dialog."
                  },
                  {
                    "value": "treatPackageAsDirectory",
                    "description": "Treat packages, such as `.app` folders, as a directory instead of a file."
                  },
                  {
                    "value": "showOverwriteConfirmation",
                    "description": "Sets whether the user will be presented a confirmation dialog if the user types a file name that already exists."
                  },
                  {
                    "value": "dontAddToRecent",
                    "description": "Do not add the item being saved to the recent documents list."
                  }
                ]
              },
              {
                "name": "securityScopedBookmarks",
                "description": "Create a security scoped bookmark when packaged for the Mac App Store. If this option is enabled and the file doesn't already exist a blank file will be created at the chosen path.",
                "required": false,
                "additionalTags": [
                  "os_macos",
                  "os_mas"
                ],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#dialogshowsavedialogsyncbrowserwindow-options"
      },
      {
        "name": "showSaveDialog",
        "signature": "([browserWindow, ]options)",
        "description": "Resolve with an object containing the following:\n\n* `canceled` boolean - whether or not the dialog was canceled.\n* `filePath` string - If the dialog is canceled, this will be an empty string.\n* `bookmark` string (optional) _macOS_ _mas_ - Base64 encoded string which contains the security scoped bookmark data for the saved file. `securityScopedBookmarks` must be enabled for this to be present. (For return values, see table here.)\n\nThe `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.\n\nThe `filters` specifies an array of file types that can be displayed, see `dialog.showOpenDialog` for an example.\n\n**Note:** On macOS, using the asynchronous version is recommended to avoid issues when expanding and collapsing the dialog.",
        "parameters": [
          {
            "name": "browserWindow",
            "description": "",
            "required": false,
            "collection": false,
            "type": "BrowserWindow"
          },
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "title",
                "description": "The dialog title. Cannot be displayed on some _Linux_ desktop environments.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "defaultPath",
                "description": "Absolute directory path, absolute file path, or file name to use by default.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "buttonLabel",
                "description": "Custom label for the confirmation button, when left empty the default label will be used.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "filters",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "FileFilter"
              },
              {
                "name": "message",
                "description": "Message to display above text fields.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "nameFieldLabel",
                "description": "Custom label for the text displayed in front of the filename text field.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "showsTagField",
                "description": "Show the tags input box, defaults to `true`.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "properties",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "showHiddenFiles",
                    "description": "Show hidden files in dialog."
                  },
                  {
                    "value": "createDirectory",
                    "description": "Allow creating new directories from dialog."
                  },
                  {
                    "value": "treatPackageAsDirectory",
                    "description": "Treat packages, such as `.app` folders, as a directory instead of a file."
                  },
                  {
                    "value": "showOverwriteConfirmation",
                    "description": "Sets whether the user will be presented a confirmation dialog if the user types a file name that already exists."
                  },
                  {
                    "value": "dontAddToRecent",
                    "description": "Do not add the item being saved to the recent documents list."
                  }
                ]
              },
              {
                "name": "securityScopedBookmarks",
                "description": "Create a security scoped bookmark when packaged for the Mac App Store. If this option is enabled and the file doesn't already exist a blank file will be created at the chosen path.",
                "required": false,
                "additionalTags": [
                  "os_macos",
                  "os_mas"
                ],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "Object",
              "properties": [
                {
                  "name": "canceled",
                  "description": "whether or not the dialog was canceled.",
                  "required": true,
                  "additionalTags": [],
                  "collection": false,
                  "type": "boolean"
                },
                {
                  "name": "filePath",
                  "description": "If the dialog is canceled, this will be an empty string.",
                  "required": true,
                  "additionalTags": [],
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                },
                {
                  "name": "bookmark",
                  "description": "Base64 encoded string which contains the security scoped bookmark data for the saved file. `securityScopedBookmarks` must be enabled for this to be present. (For return values, see table here.)",
                  "required": false,
                  "additionalTags": [
                    "os_macos",
                    "os_mas"
                  ],
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                }
              ]
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#dialogshowsavedialogbrowserwindow-options"
      },
      {
        "name": "showMessageBoxSync",
        "signature": "([browserWindow, ]options)",
        "description": "the index of the clicked button.\n\nShows a message box, it will block the process until the message box is closed. It returns the index of the clicked button.\n\nThe `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal. If `browserWindow` is not shown dialog will not be attached to it. In such case it will be displayed as an independent window.",
        "parameters": [
          {
            "name": "browserWindow",
            "description": "",
            "required": false,
            "collection": false,
            "type": "BrowserWindow"
          },
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "message",
                "description": "Content of the message box.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "type",
                "description": "Can be `none`, `info`, `error`, `question` or `warning`. On Windows, `question` displays the same icon as `info`, unless you set an icon using the `icon` option. On macOS, both `warning` and `error` display the same warning icon.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "none",
                    "description": ""
                  },
                  {
                    "value": "info",
                    "description": ""
                  },
                  {
                    "value": "error",
                    "description": ""
                  },
                  {
                    "value": "question",
                    "description": ""
                  },
                  {
                    "value": "warning",
                    "description": ""
                  }
                ]
              },
              {
                "name": "buttons",
                "description": "Array of texts for buttons. On Windows, an empty array will result in one button labeled \"OK\".",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "defaultId",
                "description": "Index of the button in the buttons array which will be selected by default when the message box opens.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "title",
                "description": "Title of the message box, some platforms will not show it.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "detail",
                "description": "Extra information of the message.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "icon",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": [
                  {
                    "collection": false,
                    "type": "NativeImage"
                  },
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  }
                ]
              },
              {
                "name": "textWidth",
                "description": "Custom width of the text in the message box.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "cancelId",
                "description": "The index of the button to be used to cancel the dialog, via the `Esc` key. By default this is assigned to the first button with \"cancel\" or \"no\" as the label. If no such labeled buttons exist and this option is not set, `0` will be used as the return value.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "noLink",
                "description": "On Windows Electron will try to figure out which one of the `buttons` are common buttons (like \"Cancel\" or \"Yes\"), and show the others as command links in the dialog. This can make the dialog appear in the style of modern Windows apps. If you don't like this behavior, you can set `noLink` to `true`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "normalizeAccessKeys",
                "description": "Normalize the keyboard access keys across platforms. Default is `false`. Enabling this assumes `&` is used in the button labels for the placement of the keyboard shortcut access key and labels will be converted so they work correctly on each platform, `&` characters are removed on macOS, converted to `_` on Linux, and left untouched on Windows. For example, a button label of `Vie&w` will be converted to `Vie_w` on Linux and `View` on macOS and can be selected via `Alt-W` on Windows and Linux.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#dialogshowmessageboxsyncbrowserwindow-options"
      },
      {
        "name": "showMessageBox",
        "signature": "([browserWindow, ]options)",
        "description": "resolves with a promise containing the following properties:\n\n* `response` number - The index of the clicked button.\n* `checkboxChecked` boolean - The checked state of the checkbox if `checkboxLabel` was set. Otherwise `false`.\n\nShows a message box.\n\nThe `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.",
        "parameters": [
          {
            "name": "browserWindow",
            "description": "",
            "required": false,
            "collection": false,
            "type": "BrowserWindow"
          },
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "message",
                "description": "Content of the message box.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "type",
                "description": "Can be `none`, `info`, `error`, `question` or `warning`. On Windows, `question` displays the same icon as `info`, unless you set an icon using the `icon` option. On macOS, both `warning` and `error` display the same warning icon.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "none",
                    "description": ""
                  },
                  {
                    "value": "info",
                    "description": ""
                  },
                  {
                    "value": "error",
                    "description": ""
                  },
                  {
                    "value": "question",
                    "description": ""
                  },
                  {
                    "value": "warning",
                    "description": ""
                  }
                ]
              },
              {
                "name": "buttons",
                "description": "Array of texts for buttons. On Windows, an empty array will result in one button labeled \"OK\".",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "defaultId",
                "description": "Index of the button in the buttons array which will be selected by default when the message box opens.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "signal",
                "description": "Pass an instance of AbortSignal to optionally close the message box, the message box will behave as if it was cancelled by the user. On macOS, `signal` does not work with message boxes that do not have a parent window, since those message boxes run synchronously due to platform limitations.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "AbortSignal"
              },
              {
                "name": "title",
                "description": "Title of the message box, some platforms will not show it.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "detail",
                "description": "Extra information of the message.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "checkboxLabel",
                "description": "If provided, the message box will include a checkbox with the given label.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "checkboxChecked",
                "description": "Initial checked state of the checkbox. `false` by default.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "icon",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": [
                  {
                    "collection": false,
                    "type": "NativeImage"
                  },
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  }
                ]
              },
              {
                "name": "textWidth",
                "description": "Custom width of the text in the message box.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "cancelId",
                "description": "The index of the button to be used to cancel the dialog, via the `Esc` key. By default this is assigned to the first button with \"cancel\" or \"no\" as the label. If no such labeled buttons exist and this option is not set, `0` will be used as the return value.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "noLink",
                "description": "On Windows Electron will try to figure out which one of the `buttons` are common buttons (like \"Cancel\" or \"Yes\"), and show the others as command links in the dialog. This can make the dialog appear in the style of modern Windows apps. If you don't like this behavior, you can set `noLink` to `true`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "normalizeAccessKeys",
                "description": "Normalize the keyboard access keys across platforms. Default is `false`. Enabling this assumes `&` is used in the button labels for the placement of the keyboard shortcut access key and labels will be converted so they work correctly on each platform, `&` characters are removed on macOS, converted to `_` on Linux, and left untouched on Windows. For example, a button label of `Vie&w` will be converted to `Vie_w` on Linux and `View` on macOS and can be selected via `Alt-W` on Windows and Linux.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "Object",
              "properties": [
                {
                  "name": "response",
                  "description": "The index of the clicked button.",
                  "required": true,
                  "additionalTags": [],
                  "collection": false,
                  "type": "number"
                },
                {
                  "name": "checkboxChecked",
                  "description": "The checked state of the checkbox if `checkboxLabel` was set. Otherwise `false`.",
                  "required": true,
                  "additionalTags": [],
                  "collection": false,
                  "type": "boolean"
                }
              ]
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#dialogshowmessageboxbrowserwindow-options"
      },
      {
        "name": "showErrorBox",
        "signature": "(title, content)",
        "description": "Displays a modal dialog that shows an error message.\n\nThis API can be called safely before the `ready` event the `app` module emits, it is usually used to report errors in early stage of startup. If called before the app `ready`event on Linux, the message will be emitted to stderr, and no GUI dialog will appear.",
        "parameters": [
          {
            "name": "title",
            "description": "The title to display in the error box.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "content",
            "description": "The text content to display in the error box.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#dialogshowerrorboxtitle-content"
      },
      {
        "name": "showCertificateTrustDialog",
        "signature": "([browserWindow, ]options)",
        "description": "resolves when the certificate trust dialog is shown.\n\nOn macOS, this displays a modal dialog that shows a message and certificate information, and gives the user the option of trusting/importing the certificate. If you provide a `browserWindow` argument the dialog will be attached to the parent window, making it modal.\n\nOn Windows the options are more limited, due to the Win32 APIs used:\n\n* The `message` argument is not used, as the OS provides its own confirmation dialog.\n* The `browserWindow` argument is ignored since it is not possible to make this confirmation dialog modal.",
        "parameters": [
          {
            "name": "browserWindow",
            "description": "",
            "required": false,
            "collection": false,
            "type": "BrowserWindow"
          },
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "certificate",
                "description": "The certificate to trust/import.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Certificate"
              },
              {
                "name": "message",
                "description": "The message to display to the user.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#dialogshowcertificatetrustdialogbrowserwindow-options-macos-windows"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "Dock",
    "description": "",
    "slug": "dock",
    "websiteUrl": "https://electronjs.org/docs/api/dock",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/dock.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": null,
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "bounce",
        "signature": "([type])",
        "description": "an ID representing the request.\n\nWhen `critical` is passed, the dock icon will bounce until either the application becomes active or the request is canceled.\n\nWhen `informational` is passed, the dock icon will bounce for one second. However, the request remains active until either the application becomes active or the request is canceled.\n\n**Note:** This method can only be used while the app is not focused; when the app is focused it will return -1.",
        "parameters": [
          {
            "name": "type",
            "description": "Can be `critical` or `informational`. The default is `informational`",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "critical",
                "description": ""
              },
              {
                "value": "informational",
                "description": ""
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Integer"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#dockbouncetype-macos"
      },
      {
        "name": "cancelBounce",
        "signature": "(id)",
        "description": "Cancel the bounce of `id`.",
        "parameters": [
          {
            "name": "id",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#dockcancelbounceid-macos"
      },
      {
        "name": "downloadFinished",
        "signature": "(filePath)",
        "description": "Bounces the Downloads stack if the filePath is inside the Downloads folder.",
        "parameters": [
          {
            "name": "filePath",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#dockdownloadfinishedfilepath-macos"
      },
      {
        "name": "setBadge",
        "signature": "(text)",
        "description": "Sets the string to be displayed in the dock’s badging area.",
        "parameters": [
          {
            "name": "text",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#docksetbadgetext-macos"
      },
      {
        "name": "getBadge",
        "signature": "()",
        "description": "The badge string of the dock.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#dockgetbadge-macos"
      },
      {
        "name": "hide",
        "signature": "()",
        "description": "Hides the dock icon.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#dockhide-macos"
      },
      {
        "name": "show",
        "signature": "()",
        "description": "Resolves when the dock icon is shown.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#dockshow-macos"
      },
      {
        "name": "isVisible",
        "signature": "()",
        "description": "Whether the dock icon is visible.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#dockisvisible-macos"
      },
      {
        "name": "setMenu",
        "signature": "(menu)",
        "description": "Sets the application's dock menu.",
        "parameters": [
          {
            "name": "menu",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Menu"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#docksetmenumenu-macos"
      },
      {
        "name": "getMenu",
        "signature": "()",
        "description": "The application's dock menu.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "Menu"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#dockgetmenu-macos"
      },
      {
        "name": "setIcon",
        "signature": "(image)",
        "description": "Sets the `image` associated with this dock icon.",
        "parameters": [
          {
            "name": "image",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "NativeImage"
              },
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#dockseticonimage-macos"
      }
    ],
    "instanceProperties": [],
    "instanceEvents": [],
    "instanceName": "dock"
  },
  {
    "name": "DownloadItem",
    "description": "",
    "slug": "download-item",
    "websiteUrl": "https://electronjs.org/docs/api/download-item",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/download-item.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": null,
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "setSavePath",
        "signature": "(path)",
        "description": "The API is only available in session's `will-download` callback function. If `path` doesn't exist, Electron will try to make the directory recursively. If user doesn't set the save path via the API, Electron will use the original routine to determine the save path; this usually prompts a save dialog.",
        "parameters": [
          {
            "name": "path",
            "description": "Set the save file path of the download item.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#downloaditemsetsavepathpath"
      },
      {
        "name": "getSavePath",
        "signature": "()",
        "description": "The save path of the download item. This will be either the path set via `downloadItem.setSavePath(path)` or the path selected from the shown save dialog.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemgetsavepath"
      },
      {
        "name": "setSaveDialogOptions",
        "signature": "(options)",
        "description": "This API allows the user to set custom options for the save dialog that opens for the download item by default. The API is only available in session's `will-download` callback function.",
        "parameters": [
          {
            "name": "options",
            "description": "Set the save file dialog options. This object has the same properties as the `options` parameter of `dialog.showSaveDialog()`.",
            "required": true,
            "collection": false,
            "type": "SaveDialogOptions"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#downloaditemsetsavedialogoptionsoptions"
      },
      {
        "name": "getSaveDialogOptions",
        "signature": "()",
        "description": "Returns the object previously set by `downloadItem.setSaveDialogOptions(options)`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "SaveDialogOptions"
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemgetsavedialogoptions"
      },
      {
        "name": "pause",
        "signature": "()",
        "description": "Pauses the download.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#downloaditempause"
      },
      {
        "name": "isPaused",
        "signature": "()",
        "description": "Whether the download is paused.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemispaused"
      },
      {
        "name": "resume",
        "signature": "()",
        "description": "Resumes the download that has been paused.\n\n**Note:** To enable resumable downloads the server you are downloading from must support range requests and provide both `Last-Modified` and `ETag` header values. Otherwise `resume()` will dismiss previously received bytes and restart the download from the beginning.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#downloaditemresume"
      },
      {
        "name": "canResume",
        "signature": "()",
        "description": "Whether the download can resume.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemcanresume"
      },
      {
        "name": "cancel",
        "signature": "()",
        "description": "Cancels the download operation.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#downloaditemcancel"
      },
      {
        "name": "getURL",
        "signature": "()",
        "description": "The origin URL where the item is downloaded from.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemgeturl"
      },
      {
        "name": "getMimeType",
        "signature": "()",
        "description": "The files mime type.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemgetmimetype"
      },
      {
        "name": "hasUserGesture",
        "signature": "()",
        "description": "Whether the download has user gesture.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemhasusergesture"
      },
      {
        "name": "getFilename",
        "signature": "()",
        "description": "The file name of the download item.\n\n**Note:** The file name is not always the same as the actual one saved in local disk. If user changes the file name in a prompted download saving dialog, the actual name of saved file will be different.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemgetfilename"
      },
      {
        "name": "getCurrentBytesPerSecond",
        "signature": "()",
        "description": "The current download speed in bytes per second.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemgetcurrentbytespersecond"
      },
      {
        "name": "getTotalBytes",
        "signature": "()",
        "description": "The total size in bytes of the download item.\n\nIf the size is unknown, it returns 0.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemgettotalbytes"
      },
      {
        "name": "getReceivedBytes",
        "signature": "()",
        "description": "The received bytes of the download item.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemgetreceivedbytes"
      },
      {
        "name": "getPercentComplete",
        "signature": "()",
        "description": "The download completion in percent.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemgetpercentcomplete"
      },
      {
        "name": "getContentDisposition",
        "signature": "()",
        "description": "The Content-Disposition field from the response header.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemgetcontentdisposition"
      },
      {
        "name": "getState",
        "signature": "()",
        "description": "The current state. Can be `progressing`, `completed`, `cancelled` or `interrupted`.\n\n**Note:** The following methods are useful specifically to resume a `cancelled` item when session is restarted.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": [
            {
              "value": "progressing",
              "description": ""
            },
            {
              "value": "completed",
              "description": ""
            },
            {
              "value": "cancelled",
              "description": ""
            },
            {
              "value": "interrupted",
              "description": ""
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemgetstate"
      },
      {
        "name": "getURLChain",
        "signature": "()",
        "description": "The complete URL chain of the item including any redirects.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemgeturlchain"
      },
      {
        "name": "getLastModifiedTime",
        "signature": "()",
        "description": "Last-Modified header value.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemgetlastmodifiedtime"
      },
      {
        "name": "getETag",
        "signature": "()",
        "description": "ETag header value.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemgetetag"
      },
      {
        "name": "getStartTime",
        "signature": "()",
        "description": "Number of seconds since the UNIX epoch when the download was started.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Double"
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemgetstarttime"
      },
      {
        "name": "getEndTime",
        "signature": "()",
        "description": "Number of seconds since the UNIX epoch when the download ended.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Double"
        },
        "additionalTags": [],
        "urlFragment": "#downloaditemgetendtime"
      }
    ],
    "instanceProperties": [
      {
        "name": "savePath",
        "description": "A `string` property that determines the save file path of the download item.\n\nThe property is only available in session's `will-download` callback function. If user doesn't set the save path via the property, Electron will use the original routine to determine the save path; this usually prompts a save dialog.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#downloaditemsavepath",
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ],
    "instanceEvents": [
      {
        "name": "updated",
        "description": "Emitted when the download has been updated and is not done.\n\nThe `state` can be one of following:\n\n* `progressing` - The download is in-progress.\n* `interrupted` - The download has interrupted and can be resumed.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "state",
            "description": "Can be `progressing` or `interrupted`.",
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "progressing",
                "description": ""
              },
              {
                "value": "interrupted",
                "description": ""
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-updated"
      },
      {
        "name": "done",
        "description": "Emitted when the download is in a terminal state. This includes a completed download, a cancelled download (via `downloadItem.cancel()`), and interrupted download that can't be resumed.\n\nThe `state` can be one of following:\n\n* `completed` - The download completed successfully.\n* `cancelled` - The download has been cancelled.\n* `interrupted` - The download has interrupted and can not resume.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "state",
            "description": "Can be `completed`, `cancelled` or `interrupted`.",
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "completed",
                "description": ""
              },
              {
                "value": "cancelled",
                "description": ""
              },
              {
                "value": "interrupted",
                "description": ""
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-done"
      }
    ],
    "instanceName": "downloadItem"
  },
  {
    "name": "globalShortcut",
    "description": "> Detect keyboard events when the application does not have keyboard focus.\n\nProcess: Main\n\nThe `globalShortcut` module can register/unregister a global keyboard shortcut with the operating system so that you can customize the operations for various shortcuts.\n\n**Note:** The shortcut is global; it will work even if the app does not have the keyboard focus. This module cannot be used before the `ready` event of the app module is emitted.",
    "slug": "global-shortcut",
    "websiteUrl": "https://electronjs.org/docs/api/global-shortcut",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/global-shortcut.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "register",
        "signature": "(accelerator, callback)",
        "description": "Whether or not the shortcut was registered successfully.\n\nRegisters a global shortcut of `accelerator`. The `callback` is called when the registered shortcut is pressed by the user.\n\nWhen the accelerator is already taken by other applications, this call will silently fail. This behavior is intended by operating systems, since they don't want applications to fight for global shortcuts.\n\nThe following accelerators will not be registered successfully on macOS 10.14 Mojave unless the app has been authorized as a trusted accessibility client:\n\n* \"Media Play/Pause\"\n* \"Media Next Track\"\n* \"Media Previous Track\"\n* \"Media Stop\"",
        "parameters": [
          {
            "name": "accelerator",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Accelerator"
          },
          {
            "name": "callback",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#globalshortcutregisteraccelerator-callback"
      },
      {
        "name": "registerAll",
        "signature": "(accelerators, callback)",
        "description": "Registers a global shortcut of all `accelerator` items in `accelerators`. The `callback` is called when any of the registered shortcuts are pressed by the user.\n\nWhen a given accelerator is already taken by other applications, this call will silently fail. This behavior is intended by operating systems, since they don't want applications to fight for global shortcuts.\n\nThe following accelerators will not be registered successfully on macOS 10.14 Mojave unless the app has been authorized as a trusted accessibility client:\n\n* \"Media Play/Pause\"\n* \"Media Next Track\"\n* \"Media Previous Track\"\n* \"Media Stop\"",
        "parameters": [
          {
            "name": "accelerators",
            "description": "an array of Accelerators.",
            "required": true,
            "collection": true,
            "type": "Accelerator"
          },
          {
            "name": "callback",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [],
            "returns": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#globalshortcutregisterallaccelerators-callback"
      },
      {
        "name": "isRegistered",
        "signature": "(accelerator)",
        "description": "Whether this application has registered `accelerator`.\n\nWhen the accelerator is already taken by other applications, this call will still return `false`. This behavior is intended by operating systems, since they don't want applications to fight for global shortcuts.",
        "parameters": [
          {
            "name": "accelerator",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Accelerator"
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#globalshortcutisregisteredaccelerator"
      },
      {
        "name": "unregister",
        "signature": "(accelerator)",
        "description": "Unregisters the global shortcut of `accelerator`.",
        "parameters": [
          {
            "name": "accelerator",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Accelerator"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#globalshortcutunregisteraccelerator"
      },
      {
        "name": "unregisterAll",
        "signature": "()",
        "description": "Unregisters all of the global shortcuts.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#globalshortcutunregisterall"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "inAppPurchase",
    "description": "> In-app purchases on Mac App Store.\n\nProcess: Main",
    "slug": "in-app-purchase",
    "websiteUrl": "https://electronjs.org/docs/api/in-app-purchase",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/in-app-purchase.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "purchaseProduct",
        "signature": "(productID[, opts])",
        "description": "Returns `true` if the product is valid and added to the payment queue.\n\nYou should listen for the `transactions-updated` event as soon as possible and certainly before you call `purchaseProduct`.",
        "parameters": [
          {
            "name": "productID",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "opts",
            "description": "If specified as an integer, defines the quantity.",
            "required": false,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Integer"
              },
              {
                "collection": false,
                "type": "Object",
                "properties": [
                  {
                    "name": "quantity",
                    "description": "The number of items the user wants to purchase.",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "Integer"
                  },
                  {
                    "name": "username",
                    "description": "The string that associates the transaction with a user account on your service (applicationUsername).",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  }
                ]
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "boolean"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#inapppurchasepurchaseproductproductid-opts"
      },
      {
        "name": "getProducts",
        "signature": "(productIDs)",
        "description": "Resolves with an array of `Product` objects.\n\nRetrieves the product descriptions.",
        "parameters": [
          {
            "name": "productIDs",
            "description": "The identifiers of the products to get.",
            "required": true,
            "collection": true,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": true,
              "type": "Product"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#inapppurchasegetproductsproductids"
      },
      {
        "name": "canMakePayments",
        "signature": "()",
        "description": "whether a user can make a payment.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#inapppurchasecanmakepayments"
      },
      {
        "name": "restoreCompletedTransactions",
        "signature": "()",
        "description": "Restores finished transactions. This method can be called either to install purchases on additional devices, or to restore purchases for an application that the user deleted and reinstalled.\n\nThe payment queue delivers a new transaction for each previously completed transaction that can be restored. Each transaction includes a copy of the original transaction.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#inapppurchaserestorecompletedtransactions"
      },
      {
        "name": "getReceiptURL",
        "signature": "()",
        "description": "the path to the receipt.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#inapppurchasegetreceipturl"
      },
      {
        "name": "finishAllTransactions",
        "signature": "()",
        "description": "Completes all pending transactions.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#inapppurchasefinishalltransactions"
      },
      {
        "name": "finishTransactionByDate",
        "signature": "(date)",
        "description": "Completes the pending transactions corresponding to the date.",
        "parameters": [
          {
            "name": "date",
            "description": "The ISO formatted date of the transaction to finish.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#inapppurchasefinishtransactionbydatedate"
      }
    ],
    "properties": [],
    "events": [
      {
        "name": "transactions-updated",
        "description": "",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-transactions-updated"
      }
    ],
    "exportedClasses": []
  },
  {
    "name": "IncomingMessage",
    "description": "",
    "slug": "incoming-message",
    "websiteUrl": "https://electronjs.org/docs/api/incoming-message",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/incoming-message.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": true,
      "exported": false
    },
    "constructorMethod": null,
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [],
    "instanceProperties": [
      {
        "name": "statusCode",
        "description": "An `Integer` indicating the HTTP response status code.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#responsestatuscode",
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "statusMessage",
        "description": "A `string` representing the HTTP status message.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#responsestatusmessage",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "headers",
        "description": "A `Record<string, string | string[]>` representing the HTTP response headers. The `headers` object is formatted as follows:\n\n* All header names are lowercased.\n* Duplicates of `age`, `authorization`, `content-length`, `content-type`, `etag`, `expires`, `from`, `host`, `if-modified-since`, `if-unmodified-since`, `last-modified`, `location`, `max-forwards`, `proxy-authorization`, `referer`, `retry-after`, `server`, or `user-agent` are discarded.\n* `set-cookie` is always an array. Duplicates are added to the array.\n* For duplicate `cookie` headers, the values are joined together with '; '.\n* For all other headers, the values are joined together with ', '.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#responseheaders",
        "collection": false,
        "type": "Record",
        "innerTypes": [
          {
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "collection": true,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ]
      },
      {
        "name": "httpVersion",
        "description": "A `string` indicating the HTTP protocol version number. Typical values are '1.0' or '1.1'. Additionally `httpVersionMajor` and `httpVersionMinor` are two Integer-valued readable properties that return respectively the HTTP major and minor version numbers.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#responsehttpversion",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "httpVersionMajor",
        "description": "An `Integer` indicating the HTTP protocol major version number.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#responsehttpversionmajor",
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "httpVersionMinor",
        "description": "An `Integer` indicating the HTTP protocol minor version number.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#responsehttpversionminor",
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "rawHeaders",
        "description": "A `string[]` containing the raw HTTP response headers exactly as they were received. The keys and values are in the same list. It is not a list of tuples. So, the even-numbered offsets are key values, and the odd-numbered offsets are the associated values. Header names are not lowercased, and duplicates are not merged.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#responserawheaders",
        "collection": true,
        "type": "String",
        "possibleValues": null
      }
    ],
    "instanceEvents": [
      {
        "name": "data",
        "description": "The `data` event is the usual method of transferring response data into applicative code.",
        "parameters": [
          {
            "name": "chunk",
            "description": "A chunk of response body's data.",
            "collection": false,
            "type": "Buffer",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-data"
      },
      {
        "name": "end",
        "description": "Indicates that response body has ended. Must be placed before 'data' event.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-end"
      },
      {
        "name": "aborted",
        "description": "Emitted when a request has been canceled during an ongoing HTTP transaction.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-aborted"
      },
      {
        "name": "error",
        "description": "Emitted when an error was encountered while streaming response data events. For instance, if the server closes the underlying while the response is still streaming, an `error` event will be emitted on the response object and a `close` event will subsequently follow on the request object.",
        "parameters": [
          {
            "name": "error",
            "description": "Typically holds an error string identifying failure root cause.",
            "collection": false,
            "type": "Error",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-error"
      }
    ],
    "instanceName": "incomingMessage"
  },
  {
    "name": "ipcMain",
    "description": "\n\n### ipcMain\n\n> Communicate asynchronously from the main process to renderer processes.\n\nProcess: Main\n\nThe `ipcMain` module is an Event Emitter. When used in the main process, it handles asynchronous and synchronous messages sent from a renderer process (web page). Messages sent from a renderer will be emitted to this module.\n\nFor usage examples, check out the IPC tutorial.\n\n### Sending messages\n\nIt is also possible to send messages from the main process to the renderer process, see webContents.send for more information.\n\n* When sending a message, the event name is the `channel`.\n* To reply to a synchronous message, you need to set `event.returnValue`.\n* To send an asynchronous message back to the sender, you can use `event.reply(...)`.  This helper method will automatically handle messages coming from frames that aren't the main frame (e.g. iframes) whereas `event.sender.send(...)` will always send to the main frame.",
    "slug": "ipc-main",
    "websiteUrl": "https://electronjs.org/docs/api/ipc-main",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/ipc-main.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "on",
        "signature": "(channel, listener)",
        "description": "Listens to `channel`, when a new message arrives `listener` would be called with `listener(event, args...)`.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "event",
                "description": "",
                "required": true,
                "collection": false,
                "type": "IpcMainEvent"
              },
              {
                "name": "...args",
                "description": "",
                "required": true,
                "collection": true,
                "type": "any"
              }
            ],
            "returns": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#ipcmainonchannel-listener"
      },
      {
        "name": "once",
        "signature": "(channel, listener)",
        "description": "Adds a one time `listener` function for the event. This `listener` is invoked only the next time a message is sent to `channel`, after which it is removed.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "event",
                "description": "",
                "required": true,
                "collection": false,
                "type": "IpcMainEvent"
              },
              {
                "name": "...args",
                "description": "",
                "required": true,
                "collection": true,
                "type": "any"
              }
            ],
            "returns": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#ipcmainoncechannel-listener"
      },
      {
        "name": "removeListener",
        "signature": "(channel, listener)",
        "description": "Removes the specified `listener` from the listener array for the specified `channel`.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "...args",
                "description": "",
                "required": true,
                "collection": true,
                "type": "any"
              }
            ],
            "returns": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#ipcmainremovelistenerchannel-listener"
      },
      {
        "name": "removeAllListeners",
        "signature": "([channel])",
        "description": "Removes listeners of the specified `channel`.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#ipcmainremovealllistenerschannel"
      },
      {
        "name": "handle",
        "signature": "(channel, listener)",
        "description": "Adds a handler for an `invoke`able IPC. This handler will be called whenever a renderer calls `ipcRenderer.invoke(channel, ...args)`.\n\nIf `listener` returns a Promise, the eventual result of the promise will be returned as a reply to the remote caller. Otherwise, the return value of the listener will be used as the value of the reply.\n\nThe `event` that is passed as the first argument to the handler is the same as that passed to a regular event listener. It includes information about which WebContents is the source of the invoke request.\n\nErrors thrown through `handle` in the main process are not transparent as they are serialized and only the `message` property from the original error is provided to the renderer process. Please refer to #24427 for details.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "event",
                "description": "",
                "required": true,
                "collection": false,
                "type": "IpcMainInvokeEvent"
              },
              {
                "name": "...args",
                "description": "",
                "required": true,
                "collection": true,
                "type": "any"
              }
            ],
            "returns": {
              "collection": false,
              "type": [
                {
                  "collection": false,
                  "type": "Promise",
                  "innerTypes": [
                    {
                      "collection": false,
                      "type": "any"
                    }
                  ]
                },
                {
                  "collection": false,
                  "type": "any"
                }
              ]
            }
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#ipcmainhandlechannel-listener"
      },
      {
        "name": "handleOnce",
        "signature": "(channel, listener)",
        "description": "Handles a single `invoke`able IPC message, then removes the listener. See `ipcMain.handle(channel, listener)`.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "event",
                "description": "",
                "required": true,
                "collection": false,
                "type": "IpcMainInvokeEvent"
              },
              {
                "name": "...args",
                "description": "",
                "required": true,
                "collection": true,
                "type": "any"
              }
            ],
            "returns": {
              "collection": false,
              "type": [
                {
                  "collection": false,
                  "type": "Promise",
                  "innerTypes": [
                    {
                      "collection": false,
                      "type": "any"
                    }
                  ]
                },
                {
                  "collection": false,
                  "type": "any"
                }
              ]
            }
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#ipcmainhandleoncechannel-listener"
      },
      {
        "name": "removeHandler",
        "signature": "(channel)",
        "description": "Removes any handler for `channel`, if present.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#ipcmainremovehandlerchannel"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "ipcRenderer",
    "description": "\n\n### ipcRenderer\n\n> Communicate asynchronously from a renderer process to the main process.\n\nProcess: Renderer\n\nThe `ipcRenderer` module is an  EventEmitter. It provides a few methods so you can send synchronous and asynchronous messages from the render process (web page) to the main process. You can also receive replies from the main process.\n\nSee IPC tutorial for code examples.",
    "slug": "ipc-renderer",
    "websiteUrl": "https://electronjs.org/docs/api/ipc-renderer",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/ipc-renderer.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": false,
      "renderer": true,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "on",
        "signature": "(channel, listener)",
        "description": "Listens to `channel`, when a new message arrives `listener` would be called with `listener(event, args...)`.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "event",
                "description": "",
                "required": true,
                "collection": false,
                "type": "IpcRendererEvent"
              },
              {
                "name": "...args",
                "description": "",
                "required": true,
                "collection": true,
                "type": "any"
              }
            ],
            "returns": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#ipcrendereronchannel-listener"
      },
      {
        "name": "off",
        "signature": "(channel, listener)",
        "description": "Alias for `ipcRenderer.removeListener`.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "event",
                "description": "",
                "required": true,
                "collection": false,
                "type": "IpcRendererEvent"
              },
              {
                "name": "...args",
                "description": "",
                "required": true,
                "collection": true,
                "type": "any"
              }
            ],
            "returns": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#ipcrendereroffchannel-listener"
      },
      {
        "name": "once",
        "signature": "(channel, listener)",
        "description": "Adds a one time `listener` function for the event. This `listener` is invoked only the next time a message is sent to `channel`, after which it is removed.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "event",
                "description": "",
                "required": true,
                "collection": false,
                "type": "IpcRendererEvent"
              },
              {
                "name": "...args",
                "description": "",
                "required": true,
                "collection": true,
                "type": "any"
              }
            ],
            "returns": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#ipcrendereroncechannel-listener"
      },
      {
        "name": "addListener",
        "signature": "(channel, listener)",
        "description": "Alias for `ipcRenderer.on`.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "event",
                "description": "",
                "required": true,
                "collection": false,
                "type": "IpcRendererEvent"
              },
              {
                "name": "...args",
                "description": "",
                "required": true,
                "collection": true,
                "type": "any"
              }
            ],
            "returns": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#ipcrendereraddlistenerchannel-listener"
      },
      {
        "name": "removeListener",
        "signature": "(channel, listener)",
        "description": "Removes the specified `listener` from the listener array for the specified `channel`.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "event",
                "description": "",
                "required": true,
                "collection": false,
                "type": "IpcRendererEvent"
              },
              {
                "name": "...args",
                "description": "",
                "required": true,
                "collection": true,
                "type": "any"
              }
            ],
            "returns": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#ipcrendererremovelistenerchannel-listener"
      },
      {
        "name": "removeAllListeners",
        "signature": "(channel)",
        "description": "Removes all listeners, or those of the specified `channel`.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#ipcrendererremovealllistenerschannel"
      },
      {
        "name": "send",
        "signature": "(channel, ...args)",
        "description": "Send an asynchronous message to the main process via `channel`, along with arguments. Arguments will be serialized with the Structured Clone Algorithm, just like `window.postMessage`, so prototype chains will not be included. Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will throw an exception.\n\n> **NOTE:** Sending non-standard JavaScript types such as DOM objects or special Electron objects will throw an exception.\n\nSince the main process does not have support for DOM objects such as `ImageBitmap`, `File`, `DOMMatrix` and so on, such objects cannot be sent over Electron's IPC to the main process, as the main process would have no way to decode them. Attempting to send such objects over IPC will result in an error.\n\nThe main process handles it by listening for `channel` with the `ipcMain` module.\n\nIf you need to transfer a `MessagePort` to the main process, use `ipcRenderer.postMessage`.\n\nIf you want to receive a single response from the main process, like the result of a method call, consider using `ipcRenderer.invoke`.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "...args",
            "description": "",
            "required": true,
            "collection": true,
            "type": "any"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#ipcrenderersendchannel-args"
      },
      {
        "name": "invoke",
        "signature": "(channel, ...args)",
        "description": "Resolves with the response from the main process.\n\nSend a message to the main process via `channel` and expect a result asynchronously. Arguments will be serialized with the Structured Clone Algorithm, just like `window.postMessage`, so prototype chains will not be included. Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will throw an exception.\n\nThe main process should listen for `channel` with `ipcMain.handle()`.\n\nFor example:\n\nIf you need to transfer a `MessagePort` to the main process, use `ipcRenderer.postMessage`.\n\nIf you do not need a response to the message, consider using `ipcRenderer.send`.\n\n> **Note** Sending non-standard JavaScript types such as DOM objects or special Electron objects will throw an exception.\n\nSince the main process does not have support for DOM objects such as `ImageBitmap`, `File`, `DOMMatrix` and so on, such objects cannot be sent over Electron's IPC to the main process, as the main process would have no way to decode them. Attempting to send such objects over IPC will result in an error.\n\n> **Note** If the handler in the main process throws an error, the promise returned by `invoke` will reject. However, the `Error` object in the renderer process will not be the same as the one thrown in the main process.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "...args",
            "description": "",
            "required": true,
            "collection": true,
            "type": "any"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "any"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#ipcrendererinvokechannel-args"
      },
      {
        "name": "sendSync",
        "signature": "(channel, ...args)",
        "description": "The value sent back by the `ipcMain` handler.\n\nSend a message to the main process via `channel` and expect a result synchronously. Arguments will be serialized with the Structured Clone Algorithm, just like `window.postMessage`, so prototype chains will not be included. Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will throw an exception.\n\n> **NOTE:** Sending non-standard JavaScript types such as DOM objects or special Electron objects will throw an exception.\n\nSince the main process does not have support for DOM objects such as `ImageBitmap`, `File`, `DOMMatrix` and so on, such objects cannot be sent over Electron's IPC to the main process, as the main process would have no way to decode them. Attempting to send such objects over IPC will result in an error.\n\nThe main process handles it by listening for `channel` with `ipcMain` module, and replies by setting `event.returnValue`.\n\n> :warning: **WARNING**: Sending a synchronous message will block the whole renderer process until the reply is received, so use this method only as a last resort. It's much better to use the asynchronous version, `invoke()`.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "...args",
            "description": "",
            "required": true,
            "collection": true,
            "type": "any"
          }
        ],
        "returns": {
          "collection": false,
          "type": "any"
        },
        "additionalTags": [],
        "urlFragment": "#ipcrenderersendsyncchannel-args"
      },
      {
        "name": "postMessage",
        "signature": "(channel, message, [transfer])",
        "description": "Send a message to the main process, optionally transferring ownership of zero or more `MessagePort` objects.\n\nThe transferred `MessagePort` objects will be available in the main process as `MessagePortMain` objects by accessing the `ports` property of the emitted event.\n\nFor example:\n\nFor more information on using `MessagePort` and `MessageChannel`, see the MDN documentation.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "message",
            "description": "",
            "required": true,
            "collection": false,
            "type": "any"
          },
          {
            "name": "transfer",
            "description": "",
            "required": false,
            "collection": true,
            "type": "MessagePort"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#ipcrendererpostmessagechannel-message-transfer"
      },
      {
        "name": "sendToHost",
        "signature": "(channel, ...args)",
        "description": "Like `ipcRenderer.send` but the event will be sent to the `<webview>` element in the host page instead of the main process.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "...args",
            "description": "",
            "required": true,
            "collection": true,
            "type": "any"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#ipcrenderersendtohostchannel-args"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "MenuItem",
    "description": "> Add items to native application menus and context menus.\n\nProcess: Main\n\nSee `Menu` for examples.",
    "slug": "menu-item",
    "websiteUrl": "https://electronjs.org/docs/api/menu-item",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/menu-item.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "constructorMethod": {
      "signature": "(options)",
      "parameters": [
        {
          "name": "options",
          "description": "",
          "required": true,
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "click",
              "description": "Will be called with `click(menuItem, window, event)` when the menu item is clicked.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "Function",
              "parameters": [
                {
                  "name": "menuItem",
                  "description": "",
                  "required": true,
                  "collection": false,
                  "type": "MenuItem"
                },
                {
                  "name": "window",
                  "description": "This will not be defined if no window is open.",
                  "required": true,
                  "collection": false,
                  "type": [
                    {
                      "collection": false,
                      "type": "BaseWindow"
                    },
                    {
                      "collection": false,
                      "type": "undefined"
                    }
                  ]
                },
                {
                  "name": "event",
                  "description": "",
                  "required": true,
                  "collection": false,
                  "type": "KeyboardEvent"
                }
              ],
              "returns": null
            },
            {
              "name": "role",
              "description": "Can be `undo`, `redo`, `cut`, `copy`, `paste`, `pasteAndMatchStyle`, `delete`, `selectAll`, `reload`, `forceReload`, `toggleDevTools`, `resetZoom`, `zoomIn`, `zoomOut`, `toggleSpellChecker`, `togglefullscreen`, `window`, `minimize`, `close`, `help`, `about`, `services`, `hide`, `hideOthers`, `unhide`, `quit`, `showSubstitutions`, `toggleSmartQuotes`, `toggleSmartDashes`, `toggleTextReplacement`, `startSpeaking`, `stopSpeaking`, `zoom`, `front`, `appMenu`, `fileMenu`, `editMenu`, `viewMenu`, `shareMenu`, `recentDocuments`, `toggleTabBar`, `selectNextTab`, `selectPreviousTab`, `showAllTabs`, `mergeAllWindows`, `clearRecentDocuments`, `moveTabToNewWindow` or `windowMenu` - Define the action of the menu item, when specified the `click` property will be ignored. See roles.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": [
                {
                  "value": "undo",
                  "description": ""
                },
                {
                  "value": "redo",
                  "description": ""
                },
                {
                  "value": "cut",
                  "description": ""
                },
                {
                  "value": "copy",
                  "description": ""
                },
                {
                  "value": "paste",
                  "description": ""
                },
                {
                  "value": "pasteAndMatchStyle",
                  "description": ""
                },
                {
                  "value": "delete",
                  "description": ""
                },
                {
                  "value": "selectAll",
                  "description": ""
                },
                {
                  "value": "reload",
                  "description": ""
                },
                {
                  "value": "forceReload",
                  "description": ""
                },
                {
                  "value": "toggleDevTools",
                  "description": ""
                },
                {
                  "value": "resetZoom",
                  "description": ""
                },
                {
                  "value": "zoomIn",
                  "description": ""
                },
                {
                  "value": "zoomOut",
                  "description": ""
                },
                {
                  "value": "toggleSpellChecker",
                  "description": ""
                },
                {
                  "value": "togglefullscreen",
                  "description": ""
                },
                {
                  "value": "window",
                  "description": ""
                },
                {
                  "value": "minimize",
                  "description": ""
                },
                {
                  "value": "close",
                  "description": ""
                },
                {
                  "value": "help",
                  "description": ""
                },
                {
                  "value": "about",
                  "description": ""
                },
                {
                  "value": "services",
                  "description": ""
                },
                {
                  "value": "hide",
                  "description": ""
                },
                {
                  "value": "hideOthers",
                  "description": ""
                },
                {
                  "value": "unhide",
                  "description": ""
                },
                {
                  "value": "quit",
                  "description": ""
                },
                {
                  "value": "showSubstitutions",
                  "description": ""
                },
                {
                  "value": "toggleSmartQuotes",
                  "description": ""
                },
                {
                  "value": "toggleSmartDashes",
                  "description": ""
                },
                {
                  "value": "toggleTextReplacement",
                  "description": ""
                },
                {
                  "value": "startSpeaking",
                  "description": ""
                },
                {
                  "value": "stopSpeaking",
                  "description": ""
                },
                {
                  "value": "zoom",
                  "description": ""
                },
                {
                  "value": "front",
                  "description": ""
                },
                {
                  "value": "appMenu",
                  "description": ""
                },
                {
                  "value": "fileMenu",
                  "description": ""
                },
                {
                  "value": "editMenu",
                  "description": ""
                },
                {
                  "value": "viewMenu",
                  "description": ""
                },
                {
                  "value": "shareMenu",
                  "description": ""
                },
                {
                  "value": "recentDocuments",
                  "description": ""
                },
                {
                  "value": "toggleTabBar",
                  "description": ""
                },
                {
                  "value": "selectNextTab",
                  "description": ""
                },
                {
                  "value": "selectPreviousTab",
                  "description": ""
                },
                {
                  "value": "showAllTabs",
                  "description": ""
                },
                {
                  "value": "mergeAllWindows",
                  "description": ""
                },
                {
                  "value": "clearRecentDocuments",
                  "description": ""
                },
                {
                  "value": "moveTabToNewWindow",
                  "description": ""
                },
                {
                  "value": "windowMenu",
                  "description": ""
                }
              ]
            },
            {
              "name": "type",
              "description": "Can be `normal`, `separator`, `submenu`, `checkbox` or `radio`.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": [
                {
                  "value": "normal",
                  "description": ""
                },
                {
                  "value": "separator",
                  "description": ""
                },
                {
                  "value": "submenu",
                  "description": ""
                },
                {
                  "value": "checkbox",
                  "description": ""
                },
                {
                  "value": "radio",
                  "description": ""
                }
              ]
            },
            {
              "name": "label",
              "description": "",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "sublabel",
              "description": "",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "toolTip",
              "description": "Hover text for this menu item.",
              "required": false,
              "additionalTags": [
                "os_macos"
              ],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "accelerator",
              "description": "",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "Accelerator"
            },
            {
              "name": "icon",
              "description": "",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": [
                {
                  "collection": false,
                  "type": "NativeImage"
                },
                {
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                }
              ]
            },
            {
              "name": "enabled",
              "description": "If false, the menu item will be greyed out and unclickable.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "acceleratorWorksWhenHidden",
              "description": "default is `true`, and when `false` will prevent the accelerator from triggering the item if the item is not visible.",
              "required": false,
              "additionalTags": [
                "os_macos"
              ],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "visible",
              "description": "If false, the menu item will be entirely hidden.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "checked",
              "description": "Should only be specified for `checkbox` or `radio` type menu items.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "registerAccelerator",
              "description": "If false, the accelerator won't be registered with the system, but it will still be displayed. Defaults to true.",
              "required": false,
              "additionalTags": [
                "os_linux",
                "os_windows"
              ],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "sharingItem",
              "description": "The item to share when the `role` is `shareMenu`.",
              "required": false,
              "additionalTags": [
                "os_macos"
              ],
              "collection": false,
              "type": "SharingItem"
            },
            {
              "name": "submenu",
              "description": "Should be specified for `submenu` type menu items. If `submenu` is specified, the `type: 'submenu'` can be omitted. If the value is not a `Menu` then it will be automatically converted to one using `Menu.buildFromTemplate`.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": [
                {
                  "collection": true,
                  "type": "MenuItemConstructorOptions"
                },
                {
                  "collection": false,
                  "type": "Menu"
                }
              ]
            },
            {
              "name": "id",
              "description": "Unique within a single menu. If defined then it can be used as a reference to this item by the position attribute.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "before",
              "description": "Inserts this item before the item with the specified id. If the referenced item doesn't exist the item will be inserted at the end of  the menu. Also implies that the menu item in question should be placed in the same “group” as the item.",
              "required": false,
              "additionalTags": [],
              "collection": true,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "after",
              "description": "Inserts this item after the item with the specified id. If the referenced item doesn't exist the item will be inserted at the end of the menu.",
              "required": false,
              "additionalTags": [],
              "collection": true,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "beforeGroupContaining",
              "description": "Provides a means for a single context menu to declare the placement of their containing group before the containing group of the item with the specified id.",
              "required": false,
              "additionalTags": [],
              "collection": true,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "afterGroupContaining",
              "description": "Provides a means for a single context menu to declare the placement of their containing group after the containing group of the item with the specified id.",
              "required": false,
              "additionalTags": [],
              "collection": true,
              "type": "String",
              "possibleValues": null
            }
          ]
        }
      ]
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [],
    "instanceProperties": [
      {
        "name": "id",
        "description": "A `string` indicating the item's unique id, this property can be dynamically changed.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#menuitemid",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "label",
        "description": "A `string` indicating the item's visible label.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#menuitemlabel",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "click",
        "description": "A `Function` that is fired when the MenuItem receives a click event. It can be called with `menuItem.click(event, focusedWindow, focusedWebContents)`.\n\n* `event` KeyboardEvent\n* `focusedWindow` BaseWindow\n* `focusedWebContents` WebContents",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#menuitemclick",
        "collection": false,
        "type": "Function",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "required": true,
            "collection": false,
            "type": "KeyboardEvent"
          },
          {
            "name": "focusedWindow",
            "description": "",
            "required": true,
            "collection": false,
            "type": "BaseWindow"
          },
          {
            "name": "focusedWebContents",
            "description": "",
            "required": true,
            "collection": false,
            "type": "WebContents"
          }
        ],
        "returns": null
      },
      {
        "name": "submenu",
        "description": "A `Menu` (optional) containing the menu item's submenu, if present.",
        "required": false,
        "additionalTags": [],
        "urlFragment": "#menuitemsubmenu",
        "collection": false,
        "type": "Menu"
      },
      {
        "name": "type",
        "description": "A `string` indicating the type of the item. Can be `normal`, `separator`, `submenu`, `checkbox` or `radio`.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#menuitemtype",
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "normal",
            "description": ""
          },
          {
            "value": "separator",
            "description": ""
          },
          {
            "value": "submenu",
            "description": ""
          },
          {
            "value": "checkbox",
            "description": ""
          },
          {
            "value": "radio",
            "description": ""
          }
        ]
      },
      {
        "name": "role",
        "description": "A `string` (optional) indicating the item's role, if set. Can be `undo`, `redo`, `cut`, `copy`, `paste`, `pasteAndMatchStyle`, `delete`, `selectAll`, `reload`, `forceReload`, `toggleDevTools`, `resetZoom`, `zoomIn`, `zoomOut`, `toggleSpellChecker`, `togglefullscreen`, `window`, `minimize`, `close`, `help`, `about`, `services`, `hide`, `hideOthers`, `unhide`, `quit`, `startSpeaking`, `stopSpeaking`, `zoom`, `front`, `appMenu`, `fileMenu`, `editMenu`, `viewMenu`, `shareMenu`, `recentDocuments`, `toggleTabBar`, `selectNextTab`, `selectPreviousTab`, `showAllTabs`, `mergeAllWindows`, `clearRecentDocuments`, `moveTabToNewWindow` or `windowMenu`",
        "required": false,
        "additionalTags": [],
        "urlFragment": "#menuitemrole",
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "undo",
            "description": ""
          },
          {
            "value": "redo",
            "description": ""
          },
          {
            "value": "cut",
            "description": ""
          },
          {
            "value": "copy",
            "description": ""
          },
          {
            "value": "paste",
            "description": ""
          },
          {
            "value": "pasteAndMatchStyle",
            "description": ""
          },
          {
            "value": "delete",
            "description": ""
          },
          {
            "value": "selectAll",
            "description": ""
          },
          {
            "value": "reload",
            "description": ""
          },
          {
            "value": "forceReload",
            "description": ""
          },
          {
            "value": "toggleDevTools",
            "description": ""
          },
          {
            "value": "resetZoom",
            "description": ""
          },
          {
            "value": "zoomIn",
            "description": ""
          },
          {
            "value": "zoomOut",
            "description": ""
          },
          {
            "value": "toggleSpellChecker",
            "description": ""
          },
          {
            "value": "togglefullscreen",
            "description": ""
          },
          {
            "value": "window",
            "description": ""
          },
          {
            "value": "minimize",
            "description": ""
          },
          {
            "value": "close",
            "description": ""
          },
          {
            "value": "help",
            "description": ""
          },
          {
            "value": "about",
            "description": ""
          },
          {
            "value": "services",
            "description": ""
          },
          {
            "value": "hide",
            "description": ""
          },
          {
            "value": "hideOthers",
            "description": ""
          },
          {
            "value": "unhide",
            "description": ""
          },
          {
            "value": "quit",
            "description": ""
          },
          {
            "value": "startSpeaking",
            "description": ""
          },
          {
            "value": "stopSpeaking",
            "description": ""
          },
          {
            "value": "zoom",
            "description": ""
          },
          {
            "value": "front",
            "description": ""
          },
          {
            "value": "appMenu",
            "description": ""
          },
          {
            "value": "fileMenu",
            "description": ""
          },
          {
            "value": "editMenu",
            "description": ""
          },
          {
            "value": "viewMenu",
            "description": ""
          },
          {
            "value": "shareMenu",
            "description": ""
          },
          {
            "value": "recentDocuments",
            "description": ""
          },
          {
            "value": "toggleTabBar",
            "description": ""
          },
          {
            "value": "selectNextTab",
            "description": ""
          },
          {
            "value": "selectPreviousTab",
            "description": ""
          },
          {
            "value": "showAllTabs",
            "description": ""
          },
          {
            "value": "mergeAllWindows",
            "description": ""
          },
          {
            "value": "clearRecentDocuments",
            "description": ""
          },
          {
            "value": "moveTabToNewWindow",
            "description": ""
          },
          {
            "value": "windowMenu",
            "description": ""
          }
        ]
      },
      {
        "name": "accelerator",
        "description": "An `Accelerator` (optional) indicating the item's accelerator, if set.",
        "required": false,
        "additionalTags": [],
        "urlFragment": "#menuitemaccelerator",
        "collection": false,
        "type": "Accelerator"
      },
      {
        "name": "userAccelerator",
        "description": "An `Accelerator | null` indicating the item's user-assigned accelerator for the menu item.\n\n**Note:** This property is only initialized after the `MenuItem` has been added to a `Menu`. Either via `Menu.buildFromTemplate` or via `Menu.append()/insert()`.  Accessing before initialization will just return `null`.",
        "required": true,
        "additionalTags": [
          "availability_readonly",
          "os_macos"
        ],
        "urlFragment": "#menuitemuseraccelerator-readonly-macos",
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "Accelerator"
          },
          {
            "type": "null",
            "collection": false
          }
        ]
      },
      {
        "name": "icon",
        "description": "A `NativeImage | string` (optional) indicating the item's icon, if set.",
        "required": false,
        "additionalTags": [],
        "urlFragment": "#menuitemicon",
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "NativeImage"
          },
          {
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ]
      },
      {
        "name": "sublabel",
        "description": "A `string` indicating the item's sublabel.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#menuitemsublabel",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "toolTip",
        "description": "A `string` indicating the item's hover text.",
        "required": true,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#menuitemtooltip-macos",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "enabled",
        "description": "A `boolean` indicating whether the item is enabled, this property can be dynamically changed.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#menuitemenabled",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "visible",
        "description": "A `boolean` indicating whether the item is visible, this property can be dynamically changed.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#menuitemvisible",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "checked",
        "description": "A `boolean` indicating whether the item is checked, this property can be dynamically changed.\n\nA `checkbox` menu item will toggle the `checked` property on and off when selected.\n\nA `radio` menu item will turn on its `checked` property when clicked, and will turn off that property for all adjacent items in the same menu.\n\nYou can add a `click` function for additional behavior.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#menuitemchecked",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "registerAccelerator",
        "description": "A `boolean` indicating if the accelerator should be registered with the system or just displayed.\n\nThis property can be dynamically changed.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#menuitemregisteraccelerator",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "sharingItem",
        "description": "A `SharingItem` indicating the item to share when the `role` is `shareMenu`.\n\nThis property can be dynamically changed.",
        "required": true,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#menuitemsharingitem-macos",
        "collection": false,
        "type": "SharingItem"
      },
      {
        "name": "commandId",
        "description": "A `number` indicating an item's sequential unique id.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#menuitemcommandid",
        "collection": false,
        "type": "number"
      },
      {
        "name": "menu",
        "description": "A `Menu` that the item is a part of.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#menuitemmenu",
        "collection": false,
        "type": "Menu"
      }
    ],
    "instanceEvents": [],
    "instanceName": "menuItem"
  },
  {
    "name": "Menu",
    "description": "\n\n### Class: Menu\n\n> Create native application menus and context menus.\n\nProcess: Main",
    "slug": "menu",
    "websiteUrl": "https://electronjs.org/docs/api/menu",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/menu.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "constructorMethod": {
      "signature": "()",
      "parameters": []
    },
    "staticMethods": [
      {
        "name": "setApplicationMenu",
        "signature": "(menu)",
        "description": "Sets `menu` as the application menu on macOS. On Windows and Linux, the `menu` will be set as each window's top menu.\n\nAlso on Windows and Linux, you can use a `&` in the top-level item name to indicate which letter should get a generated accelerator. For example, using `&File` for the file menu would result in a generated `Alt-F` accelerator that opens the associated menu. The indicated character in the button label then gets an underline, and the `&` character is not displayed on the button label.\n\nIn order to escape the `&` character in an item name, add a proceeding `&`. For example, `&&File` would result in `&File` displayed on the button label.\n\nPassing `null` will suppress the default menu. On Windows and Linux, this has the additional effect of removing the menu bar from the window.\n\n**Note:** The default menu will be created automatically if the app does not set one. It contains standard items such as `File`, `Edit`, `View`, `Window` and `Help`.",
        "parameters": [
          {
            "name": "menu",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Menu"
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#menusetapplicationmenumenu"
      },
      {
        "name": "getApplicationMenu",
        "signature": "()",
        "description": "The application menu, if set, or `null`, if not set.\n\n**Note:** The returned `Menu` instance doesn't support dynamic addition or removal of menu items. Instance properties can still be dynamically modified.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "Menu"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#menugetapplicationmenu"
      },
      {
        "name": "sendActionToFirstResponder",
        "signature": "(action)",
        "description": "Sends the `action` to the first responder of application. This is used for emulating default macOS menu behaviors. Usually you would use the `role` property of a `MenuItem`.\n\nSee the macOS Cocoa Event Handling Guide for more information on macOS' native actions.",
        "parameters": [
          {
            "name": "action",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#menusendactiontofirstresponderaction-macos"
      },
      {
        "name": "buildFromTemplate",
        "signature": "(template)",
        "description": "Generally, the `template` is an array of `options` for constructing a MenuItem. The usage can be referenced above.\n\nYou can also attach other fields to the element of the `template` and they will become properties of the constructed menu items.",
        "parameters": [
          {
            "name": "template",
            "description": "",
            "required": true,
            "collection": true,
            "type": [
              {
                "collection": false,
                "type": "MenuItemConstructorOptions"
              },
              {
                "collection": false,
                "type": "MenuItem"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Menu"
        },
        "additionalTags": [],
        "urlFragment": "#menubuildfromtemplatetemplate"
      }
    ],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "popup",
        "signature": "([options])",
        "description": "Pops up this menu as a context menu in the `BrowserWindow`.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "window",
                "description": "Default is the focused window.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "BrowserWindow"
              },
              {
                "name": "x",
                "description": "Default is the current mouse cursor position. Must be declared if `y` is declared.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              },
              {
                "name": "y",
                "description": "Default is the current mouse cursor position. Must be declared if `x` is declared.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              },
              {
                "name": "positioningItem",
                "description": "The index of the menu item to be positioned under the mouse cursor at the specified coordinates. Default is -1.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "number"
              },
              {
                "name": "sourceType",
                "description": "This should map to the `menuSourceType` provided by the `context-menu` event. It is not recommended to set this value manually, only provide values you receive from other APIs or leave it `undefined`. Can be `none`, `mouse`, `keyboard`, `touch`, `touchMenu`, `longPress`, `longTap`, `touchHandle`, `stylus`, `adjustSelection`, or `adjustSelectionReset`.",
                "required": false,
                "additionalTags": [
                  "os_windows",
                  "os_linux"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "none",
                    "description": ""
                  },
                  {
                    "value": "mouse",
                    "description": ""
                  },
                  {
                    "value": "keyboard",
                    "description": ""
                  },
                  {
                    "value": "touch",
                    "description": ""
                  },
                  {
                    "value": "touchMenu",
                    "description": ""
                  },
                  {
                    "value": "longPress",
                    "description": ""
                  },
                  {
                    "value": "longTap",
                    "description": ""
                  },
                  {
                    "value": "touchHandle",
                    "description": ""
                  },
                  {
                    "value": "stylus",
                    "description": ""
                  },
                  {
                    "value": "adjustSelection",
                    "description": ""
                  },
                  {
                    "value": "adjustSelectionReset",
                    "description": ""
                  }
                ]
              },
              {
                "name": "callback",
                "description": "Called when menu is closed.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Function",
                "parameters": [],
                "returns": null
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#menupopupoptions"
      },
      {
        "name": "closePopup",
        "signature": "([browserWindow])",
        "description": "Closes the context menu in the `browserWindow`.",
        "parameters": [
          {
            "name": "browserWindow",
            "description": "Default is the focused window.",
            "required": false,
            "collection": false,
            "type": "BrowserWindow"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#menuclosepopupbrowserwindow"
      },
      {
        "name": "append",
        "signature": "(menuItem)",
        "description": "Appends the `menuItem` to the menu.",
        "parameters": [
          {
            "name": "menuItem",
            "description": "",
            "required": true,
            "collection": false,
            "type": "MenuItem"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#menuappendmenuitem"
      },
      {
        "name": "getMenuItemById",
        "signature": "(id)",
        "description": "the item with the specified `id`",
        "parameters": [
          {
            "name": "id",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "MenuItem"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#menugetmenuitembyidid"
      },
      {
        "name": "insert",
        "signature": "(pos, menuItem)",
        "description": "Inserts the `menuItem` to the `pos` position of the menu.",
        "parameters": [
          {
            "name": "pos",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "menuItem",
            "description": "",
            "required": true,
            "collection": false,
            "type": "MenuItem"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#menuinsertpos-menuitem"
      }
    ],
    "instanceProperties": [
      {
        "name": "items",
        "description": "A `MenuItem[]` array containing the menu's items.\n\nEach `Menu` consists of multiple `MenuItem`s and each `MenuItem` can have a submenu.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#menuitems",
        "collection": true,
        "type": "MenuItem"
      }
    ],
    "instanceEvents": [
      {
        "name": "menu-will-show",
        "description": "Emitted when `menu.popup()` is called.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-menu-will-show"
      },
      {
        "name": "menu-will-close",
        "description": "Emitted when a popup is closed either manually or with `menu.closePopup()`.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-menu-will-close"
      }
    ],
    "instanceName": "Menu"
  },
  {
    "name": "MessageChannelMain",
    "description": "",
    "slug": "message-channel-main",
    "websiteUrl": "https://electronjs.org/docs/api/message-channel-main",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/message-channel-main.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "constructorMethod": null,
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [],
    "instanceProperties": [
      {
        "name": "port1",
        "description": "A `MessagePortMain` property.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#channelport1",
        "collection": false,
        "type": "MessagePortMain"
      },
      {
        "name": "port2",
        "description": "A `MessagePortMain` property.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#channelport2",
        "collection": false,
        "type": "MessagePortMain"
      }
    ],
    "instanceEvents": [],
    "instanceName": "channel"
  },
  {
    "name": "MessagePortMain",
    "description": "",
    "slug": "message-port-main",
    "websiteUrl": "https://electronjs.org/docs/api/message-port-main",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/message-port-main.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": null,
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "postMessage",
        "signature": "(message, [transfer])",
        "description": "Sends a message from the port, and optionally, transfers ownership of objects to other browsing contexts.",
        "parameters": [
          {
            "name": "message",
            "description": "",
            "required": true,
            "collection": false,
            "type": "any"
          },
          {
            "name": "transfer",
            "description": "",
            "required": false,
            "collection": true,
            "type": "MessagePortMain"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#portpostmessagemessage-transfer"
      },
      {
        "name": "start",
        "signature": "()",
        "description": "Starts the sending of messages queued on the port. Messages will be queued until this method is called.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#portstart"
      },
      {
        "name": "close",
        "signature": "()",
        "description": "Disconnects the port, so it is no longer active.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#portclose"
      }
    ],
    "instanceProperties": [],
    "instanceEvents": [
      {
        "name": "message",
        "description": "Emitted when a MessagePortMain object receives a message.",
        "parameters": [
          {
            "name": "messageEvent",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "data",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "any"
              },
              {
                "name": "ports",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": true,
                "type": "MessagePortMain"
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-message"
      },
      {
        "name": "close",
        "description": "Emitted when the remote end of a MessagePortMain object becomes disconnected.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-close"
      }
    ],
    "instanceName": "port"
  },
  {
    "name": "nativeImage",
    "description": "> Create tray, dock, and application icons using PNG or JPG files.\n\nProcess: Main, Renderer\n\nThe `nativeImage` module provides a unified interface for manipulating system images. These can be handy if you want to provide multiple scaled versions of the same icon or take advantage of macOS template images.\n\nElectron APIs that take image files accept either file paths or `NativeImage` instances. An empty and transparent image will be used when `null` is passed.\n\nFor example, when creating a Tray or setting a BrowserWindow's icon, you can either pass an image file path as a string:\n\n```\nconst { BrowserWindow, Tray } = require('electron')\n\nconst tray = new Tray('/Users/somebody/images/icon.png')\nconst win = new BrowserWindow({ icon: '/Users/somebody/images/window.png' })\n```\n\nor generate a `NativeImage` instance from the same file:\n\n### Supported Formats\n\nCurrently, `PNG` and `JPEG` image formats are supported across all platforms. `PNG` is recommended because of its support for transparency and lossless compression.\n\nOn Windows, you can also load `ICO` icons from file paths. For best visual quality, we recommend including at least the following sizes:\n\n* Small icon\n  * 16x16 (100% DPI scale)\n  * 20x20 (125% DPI scale)\n  * 24x24 (150% DPI scale)\n  * 32x32 (200% DPI scale)\n* Large icon\n  * 32x32 (100% DPI scale)\n  * 40x40 (125% DPI scale)\n  * 48x48 (150% DPI scale)\n  * 64x64 (200% DPI scale)\n  * 256x256\n\nCheck the _Icon Scaling_ section in the Windows App Icon Construction reference.\n\n:::note\n\nEXIF metadata is currently not supported and will not be taken into account during image encoding and decoding.\n\n:::\n\n### High Resolution Image\n\nOn platforms that support high pixel density displays (such as Apple Retina), you can append `@2x` after image's base filename to mark it as a 2x scale high resolution image.\n\nFor example, if `icon.png` is a normal image that has standard resolution, then `icon@2x.png` will be treated as a high resolution image that has double Dots per Inch (DPI) density.\n\nIf you want to support displays with different DPI densities at the same time, you can put images with different sizes in the same folder and use the filename without DPI suffixes within Electron. For example:\n\n```\nimages/\n├── icon.png\n├── icon@2x.png\n└── icon@3x.png\n```\n\n```\nconst { Tray } = require('electron')\nconst appTray = new Tray('/Users/somebody/images/icon.png')\n```\n\nThe following suffixes for DPI are also supported:\n\n* `@1x`\n* `@1.25x`\n* `@1.33x`\n* `@1.4x`\n* `@1.5x`\n* `@1.8x`\n* `@2x`\n* `@2.5x`\n* `@3x`\n* `@4x`\n* `@5x`\n\n### Template Image _macOS_\n\nOn macOS, template images consist of black and an alpha channel. Template images are not intended to be used as standalone images and are usually mixed with other content to create the desired final appearance.\n\nThe most common case is to use template images for a menu bar (Tray) icon, so it can adapt to both light and dark menu bars.\n\nTo mark an image as a template image, its base filename should end with the word `Template` (e.g. `xxxTemplate.png`). You can also specify template images at different DPI densities (e.g. `xxxTemplate@2x.png`).",
    "slug": "native-image",
    "websiteUrl": "https://electronjs.org/docs/api/native-image",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/native-image.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": true,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "createEmpty",
        "signature": "()",
        "description": "Creates an empty `NativeImage` instance.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "NativeImage"
        },
        "additionalTags": [],
        "urlFragment": "#nativeimagecreateempty"
      },
      {
        "name": "createThumbnailFromPath",
        "signature": "(path, size)",
        "description": "fulfilled with the file's thumbnail preview image, which is a NativeImage.\n\nNote: The Windows implementation will ignore `size.height` and scale the height according to `size.width`.",
        "parameters": [
          {
            "name": "path",
            "description": "path to a file that we intend to construct a thumbnail out of.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "size",
            "description": "the desired width and height (positive numbers) of the thumbnail.",
            "required": true,
            "collection": false,
            "type": "Size"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "NativeImage"
            }
          ]
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#nativeimagecreatethumbnailfrompathpath-size-macos-windows"
      },
      {
        "name": "createFromPath",
        "signature": "(path)",
        "description": "Creates a new `NativeImage` instance from a file located at `path`. This method returns an empty image if the `path` does not exist, cannot be read, or is not a valid image.",
        "parameters": [
          {
            "name": "path",
            "description": "path to a file that we intend to construct an image out of.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "NativeImage"
        },
        "additionalTags": [],
        "urlFragment": "#nativeimagecreatefrompathpath"
      },
      {
        "name": "createFromBitmap",
        "signature": "(buffer, options)",
        "description": "Creates a new `NativeImage` instance from `buffer` that contains the raw bitmap pixel data returned by `toBitmap()`. The specific format is platform-dependent.",
        "parameters": [
          {
            "name": "buffer",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Buffer"
          },
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "width",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "height",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "scaleFactor",
                "description": "Defaults to 1.0.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Number"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "NativeImage"
        },
        "additionalTags": [],
        "urlFragment": "#nativeimagecreatefrombitmapbuffer-options"
      },
      {
        "name": "createFromBuffer",
        "signature": "(buffer[, options])",
        "description": "Creates a new `NativeImage` instance from `buffer`. Tries to decode as PNG or JPEG first.",
        "parameters": [
          {
            "name": "buffer",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Buffer"
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "width",
                "description": "Required for bitmap buffers.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "height",
                "description": "Required for bitmap buffers.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "scaleFactor",
                "description": "Defaults to 1.0.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Number"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "NativeImage"
        },
        "additionalTags": [],
        "urlFragment": "#nativeimagecreatefrombufferbuffer-options"
      },
      {
        "name": "createFromDataURL",
        "signature": "(dataURL)",
        "description": "Creates a new `NativeImage` instance from `dataUrl`, a base 64 encoded Data URL string.",
        "parameters": [
          {
            "name": "dataURL",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "NativeImage"
        },
        "additionalTags": [],
        "urlFragment": "#nativeimagecreatefromdataurldataurl"
      },
      {
        "name": "createFromNamedImage",
        "signature": "(imageName[, hslShift])",
        "description": "Creates a new `NativeImage` instance from the `NSImage` that maps to the given image name. See Apple's `NSImageName` documentation for a list of possible values.\n\nThe `hslShift` is applied to the image with the following rules:\n\n* `hsl_shift[0]` (hue): The absolute hue value for the image - 0 and 1 map to 0 and 360 on the hue color wheel (red).\n* `hsl_shift[1]` (saturation): A saturation shift for the image, with the following key values: 0 = remove all color. 0.5 = leave unchanged. 1 = fully saturate the image.\n* `hsl_shift[2]` (lightness): A lightness shift for the image, with the following key values: 0 = remove all lightness (make all pixels black). 0.5 = leave unchanged. 1 = full lightness (make all pixels white).\n\nThis means that `[-1, 0, 1]` will make the image completely white and `[-1, 1, 0]` will make the image completely black.\n\nIn some cases, the `NSImageName` doesn't match its string representation; one example of this is `NSFolderImageName`, whose string representation would actually be `NSFolder`. Therefore, you'll need to determine the correct string representation for your image before passing it in. This can be done with the following:\n\nwhere `SYSTEM_IMAGE_NAME` should be replaced with any value from this list.",
        "parameters": [
          {
            "name": "imageName",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "hslShift",
            "description": "",
            "required": false,
            "collection": true,
            "type": "number"
          }
        ],
        "returns": {
          "collection": false,
          "type": "NativeImage"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#nativeimagecreatefromnamedimageimagename-hslshift-macos"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "NativeImage",
    "description": "",
    "slug": "native-image",
    "websiteUrl": "https://electronjs.org/docs/api/native-image",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/native-image.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": true,
      "utility": false,
      "exported": false
    },
    "constructorMethod": null,
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "toPNG",
        "signature": "([options])",
        "description": "A Buffer that contains the image's `PNG` encoded data.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "scaleFactor",
                "description": "Defaults to 1.0.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Number"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Buffer"
        },
        "additionalTags": [],
        "urlFragment": "#imagetopngoptions"
      },
      {
        "name": "toJPEG",
        "signature": "(quality)",
        "description": "A Buffer that contains the image's `JPEG` encoded data.",
        "parameters": [
          {
            "name": "quality",
            "description": "Between 0 - 100.",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Buffer"
        },
        "additionalTags": [],
        "urlFragment": "#imagetojpegquality"
      },
      {
        "name": "toBitmap",
        "signature": "([options])",
        "description": "A Buffer that contains a copy of the image's raw bitmap pixel data.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "scaleFactor",
                "description": "Defaults to 1.0.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Number"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Buffer"
        },
        "additionalTags": [],
        "urlFragment": "#imagetobitmapoptions"
      },
      {
        "name": "toDataURL",
        "signature": "([options])",
        "description": "The Data URL of the image.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "scaleFactor",
                "description": "Defaults to 1.0.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Number"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#imagetodataurloptions"
      },
      {
        "name": "getBitmap",
        "signature": "([options])",
        "description": "A Buffer that contains the image's raw bitmap pixel data.\n\nThe difference between `getBitmap()` and `toBitmap()` is that `getBitmap()` does not copy the bitmap data, so you have to use the returned Buffer immediately in current event loop tick; otherwise the data might be changed or destroyed.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "scaleFactor",
                "description": "Defaults to 1.0.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Number"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Buffer"
        },
        "additionalTags": [],
        "urlFragment": "#imagegetbitmapoptions"
      },
      {
        "name": "getNativeHandle",
        "signature": "()",
        "description": "A Buffer that stores C pointer to underlying native handle of the image. On macOS, a pointer to `NSImage` instance is returned.\n\nNotice that the returned pointer is a weak pointer to the underlying native image instead of a copy, so you _must_ ensure that the associated `nativeImage` instance is kept around.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Buffer"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#imagegetnativehandle-macos"
      },
      {
        "name": "isEmpty",
        "signature": "()",
        "description": "Whether the image is empty.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#imageisempty"
      },
      {
        "name": "getSize",
        "signature": "([scaleFactor])",
        "description": "If `scaleFactor` is passed, this will return the size corresponding to the image representation most closely matching the passed value.",
        "parameters": [
          {
            "name": "scaleFactor",
            "description": "Defaults to 1.0.",
            "required": false,
            "collection": false,
            "type": "Number"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Size"
        },
        "additionalTags": [],
        "urlFragment": "#imagegetsizescalefactor"
      },
      {
        "name": "setTemplateImage",
        "signature": "(option)",
        "description": "Marks the image as a macOS template image.",
        "parameters": [
          {
            "name": "option",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#imagesettemplateimageoption"
      },
      {
        "name": "isTemplateImage",
        "signature": "()",
        "description": "Whether the image is a macOS template image.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#imageistemplateimage"
      },
      {
        "name": "crop",
        "signature": "(rect)",
        "description": "The cropped image.",
        "parameters": [
          {
            "name": "rect",
            "description": "The area of the image to crop.",
            "required": true,
            "collection": false,
            "type": "Rectangle"
          }
        ],
        "returns": {
          "collection": false,
          "type": "NativeImage"
        },
        "additionalTags": [],
        "urlFragment": "#imagecroprect"
      },
      {
        "name": "resize",
        "signature": "(options)",
        "description": "The resized image.\n\nIf only the `height` or the `width` are specified then the current aspect ratio will be preserved in the resized image.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "width",
                "description": "Defaults to the image's width.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "height",
                "description": "Defaults to the image's height.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "quality",
                "description": "The desired quality of the resize image. Possible values include `good`, `better`, or `best`. The default is `best`. These values express a desired quality/speed tradeoff. They are translated into an algorithm-specific method that depends on the capabilities (CPU, GPU) of the underlying platform. It is possible for all three methods to be mapped to the same algorithm on a given platform.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "good",
                    "description": ""
                  },
                  {
                    "value": "better",
                    "description": ""
                  },
                  {
                    "value": "best",
                    "description": ""
                  }
                ]
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "NativeImage"
        },
        "additionalTags": [],
        "urlFragment": "#imageresizeoptions"
      },
      {
        "name": "getAspectRatio",
        "signature": "([scaleFactor])",
        "description": "The image's aspect ratio (width divided by height).\n\nIf `scaleFactor` is passed, this will return the aspect ratio corresponding to the image representation most closely matching the passed value.",
        "parameters": [
          {
            "name": "scaleFactor",
            "description": "Defaults to 1.0.",
            "required": false,
            "collection": false,
            "type": "Number"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Number"
        },
        "additionalTags": [],
        "urlFragment": "#imagegetaspectratioscalefactor"
      },
      {
        "name": "getScaleFactors",
        "signature": "()",
        "description": "An array of all scale factors corresponding to representations for a given `NativeImage`.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "Number"
        },
        "additionalTags": [],
        "urlFragment": "#imagegetscalefactors"
      },
      {
        "name": "addRepresentation",
        "signature": "(options)",
        "description": "Add an image representation for a specific scale factor. This can be used to programmatically add different scale factor representations to an image. This can be called on empty images.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "scaleFactor",
                "description": "The scale factor to add the image representation for.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Number"
              },
              {
                "name": "width",
                "description": "Defaults to 0. Required if a bitmap buffer is specified as `buffer`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "height",
                "description": "Defaults to 0. Required if a bitmap buffer is specified as `buffer`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "buffer",
                "description": "The buffer containing the raw image data.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Buffer"
              },
              {
                "name": "dataURL",
                "description": "The data URL containing either a base 64 encoded PNG or JPEG image.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#imageaddrepresentationoptions"
      }
    ],
    "instanceProperties": [
      {
        "name": "isMacTemplateImage",
        "description": "A `boolean` property that determines whether the image is considered a template image.\n\nPlease note that this property only has an effect on macOS.",
        "required": true,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#nativeimageismactemplateimage-macos",
        "collection": false,
        "type": "boolean"
      }
    ],
    "instanceEvents": [],
    "instanceName": "image"
  },
  {
    "name": "nativeTheme",
    "description": "> Read and respond to changes in Chromium's native color theme.\n\nProcess: Main",
    "slug": "native-theme",
    "websiteUrl": "https://electronjs.org/docs/api/native-theme",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/native-theme.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [],
    "properties": [
      {
        "name": "shouldUseDarkColors",
        "description": "A `boolean` for if the OS / Chromium currently has a dark mode enabled or is being instructed to show a dark-style UI.  If you want to modify this value you should use `themeSource` below.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#nativethemeshouldusedarkcolors-readonly",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "themeSource",
        "description": "A `string` property that can be `system`, `light` or `dark`.  It is used to override and supersede the value that Chromium has chosen to use internally.\n\nSetting this property to `system` will remove the override and everything will be reset to the OS default.  By default `themeSource` is `system`.\n\nSettings this property to `dark` will have the following effects:\n\n* `nativeTheme.shouldUseDarkColors` will be `true` when accessed\n* Any UI Electron renders on Linux and Windows including context menus, devtools, etc. will use the dark UI.\n* Any UI the OS renders on macOS including menus, window frames, etc. will use the dark UI.\n* The `prefers-color-scheme` CSS query will match `dark` mode.\n* The `updated` event will be emitted\n\nSettings this property to `light` will have the following effects:\n\n* `nativeTheme.shouldUseDarkColors` will be `false` when accessed\n* Any UI Electron renders on Linux and Windows including context menus, devtools, etc. will use the light UI.\n* Any UI the OS renders on macOS including menus, window frames, etc. will use the light UI.\n* The `prefers-color-scheme` CSS query will match `light` mode.\n* The `updated` event will be emitted\n\nThe usage of this property should align with a classic \"dark mode\" state machine in your application where the user has three options.\n\n* `Follow OS` --> `themeSource = 'system'`\n* `Dark Mode` --> `themeSource = 'dark'`\n* `Light Mode` --> `themeSource = 'light'`\n\nYour application should then always use `shouldUseDarkColors` to determine what CSS to apply.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#nativethemethemesource",
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "system",
            "description": ""
          },
          {
            "value": "light",
            "description": ""
          },
          {
            "value": "dark",
            "description": ""
          }
        ]
      },
      {
        "name": "shouldUseHighContrastColors",
        "description": "A `boolean` for if the OS / Chromium currently has high-contrast mode enabled or is being instructed to show a high-contrast UI.",
        "required": true,
        "additionalTags": [
          "os_macos",
          "os_windows",
          "availability_readonly"
        ],
        "urlFragment": "#nativethemeshouldusehighcontrastcolors-macos-windows-readonly",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "shouldUseInvertedColorScheme",
        "description": "A `boolean` for if the OS / Chromium currently has an inverted color scheme or is being instructed to use an inverted color scheme.",
        "required": true,
        "additionalTags": [
          "os_macos",
          "os_windows",
          "availability_readonly"
        ],
        "urlFragment": "#nativethemeshoulduseinvertedcolorscheme-macos-windows-readonly",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "inForcedColorsMode",
        "description": "A `boolean` indicating whether Chromium is in forced colors mode, controlled by system accessibility settings. Currently, Windows high contrast is the only system setting that triggers forced colors mode.",
        "required": true,
        "additionalTags": [
          "os_windows",
          "availability_readonly"
        ],
        "urlFragment": "#nativethemeinforcedcolorsmode-windows-readonly",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "prefersReducedTransparency",
        "description": "A `boolean` that indicates the whether the user has chosen via system accessibility settings to reduce transparency at the OS level.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#nativethemeprefersreducedtransparency-readonly",
        "collection": false,
        "type": "boolean"
      }
    ],
    "events": [
      {
        "name": "updated",
        "description": "Emitted when something in the underlying NativeTheme has changed. This normally means that either the value of `shouldUseDarkColors`, `shouldUseHighContrastColors` or `shouldUseInvertedColorScheme` has changed. You will have to check them to determine which one has changed.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-updated"
      }
    ],
    "exportedClasses": []
  },
  {
    "name": "NavigationHistory",
    "description": "",
    "slug": "navigation-history",
    "websiteUrl": "https://electronjs.org/docs/api/navigation-history",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/navigation-history.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": null,
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "getActiveIndex",
        "signature": "()",
        "description": "The index of the current page, from which we would go back/forward or reload.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#navigationhistorygetactiveindex"
      },
      {
        "name": "getEntryAtIndex",
        "signature": "(index)",
        "description": "* `url` string - The URL of the navigation entry at the given index.\n* `title` string - The page title of the navigation entry at the given index.\n\nIf index is out of bounds (greater than history length or less than 0), null will be returned.",
        "parameters": [
          {
            "name": "index",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "url",
              "description": "The URL of the navigation entry at the given index.",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "title",
              "description": "The page title of the navigation entry at the given index.",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#navigationhistorygetentryatindexindex"
      },
      {
        "name": "length",
        "signature": "()",
        "description": "History length.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#navigationhistorylength"
      }
    ],
    "instanceProperties": [],
    "instanceEvents": [],
    "instanceName": "navigationHistory"
  },
  {
    "name": "netLog",
    "description": "> Logging network events for a session.\n\nProcess: Main\n\n```\nconst { app, netLog } = require('electron')\n\napp.whenReady().then(async () => {\n  await netLog.startLogging('/path/to/net-log')\n  // After some network events\n  const path = await netLog.stopLogging()\n  console.log('Net-logs written to', path)\n})\n```\n\nSee `--log-net-log` to log network events throughout the app's lifecycle.\n\n**Note:** All methods unless specified can only be used after the `ready` event of the `app` module gets emitted.",
    "slug": "net-log",
    "websiteUrl": "https://electronjs.org/docs/api/net-log",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/net-log.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "startLogging",
        "signature": "(path[, options])",
        "description": "resolves when the net log has begun recording.\n\nStarts recording network events to `path`.",
        "parameters": [
          {
            "name": "path",
            "description": "File path to record network logs.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "captureMode",
                "description": "What kinds of data should be captured. By default, only metadata about requests will be captured. Setting this to `includeSensitive` will include cookies and authentication data. Setting it to `everything` will include all bytes transferred on sockets. Can be `default`, `includeSensitive` or `everything`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "default",
                    "description": ""
                  },
                  {
                    "value": "includeSensitive",
                    "description": ""
                  },
                  {
                    "value": "everything",
                    "description": ""
                  }
                ]
              },
              {
                "name": "maxFileSize",
                "description": "When the log grows beyond this size, logging will automatically stop. Defaults to unlimited.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#netlogstartloggingpath-options"
      },
      {
        "name": "stopLogging",
        "signature": "()",
        "description": "resolves when the net log has been flushed to disk.\n\nStops recording network events. If not called, net logging will automatically end when app quits.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#netlogstoplogging"
      }
    ],
    "properties": [
      {
        "name": "currentlyLogging",
        "description": "A `boolean` property that indicates whether network logs are currently being recorded.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#netlogcurrentlylogging-readonly",
        "collection": false,
        "type": "boolean"
      }
    ],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "net",
    "description": "> Issue HTTP/HTTPS requests using Chromium's native networking library\n\nProcess: Main, Utility\n\nThe `net` module is a client-side API for issuing HTTP(S) requests. It is similar to the HTTP and HTTPS modules of Node.js but uses Chromium's native networking library instead of the Node.js implementation, offering better support for web proxies. It also supports checking network status.\n\nThe following is a non-exhaustive list of why you may consider using the `net` module instead of the native Node.js modules:\n\n* Automatic management of system proxy configuration, support of the wpad protocol and proxy pac configuration files.\n* Automatic tunneling of HTTPS requests.\n* Support for authenticating proxies using basic, digest, NTLM, Kerberos or negotiate authentication schemes.\n* Support for traffic monitoring proxies: Fiddler-like proxies used for access control and monitoring.\n\nThe API components (including classes, methods, properties and event names) are similar to those used in Node.js.\n\nExample usage:\n\n```\nconst { app } = require('electron')\napp.whenReady().then(() => {\n  const { net } = require('electron')\n  const request = net.request('https://github.com')\n  request.on('response', (response) => {\n    console.log(`STATUS: ${response.statusCode}`)\n    console.log(`HEADERS: ${JSON.stringify(response.headers)}`)\n    response.on('data', (chunk) => {\n      console.log(`BODY: ${chunk}`)\n    })\n    response.on('end', () => {\n      console.log('No more data in response.')\n    })\n  })\n  request.end()\n})\n```\n\nThe `net` API can be used only after the application emits the `ready` event. Trying to use the module before the `ready` event will throw an error.",
    "slug": "net",
    "websiteUrl": "https://electronjs.org/docs/api/net",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/net.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": true,
      "exported": true
    },
    "methods": [
      {
        "name": "request",
        "signature": "(options)",
        "description": "Creates a `ClientRequest` instance using the provided `options` which are directly forwarded to the `ClientRequest` constructor. The `net.request` method would be used to issue both secure and insecure HTTP requests according to the specified protocol scheme in the `options` object.",
        "parameters": [
          {
            "name": "options",
            "description": "The `ClientRequest` constructor options.",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "ClientRequestConstructorOptions"
              },
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "ClientRequest"
        },
        "additionalTags": [],
        "urlFragment": "#netrequestoptions"
      },
      {
        "name": "fetch",
        "signature": "(input[, init])",
        "description": "see Response.\n\nSends a request, similarly to how `fetch()` works in the renderer, using Chrome's network stack. This differs from Node's `fetch()`, which uses Node.js's HTTP stack.\n\nExample:\n\nThis method will issue requests from the default session. To send a `fetch` request from another session, use ses.fetch().\n\nSee the MDN documentation for `fetch()` for more details.\n\nLimitations:\n\n* `net.fetch()` does not support the `data:` or `blob:` schemes.\n* The value of the `integrity` option is ignored.\n* The `.type` and `.url` values of the returned `Response` object are incorrect.\n\nBy default, requests made with `net.fetch` can be made to custom protocols as well as `file:`, and will trigger webRequest handlers if present. When the non-standard `bypassCustomProtocolHandlers` option is set in RequestInit, custom protocol handlers will not be called for this request. This allows forwarding an intercepted request to the built-in handler. webRequest handlers will still be triggered when bypassing custom protocols.\n\nNote: in the utility process custom protocols are not supported.",
        "parameters": [
          {
            "name": "input",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "collection": false,
                "type": "GlobalRequest"
              }
            ]
          },
          {
            "name": "init",
            "description": "",
            "required": false,
            "collection": false,
            "type": "RequestInit & { bypassCustomProtocolHandlers?: boolean }"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "GlobalResponse"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#netfetchinput-init"
      },
      {
        "name": "isOnline",
        "signature": "()",
        "description": "Whether there is currently internet connection.\n\nA return value of `false` is a pretty strong indicator that the user won't be able to connect to remote sites. However, a return value of `true` is inconclusive; even if some link is up, it is uncertain whether a particular connection attempt to a particular remote site will be successful.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#netisonline"
      },
      {
        "name": "resolveHost",
        "signature": "(host, [options])",
        "description": "Resolves with the resolved IP addresses for the `host`.\n\nThis method will resolve hosts from the default session. To resolve a host from another session, use ses.resolveHost().",
        "parameters": [
          {
            "name": "host",
            "description": "Hostname to resolve.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "queryType",
                "description": "Requested DNS query type. If unspecified, resolver will pick A or AAAA (or both) based on IPv4/IPv6 settings:",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "A",
                    "description": "Fetch only A records"
                  },
                  {
                    "value": "AAAA",
                    "description": "Fetch only AAAA records."
                  }
                ]
              },
              {
                "name": "source",
                "description": "The source to use for resolved addresses. Default allows the resolver to pick an appropriate source. Only affects use of big external sources (e.g. calling the system for resolution or using DNS). Even if a source is specified, results can still come from cache, resolving \"localhost\" or IP literals, etc. One of the following values:",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "any",
                    "description": "Resolver will pick an appropriate source. Results could come from DNS, MulticastDNS, HOSTS file, etc"
                  },
                  {
                    "value": "system",
                    "description": "Results will only be retrieved from the system or OS, e.g. via the `getaddrinfo()` system call"
                  },
                  {
                    "value": "dns",
                    "description": "Results will only come from DNS queries"
                  },
                  {
                    "value": "mdns",
                    "description": "Results will only come from Multicast DNS queries"
                  },
                  {
                    "value": "localOnly",
                    "description": "No external sources will be used. Results will only come from fast local sources that are available no matter the source setting, e.g. cache, hosts file, IP literal resolution, etc."
                  }
                ]
              },
              {
                "name": "cacheUsage",
                "description": "Indicates what DNS cache entries, if any, can be used to provide a response. One of the following values:",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "allowed",
                    "description": "Results may come from the host cache if non-stale"
                  },
                  {
                    "value": "staleAllowed",
                    "description": "Results may come from the host cache even if stale (by expiration or network changes)"
                  },
                  {
                    "value": "disallowed",
                    "description": "Results will not come from the host cache."
                  }
                ]
              },
              {
                "name": "secureDnsPolicy",
                "description": "Controls the resolver's Secure DNS behavior for this request. One of the following values:",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "allow",
                    "description": ""
                  },
                  {
                    "value": "disable",
                    "description": ""
                  }
                ]
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "ResolvedHost"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#netresolvehosthost-options"
      }
    ],
    "properties": [
      {
        "name": "online",
        "description": "A `boolean` property. Whether there is currently internet connection.\n\nA return value of `false` is a pretty strong indicator that the user won't be able to connect to remote sites. However, a return value of `true` is inconclusive; even if some link is up, it is uncertain whether a particular connection attempt to a particular remote site will be successful.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#netonline-readonly",
        "collection": false,
        "type": "boolean"
      }
    ],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "Notification",
    "description": "> Create OS desktop notifications\n\nProcess: Main\n\n:::info Renderer process notifications\n\nIf you want to show notifications from a renderer process you should use the web Notifications API\n\n:::\n\n### Class: Notification\n\n> Create OS desktop notifications\n\nProcess: Main\n\n`Notification` is an EventEmitter.\n\nIt creates a new `Notification` with native properties as set by the `options`.\n\n### Static Methods\n\nThe `Notification` class has the following static methods:\n\n### `Notification.isSupported()`\n\nReturns `boolean` - Whether or not desktop notifications are supported on the current system",
    "slug": "notification",
    "websiteUrl": "https://electronjs.org/docs/api/notification",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/notification.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "constructorMethod": {
      "signature": "([options])",
      "parameters": [
        {
          "name": "options",
          "description": "",
          "required": false,
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "title",
              "description": "A title for the notification, which will be displayed at the top of the notification window when it is shown.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "subtitle",
              "description": "A subtitle for the notification, which will be displayed below the title.",
              "required": false,
              "additionalTags": [
                "os_macos"
              ],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "body",
              "description": "The body text of the notification, which will be displayed below the title or subtitle.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "silent",
              "description": "Whether or not to suppress the OS notification noise when showing the notification.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "icon",
              "description": "An icon to use in the notification.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": [
                {
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                },
                {
                  "collection": false,
                  "type": "NativeImage"
                }
              ]
            },
            {
              "name": "hasReply",
              "description": "Whether or not to add an inline reply option to the notification.",
              "required": false,
              "additionalTags": [
                "os_macos"
              ],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "timeoutType",
              "description": "The timeout duration of the notification. Can be 'default' or 'never'.",
              "required": false,
              "additionalTags": [
                "os_linux",
                "os_windows"
              ],
              "collection": false,
              "type": "String",
              "possibleValues": [
                {
                  "value": "default",
                  "description": ""
                },
                {
                  "value": "never",
                  "description": ""
                }
              ]
            },
            {
              "name": "replyPlaceholder",
              "description": "The placeholder to write in the inline reply input field.",
              "required": false,
              "additionalTags": [
                "os_macos"
              ],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "sound",
              "description": "The name of the sound file to play when the notification is shown.",
              "required": false,
              "additionalTags": [
                "os_macos"
              ],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "urgency",
              "description": "The urgency level of the notification. Can be 'normal', 'critical', or 'low'.",
              "required": false,
              "additionalTags": [
                "os_linux"
              ],
              "collection": false,
              "type": "String",
              "possibleValues": [
                {
                  "value": "normal",
                  "description": ""
                },
                {
                  "value": "critical",
                  "description": ""
                },
                {
                  "value": "low",
                  "description": ""
                }
              ]
            },
            {
              "name": "actions",
              "description": "Actions to add to the notification. Please read the available actions and limitations in the `NotificationAction` documentation.",
              "required": false,
              "additionalTags": [
                "os_macos"
              ],
              "collection": true,
              "type": "NotificationAction"
            },
            {
              "name": "closeButtonText",
              "description": "A custom title for the close button of an alert. An empty string will cause the default localized text to be used.",
              "required": false,
              "additionalTags": [
                "os_macos"
              ],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "toastXml",
              "description": "A custom description of the Notification on Windows superseding all properties above. Provides full customization of design and behavior of the notification.",
              "required": false,
              "additionalTags": [
                "os_windows"
              ],
              "collection": false,
              "type": "String",
              "possibleValues": null
            }
          ]
        }
      ]
    },
    "staticMethods": [
      {
        "name": "isSupported",
        "signature": "()",
        "description": "Whether or not desktop notifications are supported on the current system",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#notificationissupported"
      }
    ],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "show",
        "signature": "()",
        "description": "Immediately shows the notification to the user. Unlike the web notification API, instantiating a `new Notification()` does not immediately show it to the user. Instead, you need to call this method before the OS will display it.\n\nIf the notification has been shown before, this method will dismiss the previously shown notification and create a new one with identical properties.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#notificationshow"
      },
      {
        "name": "close",
        "signature": "()",
        "description": "Dismisses the notification.\n\nOn Windows, calling `notification.close()` while the notification is visible on screen will dismiss the notification and remove it from the Action Center. If `notification.close()` is called after the notification is no longer visible on screen, calling `notification.close()` will try remove it from the Action Center.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#notificationclose"
      }
    ],
    "instanceProperties": [
      {
        "name": "title",
        "description": "A `string` property representing the title of the notification.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#notificationtitle",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "subtitle",
        "description": "A `string` property representing the subtitle of the notification.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#notificationsubtitle",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "body",
        "description": "A `string` property representing the body of the notification.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#notificationbody",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "replyPlaceholder",
        "description": "A `string` property representing the reply placeholder of the notification.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#notificationreplyplaceholder",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "sound",
        "description": "A `string` property representing the sound of the notification.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#notificationsound",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "closeButtonText",
        "description": "A `string` property representing the close button text of the notification.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#notificationclosebuttontext",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "silent",
        "description": "A `boolean` property representing whether the notification is silent.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#notificationsilent",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "hasReply",
        "description": "A `boolean` property representing whether the notification has a reply action.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#notificationhasreply",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "urgency",
        "description": "A `string` property representing the urgency level of the notification. Can be 'normal', 'critical', or 'low'.\n\nDefault is 'low' - see NotifyUrgency for more information.",
        "required": true,
        "additionalTags": [
          "os_linux"
        ],
        "urlFragment": "#notificationurgency-linux",
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "normal",
            "description": ""
          },
          {
            "value": "critical",
            "description": ""
          },
          {
            "value": "low",
            "description": ""
          }
        ]
      },
      {
        "name": "timeoutType",
        "description": "A `string` property representing the type of timeout duration for the notification. Can be 'default' or 'never'.\n\nIf `timeoutType` is set to 'never', the notification never expires. It stays open until closed by the calling API or the user.",
        "required": true,
        "additionalTags": [
          "os_linux",
          "os_windows"
        ],
        "urlFragment": "#notificationtimeouttype-linux-windows",
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "default",
            "description": ""
          },
          {
            "value": "never",
            "description": ""
          }
        ]
      },
      {
        "name": "actions",
        "description": "A `NotificationAction[]` property representing the actions of the notification.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#notificationactions",
        "collection": true,
        "type": "NotificationAction"
      },
      {
        "name": "toastXml",
        "description": "A `string` property representing the custom Toast XML of the notification.",
        "required": true,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#notificationtoastxml-windows",
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ],
    "instanceEvents": [
      {
        "name": "show",
        "description": "Emitted when the notification is shown to the user. Note that this event can be fired multiple times as a notification can be shown multiple times through the `show()` method.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-show"
      },
      {
        "name": "click",
        "description": "Emitted when the notification is clicked by the user.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-click"
      },
      {
        "name": "close",
        "description": "Emitted when the notification is closed by manual intervention from the user.\n\nThis event is not guaranteed to be emitted in all cases where the notification is closed.\n\nOn Windows, the `close` event can be emitted in one of three ways: programmatic dismissal with `notification.close()`, by the user closing the notification, or via system timeout. If a notification is in the Action Center after the initial `close` event is emitted, a call to `notification.close()` will remove the notification from the action center but the `close` event will not be emitted again.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-close"
      },
      {
        "name": "reply",
        "description": "Emitted when the user clicks the \"Reply\" button on a notification with `hasReply: true`.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "reply",
            "description": "The string the user entered into the inline reply field.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-reply-macos"
      },
      {
        "name": "action",
        "description": "",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "index",
            "description": "The index of the action that was activated.",
            "collection": false,
            "type": "number",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-action-macos"
      },
      {
        "name": "failed",
        "description": "Emitted when an error is encountered while creating and showing the native notification.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "error",
            "description": "The error encountered during execution of the `show()` method.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#event-failed-windows"
      }
    ],
    "instanceName": "Notification"
  },
  {
    "name": "parentPort",
    "description": "> Interface for communication with parent process.\n\nProcess: Utility\n\n`parentPort` is an EventEmitter. _This object is not exported from the `'electron'` module. It is only available as a property of the process object in the Electron API._",
    "slug": "parent-port",
    "websiteUrl": "https://electronjs.org/docs/api/parent-port",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/parent-port.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": false,
      "renderer": false,
      "utility": true,
      "exported": true
    },
    "methods": [
      {
        "name": "postMessage",
        "signature": "(message)",
        "description": "Sends a message from the process to its parent.",
        "parameters": [
          {
            "name": "message",
            "description": "",
            "required": true,
            "collection": false,
            "type": "any"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#parentportpostmessagemessage"
      }
    ],
    "properties": [],
    "events": [
      {
        "name": "message",
        "description": "Emitted when the process receives a message. Messages received on this port will be queued up until a handler is registered for this event.",
        "parameters": [
          {
            "name": "messageEvent",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "data",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "any"
              },
              {
                "name": "ports",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": true,
                "type": "MessagePortMain"
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-message"
      }
    ],
    "exportedClasses": []
  },
  {
    "name": "powerMonitor",
    "description": "> Monitor power state changes.\n\nProcess: Main",
    "slug": "power-monitor",
    "websiteUrl": "https://electronjs.org/docs/api/power-monitor",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/power-monitor.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "getSystemIdleState",
        "signature": "(idleThreshold)",
        "description": "The system's current idle state. Can be `active`, `idle`, `locked` or `unknown`.\n\nCalculate the system idle state. `idleThreshold` is the amount of time (in seconds) before considered idle.  `locked` is available on supported systems only.",
        "parameters": [
          {
            "name": "idleThreshold",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": [
            {
              "value": "active",
              "description": ""
            },
            {
              "value": "idle",
              "description": ""
            },
            {
              "value": "locked",
              "description": ""
            },
            {
              "value": "unknown",
              "description": ""
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#powermonitorgetsystemidlestateidlethreshold"
      },
      {
        "name": "getSystemIdleTime",
        "signature": "()",
        "description": "Idle time in seconds\n\nCalculate system idle time in seconds.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#powermonitorgetsystemidletime"
      },
      {
        "name": "getCurrentThermalState",
        "signature": "()",
        "description": "The system's current thermal state. Can be `unknown`, `nominal`, `fair`, `serious`, or `critical`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": [
            {
              "value": "unknown",
              "description": ""
            },
            {
              "value": "nominal",
              "description": ""
            },
            {
              "value": "fair",
              "description": ""
            },
            {
              "value": "serious",
              "description": ""
            },
            {
              "value": "critical",
              "description": ""
            }
          ]
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#powermonitorgetcurrentthermalstate-macos"
      },
      {
        "name": "isOnBatteryPower",
        "signature": "()",
        "description": "Whether the system is on battery power.\n\nTo monitor for changes in this property, use the `on-battery` and `on-ac` events.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#powermonitorisonbatterypower"
      }
    ],
    "properties": [
      {
        "name": "onBatteryPower",
        "description": "A `boolean` property. True if the system is on battery power.\n\nSee `powerMonitor.isOnBatteryPower()`.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#powermonitoronbatterypower",
        "collection": false,
        "type": "boolean"
      }
    ],
    "events": [
      {
        "name": "suspend",
        "description": "Emitted when the system is suspending.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-suspend"
      },
      {
        "name": "resume",
        "description": "Emitted when system is resuming.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-resume"
      },
      {
        "name": "on-ac",
        "description": "Emitted when the system changes to AC power.",
        "parameters": [],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-on-ac-macos-windows"
      },
      {
        "name": "on-battery",
        "description": "Emitted when system changes to battery power.",
        "parameters": [],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-on-battery-macos--windows"
      },
      {
        "name": "thermal-state-change",
        "description": "Emitted when the thermal state of the system changes. Notification of a change in the thermal status of the system, such as entering a critical temperature range. Depending on the severity, the system might take steps to reduce said temperature, for example, throttling the CPU or switching on the fans if available.\n\nApps may react to the new state by reducing expensive computing tasks (e.g. video encoding), or notifying the user. The same state might be received repeatedly.\n\nSee https://developer.apple.com/library/archive/documentation/Performance/Conceptual/power_efficiency_guidelines_osx/RespondToThermalStateChanges.html",
        "parameters": [],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-thermal-state-change-macos"
      },
      {
        "name": "speed-limit-change",
        "description": "Notification of a change in the operating system's advertised speed limit for CPUs, in percent. Values below 100 indicate that the system is impairing processing power due to thermal management.",
        "parameters": [],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-speed-limit-change-macos-windows"
      },
      {
        "name": "shutdown",
        "description": "Emitted when the system is about to reboot or shut down. If the event handler invokes `e.preventDefault()`, Electron will attempt to delay system shutdown in order for the app to exit cleanly. If `e.preventDefault()` is called, the app should exit as soon as possible by calling something like `app.quit()`.",
        "parameters": [],
        "additionalTags": [
          "os_linux",
          "os_macos"
        ],
        "urlFragment": "#event-shutdown-linux-macos"
      },
      {
        "name": "lock-screen",
        "description": "Emitted when the system is about to lock the screen.",
        "parameters": [],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-lock-screen-macos-windows"
      },
      {
        "name": "unlock-screen",
        "description": "Emitted as soon as the systems screen is unlocked.",
        "parameters": [],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-unlock-screen-macos-windows"
      },
      {
        "name": "user-did-become-active",
        "description": "Emitted when a login session is activated. See documentation for more information.",
        "parameters": [],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-user-did-become-active-macos"
      },
      {
        "name": "user-did-resign-active",
        "description": "Emitted when a login session is deactivated. See documentation for more information.",
        "parameters": [],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-user-did-resign-active-macos"
      }
    ],
    "exportedClasses": []
  },
  {
    "name": "powerSaveBlocker",
    "description": "> Block the system from entering low-power (sleep) mode.\n\nProcess: Main\n\nFor example:",
    "slug": "power-save-blocker",
    "websiteUrl": "https://electronjs.org/docs/api/power-save-blocker",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/power-save-blocker.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "start",
        "signature": "(type)",
        "description": "The blocker ID that is assigned to this power blocker.\n\nStarts preventing the system from entering lower-power mode. Returns an integer identifying the power save blocker.\n\n**Note:** `prevent-display-sleep` has higher precedence over `prevent-app-suspension`. Only the highest precedence type takes effect. In other words, `prevent-display-sleep` always takes precedence over `prevent-app-suspension`.\n\nFor example, an API calling A requests for `prevent-app-suspension`, and another calling B requests for `prevent-display-sleep`. `prevent-display-sleep` will be used until B stops its request. After that, `prevent-app-suspension` is used.",
        "parameters": [
          {
            "name": "type",
            "description": "Power save blocker type.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "prevent-app-suspension",
                "description": "Prevent the application from being suspended. Keeps system active but allows screen to be turned off. Example use cases: downloading a file or playing audio."
              },
              {
                "value": "prevent-display-sleep",
                "description": "Prevent the display from going to sleep. Keeps system and screen active. Example use case: playing video."
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#powersaveblockerstarttype"
      },
      {
        "name": "stop",
        "signature": "(id)",
        "description": "Stops the specified power save blocker.\n\nWhether the specified `powerSaveBlocker` has been stopped.",
        "parameters": [
          {
            "name": "id",
            "description": "The power save blocker id returned by `powerSaveBlocker.start`.",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#powersaveblockerstopid"
      },
      {
        "name": "isStarted",
        "signature": "(id)",
        "description": "Whether the corresponding `powerSaveBlocker` has started.",
        "parameters": [
          {
            "name": "id",
            "description": "The power save blocker id returned by `powerSaveBlocker.start`.",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#powersaveblockerisstartedid"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "process",
    "description": "> Extensions to process object.\n\nProcess: Main, Renderer\n\nElectron's `process` object is extended from the Node.js `process` object. It adds the following events, properties, and methods:\n\n### Sandbox\n\nIn sandboxed renderers the `process` object contains only a subset of the APIs:\n\n* `crash()`\n* `hang()`\n* `getCreationTime()`\n* `getHeapStatistics()`\n* `getBlinkMemoryInfo()`\n* `getProcessMemoryInfo()`\n* `getSystemMemoryInfo()`\n* `getSystemVersion()`\n* `getCPUUsage()`\n* `uptime()`\n* `argv`\n* `execPath`\n* `env`\n* `pid`\n* `arch`\n* `platform`\n* `sandboxed`\n* `contextIsolated`\n* `type`\n* `version`\n* `versions`\n* `mas`\n* `windowsStore`\n* `contextId`",
    "slug": "process",
    "websiteUrl": "https://electronjs.org/docs/api/process",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/process.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": true,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "crash",
        "signature": "()",
        "description": "Causes the main thread of the current process crash.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#processcrash"
      },
      {
        "name": "getCreationTime",
        "signature": "()",
        "description": "The number of milliseconds since epoch, or `null` if the information is unavailable\n\nIndicates the creation time of the application. The time is represented as number of milliseconds since epoch. It returns null if it is unable to get the process creation time.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "number"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#processgetcreationtime"
      },
      {
        "name": "getCPUUsage",
        "signature": "()",
        "description": "",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "CPUUsage"
        },
        "additionalTags": [],
        "urlFragment": "#processgetcpuusage"
      },
      {
        "name": "getHeapStatistics",
        "signature": "()",
        "description": "* `totalHeapSize` Integer\n* `totalHeapSizeExecutable` Integer\n* `totalPhysicalSize` Integer\n* `totalAvailableSize` Integer\n* `usedHeapSize` Integer\n* `heapSizeLimit` Integer\n* `mallocedMemory` Integer\n* `peakMallocedMemory` Integer\n* `doesZapGarbage` boolean\n\nReturns an object with V8 heap statistics. Note that all statistics are reported in Kilobytes.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "totalHeapSize",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "totalHeapSizeExecutable",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "totalPhysicalSize",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "totalAvailableSize",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "usedHeapSize",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "heapSizeLimit",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "mallocedMemory",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "peakMallocedMemory",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "doesZapGarbage",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "boolean"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#processgetheapstatistics"
      },
      {
        "name": "getBlinkMemoryInfo",
        "signature": "()",
        "description": "* `allocated` Integer - Size of all allocated objects in Kilobytes.\n* `total` Integer - Total allocated space in Kilobytes.\n\nReturns an object with Blink memory information. It can be useful for debugging rendering / DOM related memory issues. Note that all values are reported in Kilobytes.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "allocated",
              "description": "Size of all allocated objects in Kilobytes.",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "total",
              "description": "Total allocated space in Kilobytes.",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#processgetblinkmemoryinfo"
      },
      {
        "name": "getProcessMemoryInfo",
        "signature": "()",
        "description": "Resolves with a ProcessMemoryInfo\n\nReturns an object giving memory usage statistics about the current process. Note that all statistics are reported in Kilobytes. This api should be called after app ready.\n\nChromium does not provide `residentSet` value for macOS. This is because macOS performs in-memory compression of pages that haven't been recently used. As a result the resident set size value is not what one would expect. `private` memory is more representative of the actual pre-compression memory usage of the process on macOS.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "ProcessMemoryInfo"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#processgetprocessmemoryinfo"
      },
      {
        "name": "getSystemMemoryInfo",
        "signature": "()",
        "description": "* `total` Integer - The total amount of physical memory in Kilobytes available to the system.\n* `free` Integer - The total amount of memory not being used by applications or disk cache.\n* `swapTotal` Integer _Windows_ _Linux_ - The total amount of swap memory in Kilobytes available to the system.\n* `swapFree` Integer _Windows_ _Linux_ - The free amount of swap memory in Kilobytes available to the system.\n\nReturns an object giving memory usage statistics about the entire system. Note that all statistics are reported in Kilobytes.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "total",
              "description": "The total amount of physical memory in Kilobytes available to the system.",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "free",
              "description": "The total amount of memory not being used by applications or disk cache.",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "swapTotal",
              "description": "The total amount of swap memory in Kilobytes available to the system.",
              "required": true,
              "additionalTags": [
                "os_windows",
                "os_linux"
              ],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "swapFree",
              "description": "The free amount of swap memory in Kilobytes available to the system.",
              "required": true,
              "additionalTags": [
                "os_windows",
                "os_linux"
              ],
              "collection": false,
              "type": "Integer"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#processgetsystemmemoryinfo"
      },
      {
        "name": "getSystemVersion",
        "signature": "()",
        "description": "The version of the host operating system.\n\nExample:\n\n**Note:** It returns the actual operating system version instead of kernel version on macOS unlike `os.release()`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#processgetsystemversion"
      },
      {
        "name": "takeHeapSnapshot",
        "signature": "(filePath)",
        "description": "Indicates whether the snapshot has been created successfully.\n\nTakes a V8 heap snapshot and saves it to `filePath`.",
        "parameters": [
          {
            "name": "filePath",
            "description": "Path to the output file.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#processtakeheapsnapshotfilepath"
      },
      {
        "name": "hang",
        "signature": "()",
        "description": "Causes the main thread of the current process hang.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#processhang"
      },
      {
        "name": "setFdLimit",
        "signature": "(maxDescriptors)",
        "description": "Sets the file descriptor soft limit to `maxDescriptors` or the OS hard limit, whichever is lower for the current process.",
        "parameters": [
          {
            "name": "maxDescriptors",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_linux"
        ],
        "urlFragment": "#processsetfdlimitmaxdescriptors-macos-linux"
      }
    ],
    "properties": [
      {
        "name": "defaultApp",
        "description": "A `boolean`. When the app is started by being passed as parameter to the default Electron executable, this property is `true` in the main process, otherwise it is `undefined`. For example when running the app with `electron .`, it is `true`, even if the app is packaged (`isPackaged`) is `true`. This can be useful to determine how many arguments will need to be sliced off from `process.argv`.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#processdefaultapp-readonly",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "isMainFrame",
        "description": "A `boolean`, `true` when the current renderer context is the \"main\" renderer frame. If you want the ID of the current frame you should use `webFrame.routingId`.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#processismainframe-readonly",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "mas",
        "description": "A `boolean`. For Mac App Store build, this property is `true`, for other builds it is `undefined`.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#processmas-readonly",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "noAsar",
        "description": "A `boolean` that controls ASAR support inside your application. Setting this to `true` will disable the support for `asar` archives in Node's built-in modules.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#processnoasar",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "noDeprecation",
        "description": "A `boolean` that controls whether or not deprecation warnings are printed to `stderr`. Setting this to `true` will silence deprecation warnings. This property is used instead of the `--no-deprecation` command line flag.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#processnodeprecation",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "resourcesPath",
        "description": "A `string` representing the path to the resources directory.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#processresourcespath-readonly",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "sandboxed",
        "description": "A `boolean`. When the renderer process is sandboxed, this property is `true`, otherwise it is `undefined`.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#processsandboxed-readonly",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "contextIsolated",
        "description": "A `boolean` that indicates whether the current renderer context has `contextIsolation` enabled. It is `undefined` in the main process.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#processcontextisolated-readonly",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "throwDeprecation",
        "description": "A `boolean` that controls whether or not deprecation warnings will be thrown as exceptions. Setting this to `true` will throw errors for deprecations. This property is used instead of the `--throw-deprecation` command line flag.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#processthrowdeprecation",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "traceDeprecation",
        "description": "A `boolean` that controls whether or not deprecations printed to `stderr` include their stack trace. Setting this to `true` will print stack traces for deprecations. This property is instead of the `--trace-deprecation` command line flag.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#processtracedeprecation",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "traceProcessWarnings",
        "description": "A `boolean` that controls whether or not process warnings printed to `stderr` include their stack trace. Setting this to `true` will print stack traces for process warnings (including deprecations). This property is instead of the `--trace-warnings` command line flag.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#processtraceprocesswarnings",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "type",
        "description": "A `string` representing the current process's type, can be:\n\n* `browser` - The main process\n* `renderer` - A renderer process\n* `worker` - In a web worker\n* `utility` - In a node process launched as a service",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#processtype-readonly",
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "browser",
            "description": "The main process"
          },
          {
            "value": "renderer",
            "description": "A renderer process"
          },
          {
            "value": "worker",
            "description": "In a web worker"
          },
          {
            "value": "utility",
            "description": "In a node process launched as a service"
          }
        ]
      },
      {
        "name": "chrome",
        "description": "A `string` representing Chrome's version string.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#processversionschrome-readonly",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "electron",
        "description": "A `string` representing Electron's version string.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#processversionselectron-readonly",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "windowsStore",
        "description": "A `boolean`. If the app is running as a Windows Store app (appx), this property is `true`, for otherwise it is `undefined`.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#processwindowsstore-readonly",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "contextId",
        "description": "A `string` (optional) representing a globally unique ID of the current JavaScript context. Each frame has its own JavaScript context. When contextIsolation is enabled, the isolated world also has a separate JavaScript context. This property is only available in the renderer process.",
        "required": false,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#processcontextid-readonly",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "parentPort",
        "description": "A `Electron.ParentPort` property if this is a `UtilityProcess` (or `null` otherwise) allowing communication with the parent process.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#processparentport",
        "collection": false,
        "type": "Electron.ParentPort"
      }
    ],
    "events": [
      {
        "name": "loaded",
        "description": "Emitted when Electron has loaded its internal initialization script and is beginning to load the web page or the main script.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-loaded"
      }
    ],
    "exportedClasses": []
  },
  {
    "name": "protocol",
    "description": "> Register a custom protocol and intercept existing protocol requests.\n\nProcess: Main\n\nAn example of implementing a protocol that has the same effect as the `file://` protocol:\n\n```\nconst { app, protocol, net } = require('electron')\nconst path = require('node:path')\nconst url = require('node:url')\n\napp.whenReady().then(() => {\n  protocol.handle('atom', (request) => {\n    const filePath = request.url.slice('atom://'.length)\n    return net.fetch(url.pathToFileURL(path.join(__dirname, filePath)).toString())\n  })\n})\n```\n\n**Note:** All methods unless specified can only be used after the `ready` event of the `app` module gets emitted.\n\n### Using `protocol` with a custom `partition` or `session`\n\nA protocol is registered to a specific Electron `session` object. If you don't specify a session, then your `protocol` will be applied to the default session that Electron uses. However, if you define a `partition` or `session` on your `browserWindow`'s `webPreferences`, then that window will use a different session and your custom protocol will not work if you just use `electron.protocol.XXX`.\n\nTo have your custom protocol work in combination with a custom session, you need to register it to that session explicitly.\n\n```\nconst { app, BrowserWindow, net, protocol, session } = require('electron')\nconst path = require('node:path')\nconst url = require('url')\n\napp.whenReady().then(() => {\n  const partition = 'persist:example'\n  const ses = session.fromPartition(partition)\n\n  ses.protocol.handle('atom', (request) => {\n    const filePath = request.url.slice('atom://'.length)\n    return net.fetch(url.pathToFileURL(path.resolve(__dirname, filePath)).toString())\n  })\n\n  const mainWindow = new BrowserWindow({ webPreferences: { partition } })\n})\n```",
    "slug": "protocol",
    "websiteUrl": "https://electronjs.org/docs/api/protocol",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/protocol.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "registerSchemesAsPrivileged",
        "signature": "(customSchemes)",
        "description": "**Note:** This method can only be used before the `ready` event of the `app` module gets emitted and can be called only once.\n\nRegisters the `scheme` as standard, secure, bypasses content security policy for resources, allows registering ServiceWorker, supports fetch API, streaming video/audio, and V8 code cache. Specify a privilege with the value of `true` to enable the capability.\n\nAn example of registering a privileged scheme, that bypasses Content Security Policy:\n\nA standard scheme adheres to what RFC 3986 calls generic URI syntax. For example `http` and `https` are standard schemes, while `file` is not.\n\nRegistering a scheme as standard allows relative and absolute resources to be resolved correctly when served. Otherwise the scheme will behave like the `file` protocol, but without the ability to resolve relative URLs.\n\nFor example when you load following page with custom protocol without registering it as standard scheme, the image will not be loaded because non-standard schemes can not recognize relative URLs:\n\nRegistering a scheme as standard will allow access to files through the FileSystem API. Otherwise the renderer will throw a security error for the scheme.\n\nBy default web storage apis (localStorage, sessionStorage, webSQL, indexedDB, cookies) are disabled for non standard schemes. So in general if you want to register a custom protocol to replace the `http` protocol, you have to register it as a standard scheme.\n\nProtocols that use streams (http and stream protocols) should set `stream: true`. The `<video>` and `<audio>` HTML elements expect protocols to buffer their responses by default. The `stream` flag configures those elements to correctly expect streaming responses.",
        "parameters": [
          {
            "name": "customSchemes",
            "description": "",
            "required": true,
            "collection": true,
            "type": "CustomScheme"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#protocolregisterschemesasprivilegedcustomschemes"
      },
      {
        "name": "handle",
        "signature": "(scheme, handler)",
        "description": "Register a protocol handler for `scheme`. Requests made to URLs with this scheme will delegate to this handler to determine what response should be sent.\n\nEither a `Response` or a `Promise<Response>` can be returned.\n\nExample:\n\nSee the MDN docs for `Request` and `Response` for more details.",
        "parameters": [
          {
            "name": "scheme",
            "description": "scheme to handle, for example `https` or `my-app`. This is the bit before the `:` in a URL.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "request",
                "description": "",
                "required": true,
                "collection": false,
                "type": "GlobalRequest"
              }
            ],
            "returns": {
              "collection": false,
              "type": [
                {
                  "collection": false,
                  "type": "GlobalResponse"
                },
                {
                  "collection": false,
                  "type": "Promise",
                  "innerTypes": [
                    {
                      "collection": false,
                      "type": "GlobalResponse"
                    }
                  ]
                }
              ]
            }
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#protocolhandlescheme-handler"
      },
      {
        "name": "unhandle",
        "signature": "(scheme)",
        "description": "Removes a protocol handler registered with `protocol.handle`.",
        "parameters": [
          {
            "name": "scheme",
            "description": "scheme for which to remove the handler.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#protocolunhandlescheme"
      },
      {
        "name": "isProtocolHandled",
        "signature": "(scheme)",
        "description": "Whether `scheme` is already handled.",
        "parameters": [
          {
            "name": "scheme",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#protocolisprotocolhandledscheme"
      },
      {
        "name": "registerFileProtocol",
        "signature": "(scheme, handler)",
        "description": "Whether the protocol was successfully registered\n\nRegisters a protocol of `scheme` that will send a file as the response. The `handler` will be called with `request` and `callback` where `request` is an incoming request for the `scheme`.\n\nTo handle the `request`, the `callback` should be called with either the file's path or an object that has a `path` property, e.g. `callback(filePath)` or `callback({ path: filePath })`. The `filePath` must be an absolute path.\n\nBy default the `scheme` is treated like `http:`, which is parsed differently from protocols that follow the \"generic URI syntax\" like `file:`.",
        "parameters": [
          {
            "name": "scheme",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "request",
                "description": "",
                "required": true,
                "collection": false,
                "type": "ProtocolRequest"
              },
              {
                "name": "callback",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "response",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": [
                      {
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "collection": false,
                        "type": "ProtocolResponse"
                      }
                    ]
                  }
                ],
                "returns": null
              }
            ],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "stability_deprecated"
        ],
        "urlFragment": "#protocolregisterfileprotocolscheme-handler-deprecated"
      },
      {
        "name": "registerBufferProtocol",
        "signature": "(scheme, handler)",
        "description": "Whether the protocol was successfully registered\n\nRegisters a protocol of `scheme` that will send a `Buffer` as a response.\n\nThe usage is the same with `registerFileProtocol`, except that the `callback` should be called with either a `Buffer` object or an object that has the `data` property.\n\nExample:",
        "parameters": [
          {
            "name": "scheme",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "request",
                "description": "",
                "required": true,
                "collection": false,
                "type": "ProtocolRequest"
              },
              {
                "name": "callback",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "response",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": [
                      {
                        "collection": false,
                        "type": "Buffer"
                      },
                      {
                        "collection": false,
                        "type": "ProtocolResponse"
                      }
                    ]
                  }
                ],
                "returns": null
              }
            ],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "stability_deprecated"
        ],
        "urlFragment": "#protocolregisterbufferprotocolscheme-handler-deprecated"
      },
      {
        "name": "registerStringProtocol",
        "signature": "(scheme, handler)",
        "description": "Whether the protocol was successfully registered\n\nRegisters a protocol of `scheme` that will send a `string` as a response.\n\nThe usage is the same with `registerFileProtocol`, except that the `callback` should be called with either a `string` or an object that has the `data` property.",
        "parameters": [
          {
            "name": "scheme",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "request",
                "description": "",
                "required": true,
                "collection": false,
                "type": "ProtocolRequest"
              },
              {
                "name": "callback",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "response",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": [
                      {
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "collection": false,
                        "type": "ProtocolResponse"
                      }
                    ]
                  }
                ],
                "returns": null
              }
            ],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "stability_deprecated"
        ],
        "urlFragment": "#protocolregisterstringprotocolscheme-handler-deprecated"
      },
      {
        "name": "registerHttpProtocol",
        "signature": "(scheme, handler)",
        "description": "Whether the protocol was successfully registered\n\nRegisters a protocol of `scheme` that will send an HTTP request as a response.\n\nThe usage is the same with `registerFileProtocol`, except that the `callback` should be called with an object that has the `url` property.",
        "parameters": [
          {
            "name": "scheme",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "request",
                "description": "",
                "required": true,
                "collection": false,
                "type": "ProtocolRequest"
              },
              {
                "name": "callback",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "response",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "ProtocolResponse"
                  }
                ],
                "returns": null
              }
            ],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "stability_deprecated"
        ],
        "urlFragment": "#protocolregisterhttpprotocolscheme-handler-deprecated"
      },
      {
        "name": "registerStreamProtocol",
        "signature": "(scheme, handler)",
        "description": "Whether the protocol was successfully registered\n\nRegisters a protocol of `scheme` that will send a stream as a response.\n\nThe usage is the same with `registerFileProtocol`, except that the `callback` should be called with either a `ReadableStream` object or an object that has the `data` property.\n\nExample:\n\nIt is possible to pass any object that implements the readable stream API (emits `data`/`end`/`error` events). For example, here's how a file could be returned:",
        "parameters": [
          {
            "name": "scheme",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "request",
                "description": "",
                "required": true,
                "collection": false,
                "type": "ProtocolRequest"
              },
              {
                "name": "callback",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "response",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": [
                      {
                        "collection": false,
                        "type": "ReadableStream"
                      },
                      {
                        "collection": false,
                        "type": "ProtocolResponse"
                      }
                    ]
                  }
                ],
                "returns": null
              }
            ],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "stability_deprecated"
        ],
        "urlFragment": "#protocolregisterstreamprotocolscheme-handler-deprecated"
      },
      {
        "name": "unregisterProtocol",
        "signature": "(scheme)",
        "description": "Whether the protocol was successfully unregistered\n\nUnregisters the custom protocol of `scheme`.",
        "parameters": [
          {
            "name": "scheme",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "stability_deprecated"
        ],
        "urlFragment": "#protocolunregisterprotocolscheme-deprecated"
      },
      {
        "name": "isProtocolRegistered",
        "signature": "(scheme)",
        "description": "Whether `scheme` is already registered.",
        "parameters": [
          {
            "name": "scheme",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "stability_deprecated"
        ],
        "urlFragment": "#protocolisprotocolregisteredscheme-deprecated"
      },
      {
        "name": "interceptFileProtocol",
        "signature": "(scheme, handler)",
        "description": "Whether the protocol was successfully intercepted\n\nIntercepts `scheme` protocol and uses `handler` as the protocol's new handler which sends a file as a response.",
        "parameters": [
          {
            "name": "scheme",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "request",
                "description": "",
                "required": true,
                "collection": false,
                "type": "ProtocolRequest"
              },
              {
                "name": "callback",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "response",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": [
                      {
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "collection": false,
                        "type": "ProtocolResponse"
                      }
                    ]
                  }
                ],
                "returns": null
              }
            ],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "stability_deprecated"
        ],
        "urlFragment": "#protocolinterceptfileprotocolscheme-handler-deprecated"
      },
      {
        "name": "interceptStringProtocol",
        "signature": "(scheme, handler)",
        "description": "Whether the protocol was successfully intercepted\n\nIntercepts `scheme` protocol and uses `handler` as the protocol's new handler which sends a `string` as a response.",
        "parameters": [
          {
            "name": "scheme",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "request",
                "description": "",
                "required": true,
                "collection": false,
                "type": "ProtocolRequest"
              },
              {
                "name": "callback",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "response",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": [
                      {
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "collection": false,
                        "type": "ProtocolResponse"
                      }
                    ]
                  }
                ],
                "returns": null
              }
            ],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "stability_deprecated"
        ],
        "urlFragment": "#protocolinterceptstringprotocolscheme-handler-deprecated"
      },
      {
        "name": "interceptBufferProtocol",
        "signature": "(scheme, handler)",
        "description": "Whether the protocol was successfully intercepted\n\nIntercepts `scheme` protocol and uses `handler` as the protocol's new handler which sends a `Buffer` as a response.",
        "parameters": [
          {
            "name": "scheme",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "request",
                "description": "",
                "required": true,
                "collection": false,
                "type": "ProtocolRequest"
              },
              {
                "name": "callback",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "response",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": [
                      {
                        "collection": false,
                        "type": "Buffer"
                      },
                      {
                        "collection": false,
                        "type": "ProtocolResponse"
                      }
                    ]
                  }
                ],
                "returns": null
              }
            ],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "stability_deprecated"
        ],
        "urlFragment": "#protocolinterceptbufferprotocolscheme-handler-deprecated"
      },
      {
        "name": "interceptHttpProtocol",
        "signature": "(scheme, handler)",
        "description": "Whether the protocol was successfully intercepted\n\nIntercepts `scheme` protocol and uses `handler` as the protocol's new handler which sends a new HTTP request as a response.",
        "parameters": [
          {
            "name": "scheme",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "request",
                "description": "",
                "required": true,
                "collection": false,
                "type": "ProtocolRequest"
              },
              {
                "name": "callback",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "response",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "ProtocolResponse"
                  }
                ],
                "returns": null
              }
            ],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "stability_deprecated"
        ],
        "urlFragment": "#protocolintercepthttpprotocolscheme-handler-deprecated"
      },
      {
        "name": "interceptStreamProtocol",
        "signature": "(scheme, handler)",
        "description": "Whether the protocol was successfully intercepted\n\nSame as `protocol.registerStreamProtocol`, except that it replaces an existing protocol handler.",
        "parameters": [
          {
            "name": "scheme",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "request",
                "description": "",
                "required": true,
                "collection": false,
                "type": "ProtocolRequest"
              },
              {
                "name": "callback",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "response",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": [
                      {
                        "collection": false,
                        "type": "ReadableStream"
                      },
                      {
                        "collection": false,
                        "type": "ProtocolResponse"
                      }
                    ]
                  }
                ],
                "returns": null
              }
            ],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "stability_deprecated"
        ],
        "urlFragment": "#protocolinterceptstreamprotocolscheme-handler-deprecated"
      },
      {
        "name": "uninterceptProtocol",
        "signature": "(scheme)",
        "description": "Whether the protocol was successfully unintercepted\n\nRemove the interceptor installed for `scheme` and restore its original handler.",
        "parameters": [
          {
            "name": "scheme",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "stability_deprecated"
        ],
        "urlFragment": "#protocoluninterceptprotocolscheme-deprecated"
      },
      {
        "name": "isProtocolIntercepted",
        "signature": "(scheme)",
        "description": "Whether `scheme` is already intercepted.",
        "parameters": [
          {
            "name": "scheme",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "stability_deprecated"
        ],
        "urlFragment": "#protocolisprotocolinterceptedscheme-deprecated"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "pushNotifications",
    "description": "Process: Main\n\n> Register for and receive notifications from remote push notification services\n\nFor example, when registering for push notifications via Apple push notification services (APNS):",
    "slug": "push-notifications",
    "websiteUrl": "https://electronjs.org/docs/api/push-notifications",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/push-notifications.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "registerForAPNSNotifications",
        "signature": "()",
        "description": "Registers the app with Apple Push Notification service (APNS) to receive Badge, Sound, and Alert notifications. If registration is successful, the promise will be resolved with the APNS device token. Otherwise, the promise will be rejected with an error message. See: https://developer.apple.com/documentation/appkit/nsapplication/1428476-registerforremotenotificationtyp?language=objc",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "String",
              "possibleValues": null
            }
          ]
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#pushnotificationsregisterforapnsnotifications-macos"
      },
      {
        "name": "unregisterForAPNSNotifications",
        "signature": "()",
        "description": "Unregisters the app from notifications received from APNS. See: https://developer.apple.com/documentation/appkit/nsapplication/1428747-unregisterforremotenotifications?language=objc",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#pushnotificationsunregisterforapnsnotifications-macos"
      }
    ],
    "properties": [],
    "events": [
      {
        "name": "received-apns-notification",
        "description": "Emitted when the app receives a remote notification while running. See: https://developer.apple.com/documentation/appkit/nsapplicationdelegate/1428430-application?language=objc",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "userInfo",
            "description": "",
            "collection": false,
            "type": "Record",
            "innerTypes": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "collection": false,
                "type": "any"
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-received-apns-notification-macos"
      }
    ],
    "exportedClasses": []
  },
  {
    "name": "safeStorage",
    "description": "> Allows access to simple encryption and decryption of strings for storage on the local machine.\n\nProcess: Main\n\nThis module adds extra protection to data being stored on disk by using OS-provided cryptography systems. Current security semantics for each platform are outlined below.\n\n* **macOS**: Encryption keys are stored for your app in Keychain Access in a way that prevents other applications from loading them without user override. Therefore, content is protected from other users and other apps running in the same userspace.\n* **Windows**: Encryption keys are generated via DPAPI. As per the Windows documentation: \"Typically, only a user with the same logon credential as the user who encrypted the data can typically decrypt the data\". Therefore, content is protected from other users on the same machine, but not from other apps running in the same userspace.\n* **Linux**: Encryption keys are generated and stored in a secret store that varies depending on your window manager and system setup. Options currently supported are `kwallet`, `kwallet5`, `kwallet6` and `gnome-libsecret`, but more may be available in future versions of Electron. As such, the security semantics of content protected via the `safeStorage` API vary between window managers and secret stores.\n  * Note that not all Linux setups have an available secret store. If no secret store is available, items stored in using the `safeStorage` API will be unprotected as they are encrypted via hardcoded plaintext password. You can detect when this happens when `safeStorage.getSelectedStorageBackend()` returns `basic_text`.\n\nNote that on Mac, access to the system Keychain is required and these calls can block the current thread to collect user input. The same is true for Linux, if a password management tool is available.",
    "slug": "safe-storage",
    "websiteUrl": "https://electronjs.org/docs/api/safe-storage",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/safe-storage.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "isEncryptionAvailable",
        "signature": "()",
        "description": "Whether encryption is available.\n\nOn Linux, returns true if the app has emitted the `ready` event and the secret key is available. On MacOS, returns true if Keychain is available. On Windows, returns true once the app has emitted the `ready` event.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#safestorageisencryptionavailable"
      },
      {
        "name": "encryptString",
        "signature": "(plainText)",
        "description": "An array of bytes representing the encrypted string.\n\nThis function will throw an error if encryption fails.",
        "parameters": [
          {
            "name": "plainText",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Buffer"
        },
        "additionalTags": [],
        "urlFragment": "#safestorageencryptstringplaintext"
      },
      {
        "name": "decryptString",
        "signature": "(encrypted)",
        "description": "the decrypted string. Decrypts the encrypted buffer obtained  with `safeStorage.encryptString` back into a string.\n\nThis function will throw an error if decryption fails.",
        "parameters": [
          {
            "name": "encrypted",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Buffer"
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#safestoragedecryptstringencrypted"
      },
      {
        "name": "setUsePlainTextEncryption",
        "signature": "(usePlainText)",
        "description": "This function on Linux will force the module to use an in memory password for creating symmetric key that is used for encrypt/decrypt functions when a valid OS password manager cannot be determined for the current active desktop environment. This function is a no-op on Windows and MacOS.",
        "parameters": [
          {
            "name": "usePlainText",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#safestoragesetuseplaintextencryptionuseplaintext"
      },
      {
        "name": "getSelectedStorageBackend",
        "signature": "()",
        "description": "User friendly name of the password manager selected on Linux.\n\nThis function will return one of the following values:\n\n* `basic_text` - When the desktop environment is not recognised or if the following command line flag is provided `--password-store=\"basic\"`.\n* `gnome_libsecret` - When the desktop environment is `X-Cinnamon`, `Deepin`, `GNOME`, `Pantheon`, `XFCE`, `UKUI`, `unity` or if the following command line flag is provided `--password-store=\"gnome-libsecret\"`.\n* `kwallet` - When the desktop session is `kde4` or if the following command line flag is provided `--password-store=\"kwallet\"`.\n* `kwallet5` - When the desktop session is `kde5` or if the following command line flag is provided `--password-store=\"kwallet5\"`.\n* `kwallet6` - When the desktop session is `kde6`.\n* `unknown` - When the function is called before app has emitted the `ready` event.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": [
            {
              "value": "basic_text",
              "description": "When the desktop environment is not recognised or if the following command line flag is provided `--password-store=\"basic\"`."
            },
            {
              "value": "gnome_libsecret",
              "description": "When the desktop environment is `X-Cinnamon`, `Deepin`, `GNOME`, `Pantheon`, `XFCE`, `UKUI`, `unity` or if the following command line flag is provided `--password-store=\"gnome-libsecret\"`."
            },
            {
              "value": "kwallet",
              "description": "When the desktop session is `kde4` or if the following command line flag is provided `--password-store=\"kwallet\"`."
            },
            {
              "value": "kwallet5",
              "description": "When the desktop session is `kde5` or if the following command line flag is provided `--password-store=\"kwallet5\"`."
            },
            {
              "value": "kwallet6",
              "description": "When the desktop session is `kde6`."
            },
            {
              "value": "unknown",
              "description": "When the function is called before app has emitted the `ready` event."
            }
          ]
        },
        "additionalTags": [
          "os_linux"
        ],
        "urlFragment": "#safestoragegetselectedstoragebackend-linux"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "screen",
    "description": "> Retrieve information about screen size, displays, cursor position, etc.\n\nProcess: Main\n\nThis module cannot be used until the `ready` event of the `app` module is emitted.\n\n`screen` is an EventEmitter.\n\n**Note:** In the renderer / DevTools, `window.screen` is a reserved DOM property, so writing `let { screen } = require('electron')` will not work.\n\nAn example of creating a window that fills the whole screen:\n\n```\n// Retrieve information about screen size, displays, cursor position, etc.\n//\n// For more info, see:\n// https://www.electronjs.org/docs/latest/api/screen\n\nconst { app, BrowserWindow, screen } = require('electron/main')\n\nlet mainWindow = null\n\napp.whenReady().then(() => {\n  // Create a window that fills the screen's available work area.\n  const primaryDisplay = screen.getPrimaryDisplay()\n  const { width, height } = primaryDisplay.workAreaSize\n\n  mainWindow = new BrowserWindow({ width, height })\n  mainWindow.loadURL('https://electronjs.org')\n})\n```\n\nAnother example of creating a window in the external display:",
    "slug": "screen",
    "websiteUrl": "https://electronjs.org/docs/api/screen",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/screen.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "getCursorScreenPoint",
        "signature": "()",
        "description": "The current absolute position of the mouse pointer.\n\n**Note:** The return value is a DIP point, not a screen physical point.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Point"
        },
        "additionalTags": [],
        "urlFragment": "#screengetcursorscreenpoint"
      },
      {
        "name": "getPrimaryDisplay",
        "signature": "()",
        "description": "The primary display.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Display"
        },
        "additionalTags": [],
        "urlFragment": "#screengetprimarydisplay"
      },
      {
        "name": "getAllDisplays",
        "signature": "()",
        "description": "An array of displays that are currently available.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "Display"
        },
        "additionalTags": [],
        "urlFragment": "#screengetalldisplays"
      },
      {
        "name": "getDisplayNearestPoint",
        "signature": "(point)",
        "description": "The display nearest the specified point.",
        "parameters": [
          {
            "name": "point",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Point"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Display"
        },
        "additionalTags": [],
        "urlFragment": "#screengetdisplaynearestpointpoint"
      },
      {
        "name": "getDisplayMatching",
        "signature": "(rect)",
        "description": "The display that most closely intersects the provided bounds.",
        "parameters": [
          {
            "name": "rect",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Rectangle"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Display"
        },
        "additionalTags": [],
        "urlFragment": "#screengetdisplaymatchingrect"
      },
      {
        "name": "screenToDipPoint",
        "signature": "(point)",
        "description": "Converts a screen physical point to a screen DIP point. The DPI scale is performed relative to the display containing the physical point.",
        "parameters": [
          {
            "name": "point",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Point"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Point"
        },
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#screenscreentodippointpoint-windows"
      },
      {
        "name": "dipToScreenPoint",
        "signature": "(point)",
        "description": "Converts a screen DIP point to a screen physical point. The DPI scale is performed relative to the display containing the DIP point.",
        "parameters": [
          {
            "name": "point",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Point"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Point"
        },
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#screendiptoscreenpointpoint-windows"
      },
      {
        "name": "screenToDipRect",
        "signature": "(window, rect)",
        "description": "Converts a screen physical rect to a screen DIP rect. The DPI scale is performed relative to the display nearest to `window`. If `window` is null, scaling will be performed to the display nearest to `rect`.",
        "parameters": [
          {
            "name": "window",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "BrowserWindow"
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          },
          {
            "name": "rect",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Rectangle"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Rectangle"
        },
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#screenscreentodiprectwindow-rect-windows"
      },
      {
        "name": "dipToScreenRect",
        "signature": "(window, rect)",
        "description": "Converts a screen DIP rect to a screen physical rect. The DPI scale is performed relative to the display nearest to `window`. If `window` is null, scaling will be performed to the display nearest to `rect`.",
        "parameters": [
          {
            "name": "window",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "BrowserWindow"
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          },
          {
            "name": "rect",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Rectangle"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Rectangle"
        },
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#screendiptoscreenrectwindow-rect-windows"
      }
    ],
    "properties": [],
    "events": [
      {
        "name": "display-added",
        "description": "Emitted when `newDisplay` has been added.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "newDisplay",
            "description": "",
            "collection": false,
            "type": "Display",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-display-added"
      },
      {
        "name": "display-removed",
        "description": "Emitted when `oldDisplay` has been removed.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "oldDisplay",
            "description": "",
            "collection": false,
            "type": "Display",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-display-removed"
      },
      {
        "name": "display-metrics-changed",
        "description": "Emitted when one or more metrics change in a `display`. The `changedMetrics` is an array of strings that describe the changes. Possible changes are `bounds`, `workArea`, `scaleFactor` and `rotation`.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "display",
            "description": "",
            "collection": false,
            "type": "Display",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "changedMetrics",
            "description": "",
            "collection": true,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-display-metrics-changed"
      }
    ],
    "exportedClasses": []
  },
  {
    "name": "ServiceWorkers",
    "description": "",
    "slug": "service-workers",
    "websiteUrl": "https://electronjs.org/docs/api/service-workers",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/service-workers.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": null,
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "getAllRunning",
        "signature": "()",
        "description": "A ServiceWorkerInfo object where the keys are the service worker version ID and the values are the information about that service worker.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Record",
          "innerTypes": [
            {
              "collection": false,
              "type": "number"
            },
            {
              "collection": false,
              "type": "ServiceWorkerInfo"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#serviceworkersgetallrunning"
      },
      {
        "name": "getFromVersionID",
        "signature": "(versionId)",
        "description": "Information about this service worker\n\nIf the service worker does not exist or is not running this method will throw an exception.",
        "parameters": [
          {
            "name": "versionId",
            "description": "",
            "required": true,
            "collection": false,
            "type": "number"
          }
        ],
        "returns": {
          "collection": false,
          "type": "ServiceWorkerInfo"
        },
        "additionalTags": [],
        "urlFragment": "#serviceworkersgetfromversionidversionid"
      }
    ],
    "instanceProperties": [],
    "instanceEvents": [
      {
        "name": "console-message",
        "description": "Emitted when a service worker logs something to the console.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "messageDetails",
            "description": "Information about the console message",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "message",
                "description": "The actual console message",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "versionId",
                "description": "The version ID of the service worker that sent the log message",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              },
              {
                "name": "source",
                "description": "The type of source for this message.  Can be `javascript`, `xml`, `network`, `console-api`, `storage`, `rendering`, `security`, `deprecation`, `worker`, `violation`, `intervention`, `recommendation` or `other`.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "javascript",
                    "description": ""
                  },
                  {
                    "value": "xml",
                    "description": ""
                  },
                  {
                    "value": "network",
                    "description": ""
                  },
                  {
                    "value": "console-api",
                    "description": ""
                  },
                  {
                    "value": "storage",
                    "description": ""
                  },
                  {
                    "value": "rendering",
                    "description": ""
                  },
                  {
                    "value": "security",
                    "description": ""
                  },
                  {
                    "value": "deprecation",
                    "description": ""
                  },
                  {
                    "value": "worker",
                    "description": ""
                  },
                  {
                    "value": "violation",
                    "description": ""
                  },
                  {
                    "value": "intervention",
                    "description": ""
                  },
                  {
                    "value": "recommendation",
                    "description": ""
                  },
                  {
                    "value": "other",
                    "description": ""
                  }
                ]
              },
              {
                "name": "level",
                "description": "The log level, from 0 to 3. In order it matches `verbose`, `info`, `warning` and `error`.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              },
              {
                "name": "sourceUrl",
                "description": "The URL the message came from",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "lineNumber",
                "description": "The line number of the source that triggered this console message",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-console-message"
      },
      {
        "name": "registration-completed",
        "description": "Emitted when a service worker has been registered. Can occur after a call to `navigator.serviceWorker.register('/sw.js')` successfully resolves or when a Chrome extension is loaded.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "Information about the registered service worker",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "scope",
                "description": "The base URL that a service worker is registered for",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-registration-completed"
      }
    ],
    "instanceName": "serviceWorkers"
  },
  {
    "name": "session",
    "description": "> Manage browser sessions, cookies, cache, proxy settings, etc.\n\nProcess: Main\n\nThe `session` module can be used to create new `Session` objects.\n\nYou can also access the `session` of existing pages by using the `session` property of `WebContents`, or from the `session` module.",
    "slug": "session",
    "websiteUrl": "https://electronjs.org/docs/api/session",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/session.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "fromPartition",
        "signature": "(partition[, options])",
        "description": "A session instance from `partition` string. When there is an existing `Session` with the same `partition`, it will be returned; otherwise a new `Session` instance will be created with `options`.\n\nIf `partition` starts with `persist:`, the page will use a persistent session available to all pages in the app with the same `partition`. if there is no `persist:` prefix, the page will use an in-memory session. If the `partition` is empty then default session of the app will be returned.\n\nTo create a `Session` with `options`, you have to ensure the `Session` with the `partition` has never been used before. There is no way to change the `options` of an existing `Session` object.",
        "parameters": [
          {
            "name": "partition",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "cache",
                "description": "Whether to enable cache.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Session"
        },
        "additionalTags": [],
        "urlFragment": "#sessionfrompartitionpartition-options"
      },
      {
        "name": "fromPath",
        "signature": "(path[, options])",
        "description": "A session instance from the absolute path as specified by the `path` string. When there is an existing `Session` with the same absolute path, it will be returned; otherwise a new `Session` instance will be created with `options`. The call will throw an error if the path is not an absolute path. Additionally, an error will be thrown if an empty string is provided.\n\nTo create a `Session` with `options`, you have to ensure the `Session` with the `path` has never been used before. There is no way to change the `options` of an existing `Session` object.",
        "parameters": [
          {
            "name": "path",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "cache",
                "description": "Whether to enable cache.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Session"
        },
        "additionalTags": [],
        "urlFragment": "#sessionfrompathpath-options"
      }
    ],
    "properties": [
      {
        "name": "defaultSession",
        "description": "A `Session` object, the default session object of the app.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#sessiondefaultsession",
        "collection": false,
        "type": "Session"
      }
    ],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "Session",
    "description": "",
    "slug": "session",
    "websiteUrl": "https://electronjs.org/docs/api/session",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/session.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": null,
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "getCacheSize",
        "signature": "()",
        "description": "the session's current cache size, in bytes.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "Integer"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sesgetcachesize"
      },
      {
        "name": "clearCache",
        "signature": "()",
        "description": "resolves when the cache clear operation is complete.\n\nClears the session’s HTTP cache.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sesclearcache"
      },
      {
        "name": "clearStorageData",
        "signature": "([options])",
        "description": "resolves when the storage data has been cleared.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "origin",
                "description": "Should follow `window.location.origin`’s representation `scheme://host:port`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "storages",
                "description": "The types of storages to clear, can be `cookies`, `filesystem`, `indexdb`, `localstorage`, `shadercache`, `websql`, `serviceworkers`, `cachestorage`. If not specified, clear all storage types.",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "cookies",
                    "description": ""
                  },
                  {
                    "value": "filesystem",
                    "description": ""
                  },
                  {
                    "value": "indexdb",
                    "description": ""
                  },
                  {
                    "value": "localstorage",
                    "description": ""
                  },
                  {
                    "value": "shadercache",
                    "description": ""
                  },
                  {
                    "value": "websql",
                    "description": ""
                  },
                  {
                    "value": "serviceworkers",
                    "description": ""
                  },
                  {
                    "value": "cachestorage",
                    "description": ""
                  }
                ]
              },
              {
                "name": "quotas",
                "description": "The types of quotas to clear, can be `temporary`, `syncable`. If not specified, clear all quotas.",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "temporary",
                    "description": ""
                  },
                  {
                    "value": "syncable",
                    "description": ""
                  }
                ]
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sesclearstoragedataoptions"
      },
      {
        "name": "flushStorageData",
        "signature": "()",
        "description": "Writes any unwritten DOMStorage data to disk.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sesflushstoragedata"
      },
      {
        "name": "setProxy",
        "signature": "(config)",
        "description": "Resolves when the proxy setting process is complete.\n\nSets the proxy settings.\n\nYou may need `ses.closeAllConnections` to close currently in flight connections to prevent pooled sockets using previous proxy from being reused by future requests.",
        "parameters": [
          {
            "name": "config",
            "description": "",
            "required": true,
            "collection": false,
            "type": "ProxyConfig"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sessetproxyconfig"
      },
      {
        "name": "resolveHost",
        "signature": "(host, [options])",
        "description": "Resolves with the resolved IP addresses for the `host`.",
        "parameters": [
          {
            "name": "host",
            "description": "Hostname to resolve.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "queryType",
                "description": "Requested DNS query type. If unspecified, resolver will pick A or AAAA (or both) based on IPv4/IPv6 settings:",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "A",
                    "description": "Fetch only A records"
                  },
                  {
                    "value": "AAAA",
                    "description": "Fetch only AAAA records."
                  }
                ]
              },
              {
                "name": "source",
                "description": "The source to use for resolved addresses. Default allows the resolver to pick an appropriate source. Only affects use of big external sources (e.g. calling the system for resolution or using DNS). Even if a source is specified, results can still come from cache, resolving \"localhost\" or IP literals, etc. One of the following values:",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "any",
                    "description": "Resolver will pick an appropriate source. Results could come from DNS, MulticastDNS, HOSTS file, etc"
                  },
                  {
                    "value": "system",
                    "description": "Results will only be retrieved from the system or OS, e.g. via the `getaddrinfo()` system call"
                  },
                  {
                    "value": "dns",
                    "description": "Results will only come from DNS queries"
                  },
                  {
                    "value": "mdns",
                    "description": "Results will only come from Multicast DNS queries"
                  },
                  {
                    "value": "localOnly",
                    "description": "No external sources will be used. Results will only come from fast local sources that are available no matter the source setting, e.g. cache, hosts file, IP literal resolution, etc."
                  }
                ]
              },
              {
                "name": "cacheUsage",
                "description": "Indicates what DNS cache entries, if any, can be used to provide a response. One of the following values:",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "allowed",
                    "description": "Results may come from the host cache if non-stale"
                  },
                  {
                    "value": "staleAllowed",
                    "description": "Results may come from the host cache even if stale (by expiration or network changes)"
                  },
                  {
                    "value": "disallowed",
                    "description": "Results will not come from the host cache."
                  }
                ]
              },
              {
                "name": "secureDnsPolicy",
                "description": "Controls the resolver's Secure DNS behavior for this request. One of the following values:",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "allow",
                    "description": ""
                  },
                  {
                    "value": "disable",
                    "description": ""
                  }
                ]
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "ResolvedHost"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sesresolvehosthost-options"
      },
      {
        "name": "resolveProxy",
        "signature": "(url)",
        "description": "Resolves with the proxy information for `url`.",
        "parameters": [
          {
            "name": "url",
            "description": "",
            "required": true,
            "collection": false,
            "type": "URL"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "String",
              "possibleValues": null
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sesresolveproxyurl"
      },
      {
        "name": "forceReloadProxyConfig",
        "signature": "()",
        "description": "Resolves when the all internal states of proxy service is reset and the latest proxy configuration is reapplied if it's already available. The pac script will be fetched from `pacScript` again if the proxy mode is `pac_script`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sesforcereloadproxyconfig"
      },
      {
        "name": "setDownloadPath",
        "signature": "(path)",
        "description": "Sets download saving directory. By default, the download directory will be the `Downloads` under the respective app folder.",
        "parameters": [
          {
            "name": "path",
            "description": "The download location.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sessetdownloadpathpath"
      },
      {
        "name": "enableNetworkEmulation",
        "signature": "(options)",
        "description": "Emulates network with the given configuration for the `session`.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "offline",
                "description": "Whether to emulate network outage. Defaults to false.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "latency",
                "description": "RTT in ms. Defaults to 0 which will disable latency throttling.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Double"
              },
              {
                "name": "downloadThroughput",
                "description": "Download rate in Bps. Defaults to 0 which will disable download throttling.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Double"
              },
              {
                "name": "uploadThroughput",
                "description": "Upload rate in Bps. Defaults to 0 which will disable upload throttling.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Double"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sesenablenetworkemulationoptions"
      },
      {
        "name": "preconnect",
        "signature": "(options)",
        "description": "Preconnects the given number of sockets to an origin.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "url",
                "description": "URL for preconnect. Only the origin is relevant for opening the socket.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "numSockets",
                "description": "number of sockets to preconnect. Must be between 1 and 6. Defaults to 1.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sespreconnectoptions"
      },
      {
        "name": "closeAllConnections",
        "signature": "()",
        "description": "Resolves when all connections are closed.\n\n**Note:** It will terminate / fail all requests currently in flight.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sescloseallconnections"
      },
      {
        "name": "fetch",
        "signature": "(input[, init])",
        "description": "see Response.\n\nSends a request, similarly to how `fetch()` works in the renderer, using Chrome's network stack. This differs from Node's `fetch()`, which uses Node.js's HTTP stack.\n\nExample:\n\nSee also `net.fetch()`, a convenience method which issues requests from the default session.\n\nSee the MDN documentation for `fetch()` for more details.\n\nLimitations:\n\n* `net.fetch()` does not support the `data:` or `blob:` schemes.\n* The value of the `integrity` option is ignored.\n* The `.type` and `.url` values of the returned `Response` object are incorrect.\n\nBy default, requests made with `net.fetch` can be made to custom protocols as well as `file:`, and will trigger webRequest handlers if present. When the non-standard `bypassCustomProtocolHandlers` option is set in RequestInit, custom protocol handlers will not be called for this request. This allows forwarding an intercepted request to the built-in handler. webRequest handlers will still be triggered when bypassing custom protocols.",
        "parameters": [
          {
            "name": "input",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "collection": false,
                "type": "GlobalRequest"
              }
            ]
          },
          {
            "name": "init",
            "description": "",
            "required": false,
            "collection": false,
            "type": "RequestInit & { bypassCustomProtocolHandlers?: boolean }"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "GlobalResponse"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sesfetchinput-init"
      },
      {
        "name": "disableNetworkEmulation",
        "signature": "()",
        "description": "Disables any network emulation already active for the `session`. Resets to the original network configuration.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sesdisablenetworkemulation"
      },
      {
        "name": "setCertificateVerifyProc",
        "signature": "(proc)",
        "description": "Sets the certificate verify proc for `session`, the `proc` will be called with `proc(request, callback)` whenever a server certificate verification is requested. Calling `callback(0)` accepts the certificate, calling `callback(-2)` rejects it.\n\nCalling `setCertificateVerifyProc(null)` will revert back to default certificate verify proc.\n\n> **NOTE:** The result of this procedure is cached by the network service.",
        "parameters": [
          {
            "name": "proc",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "request",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Object",
                    "properties": [
                      {
                        "name": "hostname",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "certificate",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Certificate"
                      },
                      {
                        "name": "validatedCertificate",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Certificate"
                      },
                      {
                        "name": "isIssuedByKnownRoot",
                        "description": "`true` if Chromium recognises the root CA as a standard root. If it isn't then it's probably the case that this certificate was generated by a MITM proxy whose root has been installed locally (for example, by a corporate proxy). This should not be trusted if the `verificationResult` is not `OK`.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "boolean"
                      },
                      {
                        "name": "verificationResult",
                        "description": "`OK` if the certificate is trusted, otherwise an error like `CERT_REVOKED`.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "errorCode",
                        "description": "Error code.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      }
                    ]
                  },
                  {
                    "name": "callback",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Function",
                    "parameters": [
                      {
                        "name": "verificationResult",
                        "description": "Value can be one of certificate error codes from here. Apart from the certificate error codes, the following special codes can be used.",
                        "required": true,
                        "collection": false,
                        "type": "Integer"
                      }
                    ],
                    "returns": null
                  }
                ],
                "returns": null
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sessetcertificateverifyprocproc"
      },
      {
        "name": "setPermissionRequestHandler",
        "signature": "(handler)",
        "description": "Sets the handler which can be used to respond to permission requests for the `session`. Calling `callback(true)` will allow the permission and `callback(false)` will reject it. To clear the handler, call `setPermissionRequestHandler(null)`.  Please note that you must also implement `setPermissionCheckHandler` to get complete permission handling. Most web APIs do a permission check and then make a permission request if the check is denied.",
        "parameters": [
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "webContents",
                    "description": "WebContents requesting the permission.  Please note that if the request comes from a subframe you should use `requestingUrl` to check the request origin.",
                    "required": true,
                    "collection": false,
                    "type": "WebContents"
                  },
                  {
                    "name": "permission",
                    "description": "The type of requested permission.",
                    "required": true,
                    "collection": false,
                    "type": "String",
                    "possibleValues": [
                      {
                        "value": "clipboard-read",
                        "description": "Request access to read from the clipboard."
                      },
                      {
                        "value": "clipboard-sanitized-write",
                        "description": "Request access to write to the clipboard."
                      },
                      {
                        "value": "display-capture",
                        "description": "Request access to capture the screen via the Screen Capture API."
                      },
                      {
                        "value": "fullscreen",
                        "description": "Request control of the app's fullscreen state via the Fullscreen API."
                      },
                      {
                        "value": "geolocation",
                        "description": "Request access to the user's location via the Geolocation API"
                      },
                      {
                        "value": "idle-detection",
                        "description": "Request access to the user's idle state via the IdleDetector API."
                      },
                      {
                        "value": "media",
                        "description": " Request access to media devices such as camera, microphone and speakers."
                      },
                      {
                        "value": "mediaKeySystem",
                        "description": "Request access to DRM protected content."
                      },
                      {
                        "value": "midi",
                        "description": "Request MIDI access in the Web MIDI API."
                      },
                      {
                        "value": "midiSysex",
                        "description": "Request the use of system exclusive messages in the Web MIDI API."
                      },
                      {
                        "value": "notifications",
                        "description": "Request notification creation and the ability to display them in the user's system tray using the Notifications API"
                      },
                      {
                        "value": "pointerLock",
                        "description": "Request to directly interpret mouse movements as an input method via the Pointer Lock API. These requests always appear to originate from the main frame."
                      },
                      {
                        "value": "keyboardLock",
                        "description": "Request capture of keypresses for any or all of the keys on the physical keyboard via the Keyboard Lock API. These requests always appear to originate from the main frame."
                      },
                      {
                        "value": "openExternal",
                        "description": "Request to open links in external applications."
                      },
                      {
                        "value": "speaker-selection",
                        "description": "Request to enumerate and select audio output devices via the speaker-selection permissions policy."
                      },
                      {
                        "value": "storage-access",
                        "description": "Allows content loaded in a third-party context to request access to third-party cookies using the Storage Access API."
                      },
                      {
                        "value": "top-level-storage-access",
                        "description": " Allow top-level sites to request third-party cookie access on behalf of embedded content originating from another site in the same related website set using the Storage Access API."
                      },
                      {
                        "value": "window-management",
                        "description": "Request access to enumerate screens using the `getScreenDetails` API."
                      },
                      {
                        "value": "unknown",
                        "description": "An unrecognized permission request."
                      },
                      {
                        "value": "fileSystem",
                        "description": "Request access to read, write, and file management capabilities using the File System API."
                      }
                    ]
                  },
                  {
                    "name": "callback",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Function",
                    "parameters": [
                      {
                        "name": "permissionGranted",
                        "description": "Allow or deny the permission.",
                        "required": true,
                        "collection": false,
                        "type": "boolean"
                      }
                    ],
                    "returns": null
                  },
                  {
                    "name": "details",
                    "description": "Additional information about the permission being requested.",
                    "required": true,
                    "collection": false,
                    "type": [
                      {
                        "collection": false,
                        "type": "PermissionRequest"
                      },
                      {
                        "collection": false,
                        "type": "FilesystemPermissionRequest"
                      },
                      {
                        "collection": false,
                        "type": "MediaAccessPermissionRequest"
                      },
                      {
                        "collection": false,
                        "type": "OpenExternalPermissionRequest"
                      }
                    ]
                  }
                ],
                "returns": null
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sessetpermissionrequesthandlerhandler"
      },
      {
        "name": "setPermissionCheckHandler",
        "signature": "(handler)",
        "description": "Sets the handler which can be used to respond to permission checks for the `session`. Returning `true` will allow the permission and `false` will reject it.  Please note that you must also implement `setPermissionRequestHandler` to get complete permission handling. Most web APIs do a permission check and then make a permission request if the check is denied. To clear the handler, call `setPermissionCheckHandler(null)`.",
        "parameters": [
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "webContents",
                    "description": "WebContents checking the permission.  Please note that if the request comes from a subframe you should use `requestingUrl` to check the request origin.  All cross origin sub frames making permission checks will pass a `null` webContents to this handler, while certain other permission checks such as `notifications` checks will always pass `null`.  You should use `embeddingOrigin` and `requestingOrigin` to determine what origin the owning frame and the requesting frame are on respectively.",
                    "required": true,
                    "collection": false,
                    "type": [
                      {
                        "collection": false,
                        "type": "WebContents"
                      },
                      {
                        "type": "null",
                        "collection": false
                      }
                    ]
                  },
                  {
                    "name": "permission",
                    "description": "Type of permission check.",
                    "required": true,
                    "collection": false,
                    "type": "String",
                    "possibleValues": [
                      {
                        "value": "clipboard-read",
                        "description": "Request access to read from the clipboard."
                      },
                      {
                        "value": "clipboard-sanitized-write",
                        "description": "Request access to write to the clipboard."
                      },
                      {
                        "value": "geolocation",
                        "description": "Access the user's geolocation data via the Geolocation API"
                      },
                      {
                        "value": "fullscreen",
                        "description": "Control of the app's fullscreen state via the Fullscreen API."
                      },
                      {
                        "value": "hid",
                        "description": "Access the HID protocol to manipulate HID devices via the WebHID API."
                      },
                      {
                        "value": "idle-detection",
                        "description": "Access the user's idle state via the IdleDetector API."
                      },
                      {
                        "value": "media",
                        "description": "Access to media devices such as camera, microphone and speakers."
                      },
                      {
                        "value": "mediaKeySystem",
                        "description": "Access to DRM protected content."
                      },
                      {
                        "value": "midi",
                        "description": "Enable MIDI access in the Web MIDI API."
                      },
                      {
                        "value": "midiSysex",
                        "description": "Use system exclusive messages in the Web MIDI API."
                      },
                      {
                        "value": "notifications",
                        "description": "Configure and display desktop notifications to the user with the Notifications API."
                      },
                      {
                        "value": "openExternal",
                        "description": "Open links in external applications."
                      },
                      {
                        "value": "pointerLock",
                        "description": "Directly interpret mouse movements as an input method via the Pointer Lock API. These requests always appear to originate from the main frame."
                      },
                      {
                        "value": "serial",
                        "description": "Read from and write to serial devices with the Web Serial API."
                      },
                      {
                        "value": "storage-access",
                        "description": "Allows content loaded in a third-party context to request access to third-party cookies using the Storage Access API."
                      },
                      {
                        "value": "top-level-storage-access",
                        "description": " Allow top-level sites to request third-party cookie access on behalf of embedded content originating from another site in the same related website set using the Storage Access API."
                      },
                      {
                        "value": "usb",
                        "description": "Expose non-standard Universal Serial Bus (USB) compatible devices services to the web with the WebUSB API."
                      }
                    ]
                  },
                  {
                    "name": "requestingOrigin",
                    "description": "The origin URL of the permission check",
                    "required": true,
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "name": "details",
                    "description": "Some properties are only available on certain permission types.",
                    "required": true,
                    "collection": false,
                    "type": "Object",
                    "properties": [
                      {
                        "name": "embeddingOrigin",
                        "description": "The origin of the frame embedding the frame that made the permission check.  Only set for cross-origin sub frames making permission checks.",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "securityOrigin",
                        "description": "The security origin of the `media` check.",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "mediaType",
                        "description": "The type of media access being requested, can be `video`, `audio` or `unknown`",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": [
                          {
                            "value": "video",
                            "description": ""
                          },
                          {
                            "value": "audio",
                            "description": ""
                          },
                          {
                            "value": "unknown",
                            "description": ""
                          }
                        ]
                      },
                      {
                        "name": "requestingUrl",
                        "description": "The last URL the requesting frame loaded.  This is not provided for cross-origin sub frames making permission checks.",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "isMainFrame",
                        "description": "Whether the frame making the request is the main frame",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "boolean"
                      }
                    ]
                  }
                ],
                "returns": {
                  "collection": false,
                  "type": "boolean"
                }
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sessetpermissioncheckhandlerhandler"
      },
      {
        "name": "setDisplayMediaRequestHandler",
        "signature": "(handler)",
        "description": "This handler will be called when web content requests access to display media via the `navigator.mediaDevices.getDisplayMedia` API. Use the desktopCapturer API to choose which stream(s) to grant access to.\n\nPassing a WebFrameMain object as a video or audio stream will capture the video or audio stream from that frame.\n\nPassing `null` instead of a function resets the handler to its default state.",
        "parameters": [
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "request",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Object",
                    "properties": [
                      {
                        "name": "frame",
                        "description": "Frame that is requesting access to media.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebFrameMain"
                      },
                      {
                        "name": "securityOrigin",
                        "description": "Origin of the page making the request.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "videoRequested",
                        "description": "true if the web content requested a video stream.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Boolean"
                      },
                      {
                        "name": "audioRequested",
                        "description": "true if the web content requested an audio stream.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Boolean"
                      },
                      {
                        "name": "userGesture",
                        "description": "Whether a user gesture was active when this request was triggered.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Boolean"
                      }
                    ]
                  },
                  {
                    "name": "callback",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Function",
                    "parameters": [
                      {
                        "name": "streams",
                        "description": "",
                        "required": true,
                        "collection": false,
                        "type": "Object",
                        "properties": [
                          {
                            "name": "video",
                            "description": "",
                            "required": false,
                            "additionalTags": [],
                            "collection": false,
                            "type": [
                              {
                                "collection": false,
                                "type": "Object",
                                "properties": [
                                  {
                                    "name": "id",
                                    "description": "The id of the stream being granted. This will usually come from a DesktopCapturerSource object.",
                                    "required": true,
                                    "additionalTags": [],
                                    "collection": false,
                                    "type": "String",
                                    "possibleValues": null
                                  },
                                  {
                                    "name": "name",
                                    "description": "The name of the stream being granted. This will usually come from a DesktopCapturerSource object.",
                                    "required": true,
                                    "additionalTags": [],
                                    "collection": false,
                                    "type": "String",
                                    "possibleValues": null
                                  }
                                ]
                              },
                              {
                                "collection": false,
                                "type": "WebFrameMain"
                              }
                            ]
                          },
                          {
                            "name": "audio",
                            "description": "If a string is specified, can be `loopback` or `loopbackWithMute`. Specifying a loopback device will capture system audio, and is currently only supported on Windows. If a WebFrameMain is specified, will capture audio from that frame.",
                            "required": false,
                            "additionalTags": [],
                            "collection": false,
                            "type": [
                              {
                                "collection": false,
                                "type": "String",
                                "possibleValues": [
                                  {
                                    "value": "loopback",
                                    "description": ""
                                  },
                                  {
                                    "value": "loopbackWithMute",
                                    "description": ""
                                  }
                                ]
                              },
                              {
                                "collection": false,
                                "type": "WebFrameMain"
                              }
                            ]
                          },
                          {
                            "name": "enableLocalEcho",
                            "description": "If `audio` is a WebFrameMain and this is set to `true`, then local playback of audio will not be muted (e.g. using `MediaRecorder` to record `WebFrameMain` with this flag set to `true` will allow audio to pass through to the speakers while recording). Default is `false`.",
                            "required": false,
                            "additionalTags": [],
                            "collection": false,
                            "type": "Boolean"
                          }
                        ]
                      }
                    ],
                    "returns": null
                  }
                ],
                "returns": null
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sessetdisplaymediarequesthandlerhandler"
      },
      {
        "name": "setDevicePermissionHandler",
        "signature": "(handler)",
        "description": "Sets the handler which can be used to respond to device permission checks for the `session`. Returning `true` will allow the device to be permitted and `false` will reject it. To clear the handler, call `setDevicePermissionHandler(null)`. This handler can be used to provide default permissioning to devices without first calling for permission to devices (eg via `navigator.hid.requestDevice`).  If this handler is not defined, the default device permissions as granted through device selection (eg via `navigator.hid.requestDevice`) will be used. Additionally, the default behavior of Electron is to store granted device permission in memory. If longer term storage is needed, a developer can store granted device permissions (eg when handling the `select-hid-device` event) and then read from that storage with `setDevicePermissionHandler`.",
        "parameters": [
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "details",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Object",
                    "properties": [
                      {
                        "name": "deviceType",
                        "description": "The type of device that permission is being requested on, can be `hid`, `serial`, or `usb`.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": [
                          {
                            "value": "hid",
                            "description": ""
                          },
                          {
                            "value": "serial",
                            "description": ""
                          },
                          {
                            "value": "usb",
                            "description": ""
                          }
                        ]
                      },
                      {
                        "name": "origin",
                        "description": "The origin URL of the device permission check.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "device",
                        "description": "the device that permission is being requested for.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": [
                          {
                            "collection": false,
                            "type": "HIDDevice"
                          },
                          {
                            "collection": false,
                            "type": "SerialPort"
                          },
                          {
                            "collection": false,
                            "type": "USBDevice"
                          }
                        ]
                      }
                    ]
                  }
                ],
                "returns": {
                  "collection": false,
                  "type": "boolean"
                }
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sessetdevicepermissionhandlerhandler"
      },
      {
        "name": "setUSBProtectedClassesHandler",
        "signature": "(handler)",
        "description": "Sets the handler which can be used to override which USB classes are protected. The return value for the handler is a string array of USB classes which should be considered protected (eg not available in the renderer).  Valid values for the array are:\n\n* `audio`\n* `audio-video`\n* `hid`\n* `mass-storage`\n* `smart-card`\n* `video`\n* `wireless`\n\nReturning an empty string array from the handler will allow all USB classes; returning the passed in array will maintain the default list of protected USB classes (this is also the default behavior if a handler is not defined). To clear the handler, call `setUSBProtectedClassesHandler(null)`.",
        "parameters": [
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "details",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Object",
                    "properties": [
                      {
                        "name": "protectedClasses",
                        "description": "The current list of protected USB classes. Possible class values include:",
                        "required": true,
                        "additionalTags": [],
                        "collection": true,
                        "type": "String",
                        "possibleValues": [
                          {
                            "value": "audio",
                            "description": ""
                          },
                          {
                            "value": "audio-video",
                            "description": ""
                          },
                          {
                            "value": "hid",
                            "description": ""
                          },
                          {
                            "value": "mass-storage",
                            "description": ""
                          },
                          {
                            "value": "smart-card",
                            "description": ""
                          },
                          {
                            "value": "video",
                            "description": ""
                          },
                          {
                            "value": "wireless",
                            "description": ""
                          }
                        ]
                      }
                    ]
                  }
                ],
                "returns": {
                  "collection": true,
                  "type": "String",
                  "possibleValues": null
                }
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sessetusbprotectedclasseshandlerhandler"
      },
      {
        "name": "setBluetoothPairingHandler",
        "signature": "(handler)",
        "description": "Sets a handler to respond to Bluetooth pairing requests. This handler allows developers to handle devices that require additional validation before pairing.  When a handler is not defined, any pairing on Linux or Windows that requires additional validation will be automatically cancelled. macOS does not require a handler because macOS handles the pairing automatically.  To clear the handler, call `setBluetoothPairingHandler(null)`.",
        "parameters": [
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "details",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Object",
                    "properties": [
                      {
                        "name": "deviceId",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "pairingKind",
                        "description": "The type of pairing prompt being requested. One of the following values:",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": [
                          {
                            "value": "confirm",
                            "description": ""
                          },
                          {
                            "value": "confirmPin",
                            "description": ""
                          },
                          {
                            "value": "providePin",
                            "description": ""
                          }
                        ]
                      },
                      {
                        "name": "frame",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebFrameMain"
                      },
                      {
                        "name": "pin",
                        "description": "The pin value to verify if `pairingKind` is `confirmPin`.",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      }
                    ]
                  },
                  {
                    "name": "callback",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Function",
                    "parameters": [
                      {
                        "name": "response",
                        "description": "",
                        "required": true,
                        "collection": false,
                        "type": "Object",
                        "properties": [
                          {
                            "name": "confirmed",
                            "description": "`false` should be passed in if the dialog is canceled. If the `pairingKind` is `confirm` or `confirmPin`, this value should indicate if the pairing is confirmed.  If the `pairingKind` is `providePin` the value should be `true` when a value is provided.",
                            "required": true,
                            "additionalTags": [],
                            "collection": false,
                            "type": "boolean"
                          },
                          {
                            "name": "pin",
                            "description": "When the `pairingKind` is `providePin` this value should be the required pin for the Bluetooth device.",
                            "required": false,
                            "additionalTags": [],
                            "collection": false,
                            "type": [
                              {
                                "collection": false,
                                "type": "String",
                                "possibleValues": null
                              },
                              {
                                "type": "null",
                                "collection": false
                              }
                            ]
                          }
                        ]
                      }
                    ],
                    "returns": null
                  }
                ],
                "returns": null
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows",
          "os_linux"
        ],
        "urlFragment": "#sessetbluetoothpairinghandlerhandler-windows-linux"
      },
      {
        "name": "clearHostResolverCache",
        "signature": "()",
        "description": "Resolves when the operation is complete.\n\nClears the host resolver cache.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sesclearhostresolvercache"
      },
      {
        "name": "allowNTLMCredentialsForDomains",
        "signature": "(domains)",
        "description": "Dynamically sets whether to always send credentials for HTTP NTLM or Negotiate authentication.",
        "parameters": [
          {
            "name": "domains",
            "description": "A comma-separated list of servers for which integrated authentication is enabled.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sesallowntlmcredentialsfordomainsdomains"
      },
      {
        "name": "setUserAgent",
        "signature": "(userAgent[, acceptLanguages])",
        "description": "Overrides the `userAgent` and `acceptLanguages` for this session.\n\nThe `acceptLanguages` must a comma separated ordered list of language codes, for example `\"en-US,fr,de,ko,zh-CN,ja\"`.\n\nThis doesn't affect existing `WebContents`, and each `WebContents` can use `webContents.setUserAgent` to override the session-wide user agent.",
        "parameters": [
          {
            "name": "userAgent",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "acceptLanguages",
            "description": "",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sessetuseragentuseragent-acceptlanguages"
      },
      {
        "name": "isPersistent",
        "signature": "()",
        "description": "Whether or not this session is a persistent one. The default `webContents` session of a `BrowserWindow` is persistent. When creating a session from a partition, session prefixed with `persist:` will be persistent, while others will be temporary.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#sesispersistent"
      },
      {
        "name": "getUserAgent",
        "signature": "()",
        "description": "The user agent for this session.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#sesgetuseragent"
      },
      {
        "name": "setSSLConfig",
        "signature": "(config)",
        "description": "Sets the SSL configuration for the session. All subsequent network requests will use the new configuration. Existing network connections (such as WebSocket connections) will not be terminated, but old sockets in the pool will not be reused for new connections.",
        "parameters": [
          {
            "name": "config",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "minVersion",
                "description": "Can be `tls1`, `tls1.1`, `tls1.2` or `tls1.3`. The minimum SSL version to allow when connecting to remote servers. Defaults to `tls1`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "tls1",
                    "description": ""
                  },
                  {
                    "value": "tls1.1",
                    "description": ""
                  },
                  {
                    "value": "tls1.2",
                    "description": ""
                  },
                  {
                    "value": "tls1.3",
                    "description": ""
                  }
                ]
              },
              {
                "name": "maxVersion",
                "description": "Can be `tls1.2` or `tls1.3`. The maximum SSL version to allow when connecting to remote servers. Defaults to `tls1.3`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "tls1.2",
                    "description": ""
                  },
                  {
                    "value": "tls1.3",
                    "description": ""
                  }
                ]
              },
              {
                "name": "disabledCipherSuites",
                "description": "List of cipher suites which should be explicitly prevented from being used in addition to those disabled by the net built-in policy. Supported literal forms: 0xAABB, where AA is `cipher_suite[0]` and BB is `cipher_suite[1]`, as defined in RFC 2246, Section 7.4.1.2. Unrecognized but parsable cipher suites in this form will not return an error. Ex: To disable TLS_RSA_WITH_RC4_128_MD5, specify 0x0004, while to disable TLS_ECDH_ECDSA_WITH_RC4_128_SHA, specify 0xC002. Note that TLSv1.3 ciphers cannot be disabled using this mechanism.",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "Integer"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sessetsslconfigconfig"
      },
      {
        "name": "getBlobData",
        "signature": "(identifier)",
        "description": "resolves with blob data.",
        "parameters": [
          {
            "name": "identifier",
            "description": "Valid UUID.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "Buffer"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sesgetblobdataidentifier"
      },
      {
        "name": "downloadURL",
        "signature": "(url[, options])",
        "description": "Initiates a download of the resource at `url`. The API will generate a DownloadItem that can be accessed with the will-download event.\n\n**Note:** This does not perform any security checks that relate to a page's origin, unlike `webContents.downloadURL`.",
        "parameters": [
          {
            "name": "url",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "headers",
                "description": "HTTP request headers.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Record",
                "innerTypes": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  }
                ]
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sesdownloadurlurl-options"
      },
      {
        "name": "createInterruptedDownload",
        "signature": "(options)",
        "description": "Allows resuming `cancelled` or `interrupted` downloads from previous `Session`. The API will generate a DownloadItem that can be accessed with the will-download event. The DownloadItem will not have any `WebContents` associated with it and the initial state will be `interrupted`. The download will start only when the `resume` API is called on the DownloadItem.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "path",
                "description": "Absolute path of the download.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "urlChain",
                "description": "Complete URL chain for the download.",
                "required": true,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "mimeType",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "offset",
                "description": "Start range for the download.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "length",
                "description": "Total length of the download.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "lastModified",
                "description": "Last-Modified header value.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "eTag",
                "description": "ETag header value.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "startTime",
                "description": "Time when download was started in number of seconds since UNIX epoch.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Double"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sescreateinterrupteddownloadoptions"
      },
      {
        "name": "clearAuthCache",
        "signature": "()",
        "description": "resolves when the session’s HTTP authentication cache has been cleared.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sesclearauthcache"
      },
      {
        "name": "setPreloads",
        "signature": "(preloads)",
        "description": "Adds scripts that will be executed on ALL web contents that are associated with this session just before normal `preload` scripts run.",
        "parameters": [
          {
            "name": "preloads",
            "description": "An array of absolute path to preload scripts",
            "required": true,
            "collection": true,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sessetpreloadspreloads"
      },
      {
        "name": "getPreloads",
        "signature": "()",
        "description": "an array of paths to preload scripts that have been registered.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#sesgetpreloads"
      },
      {
        "name": "setCodeCachePath",
        "signature": "(path)",
        "description": "Sets the directory to store the generated JS code cache for this session. The directory is not required to be created by the user before this call, the runtime will create if it does not exist otherwise will use the existing directory. If directory cannot be created, then code cache will not be used and all operations related to code cache will fail silently inside the runtime. By default, the directory will be `Code Cache` under the respective user data folder.\n\nNote that by default code cache is only enabled for http(s) URLs, to enable code cache for custom protocols, `codeCache: true` and `standard: true` must be specified when registering the protocol.",
        "parameters": [
          {
            "name": "path",
            "description": "Absolute path to store the v8 generated JS code cache from the renderer.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sessetcodecachepathpath"
      },
      {
        "name": "clearCodeCaches",
        "signature": "(options)",
        "description": "resolves when the code cache clear operation is complete.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "urls",
                "description": "An array of url corresponding to the resource whose generated code cache needs to be removed. If the list is empty then all entries in the cache directory will be removed.",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sesclearcodecachesoptions"
      },
      {
        "name": "setSpellCheckerEnabled",
        "signature": "(enable)",
        "description": "Sets whether to enable the builtin spell checker.",
        "parameters": [
          {
            "name": "enable",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sessetspellcheckerenabledenable"
      },
      {
        "name": "isSpellCheckerEnabled",
        "signature": "()",
        "description": "Whether the builtin spell checker is enabled.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#sesisspellcheckerenabled"
      },
      {
        "name": "setSpellCheckerLanguages",
        "signature": "(languages)",
        "description": "The built in spellchecker does not automatically detect what language a user is typing in.  In order for the spell checker to correctly check their words you must call this API with an array of language codes.  You can get the list of supported language codes with the `ses.availableSpellCheckerLanguages` property.\n\n**Note:** On macOS the OS spellchecker is used and will detect your language automatically.  This API is a no-op on macOS.",
        "parameters": [
          {
            "name": "languages",
            "description": "An array of language codes to enable the spellchecker for.",
            "required": true,
            "collection": true,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sessetspellcheckerlanguageslanguages"
      },
      {
        "name": "getSpellCheckerLanguages",
        "signature": "()",
        "description": "An array of language codes the spellchecker is enabled for.  If this list is empty the spellchecker will fallback to using `en-US`.  By default on launch if this setting is an empty list Electron will try to populate this setting with the current OS locale.  This setting is persisted across restarts.\n\n**Note:** On macOS the OS spellchecker is used and has its own list of languages. On macOS, this API will return whichever languages have been configured by the OS.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#sesgetspellcheckerlanguages"
      },
      {
        "name": "setSpellCheckerDictionaryDownloadURL",
        "signature": "(url)",
        "description": "By default Electron will download hunspell dictionaries from the Chromium CDN.  If you want to override this behavior you can use this API to point the dictionary downloader at your own hosted version of the hunspell dictionaries.  We publish a `hunspell_dictionaries.zip` file with each release which contains the files you need to host here.\n\nThe file server must be **case insensitive**. If you cannot do this, you must upload each file twice: once with the case it has in the ZIP file and once with the filename as all lowercase.\n\nIf the files present in `hunspell_dictionaries.zip` are available at `https://example.com/dictionaries/language-code.bdic` then you should call this api with `ses.setSpellCheckerDictionaryDownloadURL('https://example.com/dictionaries/')`.  Please note the trailing slash.  The URL to the dictionaries is formed as `${url}${filename}`.\n\n**Note:** On macOS the OS spellchecker is used and therefore we do not download any dictionary files.  This API is a no-op on macOS.",
        "parameters": [
          {
            "name": "url",
            "description": "A base URL for Electron to download hunspell dictionaries from.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sessetspellcheckerdictionarydownloadurlurl"
      },
      {
        "name": "listWordsInSpellCheckerDictionary",
        "signature": "()",
        "description": "An array of all words in app's custom dictionary. Resolves when the full dictionary is loaded from disk.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": true,
              "type": "String",
              "possibleValues": null
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#seslistwordsinspellcheckerdictionary"
      },
      {
        "name": "addWordToSpellCheckerDictionary",
        "signature": "(word)",
        "description": "Whether the word was successfully written to the custom dictionary. This API will not work on non-persistent (in-memory) sessions.\n\n**Note:** On macOS and Windows 10 this word will be written to the OS custom dictionary as well",
        "parameters": [
          {
            "name": "word",
            "description": "The word you want to add to the dictionary",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#sesaddwordtospellcheckerdictionaryword"
      },
      {
        "name": "removeWordFromSpellCheckerDictionary",
        "signature": "(word)",
        "description": "Whether the word was successfully removed from the custom dictionary. This API will not work on non-persistent (in-memory) sessions.\n\n**Note:** On macOS and Windows 10 this word will be removed from the OS custom dictionary as well",
        "parameters": [
          {
            "name": "word",
            "description": "The word you want to remove from the dictionary",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#sesremovewordfromspellcheckerdictionaryword"
      },
      {
        "name": "loadExtension",
        "signature": "(path[, options])",
        "description": "resolves when the extension is loaded.\n\nThis method will raise an exception if the extension could not be loaded. If there are warnings when installing the extension (e.g. if the extension requests an API that Electron does not support) then they will be logged to the console.\n\nNote that Electron does not support the full range of Chrome extensions APIs. See Supported Extensions APIs for more details on what is supported.\n\nNote that in previous versions of Electron, extensions that were loaded would be remembered for future runs of the application. This is no longer the case: `loadExtension` must be called on every boot of your app if you want the extension to be loaded.\n\nThis API does not support loading packed (.crx) extensions.\n\n**Note:** This API cannot be called before the `ready` event of the `app` module is emitted.\n\n**Note:** Loading extensions into in-memory (non-persistent) sessions is not supported and will throw an error.",
        "parameters": [
          {
            "name": "path",
            "description": "Path to a directory containing an unpacked Chrome extension",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "allowFileAccess",
                "description": "Whether to allow the extension to read local files over `file://` protocol and inject content scripts into `file://` pages. This is required e.g. for loading devtools extensions on `file://` URLs. Defaults to false.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "Extension"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sesloadextensionpath-options"
      },
      {
        "name": "removeExtension",
        "signature": "(extensionId)",
        "description": "Unloads an extension.\n\n**Note:** This API cannot be called before the `ready` event of the `app` module is emitted.",
        "parameters": [
          {
            "name": "extensionId",
            "description": "ID of extension to remove",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sesremoveextensionextensionid"
      },
      {
        "name": "getExtension",
        "signature": "(extensionId)",
        "description": "The loaded extension with the given ID.\n\n**Note:** This API cannot be called before the `ready` event of the `app` module is emitted.",
        "parameters": [
          {
            "name": "extensionId",
            "description": "ID of extension to query",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "Extension"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sesgetextensionextensionid"
      },
      {
        "name": "getAllExtensions",
        "signature": "()",
        "description": "A list of all loaded extensions.\n\n**Note:** This API cannot be called before the `ready` event of the `app` module is emitted.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "Extension"
        },
        "additionalTags": [],
        "urlFragment": "#sesgetallextensions"
      },
      {
        "name": "getStoragePath",
        "signature": "()",
        "description": "The absolute file system path where data for this session is persisted on disk.  For in memory sessions this returns `null`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sesgetstoragepath"
      },
      {
        "name": "clearData",
        "signature": "([options])",
        "description": "resolves when all data has been cleared.\n\nClears various different types of data.\n\nThis method clears more types of data and is more thorough than the `clearStorageData` method.\n\n**Note:** Cookies are stored at a broader scope than origins. When removing cookies and filtering by `origins` (or `excludeOrigins`), the cookies will be removed at the registrable domain level. For example, clearing cookies for the origin `https://really.specific.origin.example.com/` will end up clearing all cookies for `example.com`. Clearing cookies for the origin `https://my.website.example.co.uk/` will end up clearing all cookies for `example.co.uk`.\n\nFor more information, refer to Chromium's `BrowsingDataRemover` interface.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "dataTypes",
                "description": "The types of data to clear. By default, this will clear all types of data.",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "backgroundFetch",
                    "description": "Background Fetch"
                  },
                  {
                    "value": "cache",
                    "description": "Cache"
                  },
                  {
                    "value": "cookies",
                    "description": "Cookies"
                  },
                  {
                    "value": "downloads",
                    "description": "Downloads"
                  },
                  {
                    "value": "fileSystems",
                    "description": "File Systems"
                  },
                  {
                    "value": "indexedDB",
                    "description": "IndexedDB"
                  },
                  {
                    "value": "localStorage",
                    "description": "Local Storage"
                  },
                  {
                    "value": "serviceWorkers",
                    "description": "Service Workers"
                  },
                  {
                    "value": "webSQL",
                    "description": "WebSQL"
                  }
                ]
              },
              {
                "name": "origins",
                "description": "Clear data for only these origins. Cannot be used with `excludeOrigins`.",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "excludeOrigins",
                "description": "Clear data for all origins except these ones. Cannot be used with `origins`.",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "avoidClosingConnections",
                "description": "Skips deleting cookies that would close current network connections. (Default: `false`)",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "originMatchingMode",
                "description": "The behavior for matching data to origins.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "third-parties-included",
                    "description": "Storage is matched on origin in first-party contexts and top-level-site in third-party contexts."
                  },
                  {
                    "value": "origin-in-all-contexts",
                    "description": "Storage is matched on origin only in all contexts."
                  }
                ]
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#sescleardataoptions"
      }
    ],
    "instanceProperties": [
      {
        "name": "availableSpellCheckerLanguages",
        "description": "A `string[]` array which consists of all the known available spell checker languages.  Providing a language code to the `setSpellCheckerLanguages` API that isn't in this array will result in an error.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#sesavailablespellcheckerlanguages-readonly",
        "collection": true,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "spellCheckerEnabled",
        "description": "A `boolean` indicating whether builtin spell checker is enabled.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#sesspellcheckerenabled",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "storagePath",
        "description": "A `string | null` indicating the absolute file system path where data for this session is persisted on disk.  For in memory sessions this returns `null`.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#sesstoragepath-readonly",
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "type": "null",
            "collection": false
          }
        ]
      },
      {
        "name": "cookies",
        "description": "A `Cookies` object for this session.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#sescookies-readonly",
        "collection": false,
        "type": "Cookies"
      },
      {
        "name": "serviceWorkers",
        "description": "A `ServiceWorkers` object for this session.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#sesserviceworkers-readonly",
        "collection": false,
        "type": "ServiceWorkers"
      },
      {
        "name": "webRequest",
        "description": "A `WebRequest` object for this session.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#seswebrequest-readonly",
        "collection": false,
        "type": "WebRequest"
      },
      {
        "name": "protocol",
        "description": "A `Protocol` object for this session.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#sesprotocol-readonly",
        "collection": false,
        "type": "Protocol"
      },
      {
        "name": "netLog",
        "description": "A `NetLog` object for this session.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#sesnetlog-readonly",
        "collection": false,
        "type": "NetLog"
      }
    ],
    "instanceEvents": [
      {
        "name": "will-download",
        "description": "Emitted when Electron is about to download `item` in `webContents`.\n\nCalling `event.preventDefault()` will cancel the download and `item` will not be available from next tick of the process.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "item",
            "description": "",
            "collection": false,
            "type": "DownloadItem",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "webContents",
            "description": "",
            "collection": false,
            "type": "WebContents",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-will-download"
      },
      {
        "name": "extension-loaded",
        "description": "Emitted after an extension is loaded. This occurs whenever an extension is added to the \"enabled\" set of extensions. This includes:\n\n* Extensions being loaded from `Session.loadExtension`.\n* Extensions being reloaded:\n  * from a crash.\n  * if the extension requested it (`chrome.runtime.reload()`).",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "extension",
            "description": "",
            "collection": false,
            "type": "Extension",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-extension-loaded"
      },
      {
        "name": "extension-unloaded",
        "description": "Emitted after an extension is unloaded. This occurs when `Session.removeExtension` is called.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "extension",
            "description": "",
            "collection": false,
            "type": "Extension",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-extension-unloaded"
      },
      {
        "name": "extension-ready",
        "description": "Emitted after an extension is loaded and all necessary browser state is initialized to support the start of the extension's background page.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "extension",
            "description": "",
            "collection": false,
            "type": "Extension",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-extension-ready"
      },
      {
        "name": "file-system-access-restricted",
        "description": "",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "origin",
                "description": "The origin that initiated access to the blocked path.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "isDirectory",
                "description": "Whether or not the path is a directory.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "path",
                "description": "The blocked path attempting to be accessed.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "additionalTags": [],
            "required": true
          },
          {
            "name": "callback",
            "description": "",
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "action",
                "description": "The action to take as a result of the restricted path access attempt.",
                "required": true,
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "allow",
                    "description": "This will allow `path` to be accessed despite restricted status."
                  },
                  {
                    "value": "deny",
                    "description": "This will block the access request and trigger an `AbortError`."
                  },
                  {
                    "value": "tryAgain",
                    "description": "This will open a new file picker and allow the user to choose another path."
                  }
                ]
              }
            ],
            "returns": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-file-system-access-restricted"
      },
      {
        "name": "preconnect",
        "description": "Emitted when a render process requests preconnection to a URL, generally due to a resource hint.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "preconnectUrl",
            "description": "The URL being requested for preconnection by the renderer.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "allowCredentials",
            "description": "True if the renderer is requesting that the connection include credentials (see the spec for more details.)",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-preconnect"
      },
      {
        "name": "spellcheck-dictionary-initialized",
        "description": "Emitted when a hunspell dictionary file has been successfully initialized. This occurs after the file has been downloaded.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "languageCode",
            "description": "The language code of the dictionary file",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-spellcheck-dictionary-initialized"
      },
      {
        "name": "spellcheck-dictionary-download-begin",
        "description": "Emitted when a hunspell dictionary file starts downloading",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "languageCode",
            "description": "The language code of the dictionary file",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-spellcheck-dictionary-download-begin"
      },
      {
        "name": "spellcheck-dictionary-download-success",
        "description": "Emitted when a hunspell dictionary file has been successfully downloaded",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "languageCode",
            "description": "The language code of the dictionary file",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-spellcheck-dictionary-download-success"
      },
      {
        "name": "spellcheck-dictionary-download-failure",
        "description": "Emitted when a hunspell dictionary file download fails.  For details on the failure you should collect a netlog and inspect the download request.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "languageCode",
            "description": "The language code of the dictionary file",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-spellcheck-dictionary-download-failure"
      },
      {
        "name": "select-hid-device",
        "description": "Emitted when a HID device needs to be selected when a call to `navigator.hid.requestDevice` is made. `callback` should be called with `deviceId` to be selected; passing no arguments to `callback` will cancel the request.  Additionally, permissioning on `navigator.hid` can be further managed by using `ses.setPermissionCheckHandler(handler)` and `ses.setDevicePermissionHandler(handler)`.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "deviceList",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": true,
                "type": "HIDDevice"
              },
              {
                "name": "frame",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              }
            ],
            "additionalTags": [],
            "required": true
          },
          {
            "name": "callback",
            "description": "",
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "deviceId",
                "description": "",
                "required": false,
                "collection": false,
                "type": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "type": "null",
                    "collection": false
                  }
                ]
              }
            ],
            "returns": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-select-hid-device"
      },
      {
        "name": "hid-device-added",
        "description": "Emitted after `navigator.hid.requestDevice` has been called and `select-hid-device` has fired if a new device becomes available before the callback from `select-hid-device` is called.  This event is intended for use when using a UI to ask users to pick a device so that the UI can be updated with the newly added device.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "device",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "HIDDevice"
              },
              {
                "name": "frame",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-hid-device-added"
      },
      {
        "name": "hid-device-removed",
        "description": "Emitted after `navigator.hid.requestDevice` has been called and `select-hid-device` has fired if a device has been removed before the callback from `select-hid-device` is called.  This event is intended for use when using a UI to ask users to pick a device so that the UI can be updated to remove the specified device.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "device",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "HIDDevice"
              },
              {
                "name": "frame",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-hid-device-removed"
      },
      {
        "name": "hid-device-revoked",
        "description": "Emitted after `HIDDevice.forget()` has been called.  This event can be used to help maintain persistent storage of permissions when `setDevicePermissionHandler` is used.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "device",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "HIDDevice"
              },
              {
                "name": "origin",
                "description": "The origin that the device has been revoked from.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-hid-device-revoked"
      },
      {
        "name": "select-serial-port",
        "description": "Emitted when a serial port needs to be selected when a call to `navigator.serial.requestPort` is made. `callback` should be called with `portId` to be selected, passing an empty string to `callback` will cancel the request.  Additionally, permissioning on `navigator.serial` can be managed by using ses.setPermissionCheckHandler(handler) with the `serial` permission.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "portList",
            "description": "",
            "collection": true,
            "type": "SerialPort",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "webContents",
            "description": "",
            "collection": false,
            "type": "WebContents",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "callback",
            "description": "",
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "portId",
                "description": "",
                "required": true,
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "returns": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-select-serial-port"
      },
      {
        "name": "serial-port-added",
        "description": "Emitted after `navigator.serial.requestPort` has been called and `select-serial-port` has fired if a new serial port becomes available before the callback from `select-serial-port` is called.  This event is intended for use when using a UI to ask users to pick a port so that the UI can be updated with the newly added port.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "port",
            "description": "",
            "collection": false,
            "type": "SerialPort",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "webContents",
            "description": "",
            "collection": false,
            "type": "WebContents",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-serial-port-added"
      },
      {
        "name": "serial-port-removed",
        "description": "Emitted after `navigator.serial.requestPort` has been called and `select-serial-port` has fired if a serial port has been removed before the callback from `select-serial-port` is called.  This event is intended for use when using a UI to ask users to pick a port so that the UI can be updated to remove the specified port.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "port",
            "description": "",
            "collection": false,
            "type": "SerialPort",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "webContents",
            "description": "",
            "collection": false,
            "type": "WebContents",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-serial-port-removed"
      },
      {
        "name": "serial-port-revoked",
        "description": "Emitted after `SerialPort.forget()` has been called.  This event can be used to help maintain persistent storage of permissions when `setDevicePermissionHandler` is used.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "port",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "SerialPort"
              },
              {
                "name": "frame",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              },
              {
                "name": "origin",
                "description": "The origin that the device has been revoked from.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-serial-port-revoked"
      },
      {
        "name": "select-usb-device",
        "description": "Emitted when a USB device needs to be selected when a call to `navigator.usb.requestDevice` is made. `callback` should be called with `deviceId` to be selected; passing no arguments to `callback` will cancel the request.  Additionally, permissioning on `navigator.usb` can be further managed by using `ses.setPermissionCheckHandler(handler)` and `ses.setDevicePermissionHandler(handler)`.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "deviceList",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": true,
                "type": "USBDevice"
              },
              {
                "name": "frame",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              }
            ],
            "additionalTags": [],
            "required": true
          },
          {
            "name": "callback",
            "description": "",
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "deviceId",
                "description": "",
                "required": false,
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "returns": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-select-usb-device"
      },
      {
        "name": "usb-device-added",
        "description": "Emitted after `navigator.usb.requestDevice` has been called and `select-usb-device` has fired if a new device becomes available before the callback from `select-usb-device` is called.  This event is intended for use when using a UI to ask users to pick a device so that the UI can be updated with the newly added device.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "device",
            "description": "",
            "collection": false,
            "type": "USBDevice",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "webContents",
            "description": "",
            "collection": false,
            "type": "WebContents",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-usb-device-added"
      },
      {
        "name": "usb-device-removed",
        "description": "Emitted after `navigator.usb.requestDevice` has been called and `select-usb-device` has fired if a device has been removed before the callback from `select-usb-device` is called.  This event is intended for use when using a UI to ask users to pick a device so that the UI can be updated to remove the specified device.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "device",
            "description": "",
            "collection": false,
            "type": "USBDevice",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "webContents",
            "description": "",
            "collection": false,
            "type": "WebContents",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-usb-device-removed"
      },
      {
        "name": "usb-device-revoked",
        "description": "Emitted after `USBDevice.forget()` has been called.  This event can be used to help maintain persistent storage of permissions when `setDevicePermissionHandler` is used.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "device",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "USBDevice"
              },
              {
                "name": "origin",
                "description": "The origin that the device has been revoked from.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-usb-device-revoked"
      }
    ],
    "instanceName": "session"
  },
  {
    "name": "ShareMenu",
    "description": "The `ShareMenu` class creates Share Menu on macOS, which can be used to share information from the current context to apps, social media accounts, and other services.\n\nFor including the share menu as a submenu of other menus, please use the `shareMenu` role of `MenuItem`.\n\n### Class: ShareMenu\n\n> Create share menu on macOS.\n\nProcess: Main",
    "slug": "share-menu",
    "websiteUrl": "https://electronjs.org/docs/api/share-menu",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/share-menu.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "constructorMethod": {
      "signature": "(sharingItem)",
      "parameters": [
        {
          "name": "sharingItem",
          "description": "The item to share.",
          "required": true,
          "collection": false,
          "type": "SharingItem"
        }
      ]
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "popup",
        "signature": "([options])",
        "description": "Pops up this menu as a context menu in the `BrowserWindow`.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "PopupOptions"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sharemenupopupoptions"
      },
      {
        "name": "closePopup",
        "signature": "([browserWindow])",
        "description": "Closes the context menu in the `browserWindow`.",
        "parameters": [
          {
            "name": "browserWindow",
            "description": "Default is the focused window.",
            "required": false,
            "collection": false,
            "type": "BrowserWindow"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#sharemenuclosepopupbrowserwindow"
      }
    ],
    "instanceProperties": [],
    "instanceEvents": [],
    "instanceName": "shareMenu"
  },
  {
    "name": "shell",
    "description": "> Manage files and URLs using their default applications.\n\nProcess: Main, Renderer (non-sandboxed only)\n\nThe `shell` module provides functions related to desktop integration.\n\nAn example of opening a URL in the user's default browser:\n\n```\nconst { shell } = require('electron')\n\nshell.openExternal('https://github.com')\n```\n\n**Note:** While the `shell` module can be used in the renderer process, it will not function in a sandboxed renderer.",
    "slug": "shell",
    "websiteUrl": "https://electronjs.org/docs/api/shell",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/shell.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": true,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "showItemInFolder",
        "signature": "(fullPath)",
        "description": "Show the given file in a file manager. If possible, select the file.",
        "parameters": [
          {
            "name": "fullPath",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#shellshowiteminfolderfullpath"
      },
      {
        "name": "openPath",
        "signature": "(path)",
        "description": "Resolves with a string containing the error message corresponding to the failure if a failure occurred, otherwise \"\".\n\nOpen the given file in the desktop's default manner.",
        "parameters": [
          {
            "name": "path",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "String",
              "possibleValues": null
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#shellopenpathpath"
      },
      {
        "name": "openExternal",
        "signature": "(url[, options])",
        "description": "Open the given external protocol URL in the desktop's default manner. (For example, mailto: URLs in the user's default mail agent).",
        "parameters": [
          {
            "name": "url",
            "description": "Max 2081 characters on windows.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "activate",
                "description": "`true` to bring the opened application to the foreground. The default is `true`.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "workingDirectory",
                "description": "The working directory.",
                "required": false,
                "additionalTags": [
                  "os_windows"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "logUsage",
                "description": "Indicates a user initiated launch that enables tracking of frequently used programs and other behaviors. The default is `false`.",
                "required": false,
                "additionalTags": [
                  "os_windows"
                ],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#shellopenexternalurl-options"
      },
      {
        "name": "trashItem",
        "signature": "(path)",
        "description": "Resolves when the operation has been completed. Rejects if there was an error while deleting the requested item.\n\nThis moves a path to the OS-specific trash location (Trash on macOS, Recycle Bin on Windows, and a desktop-environment-specific location on Linux).",
        "parameters": [
          {
            "name": "path",
            "description": "path to the item to be moved to the trash.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#shelltrashitempath"
      },
      {
        "name": "beep",
        "signature": "()",
        "description": "Play the beep sound.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#shellbeep"
      },
      {
        "name": "writeShortcutLink",
        "signature": "(shortcutPath[, operation], options)",
        "description": "Whether the shortcut was created successfully.\n\nCreates or updates a shortcut link at `shortcutPath`.",
        "parameters": [
          {
            "name": "shortcutPath",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "operation",
            "description": "Default is `create`, can be one of following:",
            "required": false,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "create",
                "description": "Creates a new shortcut, overwriting if necessary."
              },
              {
                "value": "update",
                "description": "Updates specified properties only on an existing shortcut."
              },
              {
                "value": "replace",
                "description": "Overwrites an existing shortcut, fails if the shortcut doesn't exist."
              }
            ]
          },
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "ShortcutDetails"
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#shellwriteshortcutlinkshortcutpath-operation-options-windows"
      },
      {
        "name": "readShortcutLink",
        "signature": "(shortcutPath)",
        "description": "Resolves the shortcut link at `shortcutPath`.\n\nAn exception will be thrown when any error happens.",
        "parameters": [
          {
            "name": "shortcutPath",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "ShortcutDetails"
        },
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#shellreadshortcutlinkshortcutpath-windows"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "systemPreferences",
    "description": "> Get system preferences.\n\nProcess: Main, Utility",
    "slug": "system-preferences",
    "websiteUrl": "https://electronjs.org/docs/api/system-preferences",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/system-preferences.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": true,
      "exported": true
    },
    "methods": [
      {
        "name": "isSwipeTrackingFromScrollEventsEnabled",
        "signature": "()",
        "description": "Whether the Swipe between pages setting is on.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencesisswipetrackingfromscrolleventsenabled-macos"
      },
      {
        "name": "postNotification",
        "signature": "(event, userInfo[, deliverImmediately])",
        "description": "Posts `event` as native notifications of macOS. The `userInfo` is an Object that contains the user information dictionary sent along with the notification.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "userInfo",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Record",
            "innerTypes": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "collection": false,
                "type": "any"
              }
            ]
          },
          {
            "name": "deliverImmediately",
            "description": "`true` to post notifications immediately even when the subscribing app is inactive.",
            "required": false,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencespostnotificationevent-userinfo-deliverimmediately-macos"
      },
      {
        "name": "postLocalNotification",
        "signature": "(event, userInfo)",
        "description": "Posts `event` as native notifications of macOS. The `userInfo` is an Object that contains the user information dictionary sent along with the notification.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "userInfo",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Record",
            "innerTypes": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "collection": false,
                "type": "any"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencespostlocalnotificationevent-userinfo-macos"
      },
      {
        "name": "postWorkspaceNotification",
        "signature": "(event, userInfo)",
        "description": "Posts `event` as native notifications of macOS. The `userInfo` is an Object that contains the user information dictionary sent along with the notification.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "userInfo",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Record",
            "innerTypes": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "collection": false,
                "type": "any"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencespostworkspacenotificationevent-userinfo-macos"
      },
      {
        "name": "subscribeNotification",
        "signature": "(event, callback)",
        "description": "The ID of this subscription\n\nSubscribes to native notifications of macOS, `callback` will be called with `callback(event, userInfo)` when the corresponding `event` happens. The `userInfo` is an Object that contains the user information dictionary sent along with the notification. The `object` is the sender of the notification, and only supports `NSString` values for now.\n\nThe `id` of the subscriber is returned, which can be used to unsubscribe the `event`.\n\nUnder the hood this API subscribes to `NSDistributedNotificationCenter`, example values of `event` are:\n\n* `AppleInterfaceThemeChangedNotification`\n* `AppleAquaColorVariantChanged`\n* `AppleColorPreferencesChangedNotification`\n* `AppleShowScrollBarsSettingChanged`\n\nIf `event` is null, the `NSDistributedNotificationCenter` doesn’t use it as criteria for delivery to the observer. See docs  for more information.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          },
          {
            "name": "callback",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "event",
                "description": "",
                "required": true,
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "userInfo",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Record",
                "innerTypes": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "unknown"
                  }
                ]
              },
              {
                "name": "object",
                "description": "",
                "required": true,
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "number"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencessubscribenotificationevent-callback-macos"
      },
      {
        "name": "subscribeLocalNotification",
        "signature": "(event, callback)",
        "description": "The ID of this subscription\n\nSame as `subscribeNotification`, but uses `NSNotificationCenter` for local defaults. This is necessary for events such as `NSUserDefaultsDidChangeNotification`.\n\nIf `event` is null, the `NSNotificationCenter` doesn’t use it as criteria for delivery to the observer. See docs for more information.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          },
          {
            "name": "callback",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "event",
                "description": "",
                "required": true,
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "userInfo",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Record",
                "innerTypes": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "unknown"
                  }
                ]
              },
              {
                "name": "object",
                "description": "",
                "required": true,
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "number"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencessubscribelocalnotificationevent-callback-macos"
      },
      {
        "name": "subscribeWorkspaceNotification",
        "signature": "(event, callback)",
        "description": "The ID of this subscription\n\nSame as `subscribeNotification`, but uses `NSWorkspace.sharedWorkspace.notificationCenter`. This is necessary for events such as `NSWorkspaceDidActivateApplicationNotification`.\n\nIf `event` is null, the `NSWorkspaceNotificationCenter` doesn’t use it as criteria for delivery to the observer. See docs for more information.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          },
          {
            "name": "callback",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "event",
                "description": "",
                "required": true,
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "userInfo",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Record",
                "innerTypes": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "unknown"
                  }
                ]
              },
              {
                "name": "object",
                "description": "",
                "required": true,
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "number"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencessubscribeworkspacenotificationevent-callback-macos"
      },
      {
        "name": "unsubscribeNotification",
        "signature": "(id)",
        "description": "Removes the subscriber with `id`.",
        "parameters": [
          {
            "name": "id",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencesunsubscribenotificationid-macos"
      },
      {
        "name": "unsubscribeLocalNotification",
        "signature": "(id)",
        "description": "Same as `unsubscribeNotification`, but removes the subscriber from `NSNotificationCenter`.",
        "parameters": [
          {
            "name": "id",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencesunsubscribelocalnotificationid-macos"
      },
      {
        "name": "unsubscribeWorkspaceNotification",
        "signature": "(id)",
        "description": "Same as `unsubscribeNotification`, but removes the subscriber from `NSWorkspace.sharedWorkspace.notificationCenter`.",
        "parameters": [
          {
            "name": "id",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencesunsubscribeworkspacenotificationid-macos"
      },
      {
        "name": "registerDefaults",
        "signature": "(defaults)",
        "description": "Add the specified defaults to your application's `NSUserDefaults`.",
        "parameters": [
          {
            "name": "defaults",
            "description": "a dictionary of (`key: value`) user defaults",
            "required": true,
            "collection": false,
            "type": "Record",
            "innerTypes": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "collection": false,
                "type": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "collection": false,
                    "type": "number"
                  }
                ]
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencesregisterdefaultsdefaults-macos"
      },
      {
        "name": "getUserDefault",
        "signature": "(key, type)",
        "description": "The value of `key` in `NSUserDefaults`.\n\nSome popular `key` and `type`s are:\n\n* `AppleInterfaceStyle`: `string`\n* `AppleAquaColorVariant`: `integer`\n* `AppleHighlightColor`: `string`\n* `AppleShowScrollBars`: `string`\n* `NSNavRecentPlaces`: `array`\n* `NSPreferredWebServices`: `dictionary`\n* `NSUserDictionaryReplacementItems`: `array`",
        "rawGenerics": "<Type extends keyof UserDefaultTypes>",
        "parameters": [
          {
            "name": "key",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "type",
            "description": "Can be `string`, `boolean`, `integer`, `float`, `double`, `url`, `array` or `dictionary`.",
            "required": true,
            "collection": false,
            "type": "Type"
          }
        ],
        "returns": {
          "collection": false,
          "type": "UserDefaultTypes[Type]"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencesgetuserdefaulttype-extends-keyof-userdefaulttypeskey-type-macos"
      },
      {
        "name": "setUserDefault",
        "signature": "(key, type, value)",
        "description": "Set the value of `key` in `NSUserDefaults`.\n\nNote that `type` should match actual type of `value`. An exception is thrown if they don't.\n\nSome popular `key` and `type`s are:\n\n* `ApplePressAndHoldEnabled`: `boolean`",
        "rawGenerics": "<Type extends keyof UserDefaultTypes>",
        "parameters": [
          {
            "name": "key",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "type",
            "description": "Can be `string`, `boolean`, `integer`, `float`, `double`, `url`, `array` or `dictionary`.",
            "required": true,
            "collection": false,
            "type": "Type"
          },
          {
            "name": "value",
            "description": "",
            "required": true,
            "collection": false,
            "type": "UserDefaultTypes[Type]"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencessetuserdefaulttype-extends-keyof-userdefaulttypeskey-type-value-macos"
      },
      {
        "name": "removeUserDefault",
        "signature": "(key)",
        "description": "Removes the `key` in `NSUserDefaults`. This can be used to restore the default or global value of a `key` previously set with `setUserDefault`.",
        "parameters": [
          {
            "name": "key",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencesremoveuserdefaultkey-macos"
      },
      {
        "name": "isAeroGlassEnabled",
        "signature": "()",
        "description": "`true` if DWM composition (Aero Glass) is enabled, and `false` otherwise.\n\nAn example of using it to determine if you should create a transparent window or not (transparent windows won't work correctly when DWM composition is disabled):",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#systempreferencesisaeroglassenabled-windows"
      },
      {
        "name": "getAccentColor",
        "signature": "()",
        "description": "The users current system wide accent color preference in RGBA hexadecimal form.\n\nThis API is only available on macOS 10.14 Mojave or newer.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [
          "os_windows",
          "os_macos"
        ],
        "urlFragment": "#systempreferencesgetaccentcolor-windows-macos"
      },
      {
        "name": "getColor",
        "signature": "(color)",
        "description": "The system color setting in RGBA hexadecimal form (`#RRGGBBAA`). See the Windows docs and the macOS docs for more details.\n\nThe following colors are only available on macOS 10.14: `find-highlight`, `selected-content-background`, `separator`, `unemphasized-selected-content-background`, `unemphasized-selected-text-background`, and `unemphasized-selected-text`.",
        "parameters": [
          {
            "name": "color",
            "description": "One of the following values:",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "3d-dark-shadow",
                "description": "Dark shadow for three-dimensional display elements."
              },
              {
                "value": "3d-face",
                "description": "Face color for three-dimensional display elements and for dialog box backgrounds."
              },
              {
                "value": "3d-highlight",
                "description": "Highlight color for three-dimensional display elements."
              },
              {
                "value": "3d-light",
                "description": "Light color for three-dimensional display elements."
              },
              {
                "value": "3d-shadow",
                "description": "Shadow color for three-dimensional display elements."
              },
              {
                "value": "active-border",
                "description": "Active window border."
              },
              {
                "value": "active-caption",
                "description": "Active window title bar. Specifies the left side color in the color gradient of an active window's title bar if the gradient effect is enabled."
              },
              {
                "value": "active-caption-gradient",
                "description": "Right side color in the color gradient of an active window's title bar."
              },
              {
                "value": "app-workspace",
                "description": "Background color of multiple document interface (MDI) applications."
              },
              {
                "value": "button-text",
                "description": "Text on push buttons."
              },
              {
                "value": "caption-text",
                "description": "Text in caption, size box, and scroll bar arrow box."
              },
              {
                "value": "desktop",
                "description": "Desktop background color."
              },
              {
                "value": "disabled-text",
                "description": "Grayed (disabled) text."
              },
              {
                "value": "highlight",
                "description": "Item(s) selected in a control."
              },
              {
                "value": "highlight-text",
                "description": "Text of item(s) selected in a control."
              },
              {
                "value": "hotlight",
                "description": "Color for a hyperlink or hot-tracked item."
              },
              {
                "value": "inactive-border",
                "description": "Inactive window border."
              },
              {
                "value": "inactive-caption",
                "description": "Inactive window caption. Specifies the left side color in the color gradient of an inactive window's title bar if the gradient effect is enabled."
              },
              {
                "value": "inactive-caption-gradient",
                "description": "Right side color in the color gradient of an inactive window's title bar."
              },
              {
                "value": "inactive-caption-text",
                "description": "Color of text in an inactive caption."
              },
              {
                "value": "info-background",
                "description": "Background color for tooltip controls."
              },
              {
                "value": "info-text",
                "description": "Text color for tooltip controls."
              },
              {
                "value": "menu",
                "description": "Menu background."
              },
              {
                "value": "menu-highlight",
                "description": "The color used to highlight menu items when the menu appears as a flat menu."
              },
              {
                "value": "menubar",
                "description": "The background color for the menu bar when menus appear as flat menus."
              },
              {
                "value": "menu-text",
                "description": "Text in menus."
              },
              {
                "value": "scrollbar",
                "description": "Scroll bar gray area."
              },
              {
                "value": "window",
                "description": "Window background."
              },
              {
                "value": "window-frame",
                "description": "Window frame."
              },
              {
                "value": "window-text",
                "description": "Text in windows."
              },
              {
                "value": "control-background",
                "description": "The background of a large interface element, such as a browser or table."
              },
              {
                "value": "control",
                "description": "The surface of a control."
              },
              {
                "value": "control-text",
                "description": "The text of a control that isn’t disabled."
              },
              {
                "value": "disabled-control-text",
                "description": "The text of a control that’s disabled."
              },
              {
                "value": "find-highlight",
                "description": "The color of a find indicator."
              },
              {
                "value": "grid",
                "description": "The gridlines of an interface element such as a table."
              },
              {
                "value": "header-text",
                "description": "The text of a header cell in a table."
              },
              {
                "value": "highlight",
                "description": "The virtual light source onscreen."
              },
              {
                "value": "keyboard-focus-indicator",
                "description": "The ring that appears around the currently focused control when using the keyboard for interface navigation."
              },
              {
                "value": "label",
                "description": "The text of a label containing primary content."
              },
              {
                "value": "link",
                "description": "A link to other content."
              },
              {
                "value": "placeholder-text",
                "description": " A placeholder string in a control or text view."
              },
              {
                "value": "quaternary-label",
                "description": "The text of a label of lesser importance than a tertiary label such as watermark text."
              },
              {
                "value": "scrubber-textured-background",
                "description": "The background of a scrubber in the Touch Bar."
              },
              {
                "value": "secondary-label",
                "description": "The text of a label of lesser importance than a normal label such as a label used to represent a subheading or additional information."
              },
              {
                "value": "selected-content-background",
                "description": "The background for selected content in a key window or view."
              },
              {
                "value": "selected-control",
                "description": "The surface of a selected control."
              },
              {
                "value": "selected-control-text",
                "description": "The text of a selected control."
              },
              {
                "value": "selected-menu-item-text",
                "description": "The text of a selected menu."
              },
              {
                "value": "selected-text-background",
                "description": "The background of selected text."
              },
              {
                "value": "selected-text",
                "description": "Selected text."
              },
              {
                "value": "separator",
                "description": "A separator between different sections of content."
              },
              {
                "value": "shadow",
                "description": "The virtual shadow cast by a raised object onscreen."
              },
              {
                "value": "tertiary-label",
                "description": "The text of a label of lesser importance than a secondary label such as a label used to represent disabled text."
              },
              {
                "value": "text-background",
                "description": "Text background."
              },
              {
                "value": "text",
                "description": " The text in a document."
              },
              {
                "value": "under-page-background",
                "description": " The background behind a document's content."
              },
              {
                "value": "unemphasized-selected-content-background",
                "description": "The selected content in a non-key window or view."
              },
              {
                "value": "unemphasized-selected-text-background",
                "description": "A background for selected text in a non-key window or view."
              },
              {
                "value": "unemphasized-selected-text",
                "description": "Selected text in a non-key window or view."
              },
              {
                "value": "window-background",
                "description": "The background of a window."
              },
              {
                "value": "window-frame-text",
                "description": "The text in the window's titlebar area."
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [
          "os_windows",
          "os_macos"
        ],
        "urlFragment": "#systempreferencesgetcolorcolor-windows-macos"
      },
      {
        "name": "getSystemColor",
        "signature": "(color)",
        "description": "The standard system color formatted as `#RRGGBBAA`.\n\nReturns one of several standard system colors that automatically adapt to vibrancy and changes in accessibility settings like 'Increase contrast' and 'Reduce transparency'. See Apple Documentation for  more details.",
        "parameters": [
          {
            "name": "color",
            "description": "One of the following values:",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "blue",
                "description": ""
              },
              {
                "value": "brown",
                "description": ""
              },
              {
                "value": "gray",
                "description": ""
              },
              {
                "value": "green",
                "description": ""
              },
              {
                "value": "orange",
                "description": ""
              },
              {
                "value": "pink",
                "description": ""
              },
              {
                "value": "purple",
                "description": ""
              },
              {
                "value": "red",
                "description": ""
              },
              {
                "value": "yellow",
                "description": ""
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencesgetsystemcolorcolor-macos"
      },
      {
        "name": "getEffectiveAppearance",
        "signature": "()",
        "description": "Can be `dark`, `light` or `unknown`.\n\nGets the macOS appearance setting that is currently applied to your application, maps to NSApplication.effectiveAppearance",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": [
            {
              "value": "dark",
              "description": ""
            },
            {
              "value": "light",
              "description": ""
            },
            {
              "value": "unknown",
              "description": ""
            }
          ]
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencesgeteffectiveappearance-macos"
      },
      {
        "name": "canPromptTouchID",
        "signature": "()",
        "description": "whether or not this device has the ability to use Touch ID.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencescanprompttouchid-macos"
      },
      {
        "name": "promptTouchID",
        "signature": "(reason)",
        "description": "resolves if the user has successfully authenticated with Touch ID.\n\nThis API itself will not protect your user data; rather, it is a mechanism to allow you to do so. Native apps will need to set Access Control Constants like `kSecAccessControlUserPresence` on their keychain entry so that reading it would auto-prompt for Touch ID biometric consent. This could be done with `node-keytar`, such that one would store an encryption key with `node-keytar` and only fetch it if `promptTouchID()` resolves.",
        "parameters": [
          {
            "name": "reason",
            "description": "The reason you are asking for Touch ID authentication",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencesprompttouchidreason-macos"
      },
      {
        "name": "isTrustedAccessibilityClient",
        "signature": "(prompt)",
        "description": "`true` if the current process is a trusted accessibility client and `false` if it is not.",
        "parameters": [
          {
            "name": "prompt",
            "description": "whether or not the user will be informed via prompt if the current process is untrusted.",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencesistrustedaccessibilityclientprompt-macos"
      },
      {
        "name": "getMediaAccessStatus",
        "signature": "(mediaType)",
        "description": "Can be `not-determined`, `granted`, `denied`, `restricted` or `unknown`.\n\nThis user consent was not required on macOS 10.13 High Sierra so this method will always return `granted`. macOS 10.14 Mojave or higher requires consent for `microphone` and `camera` access. macOS 10.15 Catalina or higher requires consent for `screen` access.\n\nWindows 10 has a global setting controlling `microphone` and `camera` access for all win32 applications. It will always return `granted` for `screen` and for all media types on older versions of Windows.",
        "parameters": [
          {
            "name": "mediaType",
            "description": "Can be `microphone`, `camera` or `screen`.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "microphone",
                "description": ""
              },
              {
                "value": "camera",
                "description": ""
              },
              {
                "value": "screen",
                "description": ""
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": [
            {
              "value": "not-determined",
              "description": ""
            },
            {
              "value": "granted",
              "description": ""
            },
            {
              "value": "denied",
              "description": ""
            },
            {
              "value": "restricted",
              "description": ""
            },
            {
              "value": "unknown",
              "description": ""
            }
          ]
        },
        "additionalTags": [
          "os_windows",
          "os_macos"
        ],
        "urlFragment": "#systempreferencesgetmediaaccessstatusmediatype-windows-macos"
      },
      {
        "name": "askForMediaAccess",
        "signature": "(mediaType)",
        "description": "A promise that resolves with `true` if consent was granted and `false` if it was denied. If an invalid `mediaType` is passed, the promise will be rejected. If an access request was denied and later is changed through the System Preferences pane, a restart of the app will be required for the new permissions to take effect. If access has already been requested and denied, it _must_ be changed through the preference pane; an alert will not pop up and the promise will resolve with the existing access status.\n\n**Important:** In order to properly leverage this API, you must set the `NSMicrophoneUsageDescription` and `NSCameraUsageDescription` strings in your app's `Info.plist` file. The values for these keys will be used to populate the permission dialogs so that the user will be properly informed as to the purpose of the permission request. See Electron Application Distribution for more information about how to set these in the context of Electron.\n\nThis user consent was not required until macOS 10.14 Mojave, so this method will always return `true` if your system is running 10.13 High Sierra.",
        "parameters": [
          {
            "name": "mediaType",
            "description": "the type of media being requested; can be `microphone`, `camera`.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "microphone",
                "description": ""
              },
              {
                "value": "camera",
                "description": ""
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "boolean"
            }
          ]
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencesaskformediaaccessmediatype-macos"
      },
      {
        "name": "getAnimationSettings",
        "signature": "()",
        "description": "* `shouldRenderRichAnimation` boolean - Returns true if rich animations should be rendered. Looks at session type (e.g. remote desktop) and accessibility settings to give guidance for heavy animations.\n* `scrollAnimationsEnabledBySystem` boolean - Determines on a per-platform basis whether scroll animations (e.g. produced by home/end key) should be enabled.\n* `prefersReducedMotion` boolean - Determines whether the user desires reduced motion based on platform APIs.\n\nReturns an object with system animation settings.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "shouldRenderRichAnimation",
              "description": "Returns true if rich animations should be rendered. Looks at session type (e.g. remote desktop) and accessibility settings to give guidance for heavy animations.",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "scrollAnimationsEnabledBySystem",
              "description": "Determines on a per-platform basis whether scroll animations (e.g. produced by home/end key) should be enabled.",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "prefersReducedMotion",
              "description": "Determines whether the user desires reduced motion based on platform APIs.",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "boolean"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#systempreferencesgetanimationsettings"
      }
    ],
    "properties": [
      {
        "name": "accessibilityDisplayShouldReduceTransparency()",
        "description": "A `boolean` property which determines whether the app avoids using semitransparent backgrounds. This maps to NSWorkspace.accessibilityDisplayShouldReduceTransparency",
        "required": true,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#systempreferencesaccessibilitydisplayshouldreducetransparency-macos",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "effectiveAppearance",
        "description": "A `string` property that can be `dark`, `light` or `unknown`.\n\nReturns the macOS appearance setting that is currently applied to your application, maps to NSApplication.effectiveAppearance",
        "required": true,
        "additionalTags": [
          "os_macos",
          "availability_readonly"
        ],
        "urlFragment": "#systempreferenceseffectiveappearance-macos-readonly",
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "dark",
            "description": ""
          },
          {
            "value": "light",
            "description": ""
          },
          {
            "value": "unknown",
            "description": ""
          }
        ]
      }
    ],
    "events": [
      {
        "name": "accent-color-changed",
        "description": "",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "newColor",
            "description": "The new RGBA color the user assigned to be their system accent color.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#event-accent-color-changed-windows"
      },
      {
        "name": "color-changed",
        "description": "",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#event-color-changed-windows"
      }
    ],
    "exportedClasses": []
  },
  {
    "name": "TouchBarButton",
    "description": "> Create a button in the touch bar for native macOS applications\n\nProcess: Main\n _This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._",
    "slug": "touch-bar-button",
    "websiteUrl": "https://electronjs.org/docs/api/touch-bar-button",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/touch-bar-button.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": {
      "signature": "(options)",
      "parameters": [
        {
          "name": "options",
          "description": "",
          "required": true,
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "label",
              "description": "Button text.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "accessibilityLabel",
              "description": "A short description of the button for use by screenreaders like VoiceOver.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "backgroundColor",
              "description": "Button background color in hex format, i.e `#ABCDEF`.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "icon",
              "description": "Button icon.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": [
                {
                  "collection": false,
                  "type": "NativeImage"
                },
                {
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                }
              ]
            },
            {
              "name": "iconPosition",
              "description": "Can be `left`, `right` or `overlay`. Defaults to `overlay`.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": [
                {
                  "value": "left",
                  "description": ""
                },
                {
                  "value": "right",
                  "description": ""
                },
                {
                  "value": "overlay",
                  "description": ""
                }
              ]
            },
            {
              "name": "click",
              "description": "Function to call when the button is clicked.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "Function",
              "parameters": [],
              "returns": null
            },
            {
              "name": "enabled",
              "description": "Whether the button is in an enabled state.  Default is `true`.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "boolean"
            }
          ]
        }
      ]
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [],
    "instanceProperties": [
      {
        "name": "accessibilityLabel",
        "description": "A `string` representing the description of the button to be read by a screen reader. Will only be read by screen readers if no label is set.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarbuttonaccessibilitylabel",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "label",
        "description": "A `string` representing the button's current text. Changing this value immediately updates the button in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarbuttonlabel",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "backgroundColor",
        "description": "A `string` hex code representing the button's current background color. Changing this value immediately updates the button in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarbuttonbackgroundcolor",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "icon",
        "description": "A `NativeImage` representing the button's current icon. Changing this value immediately updates the button in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarbuttonicon",
        "collection": false,
        "type": "NativeImage"
      },
      {
        "name": "iconPosition",
        "description": "A `string` - Can be `left`, `right` or `overlay`.  Defaults to `overlay`.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarbuttoniconposition",
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "left",
            "description": ""
          },
          {
            "value": "right",
            "description": ""
          },
          {
            "value": "overlay",
            "description": ""
          }
        ]
      },
      {
        "name": "enabled",
        "description": "A `boolean` representing whether the button is in an enabled state.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarbuttonenabled",
        "collection": false,
        "type": "boolean"
      }
    ],
    "instanceEvents": [],
    "instanceName": "touchBarButton"
  },
  {
    "name": "TouchBarColorPicker",
    "description": "> Create a color picker in the touch bar for native macOS applications\n\nProcess: Main\n _This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._",
    "slug": "touch-bar-color-picker",
    "websiteUrl": "https://electronjs.org/docs/api/touch-bar-color-picker",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/touch-bar-color-picker.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": {
      "signature": "(options)",
      "parameters": [
        {
          "name": "options",
          "description": "",
          "required": true,
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "availableColors",
              "description": "Array of hex color strings to appear as possible colors to select.",
              "required": false,
              "additionalTags": [],
              "collection": true,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "selectedColor",
              "description": "The selected hex color in the picker, i.e `#ABCDEF`.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "change",
              "description": "Function to call when a color is selected.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "Function",
              "parameters": [
                {
                  "name": "color",
                  "description": "The color that the user selected from the picker.",
                  "required": true,
                  "collection": false,
                  "type": "String",
                  "possibleValues": null
                }
              ],
              "returns": null
            }
          ]
        }
      ]
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [],
    "instanceProperties": [
      {
        "name": "availableColors",
        "description": "A `string[]` array representing the color picker's available colors to select. Changing this value immediately updates the color picker in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarcolorpickeravailablecolors",
        "collection": true,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "selectedColor",
        "description": "A `string` hex code representing the color picker's currently selected color. Changing this value immediately updates the color picker in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarcolorpickerselectedcolor",
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ],
    "instanceEvents": [],
    "instanceName": "touchBarColorPicker"
  },
  {
    "name": "TouchBarGroup",
    "description": "> Create a group in the touch bar for native macOS applications\n\nProcess: Main\n _This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._",
    "slug": "touch-bar-group",
    "websiteUrl": "https://electronjs.org/docs/api/touch-bar-group",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/touch-bar-group.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": {
      "signature": "(options)",
      "parameters": [
        {
          "name": "options",
          "description": "",
          "required": true,
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "items",
              "description": "Items to display as a group.",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "TouchBar"
            }
          ]
        }
      ]
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [],
    "instanceProperties": [],
    "instanceEvents": [],
    "instanceName": "touchBarGroup"
  },
  {
    "name": "TouchBarLabel",
    "description": "> Create a label in the touch bar for native macOS applications\n\nProcess: Main\n _This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._",
    "slug": "touch-bar-label",
    "websiteUrl": "https://electronjs.org/docs/api/touch-bar-label",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/touch-bar-label.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": {
      "signature": "(options)",
      "parameters": [
        {
          "name": "options",
          "description": "",
          "required": true,
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "label",
              "description": "Text to display.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "accessibilityLabel",
              "description": "A short description of the button for use by screenreaders like VoiceOver.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "textColor",
              "description": "Hex color of text, i.e `#ABCDEF`.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            }
          ]
        }
      ]
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [],
    "instanceProperties": [
      {
        "name": "label",
        "description": "A `string` representing the label's current text. Changing this value immediately updates the label in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarlabellabel",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "accessibilityLabel",
        "description": "A `string` representing the description of the label to be read by a screen reader.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarlabelaccessibilitylabel",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "textColor",
        "description": "A `string` hex code representing the label's current text color. Changing this value immediately updates the label in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarlabeltextcolor",
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ],
    "instanceEvents": [],
    "instanceName": "touchBarLabel"
  },
  {
    "name": "TouchBarOtherItemsProxy",
    "description": "> Instantiates a special \"other items proxy\", which nests TouchBar elements inherited from Chromium at the space indicated by the proxy. By default, this proxy is added to each TouchBar at the end of the input. For more information, see the AppKit docs on NSTouchBarItemIdentifierOtherItemsProxy\n\nNote: Only one instance of this class can be added per TouchBar.\n\nProcess: Main\n _This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._",
    "slug": "touch-bar-other-items-proxy",
    "websiteUrl": "https://electronjs.org/docs/api/touch-bar-other-items-proxy",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/touch-bar-other-items-proxy.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": {
      "signature": "()",
      "parameters": []
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [],
    "instanceProperties": [],
    "instanceEvents": [],
    "instanceName": "touchBarOtherItemsProxy"
  },
  {
    "name": "TouchBarPopover",
    "description": "> Create a popover in the touch bar for native macOS applications\n\nProcess: Main\n _This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._",
    "slug": "touch-bar-popover",
    "websiteUrl": "https://electronjs.org/docs/api/touch-bar-popover",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/touch-bar-popover.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": {
      "signature": "(options)",
      "parameters": [
        {
          "name": "options",
          "description": "",
          "required": true,
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "label",
              "description": "Popover button text.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "icon",
              "description": "Popover button icon.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "NativeImage"
            },
            {
              "name": "items",
              "description": "Items to display in the popover.",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "TouchBar"
            },
            {
              "name": "showCloseButton",
              "description": "`true` to display a close button on the left of the popover, `false` to not show it. Default is `true`.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "boolean"
            }
          ]
        }
      ]
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [],
    "instanceProperties": [
      {
        "name": "label",
        "description": "A `string` representing the popover's current button text. Changing this value immediately updates the popover in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarpopoverlabel",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "icon",
        "description": "A `NativeImage` representing the popover's current button icon. Changing this value immediately updates the popover in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarpopovericon",
        "collection": false,
        "type": "NativeImage"
      }
    ],
    "instanceEvents": [],
    "instanceName": "touchBarPopover"
  },
  {
    "name": "TouchBarScrubber",
    "description": "> Create a scrubber (a scrollable selector)\n\nProcess: Main\n _This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._",
    "slug": "touch-bar-scrubber",
    "websiteUrl": "https://electronjs.org/docs/api/touch-bar-scrubber",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/touch-bar-scrubber.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": {
      "signature": "(options)",
      "parameters": [
        {
          "name": "options",
          "description": "",
          "required": true,
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "items",
              "description": "An array of items to place in this scrubber.",
              "required": true,
              "additionalTags": [],
              "collection": true,
              "type": "ScrubberItem"
            },
            {
              "name": "select",
              "description": "Called when the user taps an item that was not the last tapped item.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "Function",
              "parameters": [
                {
                  "name": "selectedIndex",
                  "description": "The index of the item the user selected.",
                  "required": true,
                  "collection": false,
                  "type": "Integer"
                }
              ],
              "returns": null
            },
            {
              "name": "highlight",
              "description": "Called when the user taps any item.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "Function",
              "parameters": [
                {
                  "name": "highlightedIndex",
                  "description": "The index of the item the user touched.",
                  "required": true,
                  "collection": false,
                  "type": "Integer"
                }
              ],
              "returns": null
            },
            {
              "name": "selectedStyle",
              "description": "Selected item style. Can be `background`, `outline` or `none`. Defaults to `none`.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": [
                {
                  "value": "background",
                  "description": ""
                },
                {
                  "value": "outline",
                  "description": ""
                },
                {
                  "value": "none",
                  "description": ""
                }
              ]
            },
            {
              "name": "overlayStyle",
              "description": "Selected overlay item style. Can be `background`, `outline` or `none`. Defaults to `none`.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": [
                {
                  "value": "background",
                  "description": ""
                },
                {
                  "value": "outline",
                  "description": ""
                },
                {
                  "value": "none",
                  "description": ""
                }
              ]
            },
            {
              "name": "showArrowButtons",
              "description": "Whether to show arrow buttons. Defaults to `false` and is only shown if `items` is non-empty.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "boolean"
            },
            {
              "name": "mode",
              "description": "Can be `fixed` or `free`. The default is `free`.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": [
                {
                  "value": "fixed",
                  "description": ""
                },
                {
                  "value": "free",
                  "description": ""
                }
              ]
            },
            {
              "name": "continuous",
              "description": "Defaults to `true`.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "boolean"
            }
          ]
        }
      ]
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [],
    "instanceProperties": [
      {
        "name": "items",
        "description": "A `ScrubberItem[]` array representing the items in this scrubber. Updating this value immediately updates the control in the touch bar. Updating deep properties inside this array **does not update the touch bar**.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarscrubberitems",
        "collection": true,
        "type": "ScrubberItem"
      },
      {
        "name": "selectedStyle",
        "description": "A `string` representing the style that selected items in the scrubber should have. Updating this value immediately updates the control in the touch bar. Possible values:\n\n* `background` - Maps to `[NSScrubberSelectionStyle roundedBackgroundStyle]`.\n* `outline` - Maps to `[NSScrubberSelectionStyle outlineOverlayStyle]`.\n* `none` - Removes all styles.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarscrubberselectedstyle",
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "background",
            "description": "Maps to `[NSScrubberSelectionStyle roundedBackgroundStyle]`."
          },
          {
            "value": "outline",
            "description": "Maps to `[NSScrubberSelectionStyle outlineOverlayStyle]`."
          },
          {
            "value": "none",
            "description": "Removes all styles."
          }
        ]
      },
      {
        "name": "overlayStyle",
        "description": "A `string` representing the style that selected items in the scrubber should have. This style is overlaid on top of the scrubber item instead of being placed behind it. Updating this value immediately updates the control in the touch bar. Possible values:\n\n* `background` - Maps to `[NSScrubberSelectionStyle roundedBackgroundStyle]`.\n* `outline` - Maps to `[NSScrubberSelectionStyle outlineOverlayStyle]`.\n* `none` - Removes all styles.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarscrubberoverlaystyle",
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "background",
            "description": "Maps to `[NSScrubberSelectionStyle roundedBackgroundStyle]`."
          },
          {
            "value": "outline",
            "description": "Maps to `[NSScrubberSelectionStyle outlineOverlayStyle]`."
          },
          {
            "value": "none",
            "description": "Removes all styles."
          }
        ]
      },
      {
        "name": "showArrowButtons",
        "description": "A `boolean` representing whether to show the left / right selection arrows in this scrubber. Updating this value immediately updates the control in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarscrubbershowarrowbuttons",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "mode",
        "description": "A `string` representing the mode of this scrubber. Updating this value immediately updates the control in the touch bar. Possible values:\n\n* `fixed` - Maps to `NSScrubberModeFixed`.\n* `free` - Maps to `NSScrubberModeFree`.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarscrubbermode",
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "fixed",
            "description": "Maps to `NSScrubberModeFixed`."
          },
          {
            "value": "free",
            "description": "Maps to `NSScrubberModeFree`."
          }
        ]
      },
      {
        "name": "continuous",
        "description": "A `boolean` representing whether this scrubber is continuous or not. Updating this value immediately updates the control in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarscrubbercontinuous",
        "collection": false,
        "type": "boolean"
      }
    ],
    "instanceEvents": [],
    "instanceName": "touchBarScrubber"
  },
  {
    "name": "TouchBarSegmentedControl",
    "description": "> Create a segmented control (a button group) where one button has a selected state\n\nProcess: Main\n _This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._",
    "slug": "touch-bar-segmented-control",
    "websiteUrl": "https://electronjs.org/docs/api/touch-bar-segmented-control",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/touch-bar-segmented-control.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": {
      "signature": "(options)",
      "parameters": [
        {
          "name": "options",
          "description": "",
          "required": true,
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "segmentStyle",
              "description": "Style of the segments:",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": [
                {
                  "value": "automatic",
                  "description": "Default. The appearance of the segmented control is automatically determined based on the type of window in which the control is displayed and the position within the window. Maps to `NSSegmentStyleAutomatic`."
                },
                {
                  "value": "rounded",
                  "description": "The control is displayed using the rounded style. Maps to `NSSegmentStyleRounded`."
                },
                {
                  "value": "textured-rounded",
                  "description": "The control is displayed using the textured rounded style. Maps to `NSSegmentStyleTexturedRounded`."
                },
                {
                  "value": "round-rect",
                  "description": "The control is displayed using the round rect style. Maps to `NSSegmentStyleRoundRect`."
                },
                {
                  "value": "textured-square",
                  "description": "The control is displayed using the textured square style. Maps to `NSSegmentStyleTexturedSquare`."
                },
                {
                  "value": "capsule",
                  "description": "The control is displayed using the capsule style. Maps to `NSSegmentStyleCapsule`."
                },
                {
                  "value": "small-square",
                  "description": "The control is displayed using the small square style. Maps to `NSSegmentStyleSmallSquare`."
                },
                {
                  "value": "separated",
                  "description": "The segments in the control are displayed very close to each other but not touching. Maps to `NSSegmentStyleSeparated`."
                }
              ]
            },
            {
              "name": "mode",
              "description": "The selection mode of the control:",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": [
                {
                  "value": "single",
                  "description": "Default. One item selected at a time, selecting one deselects the previously selected item. Maps to `NSSegmentSwitchTrackingSelectOne`."
                },
                {
                  "value": "multiple",
                  "description": "Multiple items can be selected at a time. Maps to `NSSegmentSwitchTrackingSelectAny`."
                },
                {
                  "value": "buttons",
                  "description": "Make the segments act as buttons, each segment can be pressed and released but never marked as active. Maps to `NSSegmentSwitchTrackingMomentary`."
                }
              ]
            },
            {
              "name": "segments",
              "description": "An array of segments to place in this control.",
              "required": true,
              "additionalTags": [],
              "collection": true,
              "type": "SegmentedControlSegment"
            },
            {
              "name": "selectedIndex",
              "description": "The index of the currently selected segment, will update automatically with user interaction. When the mode is `multiple` it will be the last selected item.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "change",
              "description": "Called when the user selects a new segment.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "Function",
              "parameters": [
                {
                  "name": "selectedIndex",
                  "description": "The index of the segment the user selected.",
                  "required": true,
                  "collection": false,
                  "type": "Integer"
                },
                {
                  "name": "isSelected",
                  "description": "Whether as a result of user selection the segment is selected or not.",
                  "required": true,
                  "collection": false,
                  "type": "boolean"
                }
              ],
              "returns": null
            }
          ]
        }
      ]
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [],
    "instanceProperties": [
      {
        "name": "segmentStyle",
        "description": "A `string` representing the controls current segment style. Updating this value immediately updates the control in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarsegmentedcontrolsegmentstyle",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "segments",
        "description": "A `SegmentedControlSegment[]` array representing the segments in this control. Updating this value immediately updates the control in the touch bar. Updating deep properties inside this array **does not update the touch bar**.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarsegmentedcontrolsegments",
        "collection": true,
        "type": "SegmentedControlSegment"
      },
      {
        "name": "selectedIndex",
        "description": "An `Integer` representing the currently selected segment. Changing this value immediately updates the control in the touch bar. User interaction with the touch bar will update this value automatically.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarsegmentedcontrolselectedindex",
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "mode",
        "description": "A `string` representing the current selection mode of the control.  Can be `single`, `multiple` or `buttons`.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarsegmentedcontrolmode",
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "single",
            "description": ""
          },
          {
            "value": "multiple",
            "description": ""
          },
          {
            "value": "buttons",
            "description": ""
          }
        ]
      }
    ],
    "instanceEvents": [],
    "instanceName": "touchBarSegmentedControl"
  },
  {
    "name": "TouchBarSlider",
    "description": "> Create a slider in the touch bar for native macOS applications\n\nProcess: Main\n _This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._",
    "slug": "touch-bar-slider",
    "websiteUrl": "https://electronjs.org/docs/api/touch-bar-slider",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/touch-bar-slider.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": {
      "signature": "(options)",
      "parameters": [
        {
          "name": "options",
          "description": "",
          "required": true,
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "label",
              "description": "Label text.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": null
            },
            {
              "name": "value",
              "description": "Selected value.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "minValue",
              "description": "Minimum value.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "maxValue",
              "description": "Maximum value.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "change",
              "description": "Function to call when the slider is changed.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "Function",
              "parameters": [
                {
                  "name": "newValue",
                  "description": "The value that the user selected on the Slider.",
                  "required": true,
                  "collection": false,
                  "type": "number"
                }
              ],
              "returns": null
            }
          ]
        }
      ]
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [],
    "instanceProperties": [
      {
        "name": "label",
        "description": "A `string` representing the slider's current text. Changing this value immediately updates the slider in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarsliderlabel",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "value",
        "description": "A `number` representing the slider's current value. Changing this value immediately updates the slider in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarslidervalue",
        "collection": false,
        "type": "number"
      },
      {
        "name": "minValue",
        "description": "A `number` representing the slider's current minimum value. Changing this value immediately updates the slider in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarsliderminvalue",
        "collection": false,
        "type": "number"
      },
      {
        "name": "maxValue",
        "description": "A `number` representing the slider's current maximum value. Changing this value immediately updates the slider in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarslidermaxvalue",
        "collection": false,
        "type": "number"
      }
    ],
    "instanceEvents": [],
    "instanceName": "touchBarSlider"
  },
  {
    "name": "TouchBarSpacer",
    "description": "> Create a spacer between two items in the touch bar for native macOS applications\n\nProcess: Main\n _This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._",
    "slug": "touch-bar-spacer",
    "websiteUrl": "https://electronjs.org/docs/api/touch-bar-spacer",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/touch-bar-spacer.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": {
      "signature": "(options)",
      "parameters": [
        {
          "name": "options",
          "description": "",
          "required": true,
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "size",
              "description": "Size of spacer, possible values are:",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "String",
              "possibleValues": [
                {
                  "value": "small",
                  "description": "Small space between items. Maps to `NSTouchBarItemIdentifierFixedSpaceSmall`. This is the default."
                },
                {
                  "value": "large",
                  "description": "Large space between items. Maps to `NSTouchBarItemIdentifierFixedSpaceLarge`."
                },
                {
                  "value": "flexible",
                  "description": "Take up all available space. Maps to `NSTouchBarItemIdentifierFlexibleSpace`."
                }
              ]
            }
          ]
        }
      ]
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [],
    "instanceProperties": [
      {
        "name": "size",
        "description": "A `string` representing the size of the spacer.  Can be `small`, `large` or `flexible`.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarspacersize",
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "small",
            "description": ""
          },
          {
            "value": "large",
            "description": ""
          },
          {
            "value": "flexible",
            "description": ""
          }
        ]
      }
    ],
    "instanceEvents": [],
    "instanceName": "touchBarSpacer"
  },
  {
    "name": "TouchBar",
    "description": "\n\n### Class: TouchBar\n\n> Create TouchBar layouts for native macOS applications\n\nProcess: Main",
    "slug": "touch-bar",
    "websiteUrl": "https://electronjs.org/docs/api/touch-bar",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/touch-bar.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "constructorMethod": {
      "signature": "(options)",
      "parameters": [
        {
          "name": "options",
          "description": "",
          "required": true,
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "items",
              "description": "",
              "required": false,
              "additionalTags": [],
              "collection": true,
              "type": [
                {
                  "collection": false,
                  "type": "TouchBarButton"
                },
                {
                  "collection": false,
                  "type": "TouchBarColorPicker"
                },
                {
                  "collection": false,
                  "type": "TouchBarGroup"
                },
                {
                  "collection": false,
                  "type": "TouchBarLabel"
                },
                {
                  "collection": false,
                  "type": "TouchBarPopover"
                },
                {
                  "collection": false,
                  "type": "TouchBarScrubber"
                },
                {
                  "collection": false,
                  "type": "TouchBarSegmentedControl"
                },
                {
                  "collection": false,
                  "type": "TouchBarSlider"
                },
                {
                  "collection": false,
                  "type": "TouchBarSpacer"
                }
              ]
            },
            {
              "name": "escapeItem",
              "description": "",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": [
                {
                  "collection": false,
                  "type": "TouchBarButton"
                },
                {
                  "collection": false,
                  "type": "TouchBarColorPicker"
                },
                {
                  "collection": false,
                  "type": "TouchBarGroup"
                },
                {
                  "collection": false,
                  "type": "TouchBarLabel"
                },
                {
                  "collection": false,
                  "type": "TouchBarPopover"
                },
                {
                  "collection": false,
                  "type": "TouchBarScrubber"
                },
                {
                  "collection": false,
                  "type": "TouchBarSegmentedControl"
                },
                {
                  "collection": false,
                  "type": "TouchBarSlider"
                },
                {
                  "collection": false,
                  "type": "TouchBarSpacer"
                },
                {
                  "type": "null",
                  "collection": false
                }
              ]
            }
          ]
        }
      ]
    },
    "staticMethods": [],
    "staticProperties": [
      {
        "name": "TouchBarButton",
        "description": "A `typeof TouchBarButton` reference to the `TouchBarButton` class.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarbutton",
        "collection": false,
        "type": "typeof TouchBarButton"
      },
      {
        "name": "TouchBarColorPicker",
        "description": "A `typeof TouchBarColorPicker` reference to the `TouchBarColorPicker` class.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarcolorpicker",
        "collection": false,
        "type": "typeof TouchBarColorPicker"
      },
      {
        "name": "TouchBarGroup",
        "description": "A `typeof TouchBarGroup` reference to the `TouchBarGroup` class.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbargroup",
        "collection": false,
        "type": "typeof TouchBarGroup"
      },
      {
        "name": "TouchBarLabel",
        "description": "A `typeof TouchBarLabel` reference to the `TouchBarLabel` class.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarlabel",
        "collection": false,
        "type": "typeof TouchBarLabel"
      },
      {
        "name": "TouchBarPopover",
        "description": "A `typeof TouchBarPopover` reference to the `TouchBarPopover` class.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarpopover",
        "collection": false,
        "type": "typeof TouchBarPopover"
      },
      {
        "name": "TouchBarScrubber",
        "description": "A `typeof TouchBarScrubber` reference to the `TouchBarScrubber` class.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarscrubber",
        "collection": false,
        "type": "typeof TouchBarScrubber"
      },
      {
        "name": "TouchBarSegmentedControl",
        "description": "A `typeof TouchBarSegmentedControl` reference to the `TouchBarSegmentedControl` class.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarsegmentedcontrol",
        "collection": false,
        "type": "typeof TouchBarSegmentedControl"
      },
      {
        "name": "TouchBarSlider",
        "description": "A `typeof TouchBarSlider` reference to the `TouchBarSlider` class.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarslider",
        "collection": false,
        "type": "typeof TouchBarSlider"
      },
      {
        "name": "TouchBarSpacer",
        "description": "A `typeof TouchBarSpacer` reference to the `TouchBarSpacer` class.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarspacer",
        "collection": false,
        "type": "typeof TouchBarSpacer"
      },
      {
        "name": "TouchBarOtherItemsProxy",
        "description": "A `typeof TouchBarOtherItemsProxy` reference to the `TouchBarOtherItemsProxy` class.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarotheritemsproxy",
        "collection": false,
        "type": "typeof TouchBarOtherItemsProxy"
      }
    ],
    "instanceMethods": [],
    "instanceProperties": [
      {
        "name": "escapeItem",
        "description": "A `TouchBarItem` that will replace the \"esc\" button on the touch bar when set. Setting to `null` restores the default \"esc\" button. Changing this value immediately updates the escape item in the touch bar.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#touchbarescapeitem",
        "collection": false,
        "type": "TouchBarItem"
      }
    ],
    "instanceEvents": [],
    "instanceName": "TouchBarButton"
  },
  {
    "name": "Tray",
    "description": "\n\n### Class: Tray\n\n> Add icons and context menus to the system's notification area.\n\nProcess: Main\n\n`Tray` is an EventEmitter.\n\n```\nconst { app, Menu, Tray } = require('electron')\n\nlet tray = null\napp.whenReady().then(() => {\n  tray = new Tray('/path/to/my/icon')\n  const contextMenu = Menu.buildFromTemplate([\n    { label: 'Item1', type: 'radio' },\n    { label: 'Item2', type: 'radio' },\n    { label: 'Item3', type: 'radio', checked: true },\n    { label: 'Item4', type: 'radio' }\n  ])\n  tray.setToolTip('This is my application.')\n  tray.setContextMenu(contextMenu)\n})\n```\n\n**Platform Considerations**\n\n**Linux**\n\n* Tray icon uses StatusNotifierItem by default, when it is not available in user's desktop environment the `GtkStatusIcon` will be used instead.\n* The `click` event is emitted when the tray icon receives activation from user, however the StatusNotifierItem spec does not specify which action would cause an activation, for some environments it is left mouse click, but for some it might be double left mouse click.\n* In order for changes made to individual `MenuItem`s to take effect, you have to call `setContextMenu` again. For example:\n\n```\nconst { app, Menu, Tray } = require('electron')\n\nlet appIcon = null\napp.whenReady().then(() => {\n  appIcon = new Tray('/path/to/my/icon')\n  const contextMenu = Menu.buildFromTemplate([\n    { label: 'Item1', type: 'radio' },\n    { label: 'Item2', type: 'radio' }\n  ])\n\n  // Make a change to the context menu\n  contextMenu.items[1].checked = false\n\n  // Call this again for Linux because we modified the context menu\n  appIcon.setContextMenu(contextMenu)\n})\n```\n\n**MacOS**\n\n* Icons passed to the Tray constructor should be Template Images.\n* To make sure your icon isn't grainy on retina monitors, be sure your `@2x` image is 144dpi.\n* If you are bundling your application (e.g., with webpack for development), be sure that the file names are not being mangled or hashed. The filename needs to end in Template, and the `@2x` image needs to have the same filename as the standard image, or MacOS will not magically invert your image's colors or use the high density image.\n* 16x16 (72dpi) and 32x32@2x (144dpi) work well for most icons.\n\n**Windows**\n\n* It is recommended to use `ICO` icons to get best visual effects.",
    "slug": "tray",
    "websiteUrl": "https://electronjs.org/docs/api/tray",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/tray.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "constructorMethod": {
      "signature": "(image, [guid])",
      "parameters": [
        {
          "name": "image",
          "description": "",
          "required": true,
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "NativeImage"
            },
            {
              "collection": false,
              "type": "String",
              "possibleValues": null
            }
          ]
        },
        {
          "name": "guid",
          "description": "Assigns a GUID to the tray icon. If the executable is signed and the signature contains an organization in the subject line then the GUID is permanently associated with that signature. OS level settings like the position of the tray icon in the system tray will persist even if the path to the executable changes. If the executable is not code-signed then the GUID is permanently associated with the path to the executable. Changing the path to the executable will break the creation of the tray icon and a new GUID must be used. However, it is highly recommended to use the GUID parameter only in conjunction with code-signed executable. If an App defines multiple tray icons then each icon must use a separate GUID.",
          "required": false,
          "collection": false,
          "type": "String",
          "possibleValues": null
        }
      ]
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "destroy",
        "signature": "()",
        "description": "Destroys the tray icon immediately.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#traydestroy"
      },
      {
        "name": "setImage",
        "signature": "(image)",
        "description": "Sets the `image` associated with this tray icon.",
        "parameters": [
          {
            "name": "image",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "NativeImage"
              },
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#traysetimageimage"
      },
      {
        "name": "setPressedImage",
        "signature": "(image)",
        "description": "Sets the `image` associated with this tray icon when pressed on macOS.",
        "parameters": [
          {
            "name": "image",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "NativeImage"
              },
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#traysetpressedimageimage-macos"
      },
      {
        "name": "setToolTip",
        "signature": "(toolTip)",
        "description": "Sets the hover text for this tray icon.",
        "parameters": [
          {
            "name": "toolTip",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#traysettooltiptooltip"
      },
      {
        "name": "setTitle",
        "signature": "(title[, options])",
        "description": "Sets the title displayed next to the tray icon in the status bar (Support ANSI colors).",
        "parameters": [
          {
            "name": "title",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "fontType",
                "description": "The font family variant to display, can be `monospaced` or `monospacedDigit`. `monospaced` is available in macOS 10.15+ When left blank, the title uses the default system font.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "monospaced",
                    "description": ""
                  },
                  {
                    "value": "monospacedDigit",
                    "description": ""
                  }
                ]
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#traysettitletitle-options-macos"
      },
      {
        "name": "getTitle",
        "signature": "()",
        "description": "the title displayed next to the tray icon in the status bar",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#traygettitle-macos"
      },
      {
        "name": "setIgnoreDoubleClickEvents",
        "signature": "(ignore)",
        "description": "Sets the option to ignore double click events. Ignoring these events allows you to detect every individual click of the tray icon.\n\nThis value is set to false by default.",
        "parameters": [
          {
            "name": "ignore",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#traysetignoredoubleclickeventsignore-macos"
      },
      {
        "name": "getIgnoreDoubleClickEvents",
        "signature": "()",
        "description": "Whether double click events will be ignored.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#traygetignoredoubleclickevents-macos"
      },
      {
        "name": "displayBalloon",
        "signature": "(options)",
        "description": "Displays a tray balloon.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "icon",
                "description": "Icon to use when `iconType` is `custom`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": [
                  {
                    "collection": false,
                    "type": "NativeImage"
                  },
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  }
                ]
              },
              {
                "name": "iconType",
                "description": "Can be `none`, `info`, `warning`, `error` or `custom`. Default is `custom`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "none",
                    "description": ""
                  },
                  {
                    "value": "info",
                    "description": ""
                  },
                  {
                    "value": "warning",
                    "description": ""
                  },
                  {
                    "value": "error",
                    "description": ""
                  },
                  {
                    "value": "custom",
                    "description": ""
                  }
                ]
              },
              {
                "name": "title",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "content",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "largeIcon",
                "description": "The large version of the icon should be used. Default is `true`. Maps to `NIIF_LARGE_ICON`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "noSound",
                "description": "Do not play the associated sound. Default is `false`. Maps to `NIIF_NOSOUND`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "respectQuietTime",
                "description": "Do not display the balloon notification if the current user is in \"quiet time\". Default is `false`. Maps to `NIIF_RESPECT_QUIET_TIME`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#traydisplayballoonoptions-windows"
      },
      {
        "name": "removeBalloon",
        "signature": "()",
        "description": "Removes a tray balloon.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#trayremoveballoon-windows"
      },
      {
        "name": "focus",
        "signature": "()",
        "description": "Returns focus to the taskbar notification area. Notification area icons should use this message when they have completed their UI operation. For example, if the icon displays a shortcut menu, but the user presses ESC to cancel it, use `tray.focus()` to return focus to the notification area.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#trayfocus-windows"
      },
      {
        "name": "popUpContextMenu",
        "signature": "([menu, position])",
        "description": "Pops up the context menu of the tray icon. When `menu` is passed, the `menu` will be shown instead of the tray icon's context menu.\n\nThe `position` is only available on Windows, and it is (0, 0) by default.",
        "parameters": [
          {
            "name": "menu",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Menu"
          },
          {
            "name": "position",
            "description": "The pop up position.",
            "required": false,
            "collection": false,
            "type": "Point"
          }
        ],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#traypopupcontextmenumenu-position-macos-windows"
      },
      {
        "name": "closeContextMenu",
        "signature": "()",
        "description": "Closes an open context menu, as set by `tray.setContextMenu()`.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#trayclosecontextmenu-macos-windows"
      },
      {
        "name": "setContextMenu",
        "signature": "(menu)",
        "description": "Sets the context menu for this icon.",
        "parameters": [
          {
            "name": "menu",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Menu"
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#traysetcontextmenumenu"
      },
      {
        "name": "getBounds",
        "signature": "()",
        "description": "The `bounds` of this tray icon as `Object`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Rectangle"
        },
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#traygetbounds-macos-windows"
      },
      {
        "name": "isDestroyed",
        "signature": "()",
        "description": "Whether the tray icon is destroyed.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#trayisdestroyed"
      }
    ],
    "instanceProperties": [],
    "instanceEvents": [
      {
        "name": "click",
        "description": "Emitted when the tray icon is clicked.\n\nNote that on Linux this event is emitted when the tray icon receives an activation, which might not necessarily be left mouse click.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "KeyboardEvent",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "bounds",
            "description": "The bounds of tray icon.",
            "collection": false,
            "type": "Rectangle",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "position",
            "description": "The position of the event.",
            "collection": false,
            "type": "Point",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-click"
      },
      {
        "name": "right-click",
        "description": "Emitted when the tray icon is right clicked.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "KeyboardEvent",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "bounds",
            "description": "The bounds of tray icon.",
            "collection": false,
            "type": "Rectangle",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-right-click-macos-windows"
      },
      {
        "name": "double-click",
        "description": "Emitted when the tray icon is double clicked.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "KeyboardEvent",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "bounds",
            "description": "The bounds of tray icon.",
            "collection": false,
            "type": "Rectangle",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-double-click-macos-windows"
      },
      {
        "name": "middle-click",
        "description": "Emitted when the tray icon is middle clicked.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "KeyboardEvent",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "bounds",
            "description": "The bounds of tray icon.",
            "collection": false,
            "type": "Rectangle",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#event-middle-click-windows"
      },
      {
        "name": "balloon-show",
        "description": "Emitted when the tray balloon shows.",
        "parameters": [],
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#event-balloon-show-windows"
      },
      {
        "name": "balloon-click",
        "description": "Emitted when the tray balloon is clicked.",
        "parameters": [],
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#event-balloon-click-windows"
      },
      {
        "name": "balloon-closed",
        "description": "Emitted when the tray balloon is closed because of timeout or user manually closes it.",
        "parameters": [],
        "additionalTags": [
          "os_windows"
        ],
        "urlFragment": "#event-balloon-closed-windows"
      },
      {
        "name": "drop",
        "description": "Emitted when any dragged items are dropped on the tray icon.",
        "parameters": [],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-drop-macos"
      },
      {
        "name": "drop-files",
        "description": "Emitted when dragged files are dropped in the tray icon.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "files",
            "description": "The paths of the dropped files.",
            "collection": true,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-drop-files-macos"
      },
      {
        "name": "drop-text",
        "description": "Emitted when dragged text is dropped in the tray icon.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "text",
            "description": "the dropped text string.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-drop-text-macos"
      },
      {
        "name": "drag-enter",
        "description": "Emitted when a drag operation enters the tray icon.",
        "parameters": [],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-drag-enter-macos"
      },
      {
        "name": "drag-leave",
        "description": "Emitted when a drag operation exits the tray icon.",
        "parameters": [],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-drag-leave-macos"
      },
      {
        "name": "drag-end",
        "description": "Emitted when a drag operation ends on the tray or ends at another location.",
        "parameters": [],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-drag-end-macos"
      },
      {
        "name": "mouse-up",
        "description": "Emitted when the mouse is released from clicking the tray icon.\n\nNote: This will not be emitted if you have set a context menu for your Tray using `tray.setContextMenu`, as a result of macOS-level constraints.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "KeyboardEvent",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "position",
            "description": "The position of the event.",
            "collection": false,
            "type": "Point",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-mouse-up-macos"
      },
      {
        "name": "mouse-down",
        "description": "Emitted when the mouse clicks the tray icon.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "KeyboardEvent",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "position",
            "description": "The position of the event.",
            "collection": false,
            "type": "Point",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#event-mouse-down-macos"
      },
      {
        "name": "mouse-enter",
        "description": "Emitted when the mouse enters the tray icon.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "KeyboardEvent",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "position",
            "description": "The position of the event.",
            "collection": false,
            "type": "Point",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-mouse-enter-macos-windows"
      },
      {
        "name": "mouse-leave",
        "description": "Emitted when the mouse exits the tray icon.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "KeyboardEvent",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "position",
            "description": "The position of the event.",
            "collection": false,
            "type": "Point",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-mouse-leave-macos-windows"
      },
      {
        "name": "mouse-move",
        "description": "Emitted when the mouse moves in the tray icon.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "KeyboardEvent",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "position",
            "description": "The position of the event.",
            "collection": false,
            "type": "Point",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "urlFragment": "#event-mouse-move-macos-windows"
      }
    ],
    "instanceName": "tray"
  },
  {
    "name": "utilityProcess",
    "description": "`utilityProcess` creates a child process with Node.js and Message ports enabled. It provides the equivalent of `child_process.fork` API from Node.js but instead uses Services API from Chromium to launch the child process.\n\nProcess: Main",
    "slug": "utility-process",
    "websiteUrl": "https://electronjs.org/docs/api/utility-process",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/utility-process.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "fork",
        "signature": "(modulePath[, args][, options])",
        "description": "",
        "parameters": [
          {
            "name": "modulePath",
            "description": "Path to the script that should run as entrypoint in the child process.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "args",
            "description": "List of string arguments that will be available as `process.argv` in the child process.",
            "required": false,
            "collection": true,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "env",
                "description": "Environment key-value pairs. Default is `process.env`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Object",
                "properties": []
              },
              {
                "name": "execArgv",
                "description": "List of string arguments passed to the executable.",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "cwd",
                "description": "Current working directory of the child process.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "stdio",
                "description": "Allows configuring the mode for `stdout` and `stderr` of the child process. Default is `inherit`. String value can be one of `pipe`, `ignore`, `inherit`, for more details on these values you can refer to stdio documentation from Node.js. Currently this option only supports configuring `stdout` and `stderr` to either `pipe`, `inherit` or `ignore`. Configuring `stdin` to any property other than `ignore` is not supported and will result in an error. For example, the supported values will be processed as following:",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": [
                  {
                    "collection": true,
                    "type": "String",
                    "possibleValues": [
                      {
                        "value": "pipe",
                        "description": ""
                      },
                      {
                        "value": "ignore",
                        "description": ""
                      },
                      {
                        "value": "inherit",
                        "description": ""
                      }
                    ]
                  },
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  }
                ]
              },
              {
                "name": "serviceName",
                "description": "Name of the process that will appear in `name` property of `ProcessMetric` returned by `app.getAppMetrics` and `child-process-gone` event of `app`. Default is `Node Utility Process`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "allowLoadingUnsignedLibraries",
                "description": "With this flag, the utility process will be launched via the `Electron Helper (Plugin).app` helper executable on macOS, which can be codesigned with `com.apple.security.cs.disable-library-validation` and `com.apple.security.cs.allow-unsigned-executable-memory` entitlements. This will allow the utility process to load unsigned libraries. Unless you specifically need this capability, it is best to leave this disabled. Default is `false`.",
                "required": false,
                "additionalTags": [
                  "os_macos"
                ],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "UtilityProcess"
        },
        "additionalTags": [],
        "urlFragment": "#utilityprocessforkmodulepath-args-options"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "UtilityProcess",
    "description": "",
    "slug": "utility-process",
    "websiteUrl": "https://electronjs.org/docs/api/utility-process",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/utility-process.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": true,
      "utility": true,
      "exported": false
    },
    "constructorMethod": null,
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "postMessage",
        "signature": "(message, [transfer])",
        "description": "Send a message to the child process, optionally transferring ownership of zero or more `MessagePortMain` objects.\n\nFor example:",
        "parameters": [
          {
            "name": "message",
            "description": "",
            "required": true,
            "collection": false,
            "type": "any"
          },
          {
            "name": "transfer",
            "description": "",
            "required": false,
            "collection": true,
            "type": "MessagePortMain"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#childpostmessagemessage-transfer"
      },
      {
        "name": "kill",
        "signature": "()",
        "description": "Terminates the process gracefully. On POSIX, it uses SIGTERM but will ensure the process is reaped on exit. This function returns true if the kill is successful, and false otherwise.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#childkill"
      }
    ],
    "instanceProperties": [
      {
        "name": "pid",
        "description": "A `Integer | undefined` representing the process identifier (PID) of the child process. If the child process fails to spawn due to errors, then the value is `undefined`. When the child process exits, then the value is `undefined` after the `exit` event is emitted.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#childpid",
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "Integer"
          },
          {
            "collection": false,
            "type": "undefined"
          }
        ]
      },
      {
        "name": "stdout",
        "description": "A `NodeJS.ReadableStream | null` that represents the child process's stdout. If the child was spawned with options.stdio[1] set to anything other than 'pipe', then this will be `null`. When the child process exits, then the value is `null` after the `exit` event is emitted.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#childstdout",
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "NodeJS.ReadableStream"
          },
          {
            "type": "null",
            "collection": false
          }
        ]
      },
      {
        "name": "stderr",
        "description": "A `NodeJS.ReadableStream | null` that represents the child process's stderr. If the child was spawned with options.stdio[2] set to anything other than 'pipe', then this will be `null`. When the child process exits, then the value is `null` after the `exit` event is emitted.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#childstderr",
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "NodeJS.ReadableStream"
          },
          {
            "type": "null",
            "collection": false
          }
        ]
      }
    ],
    "instanceEvents": [
      {
        "name": "spawn",
        "description": "Emitted once the child process has spawned successfully.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-spawn"
      },
      {
        "name": "exit",
        "description": "Emitted after the child process ends.",
        "parameters": [
          {
            "name": "code",
            "description": "Contains the exit code for the process obtained from waitpid on posix, or GetExitCodeProcess on windows.",
            "collection": false,
            "type": "number",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-exit"
      },
      {
        "name": "message",
        "description": "Emitted when the child process sends a message using `process.parentPort.postMessage()`.",
        "parameters": [
          {
            "name": "message",
            "description": "",
            "collection": false,
            "type": "any",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-message"
      }
    ],
    "instanceName": "child"
  },
  {
    "name": "View",
    "description": "> Create and layout native views.\n\nProcess: Main\n\nThis module cannot be used until the `ready` event of the `app` module is emitted.\n\n### Class: View\n\n> A basic native view.\n\nProcess: Main\n\n`View` is an EventEmitter.",
    "slug": "view",
    "websiteUrl": "https://electronjs.org/docs/api/view",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/view.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "constructorMethod": {
      "signature": "()",
      "parameters": []
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "addChildView",
        "signature": "(view[, index])",
        "description": "If the same View is added to a parent which already contains it, it will be reordered such that it becomes the topmost view.",
        "parameters": [
          {
            "name": "view",
            "description": "Child view to add.",
            "required": true,
            "collection": false,
            "type": "View"
          },
          {
            "name": "index",
            "description": "Index at which to insert the child view. Defaults to adding the child at the end of the child list.",
            "required": false,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#viewaddchildviewview-index"
      },
      {
        "name": "removeChildView",
        "signature": "(view)",
        "description": "If the view passed as a parameter is not a child of this view, this method is a no-op.",
        "parameters": [
          {
            "name": "view",
            "description": "Child view to remove.",
            "required": true,
            "collection": false,
            "type": "View"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#viewremovechildviewview"
      },
      {
        "name": "setBounds",
        "signature": "(bounds)",
        "description": "",
        "parameters": [
          {
            "name": "bounds",
            "description": "New bounds of the View.",
            "required": true,
            "collection": false,
            "type": "Rectangle"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#viewsetboundsbounds"
      },
      {
        "name": "getBounds",
        "signature": "()",
        "description": "The bounds of this View, relative to its parent.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Rectangle"
        },
        "additionalTags": [],
        "urlFragment": "#viewgetbounds"
      },
      {
        "name": "setBackgroundColor",
        "signature": "(color)",
        "description": "Examples of valid `color` values:\n\n* Hex\n  * `#fff` (RGB)\n  * `#ffff` (ARGB)\n  * `#ffffff` (RRGGBB)\n  * `#ffffffff` (AARRGGBB)\n* RGB\n  * `rgb\\(([\\d]+),\\s*([\\d]+),\\s*([\\d]+)\\)`\n    * e.g. `rgb(255, 255, 255)`\n* RGBA\n  * `rgba\\(([\\d]+),\\s*([\\d]+),\\s*([\\d]+),\\s*([\\d.]+)\\)`\n    * e.g. `rgba(255, 255, 255, 1.0)`\n* HSL\n  * `hsl\\((-?[\\d.]+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)`\n    * e.g. `hsl(200, 20%, 50%)`\n* HSLA\n  * `hsla\\((-?[\\d.]+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)`\n    * e.g. `hsla(200, 20%, 50%, 0.5)`\n* Color name\n  * Options are listed in SkParseColor.cpp\n  * Similar to CSS Color Module Level 3 keywords, but case-sensitive.\n    * e.g. `blueviolet` or `red`\n\n**Note:** Hex format with alpha takes `AARRGGBB` or `ARGB`, _not_ `RRGGBBAA` or `RGB`.",
        "parameters": [
          {
            "name": "color",
            "description": "Color in Hex, RGB, ARGB, HSL, HSLA or named CSS color format. The alpha channel is optional for the hex type.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#viewsetbackgroundcolorcolor"
      },
      {
        "name": "setVisible",
        "signature": "(visible)",
        "description": "",
        "parameters": [
          {
            "name": "visible",
            "description": "If false, the view will be hidden from display.",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#viewsetvisiblevisible"
      }
    ],
    "instanceProperties": [
      {
        "name": "children",
        "description": "A `View[]` property representing the child views of this view.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#viewchildren-readonly",
        "collection": true,
        "type": "View"
      }
    ],
    "instanceEvents": [
      {
        "name": "bounds-changed",
        "description": "Emitted when the view's bounds have changed in response to being laid out. The new bounds can be retrieved with `view.getBounds()`.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-bounds-changed"
      }
    ],
    "instanceName": "view"
  },
  {
    "name": "WebContentsView",
    "extends": "View",
    "description": "> A View that displays a WebContents.\n\nProcess: Main\n\nThis module cannot be used until the `ready` event of the `app` module is emitted.\n\n### Class: WebContentsView extends `View`\n\n> A View that displays a WebContents.\n\nProcess: Main\n\n`WebContentsView` inherits from `View`.\n\n`WebContentsView` is an EventEmitter.",
    "slug": "web-contents-view",
    "websiteUrl": "https://electronjs.org/docs/api/web-contents-view",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/web-contents-view.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "constructorMethod": {
      "signature": "([options])",
      "parameters": [
        {
          "name": "options",
          "description": "",
          "required": false,
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "webPreferences",
              "description": "Settings of web page's features.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "WebPreferences"
            },
            {
              "name": "webContents",
              "description": "If present, the given WebContents will be adopted by the WebContentsView. A WebContents may only be presented in one WebContentsView at a time.",
              "required": false,
              "additionalTags": [],
              "collection": false,
              "type": "WebContents"
            }
          ]
        }
      ]
    },
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [],
    "instanceProperties": [
      {
        "name": "webContents",
        "description": "A `WebContents` property containing a reference to the displayed `WebContents`. Use this to interact with the `WebContents`, for instance to load a URL.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#viewwebcontents-readonly",
        "collection": false,
        "type": "WebContents"
      }
    ],
    "instanceEvents": [],
    "instanceName": "view"
  },
  {
    "name": "webContents",
    "description": "> Render and control web pages.\n\nProcess: Main\n\n`webContents` is an EventEmitter. It is responsible for rendering and controlling a web page and is a property of the `BrowserWindow` object. An example of accessing the `webContents` object:\n\n### Navigation Events\n\nSeveral events can be used to monitor navigations as they occur within a `webContents`.\n\n### Document Navigations\n\nWhen a `webContents` navigates to another page (as opposed to an in-page navigation), the following events will be fired.\n\n* `did-start-navigation`\n* `will-frame-navigate`\n* `will-navigate` (only fired when main frame navigates)\n* `will-redirect` (only fired when a redirect happens during navigation)\n* `did-redirect-navigation` (only fired when a redirect happens during navigation)\n* `did-frame-navigate`\n* `did-navigate` (only fired when main frame navigates)\n\nSubsequent events will not fire if `event.preventDefault()` is called on any of the cancellable events.\n\n### In-page Navigation\n\nIn-page navigations don't cause the page to reload, but instead navigate to a location within the current page. These events are not cancellable. For an in-page navigations, the following events will fire in this order:\n\n* `did-start-navigation`\n* `did-navigate-in-page`\n\n### Frame Navigation\n\nThe `will-navigate` and `did-navigate` events only fire when the mainFrame navigates. If you want to also observe navigations in `<iframe>`s, use `will-frame-navigate` and `did-frame-navigate` events.",
    "slug": "web-contents",
    "websiteUrl": "https://electronjs.org/docs/api/web-contents",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/web-contents.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "getAllWebContents",
        "signature": "()",
        "description": "An array of all `WebContents` instances. This will contain web contents for all windows, webviews, opened devtools, and devtools extension background pages.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "WebContents"
        },
        "additionalTags": [],
        "urlFragment": "#webcontentsgetallwebcontents"
      },
      {
        "name": "getFocusedWebContents",
        "signature": "()",
        "description": "The web contents that is focused in this application, otherwise returns `null`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "WebContents"
            },
            {
              "type": "null",
              "collection": false
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webcontentsgetfocusedwebcontents"
      },
      {
        "name": "fromId",
        "signature": "(id)",
        "description": "A WebContents instance with the given ID, or `undefined` if there is no WebContents associated with the given ID.",
        "parameters": [
          {
            "name": "id",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "WebContents"
            },
            {
              "collection": false,
              "type": "undefined"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webcontentsfromidid"
      },
      {
        "name": "fromFrame",
        "signature": "(frame)",
        "description": "A WebContents instance with the given WebFrameMain, or `undefined` if there is no WebContents associated with the given WebFrameMain.",
        "parameters": [
          {
            "name": "frame",
            "description": "",
            "required": true,
            "collection": false,
            "type": "WebFrameMain"
          }
        ],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "WebContents"
            },
            {
              "collection": false,
              "type": "undefined"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webcontentsfromframeframe"
      },
      {
        "name": "fromDevToolsTargetId",
        "signature": "(targetId)",
        "description": "A WebContents instance with the given TargetID, or `undefined` if there is no WebContents associated with the given TargetID.\n\nWhen communicating with the Chrome DevTools Protocol, it can be useful to lookup a WebContents instance based on its assigned TargetID.",
        "parameters": [
          {
            "name": "targetId",
            "description": "The Chrome DevTools Protocol TargetID associated with the WebContents instance.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "WebContents"
            },
            {
              "collection": false,
              "type": "undefined"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webcontentsfromdevtoolstargetidtargetid"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "WebContents",
    "description": "",
    "slug": "web-contents",
    "websiteUrl": "https://electronjs.org/docs/api/web-contents",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/web-contents.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": null,
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "loadURL",
        "signature": "(url[, options])",
        "description": "the promise will resolve when the page has finished loading (see `did-finish-load`), and rejects if the page fails to load (see `did-fail-load`). A noop rejection handler is already attached, which avoids unhandled rejection errors.\n\nLoads the `url` in the window. The `url` must contain the protocol prefix, e.g. the `http://` or `file://`. If the load should bypass http cache then use the `pragma` header to achieve it.",
        "parameters": [
          {
            "name": "url",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "httpReferrer",
                "description": "An HTTP Referrer url.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "Referrer"
                  }
                ]
              },
              {
                "name": "userAgent",
                "description": "A user agent originating the request.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "extraHeaders",
                "description": "Extra headers separated by \"\\n\".",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "postData",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": [
                  {
                    "collection": false,
                    "type": "UploadRawData"
                  },
                  {
                    "collection": false,
                    "type": "UploadFile"
                  }
                ]
              },
              {
                "name": "baseURLForDataURL",
                "description": "Base url (with trailing path separator) for files to be loaded by the data url. This is needed only if the specified `url` is a data url and needs to load other files.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contentsloadurlurl-options"
      },
      {
        "name": "loadFile",
        "signature": "(filePath[, options])",
        "description": "the promise will resolve when the page has finished loading (see `did-finish-load`), and rejects if the page fails to load (see `did-fail-load`).\n\nLoads the given file in the window, `filePath` should be a path to an HTML file relative to the root of your application.  For instance an app structure like this:\n\nWould require code like this",
        "parameters": [
          {
            "name": "filePath",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "query",
                "description": "Passed to `url.format()`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Record",
                "innerTypes": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  }
                ]
              },
              {
                "name": "search",
                "description": "Passed to `url.format()`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "hash",
                "description": "Passed to `url.format()`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contentsloadfilefilepath-options"
      },
      {
        "name": "downloadURL",
        "signature": "(url[, options])",
        "description": "Initiates a download of the resource at `url` without navigating. The `will-download` event of `session` will be triggered.",
        "parameters": [
          {
            "name": "url",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "headers",
                "description": "HTTP request headers.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Record",
                "innerTypes": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  }
                ]
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsdownloadurlurl-options"
      },
      {
        "name": "getURL",
        "signature": "()",
        "description": "The URL of the current web page.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#contentsgeturl"
      },
      {
        "name": "getTitle",
        "signature": "()",
        "description": "The title of the current web page.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#contentsgettitle"
      },
      {
        "name": "isDestroyed",
        "signature": "()",
        "description": "Whether the web page is destroyed.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentsisdestroyed"
      },
      {
        "name": "close",
        "signature": "([opts])",
        "description": "Closes the page, as if the web content had called `window.close()`.\n\nIf the page is successfully closed (i.e. the unload is not prevented by the page, or `waitForBeforeUnload` is false or unspecified), the WebContents will be destroyed and no longer usable. The `destroyed` event will be emitted.",
        "parameters": [
          {
            "name": "opts",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "waitForBeforeUnload",
                "description": "if true, fire the `beforeunload` event before closing the page. If the page prevents the unload, the WebContents will not be closed. The `will-prevent-unload` will be fired if the page requests prevention of unload.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentscloseopts"
      },
      {
        "name": "focus",
        "signature": "()",
        "description": "Focuses the web page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsfocus"
      },
      {
        "name": "isFocused",
        "signature": "()",
        "description": "Whether the web page is focused.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentsisfocused"
      },
      {
        "name": "isLoading",
        "signature": "()",
        "description": "Whether web page is still loading resources.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentsisloading"
      },
      {
        "name": "isLoadingMainFrame",
        "signature": "()",
        "description": "Whether the main frame (and not just iframes or frames within it) is still loading.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentsisloadingmainframe"
      },
      {
        "name": "isWaitingForResponse",
        "signature": "()",
        "description": "Whether the web page is waiting for a first-response from the main resource of the page.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentsiswaitingforresponse"
      },
      {
        "name": "stop",
        "signature": "()",
        "description": "Stops any pending navigation.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsstop"
      },
      {
        "name": "reload",
        "signature": "()",
        "description": "Reloads the current web page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsreload"
      },
      {
        "name": "reloadIgnoringCache",
        "signature": "()",
        "description": "Reloads current page and ignores cache.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsreloadignoringcache"
      },
      {
        "name": "canGoBack",
        "signature": "()",
        "description": "Whether the browser can go back to previous web page.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentscangoback"
      },
      {
        "name": "canGoForward",
        "signature": "()",
        "description": "Whether the browser can go forward to next web page.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentscangoforward"
      },
      {
        "name": "canGoToOffset",
        "signature": "(offset)",
        "description": "Whether the web page can go to `offset`.",
        "parameters": [
          {
            "name": "offset",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentscangotooffsetoffset"
      },
      {
        "name": "clearHistory",
        "signature": "()",
        "description": "Clears the navigation history.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsclearhistory"
      },
      {
        "name": "goBack",
        "signature": "()",
        "description": "Makes the browser go back a web page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsgoback"
      },
      {
        "name": "goForward",
        "signature": "()",
        "description": "Makes the browser go forward a web page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsgoforward"
      },
      {
        "name": "goToIndex",
        "signature": "(index)",
        "description": "Navigates browser to the specified absolute web page index.",
        "parameters": [
          {
            "name": "index",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsgotoindexindex"
      },
      {
        "name": "goToOffset",
        "signature": "(offset)",
        "description": "Navigates to the specified offset from the \"current entry\".",
        "parameters": [
          {
            "name": "offset",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsgotooffsetoffset"
      },
      {
        "name": "isCrashed",
        "signature": "()",
        "description": "Whether the renderer process has crashed.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentsiscrashed"
      },
      {
        "name": "forcefullyCrashRenderer",
        "signature": "()",
        "description": "Forcefully terminates the renderer process that is currently hosting this `webContents`. This will cause the `render-process-gone` event to be emitted with the `reason=killed || reason=crashed`. Please note that some webContents share renderer processes and therefore calling this method may also crash the host process for other webContents as well.\n\nCalling `reload()` immediately after calling this method will force the reload to occur in a new process. This should be used when this process is unstable or unusable, for instance in order to recover from the `unresponsive` event.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsforcefullycrashrenderer"
      },
      {
        "name": "setUserAgent",
        "signature": "(userAgent)",
        "description": "Overrides the user agent for this web page.",
        "parameters": [
          {
            "name": "userAgent",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentssetuseragentuseragent"
      },
      {
        "name": "getUserAgent",
        "signature": "()",
        "description": "The user agent for this web page.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#contentsgetuseragent"
      },
      {
        "name": "insertCSS",
        "signature": "(css[, options])",
        "description": "A promise that resolves with a key for the inserted CSS that can later be used to remove the CSS via `contents.removeInsertedCSS(key)`.\n\nInjects CSS into the current web page and returns a unique key for the inserted stylesheet.",
        "parameters": [
          {
            "name": "css",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "cssOrigin",
                "description": "Can be 'user' or 'author'. Sets the cascade origin of the inserted stylesheet. Default is 'author'.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "user",
                    "description": ""
                  },
                  {
                    "value": "author",
                    "description": ""
                  }
                ]
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "String",
              "possibleValues": null
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contentsinsertcsscss-options"
      },
      {
        "name": "removeInsertedCSS",
        "signature": "(key)",
        "description": "Resolves if the removal was successful.\n\nRemoves the inserted CSS from the current web page. The stylesheet is identified by its key, which is returned from `contents.insertCSS(css)`.",
        "parameters": [
          {
            "name": "key",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contentsremoveinsertedcsskey"
      },
      {
        "name": "executeJavaScript",
        "signature": "(code[, userGesture])",
        "description": "A promise that resolves with the result of the executed code or is rejected if the result of the code is a rejected promise.\n\nEvaluates `code` in page.\n\nIn the browser window some HTML APIs like `requestFullScreen` can only be invoked by a gesture from the user. Setting `userGesture` to `true` will remove this limitation.\n\nCode execution will be suspended until web page stop loading.",
        "parameters": [
          {
            "name": "code",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "userGesture",
            "description": "Default is `false`.",
            "required": false,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "any"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contentsexecutejavascriptcode-usergesture"
      },
      {
        "name": "executeJavaScriptInIsolatedWorld",
        "signature": "(worldId, scripts[, userGesture])",
        "description": "A promise that resolves with the result of the executed code or is rejected if the result of the code is a rejected promise.\n\nWorks like `executeJavaScript` but evaluates `scripts` in an isolated context.",
        "parameters": [
          {
            "name": "worldId",
            "description": "The ID of the world to run the javascript in, `0` is the default world, `999` is the world used by Electron's `contextIsolation` feature.  You can provide any integer here.",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "scripts",
            "description": "",
            "required": true,
            "collection": true,
            "type": "WebSource"
          },
          {
            "name": "userGesture",
            "description": "Default is `false`.",
            "required": false,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "any"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contentsexecutejavascriptinisolatedworldworldid-scripts-usergesture"
      },
      {
        "name": "setIgnoreMenuShortcuts",
        "signature": "(ignore)",
        "description": "Ignore application menu shortcuts while this web contents is focused.",
        "parameters": [
          {
            "name": "ignore",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentssetignoremenushortcutsignore"
      },
      {
        "name": "setWindowOpenHandler",
        "signature": "(handler)",
        "description": "Called before creating a window a new window is requested by the renderer, e.g. by `window.open()`, a link with `target=\"_blank\"`, shift+clicking on a link, or submitting a form with `<form target=\"_blank\">`. See `window.open()` for more details and how to use this in conjunction with `did-create-window`.\n\nAn example showing how to customize the process of new `BrowserWindow` creation to be `BrowserView` attached to main window instead:",
        "parameters": [
          {
            "name": "handler",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "details",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Object",
                "properties": [
                  {
                    "name": "url",
                    "description": "The _resolved_ version of the URL passed to `window.open()`. e.g. opening a window with `window.open('foo')` will yield something like `https://the-origin/the/current/path/foo`.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "name": "frameName",
                    "description": "Name of the window provided in `window.open()`",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "name": "features",
                    "description": "Comma separated list of window features provided to `window.open()`.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "name": "disposition",
                    "description": "Can be `default`, `foreground-tab`, `background-tab`, `new-window` or `other`.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "String",
                    "possibleValues": [
                      {
                        "value": "default",
                        "description": ""
                      },
                      {
                        "value": "foreground-tab",
                        "description": ""
                      },
                      {
                        "value": "background-tab",
                        "description": ""
                      },
                      {
                        "value": "new-window",
                        "description": ""
                      },
                      {
                        "value": "other",
                        "description": ""
                      }
                    ]
                  },
                  {
                    "name": "referrer",
                    "description": "The referrer that will be passed to the new window. May or may not result in the `Referer` header being sent, depending on the referrer policy.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "Referrer"
                  },
                  {
                    "name": "postBody",
                    "description": "The post data that will be sent to the new window, along with the appropriate headers that will be set. If no post data is to be sent, the value will be `null`. Only defined when the window is being created by a form that set `target=_blank`.",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "PostBody"
                  }
                ]
              }
            ],
            "returns": {
              "collection": false,
              "type": "WindowOpenHandlerResponse"
            }
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentssetwindowopenhandlerhandler"
      },
      {
        "name": "setAudioMuted",
        "signature": "(muted)",
        "description": "Mute the audio on the current web page.",
        "parameters": [
          {
            "name": "muted",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentssetaudiomutedmuted"
      },
      {
        "name": "isAudioMuted",
        "signature": "()",
        "description": "Whether this page has been muted.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentsisaudiomuted"
      },
      {
        "name": "isCurrentlyAudible",
        "signature": "()",
        "description": "Whether audio is currently playing.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentsiscurrentlyaudible"
      },
      {
        "name": "setZoomFactor",
        "signature": "(factor)",
        "description": "Changes the zoom factor to the specified factor. Zoom factor is zoom percent divided by 100, so 300% = 3.0.\n\nThe factor must be greater than 0.0.",
        "parameters": [
          {
            "name": "factor",
            "description": "Zoom factor; default is 1.0.",
            "required": true,
            "collection": false,
            "type": "Double"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentssetzoomfactorfactor"
      },
      {
        "name": "getZoomFactor",
        "signature": "()",
        "description": "the current zoom factor.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "number"
        },
        "additionalTags": [],
        "urlFragment": "#contentsgetzoomfactor"
      },
      {
        "name": "setZoomLevel",
        "signature": "(level)",
        "description": "Changes the zoom level to the specified level. The original size is 0 and each increment above or below represents zooming 20% larger or smaller to default limits of 300% and 50% of original size, respectively. The formula for this is `scale := 1.2 ^ level`.\n\n> **NOTE**: The zoom policy at the Chromium level is same-origin, meaning that the zoom level for a specific domain propagates across all instances of windows with the same domain. Differentiating the window URLs will make zoom work per-window.",
        "parameters": [
          {
            "name": "level",
            "description": "Zoom level.",
            "required": true,
            "collection": false,
            "type": "number"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentssetzoomlevellevel"
      },
      {
        "name": "getZoomLevel",
        "signature": "()",
        "description": "the current zoom level.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "number"
        },
        "additionalTags": [],
        "urlFragment": "#contentsgetzoomlevel"
      },
      {
        "name": "setVisualZoomLevelLimits",
        "signature": "(minimumLevel, maximumLevel)",
        "description": "Sets the maximum and minimum pinch-to-zoom level.\n\n> **NOTE**: Visual zoom is disabled by default in Electron. To re-enable it, call:",
        "parameters": [
          {
            "name": "minimumLevel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "number"
          },
          {
            "name": "maximumLevel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "number"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contentssetvisualzoomlevellimitsminimumlevel-maximumlevel"
      },
      {
        "name": "undo",
        "signature": "()",
        "description": "Executes the editing command `undo` in web page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsundo"
      },
      {
        "name": "redo",
        "signature": "()",
        "description": "Executes the editing command `redo` in web page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsredo"
      },
      {
        "name": "cut",
        "signature": "()",
        "description": "Executes the editing command `cut` in web page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentscut"
      },
      {
        "name": "copy",
        "signature": "()",
        "description": "Executes the editing command `copy` in web page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentscopy"
      },
      {
        "name": "centerSelection",
        "signature": "()",
        "description": "Centers the current text selection in web page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentscenterselection"
      },
      {
        "name": "copyImageAt",
        "signature": "(x, y)",
        "description": "Copy the image at the given position to the clipboard.",
        "parameters": [
          {
            "name": "x",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "y",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentscopyimageatx-y"
      },
      {
        "name": "paste",
        "signature": "()",
        "description": "Executes the editing command `paste` in web page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentspaste"
      },
      {
        "name": "pasteAndMatchStyle",
        "signature": "()",
        "description": "Executes the editing command `pasteAndMatchStyle` in web page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentspasteandmatchstyle"
      },
      {
        "name": "delete",
        "signature": "()",
        "description": "Executes the editing command `delete` in web page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsdelete"
      },
      {
        "name": "selectAll",
        "signature": "()",
        "description": "Executes the editing command `selectAll` in web page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsselectall"
      },
      {
        "name": "unselect",
        "signature": "()",
        "description": "Executes the editing command `unselect` in web page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsunselect"
      },
      {
        "name": "scrollToTop",
        "signature": "()",
        "description": "Scrolls to the top of the current `webContents`.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsscrolltotop"
      },
      {
        "name": "scrollToBottom",
        "signature": "()",
        "description": "Scrolls to the bottom of the current `webContents`.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsscrolltobottom"
      },
      {
        "name": "adjustSelection",
        "signature": "(options)",
        "description": "Adjusts the current text selection starting and ending points in the focused frame by the given amounts. A negative amount moves the selection towards the beginning of the document, and a positive amount moves the selection towards the end of the document.\n\nExample:\n\nFor a call of `win.webContents.adjustSelection({ start: 1, end: 5 })`\n\nBefore:\n\nAfter:",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "start",
                "description": "Amount to shift the start index of the current selection.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Number"
              },
              {
                "name": "end",
                "description": "Amount to shift the end index of the current selection.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Number"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsadjustselectionoptions"
      },
      {
        "name": "replace",
        "signature": "(text)",
        "description": "Executes the editing command `replace` in web page.",
        "parameters": [
          {
            "name": "text",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsreplacetext"
      },
      {
        "name": "replaceMisspelling",
        "signature": "(text)",
        "description": "Executes the editing command `replaceMisspelling` in web page.",
        "parameters": [
          {
            "name": "text",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsreplacemisspellingtext"
      },
      {
        "name": "insertText",
        "signature": "(text)",
        "description": "Inserts `text` to the focused element.",
        "parameters": [
          {
            "name": "text",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contentsinserttexttext"
      },
      {
        "name": "findInPage",
        "signature": "(text[, options])",
        "description": "The request id used for the request.\n\nStarts a request to find all matches for the `text` in the web page. The result of the request can be obtained by subscribing to `found-in-page` event.",
        "parameters": [
          {
            "name": "text",
            "description": "Content to be searched, must not be empty.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "forward",
                "description": "Whether to search forward or backward, defaults to `true`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "findNext",
                "description": "Whether to begin a new text finding session with this request. Should be `true` for initial requests, and `false` for follow-up requests. Defaults to `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "matchCase",
                "description": "Whether search should be case-sensitive, defaults to `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#contentsfindinpagetext-options"
      },
      {
        "name": "stopFindInPage",
        "signature": "(action)",
        "description": "Stops any `findInPage` request for the `webContents` with the provided `action`.",
        "parameters": [
          {
            "name": "action",
            "description": "Specifies the action to take place when ending `webContents.findInPage` request.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "clearSelection",
                "description": "Clear the selection."
              },
              {
                "value": "keepSelection",
                "description": "Translate the selection into a normal selection."
              },
              {
                "value": "activateSelection",
                "description": "Focus and click the selection node."
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsstopfindinpageaction"
      },
      {
        "name": "capturePage",
        "signature": "([rect, opts])",
        "description": "Resolves with a NativeImage\n\nCaptures a snapshot of the page within `rect`. Omitting `rect` will capture the whole visible page. The page is considered visible when its browser window is hidden and the capturer count is non-zero. If you would like the page to stay hidden, you should ensure that `stayHidden` is set to true.",
        "parameters": [
          {
            "name": "rect",
            "description": "The area of the page to be captured.",
            "required": false,
            "collection": false,
            "type": "Rectangle"
          },
          {
            "name": "opts",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "stayHidden",
                "description": " Keep the page hidden instead of visible. Default is `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "stayAwake",
                "description": " Keep the system awake instead of allowing it to sleep. Default is `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "NativeImage"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contentscapturepagerect-opts"
      },
      {
        "name": "isBeingCaptured",
        "signature": "()",
        "description": "Whether this page is being captured. It returns true when the capturer count is large then 0.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentsisbeingcaptured"
      },
      {
        "name": "getPrintersAsync",
        "signature": "()",
        "description": "Get the system printer list.\n\nResolves with a `PrinterInfo[]`",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": true,
              "type": "PrinterInfo"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contentsgetprintersasync"
      },
      {
        "name": "print",
        "signature": "([options], [callback])",
        "description": "When a custom `pageSize` is passed, Chromium attempts to validate platform specific minimum values for `width_microns` and `height_microns`. Width and height must both be minimum 353 microns but may be higher on some operating systems.\n\nPrints window's web page. When `silent` is set to `true`, Electron will pick the system's default printer if `deviceName` is empty and the default settings for printing.\n\nUse `page-break-before: always;` CSS style to force to print to a new page.\n\nExample usage:",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "silent",
                "description": "Don't ask user for print settings. Default is `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "printBackground",
                "description": "Prints the background color and image of the web page. Default is `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "deviceName",
                "description": "Set the printer device name to use. Must be the system-defined name and not the 'friendly' name, e.g 'Brother_QL_820NWB' and not 'Brother QL-820NWB'.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "color",
                "description": "Set whether the printed web page will be in color or grayscale. Default is `true`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "margins",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Object",
                "properties": [
                  {
                    "name": "marginType",
                    "description": "Can be `default`, `none`, `printableArea`, or `custom`. If `custom` is chosen, you will also need to specify `top`, `bottom`, `left`, and `right`.",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "String",
                    "possibleValues": [
                      {
                        "value": "default",
                        "description": ""
                      },
                      {
                        "value": "none",
                        "description": ""
                      },
                      {
                        "value": "printableArea",
                        "description": ""
                      },
                      {
                        "value": "custom",
                        "description": ""
                      }
                    ]
                  },
                  {
                    "name": "top",
                    "description": "The top margin of the printed web page, in pixels.",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  },
                  {
                    "name": "bottom",
                    "description": "The bottom margin of the printed web page, in pixels.",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  },
                  {
                    "name": "left",
                    "description": "The left margin of the printed web page, in pixels.",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  },
                  {
                    "name": "right",
                    "description": "The right margin of the printed web page, in pixels.",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  }
                ]
              },
              {
                "name": "landscape",
                "description": "Whether the web page should be printed in landscape mode. Default is `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "scaleFactor",
                "description": "The scale factor of the web page.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              },
              {
                "name": "pagesPerSheet",
                "description": "The number of pages to print per page sheet.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              },
              {
                "name": "collate",
                "description": "Whether the web page should be collated.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "copies",
                "description": "The number of copies of the web page to print.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              },
              {
                "name": "pageRanges",
                "description": "The page range to print. On macOS, only one range is honored.",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "Object",
                "properties": [
                  {
                    "name": "from",
                    "description": "Index of the first page to print (0-based).",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  },
                  {
                    "name": "to",
                    "description": "Index of the last page to print (inclusive) (0-based).",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  }
                ]
              },
              {
                "name": "duplexMode",
                "description": "Set the duplex mode of the printed web page. Can be `simplex`, `shortEdge`, or `longEdge`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "simplex",
                    "description": ""
                  },
                  {
                    "value": "shortEdge",
                    "description": ""
                  },
                  {
                    "value": "longEdge",
                    "description": ""
                  }
                ]
              },
              {
                "name": "dpi",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Record",
                "innerTypes": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "number"
                  }
                ]
              },
              {
                "name": "header",
                "description": "string to be printed as page header.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "footer",
                "description": "string to be printed as page footer.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "pageSize",
                "description": "Specify page size of the printed document. Can be `A0`, `A1`, `A2`, `A3`, `A4`, `A5`, `A6`, `Legal`, `Letter`, `Tabloid` or an Object containing `height` and `width`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": [
                      {
                        "value": "A0",
                        "description": ""
                      },
                      {
                        "value": "A1",
                        "description": ""
                      },
                      {
                        "value": "A2",
                        "description": ""
                      },
                      {
                        "value": "A3",
                        "description": ""
                      },
                      {
                        "value": "A4",
                        "description": ""
                      },
                      {
                        "value": "A5",
                        "description": ""
                      },
                      {
                        "value": "A6",
                        "description": ""
                      },
                      {
                        "value": "Legal",
                        "description": ""
                      },
                      {
                        "value": "Letter",
                        "description": ""
                      },
                      {
                        "value": "Tabloid",
                        "description": ""
                      }
                    ]
                  },
                  {
                    "collection": false,
                    "type": "Size"
                  }
                ]
              }
            ]
          },
          {
            "name": "callback",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "success",
                "description": "Indicates success of the print call.",
                "required": true,
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "failureReason",
                "description": "Error description called back if the print fails.",
                "required": true,
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "returns": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsprintoptions-callback"
      },
      {
        "name": "printToPDF",
        "signature": "(options)",
        "description": "Resolves with the generated PDF data.\n\nPrints the window's web page as PDF.\n\nThe `landscape` will be ignored if `@page` CSS at-rule is used in the web page.\n\nAn example of `webContents.printToPDF`:\n\nSee Page.printToPdf for more information.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "landscape",
                "description": "Paper orientation.`true` for landscape, `false` for portrait. Defaults to false.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "displayHeaderFooter",
                "description": "Whether to display header and footer. Defaults to false.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "printBackground",
                "description": "Whether to print background graphics. Defaults to false.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "scale",
                "description": "Scale of the webpage rendering. Defaults to 1.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              },
              {
                "name": "pageSize",
                "description": "Specify page size of the generated PDF. Can be `A0`, `A1`, `A2`, `A3`, `A4`, `A5`, `A6`, `Legal`, `Letter`, `Tabloid`, `Ledger`, or an Object containing `height` and `width` in inches. Defaults to `Letter`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": [
                      {
                        "value": "A0",
                        "description": ""
                      },
                      {
                        "value": "A1",
                        "description": ""
                      },
                      {
                        "value": "A2",
                        "description": ""
                      },
                      {
                        "value": "A3",
                        "description": ""
                      },
                      {
                        "value": "A4",
                        "description": ""
                      },
                      {
                        "value": "A5",
                        "description": ""
                      },
                      {
                        "value": "A6",
                        "description": ""
                      },
                      {
                        "value": "Legal",
                        "description": ""
                      },
                      {
                        "value": "Letter",
                        "description": ""
                      },
                      {
                        "value": "Tabloid",
                        "description": ""
                      },
                      {
                        "value": "Ledger",
                        "description": ""
                      }
                    ]
                  },
                  {
                    "collection": false,
                    "type": "Size"
                  }
                ]
              },
              {
                "name": "margins",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Object",
                "properties": [
                  {
                    "name": "top",
                    "description": "Top margin in inches. Defaults to 1cm (~0.4 inches).",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  },
                  {
                    "name": "bottom",
                    "description": "Bottom margin in inches. Defaults to 1cm (~0.4 inches).",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  },
                  {
                    "name": "left",
                    "description": "Left margin in inches. Defaults to 1cm (~0.4 inches).",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  },
                  {
                    "name": "right",
                    "description": "Right margin in inches. Defaults to 1cm (~0.4 inches).",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  }
                ]
              },
              {
                "name": "pageRanges",
                "description": "Page ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "headerTemplate",
                "description": "HTML template for the print header. Should be valid HTML markup with following classes used to inject printing values into them: `date` (formatted print date), `title` (document title), `url` (document location), `pageNumber` (current page number) and `totalPages` (total pages in the document). For example, `<span class=title></span>` would generate span containing the title.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "footerTemplate",
                "description": "HTML template for the print footer. Should use the same format as the `headerTemplate`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "preferCSSPageSize",
                "description": "Whether or not to prefer page size as defined by css. Defaults to false, in which case the content will be scaled to fit the paper size.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "generateTaggedPDF",
                "description": "Whether or not to generate a tagged (accessible) PDF. Defaults to false. As this property is experimental, the generated PDF may not adhere fully to PDF/UA and WCAG standards.",
                "required": false,
                "additionalTags": [
                  "stability_experimental"
                ],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "generateDocumentOutline",
                "description": "Whether or not to generate a PDF document outline from content headers. Defaults to false.",
                "required": false,
                "additionalTags": [
                  "stability_experimental"
                ],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "Buffer"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contentsprinttopdfoptions"
      },
      {
        "name": "addWorkSpace",
        "signature": "(path)",
        "description": "Adds the specified path to DevTools workspace. Must be used after DevTools creation:",
        "parameters": [
          {
            "name": "path",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsaddworkspacepath"
      },
      {
        "name": "removeWorkSpace",
        "signature": "(path)",
        "description": "Removes the specified path from DevTools workspace.",
        "parameters": [
          {
            "name": "path",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsremoveworkspacepath"
      },
      {
        "name": "setDevToolsWebContents",
        "signature": "(devToolsWebContents)",
        "description": "Uses the `devToolsWebContents` as the target `WebContents` to show devtools.\n\nThe `devToolsWebContents` must not have done any navigation, and it should not be used for other purposes after the call.\n\nBy default Electron manages the devtools by creating an internal `WebContents` with native view, which developers have very limited control of. With the `setDevToolsWebContents` method, developers can use any `WebContents` to show the devtools in it, including `BrowserWindow`, `BrowserView` and `<webview>` tag.\n\nNote that closing the devtools does not destroy the `devToolsWebContents`, it is caller's responsibility to destroy `devToolsWebContents`.\n\nAn example of showing devtools in a `<webview>` tag:\n\nAn example of showing devtools in a `BrowserWindow`:",
        "parameters": [
          {
            "name": "devToolsWebContents",
            "description": "",
            "required": true,
            "collection": false,
            "type": "WebContents"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentssetdevtoolswebcontentsdevtoolswebcontents"
      },
      {
        "name": "openDevTools",
        "signature": "([options])",
        "description": "Opens the devtools.\n\nWhen `contents` is a `<webview>` tag, the `mode` would be `detach` by default, explicitly passing an empty `mode` can force using last used dock state.\n\nOn Windows, if Windows Control Overlay is enabled, Devtools will be opened with `mode: 'detach'`.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "mode",
                "description": "Opens the devtools with specified dock state, can be `left`, `right`, `bottom`, `undocked`, `detach`. Defaults to last used dock state. In `undocked` mode it's possible to dock back. In `detach` mode it's not.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "left",
                    "description": ""
                  },
                  {
                    "value": "right",
                    "description": ""
                  },
                  {
                    "value": "bottom",
                    "description": ""
                  },
                  {
                    "value": "undocked",
                    "description": ""
                  },
                  {
                    "value": "detach",
                    "description": ""
                  }
                ]
              },
              {
                "name": "activate",
                "description": "Whether to bring the opened devtools window to the foreground. The default is `true`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "title",
                "description": "A title for the DevTools window (only in `undocked` or `detach` mode).",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsopendevtoolsoptions"
      },
      {
        "name": "closeDevTools",
        "signature": "()",
        "description": "Closes the devtools.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsclosedevtools"
      },
      {
        "name": "isDevToolsOpened",
        "signature": "()",
        "description": "Whether the devtools is opened.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentsisdevtoolsopened"
      },
      {
        "name": "isDevToolsFocused",
        "signature": "()",
        "description": "Whether the devtools view is focused .",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentsisdevtoolsfocused"
      },
      {
        "name": "getDevToolsTitle",
        "signature": "()",
        "description": "the current title of the DevTools window. This will only be visible if DevTools is opened in `undocked` or `detach` mode.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#contentsgetdevtoolstitle"
      },
      {
        "name": "setDevToolsTitle",
        "signature": "(title)",
        "description": "Changes the title of the DevTools window to `title`. This will only be visible if DevTools is opened in `undocked` or `detach` mode.",
        "parameters": [
          {
            "name": "title",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentssetdevtoolstitletitle"
      },
      {
        "name": "toggleDevTools",
        "signature": "()",
        "description": "Toggles the developer tools.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentstoggledevtools"
      },
      {
        "name": "inspectElement",
        "signature": "(x, y)",
        "description": "Starts inspecting element at position (`x`, `y`).",
        "parameters": [
          {
            "name": "x",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "y",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsinspectelementx-y"
      },
      {
        "name": "inspectSharedWorker",
        "signature": "()",
        "description": "Opens the developer tools for the shared worker context.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsinspectsharedworker"
      },
      {
        "name": "inspectSharedWorkerById",
        "signature": "(workerId)",
        "description": "Inspects the shared worker based on its ID.",
        "parameters": [
          {
            "name": "workerId",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsinspectsharedworkerbyidworkerid"
      },
      {
        "name": "getAllSharedWorkers",
        "signature": "()",
        "description": "Information about all Shared Workers.",
        "parameters": [],
        "returns": {
          "collection": true,
          "type": "SharedWorkerInfo"
        },
        "additionalTags": [],
        "urlFragment": "#contentsgetallsharedworkers"
      },
      {
        "name": "inspectServiceWorker",
        "signature": "()",
        "description": "Opens the developer tools for the service worker context.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsinspectserviceworker"
      },
      {
        "name": "send",
        "signature": "(channel, ...args)",
        "description": "Send an asynchronous message to the renderer process via `channel`, along with arguments. Arguments will be serialized with the Structured Clone Algorithm, just like `postMessage`, so prototype chains will not be included. Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will throw an exception.\n\n:::warning\n\nSending non-standard JavaScript types such as DOM objects or special Electron objects will throw an exception.\n\n:::\n\nFor additional reading, refer to Electron's IPC guide.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "...args",
            "description": "",
            "required": true,
            "collection": true,
            "type": "any"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentssendchannel-args"
      },
      {
        "name": "sendToFrame",
        "signature": "(frameId, channel, ...args)",
        "description": "Send an asynchronous message to a specific frame in a renderer process via `channel`, along with arguments. Arguments will be serialized with the Structured Clone Algorithm, just like `postMessage`, so prototype chains will not be included. Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will throw an exception.\n\n> **NOTE:** Sending non-standard JavaScript types such as DOM objects or special Electron objects will throw an exception.\n\nThe renderer process can handle the message by listening to `channel` with the `ipcRenderer` module.\n\nIf you want to get the `frameId` of a given renderer context you should use the `webFrame.routingId` value.  E.g.\n\nYou can also read `frameId` from all incoming IPC messages in the main process.",
        "parameters": [
          {
            "name": "frameId",
            "description": "the ID of the frame to send to, or a pair of `[processId, frameId]` if the frame is in a different process to the main frame.",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Integer"
              },
              {
                "collection": false,
                "type": "[number, number]"
              }
            ]
          },
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "...args",
            "description": "",
            "required": true,
            "collection": true,
            "type": "any"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentssendtoframeframeid-channel-args"
      },
      {
        "name": "postMessage",
        "signature": "(channel, message, [transfer])",
        "description": "Send a message to the renderer process, optionally transferring ownership of zero or more `MessagePortMain` objects.\n\nThe transferred `MessagePortMain` objects will be available in the renderer process by accessing the `ports` property of the emitted event. When they arrive in the renderer, they will be native DOM `MessagePort` objects.\n\nFor example:",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "message",
            "description": "",
            "required": true,
            "collection": false,
            "type": "any"
          },
          {
            "name": "transfer",
            "description": "",
            "required": false,
            "collection": true,
            "type": "MessagePortMain"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentspostmessagechannel-message-transfer"
      },
      {
        "name": "enableDeviceEmulation",
        "signature": "(parameters)",
        "description": "Enable device emulation with the given parameters.",
        "parameters": [
          {
            "name": "parameters",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "screenPosition",
                "description": "Specify the screen type to emulate (default: `desktop`):",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "desktop",
                    "description": "Desktop screen type."
                  },
                  {
                    "value": "mobile",
                    "description": "Mobile screen type."
                  }
                ]
              },
              {
                "name": "screenSize",
                "description": "Set the emulated screen size (screenPosition == mobile).",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Size"
              },
              {
                "name": "viewPosition",
                "description": "Position the view on the screen (screenPosition == mobile) (default: `{ x: 0, y: 0 }`).",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Point"
              },
              {
                "name": "deviceScaleFactor",
                "description": "Set the device scale factor (if zero defaults to original device scale factor) (default: `0`).",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "viewSize",
                "description": "Set the emulated view size (empty means no override)",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Size"
              },
              {
                "name": "scale",
                "description": "Scale of emulated view inside available space (not in fit to view mode) (default: `1`).",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Float"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsenabledeviceemulationparameters"
      },
      {
        "name": "disableDeviceEmulation",
        "signature": "()",
        "description": "Disable device emulation enabled by `webContents.enableDeviceEmulation`.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsdisabledeviceemulation"
      },
      {
        "name": "sendInputEvent",
        "signature": "(inputEvent)",
        "description": "Sends an input `event` to the page. **Note:** The `BrowserWindow` containing the contents needs to be focused for `sendInputEvent()` to work.",
        "parameters": [
          {
            "name": "inputEvent",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "MouseInputEvent"
              },
              {
                "collection": false,
                "type": "MouseWheelInputEvent"
              },
              {
                "collection": false,
                "type": "KeyboardInputEvent"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentssendinputeventinputevent"
      },
      {
        "name": "beginFrameSubscription",
        "signature": "([onlyDirty ,]callback)",
        "description": "Begin subscribing for presentation events and captured frames, the `callback` will be called with `callback(image, dirtyRect)` when there is a presentation event.\n\nThe `image` is an instance of NativeImage that stores the captured frame.\n\nThe `dirtyRect` is an object with `x, y, width, height` properties that describes which part of the page was repainted. If `onlyDirty` is set to `true`, `image` will only contain the repainted area. `onlyDirty` defaults to `false`.",
        "parameters": [
          {
            "name": "onlyDirty",
            "description": "Defaults to `false`.",
            "required": false,
            "collection": false,
            "type": "boolean"
          },
          {
            "name": "callback",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "image",
                "description": "",
                "required": true,
                "collection": false,
                "type": "NativeImage"
              },
              {
                "name": "dirtyRect",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Rectangle"
              }
            ],
            "returns": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsbeginframesubscriptiononlydirty-callback"
      },
      {
        "name": "endFrameSubscription",
        "signature": "()",
        "description": "End subscribing for frame presentation events.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsendframesubscription"
      },
      {
        "name": "startDrag",
        "signature": "(item)",
        "description": "Sets the `item` as dragging item for current drag-drop operation, `file` is the absolute path of the file to be dragged, and `icon` is the image showing under the cursor when dragging.",
        "parameters": [
          {
            "name": "item",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "file",
                "description": "The path to the file being dragged.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "files",
                "description": "The paths to the files being dragged. (`files` will override `file` field)",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "icon",
                "description": "The image must be non-empty on macOS.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": [
                  {
                    "collection": false,
                    "type": "NativeImage"
                  },
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  }
                ]
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsstartdragitem"
      },
      {
        "name": "savePage",
        "signature": "(fullPath, saveType)",
        "description": "resolves if the page is saved.",
        "parameters": [
          {
            "name": "fullPath",
            "description": "The absolute file path.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "saveType",
            "description": "Specify the save type.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "HTMLOnly",
                "description": "Save only the HTML of the page."
              },
              {
                "value": "HTMLComplete",
                "description": "Save complete-html page."
              },
              {
                "value": "MHTML",
                "description": "Save complete-html page as MHTML."
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contentssavepagefullpath-savetype"
      },
      {
        "name": "showDefinitionForSelection",
        "signature": "()",
        "description": "Shows pop-up dictionary that searches the selected word on the page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#contentsshowdefinitionforselection-macos"
      },
      {
        "name": "isOffscreen",
        "signature": "()",
        "description": "Indicates whether _offscreen rendering_ is enabled.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentsisoffscreen"
      },
      {
        "name": "startPainting",
        "signature": "()",
        "description": "If _offscreen rendering_ is enabled and not painting, start painting.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsstartpainting"
      },
      {
        "name": "stopPainting",
        "signature": "()",
        "description": "If _offscreen rendering_ is enabled and painting, stop painting.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsstoppainting"
      },
      {
        "name": "isPainting",
        "signature": "()",
        "description": "If _offscreen rendering_ is enabled returns whether it is currently painting.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentsispainting"
      },
      {
        "name": "setFrameRate",
        "signature": "(fps)",
        "description": "If _offscreen rendering_ is enabled sets the frame rate to the specified number. Only values between 1 and 240 are accepted.",
        "parameters": [
          {
            "name": "fps",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentssetframeratefps"
      },
      {
        "name": "getFrameRate",
        "signature": "()",
        "description": "If _offscreen rendering_ is enabled returns the current frame rate.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#contentsgetframerate"
      },
      {
        "name": "invalidate",
        "signature": "()",
        "description": "Schedules a full repaint of the window this web contents is in.\n\nIf _offscreen rendering_ is enabled invalidates the frame and generates a new one through the `'paint'` event.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentsinvalidate"
      },
      {
        "name": "getWebRTCIPHandlingPolicy",
        "signature": "()",
        "description": "Returns the WebRTC IP Handling Policy.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#contentsgetwebrtciphandlingpolicy"
      },
      {
        "name": "setWebRTCIPHandlingPolicy",
        "signature": "(policy)",
        "description": "Setting the WebRTC IP handling policy allows you to control which IPs are exposed via WebRTC. See BrowserLeaks for more details.",
        "parameters": [
          {
            "name": "policy",
            "description": "Specify the WebRTC IP Handling Policy.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "default",
                "description": "Exposes user's public and local IPs. This is the default behavior. When this policy is used, WebRTC has the right to enumerate all interfaces and bind them to discover public interfaces."
              },
              {
                "value": "default_public_interface_only",
                "description": "Exposes user's public IP, but does not expose user's local IP. When this policy is used, WebRTC should only use the default route used by http. This doesn't expose any local addresses."
              },
              {
                "value": "default_public_and_private_interfaces",
                "description": "Exposes user's public and local IPs. When this policy is used, WebRTC should only use the default route used by http. This also exposes the associated default private address. Default route is the route chosen by the OS on a multi-homed endpoint."
              },
              {
                "value": "disable_non_proxied_udp",
                "description": "Does not expose public or local IPs. When this policy is used, WebRTC should only use TCP to contact peers or servers unless the proxy server supports UDP."
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentssetwebrtciphandlingpolicypolicy"
      },
      {
        "name": "getWebRTCUDPPortRange",
        "signature": "()",
        "description": "* `min` Integer - The minimum UDP port number that WebRTC should use.\n* `max` Integer - The maximum UDP port number that WebRTC should use.\n\nBy default this value is `{ min: 0, max: 0 }` , which would apply no restriction on the udp port range.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "min",
              "description": "The minimum UDP port number that WebRTC should use.",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            },
            {
              "name": "max",
              "description": "The maximum UDP port number that WebRTC should use.",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "Integer"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contentsgetwebrtcudpportrange"
      },
      {
        "name": "setWebRTCUDPPortRange",
        "signature": "(udpPortRange)",
        "description": "Setting the WebRTC UDP Port Range allows you to restrict the udp port range used by WebRTC. By default the port range is unrestricted. **Note:** To reset to an unrestricted port range this value should be set to `{ min: 0, max: 0 }`.",
        "parameters": [
          {
            "name": "udpPortRange",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "min",
                "description": "The minimum UDP port number that WebRTC should use.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "max",
                "description": "The maximum UDP port number that WebRTC should use.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentssetwebrtcudpportrangeudpportrange"
      },
      {
        "name": "getMediaSourceId",
        "signature": "(requestWebContents)",
        "description": "The identifier of a WebContents stream. This identifier can be used with `navigator.mediaDevices.getUserMedia` using a `chromeMediaSource` of `tab`. The identifier is restricted to the web contents that it is registered to and is only valid for 10 seconds.",
        "parameters": [
          {
            "name": "requestWebContents",
            "description": "Web contents that the id will be registered to.",
            "required": true,
            "collection": false,
            "type": "WebContents"
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#contentsgetmediasourceidrequestwebcontents"
      },
      {
        "name": "getOSProcessId",
        "signature": "()",
        "description": "The operating system `pid` of the associated renderer process.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#contentsgetosprocessid"
      },
      {
        "name": "getProcessId",
        "signature": "()",
        "description": "The Chromium internal `pid` of the associated renderer. Can be compared to the `frameProcessId` passed by frame specific navigation events (e.g. `did-frame-navigate`)",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#contentsgetprocessid"
      },
      {
        "name": "takeHeapSnapshot",
        "signature": "(filePath)",
        "description": "Indicates whether the snapshot has been created successfully.\n\nTakes a V8 heap snapshot and saves it to `filePath`.",
        "parameters": [
          {
            "name": "filePath",
            "description": "Path to the output file.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contentstakeheapsnapshotfilepath"
      },
      {
        "name": "getBackgroundThrottling",
        "signature": "()",
        "description": "whether or not this WebContents will throttle animations and timers when the page becomes backgrounded. This also affects the Page Visibility API.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#contentsgetbackgroundthrottling"
      },
      {
        "name": "setBackgroundThrottling",
        "signature": "(allowed)",
        "description": "Controls whether or not this WebContents will throttle animations and timers when the page becomes backgrounded. This also affects the Page Visibility API.",
        "parameters": [
          {
            "name": "allowed",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentssetbackgroundthrottlingallowed"
      },
      {
        "name": "getType",
        "signature": "()",
        "description": "the type of the webContent. Can be `backgroundPage`, `window`, `browserView`, `remote`, `webview` or `offscreen`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": [
            {
              "value": "backgroundPage",
              "description": ""
            },
            {
              "value": "window",
              "description": ""
            },
            {
              "value": "browserView",
              "description": ""
            },
            {
              "value": "remote",
              "description": ""
            },
            {
              "value": "webview",
              "description": ""
            },
            {
              "value": "offscreen",
              "description": ""
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#contentsgettype"
      },
      {
        "name": "setImageAnimationPolicy",
        "signature": "(policy)",
        "description": "Sets the image animation policy for this webContents.  The policy only affects _new_ images, existing images that are currently being animated are unaffected. This is a known limitation in Chromium, you can force image animation to be recalculated with `img.src = img.src` which will result in no network traffic but will update the animation policy.\n\nThis corresponds to the animationPolicy accessibility feature in Chromium.",
        "parameters": [
          {
            "name": "policy",
            "description": "Can be `animate`, `animateOnce` or `noAnimation`.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "animate",
                "description": ""
              },
              {
                "value": "animateOnce",
                "description": ""
              },
              {
                "value": "noAnimation",
                "description": ""
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#contentssetimageanimationpolicypolicy"
      }
    ],
    "instanceProperties": [
      {
        "name": "ipc",
        "description": "An `IpcMain` scoped to just IPC messages sent from this WebContents.\n\nIPC messages sent with `ipcRenderer.send`, `ipcRenderer.sendSync` or `ipcRenderer.postMessage` will be delivered in the following order:\n\n* `contents.on('ipc-message')`\n* `contents.mainFrame.on(channel)`\n* `contents.ipc.on(channel)`\n* `ipcMain.on(channel)`\n\nHandlers registered with `invoke` will be checked in the following order. The first one that is defined will be called, the rest will be ignored.\n\n* `contents.mainFrame.handle(channel)`\n* `contents.handle(channel)`\n* `ipcMain.handle(channel)`\n\nA handler or event listener registered on the WebContents will receive IPC messages sent from any frame, including child frames. In most cases, only the main frame can send IPC messages. However, if the `nodeIntegrationInSubFrames` option is enabled, it is possible for child frames to send IPC messages also. In that case, handlers should check the `senderFrame` property of the IPC event to ensure that the message is coming from the expected frame. Alternatively, register handlers on the appropriate frame directly using the `WebFrameMain.ipc` interface.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#contentsipc-readonly",
        "collection": false,
        "type": "IpcMain"
      },
      {
        "name": "audioMuted",
        "description": "A `boolean` property that determines whether this page is muted.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#contentsaudiomuted",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "userAgent",
        "description": "A `string` property that determines the user agent for this web page.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#contentsuseragent",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "zoomLevel",
        "description": "A `number` property that determines the zoom level for this web contents.\n\nThe original size is 0 and each increment above or below represents zooming 20% larger or smaller to default limits of 300% and 50% of original size, respectively. The formula for this is `scale := 1.2 ^ level`.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#contentszoomlevel",
        "collection": false,
        "type": "number"
      },
      {
        "name": "zoomFactor",
        "description": "A `number` property that determines the zoom factor for this web contents.\n\nThe zoom factor is the zoom percent divided by 100, so 300% = 3.0.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#contentszoomfactor",
        "collection": false,
        "type": "number"
      },
      {
        "name": "frameRate",
        "description": "An `Integer` property that sets the frame rate of the web contents to the specified number. Only values between 1 and 240 are accepted.\n\nOnly applicable if _offscreen rendering_ is enabled.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#contentsframerate",
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "id",
        "description": "A `Integer` representing the unique ID of this WebContents. Each ID is unique among all `WebContents` instances of the entire Electron application.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#contentsid-readonly",
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "session",
        "description": "A `Session` used by this webContents.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#contentssession-readonly",
        "collection": false,
        "type": "Session"
      },
      {
        "name": "navigationHistory",
        "description": "A `NavigationHistory` used by this webContents.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#contentsnavigationhistory-readonly",
        "collection": false,
        "type": "NavigationHistory"
      },
      {
        "name": "hostWebContents",
        "description": "A `WebContents` instance that might own this `WebContents`.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#contentshostwebcontents-readonly",
        "collection": false,
        "type": "WebContents"
      },
      {
        "name": "devToolsWebContents",
        "description": "A `WebContents | null` property that represents the of DevTools `WebContents` associated with a given `WebContents`.\n\n**Note:** Users should never store this object because it may become `null` when the DevTools has been closed.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#contentsdevtoolswebcontents-readonly",
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "WebContents"
          },
          {
            "type": "null",
            "collection": false
          }
        ]
      },
      {
        "name": "debugger",
        "description": "A `Debugger` instance for this webContents.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#contentsdebugger-readonly",
        "collection": false,
        "type": "Debugger"
      },
      {
        "name": "backgroundThrottling",
        "description": "A `boolean` property that determines whether or not this WebContents will throttle animations and timers when the page becomes backgrounded. This also affects the Page Visibility API.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#contentsbackgroundthrottling",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "mainFrame",
        "description": "A `WebFrameMain` property that represents the top frame of the page's frame hierarchy.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#contentsmainframe-readonly",
        "collection": false,
        "type": "WebFrameMain"
      },
      {
        "name": "opener",
        "description": "A `WebFrameMain` property that represents the frame that opened this WebContents, either with open(), or by navigating a link with a target attribute.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#contentsopener-readonly",
        "collection": false,
        "type": "WebFrameMain"
      }
    ],
    "instanceEvents": [
      {
        "name": "did-finish-load",
        "description": "Emitted when the navigation is done, i.e. the spinner of the tab has stopped spinning, and the `onload` event was dispatched.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-did-finish-load"
      },
      {
        "name": "did-fail-load",
        "description": "This event is like `did-finish-load` but emitted when the load failed. The full list of error codes and their meaning is available here.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "errorCode",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "errorDescription",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "validatedURL",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameProcessId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameRoutingId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-fail-load"
      },
      {
        "name": "did-fail-provisional-load",
        "description": "This event is like `did-fail-load` but emitted when the load was cancelled (e.g. `window.stop()` was invoked).",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "errorCode",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "errorDescription",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "validatedURL",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameProcessId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameRoutingId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-fail-provisional-load"
      },
      {
        "name": "did-frame-finish-load",
        "description": "Emitted when a frame has done navigation.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameProcessId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameRoutingId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-frame-finish-load"
      },
      {
        "name": "did-start-loading",
        "description": "Corresponds to the points in time when the spinner of the tab started spinning.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-did-start-loading"
      },
      {
        "name": "did-stop-loading",
        "description": "Corresponds to the points in time when the spinner of the tab stopped spinning.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-did-stop-loading"
      },
      {
        "name": "dom-ready",
        "description": "Emitted when the document in the top-level frame is loaded.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-dom-ready"
      },
      {
        "name": "page-title-updated",
        "description": "Fired when page title is set during navigation. `explicitSet` is false when title is synthesized from file url.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "title",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "explicitSet",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-page-title-updated"
      },
      {
        "name": "page-favicon-updated",
        "description": "Emitted when page receives favicon urls.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "favicons",
            "description": "Array of URLs.",
            "collection": true,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-page-favicon-updated"
      },
      {
        "name": "content-bounds-updated",
        "description": "Emitted when the page calls `window.moveTo`, `window.resizeTo` or related APIs.\n\nBy default, this will move the window. To prevent that behavior, call `event.preventDefault()`.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "bounds",
            "description": "requested new content bounds",
            "collection": false,
            "type": "Rectangle",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-content-bounds-updated"
      },
      {
        "name": "did-create-window",
        "description": "Emitted _after_ successful creation of a window via `window.open` in the renderer. Not emitted if the creation of the window is canceled from `webContents.setWindowOpenHandler`.\n\nSee `window.open()` for more details and how to use this in conjunction with `webContents.setWindowOpenHandler`.",
        "parameters": [
          {
            "name": "window",
            "description": "",
            "collection": false,
            "type": "BrowserWindow",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "url",
                "description": "URL for the created window.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "frameName",
                "description": "Name given to the created window in the `window.open()` call.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "options",
                "description": "The options used to create the BrowserWindow. They are merged in increasing precedence: parsed options from the `features` string from `window.open()`, security-related webPreferences inherited from the parent, and options given by `webContents.setWindowOpenHandler`. Unrecognized options are not filtered out.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "BrowserWindowConstructorOptions"
              },
              {
                "name": "referrer",
                "description": "The referrer that will be passed to the new window. May or may not result in the `Referer` header being sent, depending on the referrer policy.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Referrer"
              },
              {
                "name": "postBody",
                "description": "The post data that will be sent to the new window, along with the appropriate headers that will be set. If no post data is to be sent, the value will be `null`. Only defined when the window is being created by a form that set `target=_blank`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "PostBody"
              },
              {
                "name": "disposition",
                "description": "Can be `default`, `foreground-tab`, `background-tab`, `new-window` or `other`.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "default",
                    "description": ""
                  },
                  {
                    "value": "foreground-tab",
                    "description": ""
                  },
                  {
                    "value": "background-tab",
                    "description": ""
                  },
                  {
                    "value": "new-window",
                    "description": ""
                  },
                  {
                    "value": "other",
                    "description": ""
                  }
                ]
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-create-window"
      },
      {
        "name": "will-navigate",
        "description": "Emitted when a user or the page wants to start navigation on the main frame. It can happen when the `window.location` object is changed or a user clicks a link in the page.\n\nThis event will not emit when the navigation is started programmatically with APIs like `webContents.loadURL` and `webContents.back`.\n\nIt is also not emitted for in-page navigations, such as clicking anchor links or updating the `window.location.hash`. Use `did-navigate-in-page` event for this purpose.\n\nCalling `event.preventDefault()` will prevent the navigation.",
        "parameters": [
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Event",
            "eventProperties": [
              {
                "name": "url",
                "description": "The URL the frame is navigating to.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "isSameDocument",
                "description": "This event does not fire for same document navigations using window.history api and reference fragment navigations. This property is always set to `false` for this event.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "isMainFrame",
                "description": "True if the navigation is taking place in a main frame.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "frame",
                "description": "The frame to be navigated.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              },
              {
                "name": "initiator",
                "description": "The frame which initiated the navigation, which can be a parent frame (e.g. via `window.open` with a frame's name), or null if the navigation was not initiated by a frame. This can also be null if the initiating frame was deleted before the event was emitted.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              }
            ],
            "additionalTags": [],
            "required": true
          },
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          },
          {
            "name": "isInPlace",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          },
          {
            "name": "frameProcessId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          },
          {
            "name": "frameRoutingId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-will-navigate"
      },
      {
        "name": "will-frame-navigate",
        "description": "Emitted when a user or the page wants to start navigation in any frame. It can happen when the `window.location` object is changed or a user clicks a link in the page.\n\nUnlike `will-navigate`, `will-frame-navigate` is fired when the main frame or any of its subframes attempts to navigate. When the navigation event comes from the main frame, `isMainFrame` will be `true`.\n\nThis event will not emit when the navigation is started programmatically with APIs like `webContents.loadURL` and `webContents.back`.\n\nIt is also not emitted for in-page navigations, such as clicking anchor links or updating the `window.location.hash`. Use `did-navigate-in-page` event for this purpose.\n\nCalling `event.preventDefault()` will prevent the navigation.",
        "parameters": [
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Event",
            "eventProperties": [
              {
                "name": "url",
                "description": "The URL the frame is navigating to.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "isSameDocument",
                "description": "This event does not fire for same document navigations using window.history api and reference fragment navigations. This property is always set to `false` for this event.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "isMainFrame",
                "description": "True if the navigation is taking place in a main frame.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "frame",
                "description": "The frame to be navigated.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              },
              {
                "name": "initiator",
                "description": "The frame which initiated the navigation, which can be a parent frame (e.g. via `window.open` with a frame's name), or null if the navigation was not initiated by a frame. This can also be null if the initiating frame was deleted before the event was emitted.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-will-frame-navigate"
      },
      {
        "name": "did-start-navigation",
        "description": "Emitted when any frame (including main) starts navigating.",
        "parameters": [
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Event",
            "eventProperties": [
              {
                "name": "url",
                "description": "The URL the frame is navigating to.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "isSameDocument",
                "description": "Whether the navigation happened without changing document. Examples of same document navigations are reference fragment navigations, pushState/replaceState, and same page history navigation.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "isMainFrame",
                "description": "True if the navigation is taking place in a main frame.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "frame",
                "description": "The frame to be navigated.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              },
              {
                "name": "initiator",
                "description": "The frame which initiated the navigation, which can be a parent frame (e.g. via `window.open` with a frame's name), or null if the navigation was not initiated by a frame. This can also be null if the initiating frame was deleted before the event was emitted.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              }
            ],
            "additionalTags": [],
            "required": true
          },
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          },
          {
            "name": "isInPlace",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          },
          {
            "name": "frameProcessId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          },
          {
            "name": "frameRoutingId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-start-navigation"
      },
      {
        "name": "will-redirect",
        "description": "Emitted when a server side redirect occurs during navigation.  For example a 302 redirect.\n\nThis event will be emitted after `did-start-navigation` and always before the `did-redirect-navigation` event for the same navigation.\n\nCalling `event.preventDefault()` will prevent the navigation (not just the redirect).",
        "parameters": [
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Event",
            "eventProperties": [
              {
                "name": "url",
                "description": "The URL the frame is navigating to.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "isSameDocument",
                "description": "Whether the navigation happened without changing document. Examples of same document navigations are reference fragment navigations, pushState/replaceState, and same page history navigation.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "isMainFrame",
                "description": "True if the navigation is taking place in a main frame.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "frame",
                "description": "The frame to be navigated.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              },
              {
                "name": "initiator",
                "description": "The frame which initiated the navigation, which can be a parent frame (e.g. via `window.open` with a frame's name), or null if the navigation was not initiated by a frame. This can also be null if the initiating frame was deleted before the event was emitted.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              }
            ],
            "additionalTags": [],
            "required": true
          },
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          },
          {
            "name": "isInPlace",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          },
          {
            "name": "frameProcessId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          },
          {
            "name": "frameRoutingId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-will-redirect"
      },
      {
        "name": "did-redirect-navigation",
        "description": "Emitted after a server side redirect occurs during navigation.  For example a 302 redirect.\n\nThis event cannot be prevented, if you want to prevent redirects you should checkout out the `will-redirect` event above.",
        "parameters": [
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Event",
            "eventProperties": [
              {
                "name": "url",
                "description": "The URL the frame is navigating to.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "isSameDocument",
                "description": "Whether the navigation happened without changing document. Examples of same document navigations are reference fragment navigations, pushState/replaceState, and same page history navigation.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "isMainFrame",
                "description": "True if the navigation is taking place in a main frame.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "frame",
                "description": "The frame to be navigated.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              },
              {
                "name": "initiator",
                "description": "The frame which initiated the navigation, which can be a parent frame (e.g. via `window.open` with a frame's name), or null if the navigation was not initiated by a frame. This can also be null if the initiating frame was deleted before the event was emitted.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              }
            ],
            "additionalTags": [],
            "required": true
          },
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          },
          {
            "name": "isInPlace",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          },
          {
            "name": "frameProcessId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          },
          {
            "name": "frameRoutingId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [
              "stability_deprecated"
            ],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-redirect-navigation"
      },
      {
        "name": "did-navigate",
        "description": "Emitted when a main frame navigation is done.\n\nThis event is not emitted for in-page navigations, such as clicking anchor links or updating the `window.location.hash`. Use `did-navigate-in-page` event for this purpose.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "httpResponseCode",
            "description": "-1 for non HTTP navigations",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "httpStatusText",
            "description": "empty for non HTTP navigations",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-navigate"
      },
      {
        "name": "did-frame-navigate",
        "description": "Emitted when any frame navigation is done.\n\nThis event is not emitted for in-page navigations, such as clicking anchor links or updating the `window.location.hash`. Use `did-navigate-in-page` event for this purpose.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "httpResponseCode",
            "description": "-1 for non HTTP navigations",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "httpStatusText",
            "description": "empty for non HTTP navigations,",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameProcessId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameRoutingId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-frame-navigate"
      },
      {
        "name": "did-navigate-in-page",
        "description": "Emitted when an in-page navigation happened in any frame.\n\nWhen in-page navigation happens, the page URL changes but does not cause navigation outside of the page. Examples of this occurring are when anchor links are clicked or when the DOM `hashchange` event is triggered.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameProcessId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameRoutingId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-navigate-in-page"
      },
      {
        "name": "will-prevent-unload",
        "description": "Emitted when a `beforeunload` event handler is attempting to cancel a page unload.\n\nCalling `event.preventDefault()` will ignore the `beforeunload` event handler and allow the page to be unloaded.\n\n**Note:** This will be emitted for `BrowserViews` but will _not_ be respected - this is because we have chosen not to tie the `BrowserView` lifecycle to its owning BrowserWindow should one exist per the specification.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-will-prevent-unload"
      },
      {
        "name": "render-process-gone",
        "description": "Emitted when the renderer process unexpectedly disappears.  This is normally because it was crashed or killed.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "RenderProcessGoneDetails",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-render-process-gone"
      },
      {
        "name": "unresponsive",
        "description": "Emitted when the web page becomes unresponsive.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-unresponsive"
      },
      {
        "name": "responsive",
        "description": "Emitted when the unresponsive web page becomes responsive again.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-responsive"
      },
      {
        "name": "plugin-crashed",
        "description": "Emitted when a plugin process has crashed.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "name",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "version",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-plugin-crashed"
      },
      {
        "name": "destroyed",
        "description": "Emitted when `webContents` is destroyed.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-destroyed"
      },
      {
        "name": "input-event",
        "description": "Emitted when an input event is sent to the WebContents. See InputEvent for details.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "inputEvent",
            "description": "",
            "collection": false,
            "type": "InputEvent",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-input-event"
      },
      {
        "name": "before-input-event",
        "description": "Emitted before dispatching the `keydown` and `keyup` events in the page. Calling `event.preventDefault` will prevent the page `keydown`/`keyup` events and the menu shortcuts.\n\nTo only prevent the menu shortcuts, use `setIgnoreMenuShortcuts`:",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "input",
            "description": "Input properties.",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "type",
                "description": "Either `keyUp` or `keyDown`.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "key",
                "description": "Equivalent to KeyboardEvent.key.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "code",
                "description": "Equivalent to KeyboardEvent.code.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "isAutoRepeat",
                "description": "Equivalent to KeyboardEvent.repeat.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "isComposing",
                "description": "Equivalent to KeyboardEvent.isComposing.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "shift",
                "description": "Equivalent to KeyboardEvent.shiftKey.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "control",
                "description": "Equivalent to KeyboardEvent.controlKey.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "alt",
                "description": "Equivalent to KeyboardEvent.altKey.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "meta",
                "description": "Equivalent to KeyboardEvent.metaKey.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "location",
                "description": "Equivalent to KeyboardEvent.location.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              },
              {
                "name": "modifiers",
                "description": "See InputEvent.modifiers.",
                "required": true,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": null
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-before-input-event"
      },
      {
        "name": "enter-html-full-screen",
        "description": "Emitted when the window enters a full-screen state triggered by HTML API.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-enter-html-full-screen"
      },
      {
        "name": "leave-html-full-screen",
        "description": "Emitted when the window leaves a full-screen state triggered by HTML API.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-leave-html-full-screen"
      },
      {
        "name": "zoom-changed",
        "description": "Emitted when the user is requesting to change the zoom level using the mouse wheel.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "zoomDirection",
            "description": "Can be `in` or `out`.",
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "in",
                "description": ""
              },
              {
                "value": "out",
                "description": ""
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-zoom-changed"
      },
      {
        "name": "blur",
        "description": "Emitted when the `WebContents` loses focus.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-blur"
      },
      {
        "name": "focus",
        "description": "Emitted when the `WebContents` gains focus.\n\nNote that on macOS, having focus means the `WebContents` is the first responder of window, so switching focus between windows would not trigger the `focus` and `blur` events of `WebContents`, as the first responder of each window is not changed.\n\nThe `focus` and `blur` events of `WebContents` should only be used to detect focus change between different `WebContents` and `BrowserView` in the same window.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-focus"
      },
      {
        "name": "devtools-open-url",
        "description": "Emitted when a link is clicked in DevTools or 'Open in new tab' is selected for a link in its context menu.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "url",
            "description": "URL of the link that was clicked or selected.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-devtools-open-url"
      },
      {
        "name": "devtools-search-query",
        "description": "Emitted when 'Search' is selected for text in its context menu.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "query",
            "description": "text to query for.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-devtools-search-query"
      },
      {
        "name": "devtools-opened",
        "description": "Emitted when DevTools is opened.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-devtools-opened"
      },
      {
        "name": "devtools-closed",
        "description": "Emitted when DevTools is closed.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-devtools-closed"
      },
      {
        "name": "devtools-focused",
        "description": "Emitted when DevTools is focused / opened.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-devtools-focused"
      },
      {
        "name": "certificate-error",
        "description": "Emitted when failed to verify the `certificate` for `url`.\n\nThe usage is the same with the `certificate-error` event of `app`.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "error",
            "description": "The error code.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "certificate",
            "description": "",
            "collection": false,
            "type": "Certificate",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "callback",
            "description": "",
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "isTrusted",
                "description": "Indicates whether the certificate can be considered trusted.",
                "required": true,
                "collection": false,
                "type": "boolean"
              }
            ],
            "returns": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-certificate-error"
      },
      {
        "name": "select-client-certificate",
        "description": "Emitted when a client certificate is requested.\n\nThe usage is the same with the `select-client-certificate` event of `app`.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "URL",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "certificateList",
            "description": "",
            "collection": true,
            "type": "Certificate",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "callback",
            "description": "",
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "certificate",
                "description": "Must be a certificate from the given list.",
                "required": true,
                "collection": false,
                "type": "Certificate"
              }
            ],
            "returns": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-select-client-certificate"
      },
      {
        "name": "login",
        "description": "Emitted when `webContents` wants to do basic auth.\n\nThe usage is the same with the `login` event of `app`.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "authenticationResponseDetails",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "url",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "URL"
              }
            ],
            "additionalTags": [],
            "required": true
          },
          {
            "name": "authInfo",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "isProxy",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "scheme",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "host",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "port",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "realm",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "additionalTags": [],
            "required": true
          },
          {
            "name": "callback",
            "description": "",
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "username",
                "description": "",
                "required": false,
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "password",
                "description": "",
                "required": false,
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "returns": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-login"
      },
      {
        "name": "found-in-page",
        "description": "Emitted when a result is available for `webContents.findInPage` request.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "result",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "requestId",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "activeMatchOrdinal",
                "description": "Position of the active match.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "matches",
                "description": "Number of Matches.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "selectionArea",
                "description": "Coordinates of first match region.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Rectangle"
              },
              {
                "name": "finalUpdate",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-found-in-page"
      },
      {
        "name": "media-started-playing",
        "description": "Emitted when media starts playing.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-media-started-playing"
      },
      {
        "name": "media-paused",
        "description": "Emitted when media is paused or done playing.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-media-paused"
      },
      {
        "name": "audio-state-changed",
        "description": "Emitted when media becomes audible or inaudible.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "eventProperties": [
              {
                "name": "audible",
                "description": "True if one or more frames or child `webContents` are emitting audio.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-audio-state-changed"
      },
      {
        "name": "did-change-theme-color",
        "description": "Emitted when a page's theme color changes. This is usually due to encountering a meta tag:",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "color",
            "description": "Theme color is in format of '#rrggbb'. It is `null` when no theme color is set.",
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "type": "null",
                "collection": false
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-change-theme-color"
      },
      {
        "name": "update-target-url",
        "description": "Emitted when mouse moves over a link or the keyboard moves the focus to a link.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-update-target-url"
      },
      {
        "name": "cursor-changed",
        "description": "Emitted when the cursor's type changes. The `type` parameter can be `pointer`, `crosshair`, `hand`, `text`, `wait`, `help`, `e-resize`, `n-resize`, `ne-resize`, `nw-resize`, `s-resize`, `se-resize`, `sw-resize`, `w-resize`, `ns-resize`, `ew-resize`, `nesw-resize`, `nwse-resize`, `col-resize`, `row-resize`, `m-panning`, `m-panning-vertical`, `m-panning-horizontal`, `e-panning`, `n-panning`, `ne-panning`, `nw-panning`, `s-panning`, `se-panning`, `sw-panning`, `w-panning`, `move`, `vertical-text`, `cell`, `context-menu`, `alias`, `progress`, `nodrop`, `copy`, `none`, `not-allowed`, `zoom-in`, `zoom-out`, `grab`, `grabbing`, `custom`, `null`, `drag-drop-none`, `drag-drop-move`, `drag-drop-copy`, `drag-drop-link`, `ns-no-resize`, `ew-no-resize`, `nesw-no-resize`, `nwse-no-resize`, or `default`.\n\nIf the `type` parameter is `custom`, the `image` parameter will hold the custom cursor image in a `NativeImage`, and `scale`, `size` and `hotspot` will hold additional information about the custom cursor.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "type",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "image",
            "description": "",
            "collection": false,
            "type": "NativeImage",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "scale",
            "description": "scaling factor for the custom cursor.",
            "collection": false,
            "type": "Float",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "size",
            "description": "the size of the `image`.",
            "collection": false,
            "type": "Size",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "hotspot",
            "description": "coordinates of the custom cursor's hotspot.",
            "collection": false,
            "type": "Point",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-cursor-changed"
      },
      {
        "name": "context-menu",
        "description": "Emitted when there is a new context menu that needs to be handled.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "params",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "x",
                "description": "x coordinate.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "y",
                "description": "y coordinate.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "frame",
                "description": "Frame from which the context menu was invoked.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              },
              {
                "name": "linkURL",
                "description": "URL of the link that encloses the node the context menu was invoked on.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "linkText",
                "description": "Text associated with the link. May be an empty string if the contents of the link are an image.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "pageURL",
                "description": "URL of the top level page that the context menu was invoked on.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "frameURL",
                "description": "URL of the subframe that the context menu was invoked on.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "srcURL",
                "description": "Source URL for the element that the context menu was invoked on. Elements with source URLs are images, audio and video.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "mediaType",
                "description": "Type of the node the context menu was invoked on. Can be `none`, `image`, `audio`, `video`, `canvas`, `file` or `plugin`.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "none",
                    "description": ""
                  },
                  {
                    "value": "image",
                    "description": ""
                  },
                  {
                    "value": "audio",
                    "description": ""
                  },
                  {
                    "value": "video",
                    "description": ""
                  },
                  {
                    "value": "canvas",
                    "description": ""
                  },
                  {
                    "value": "file",
                    "description": ""
                  },
                  {
                    "value": "plugin",
                    "description": ""
                  }
                ]
              },
              {
                "name": "hasImageContents",
                "description": "Whether the context menu was invoked on an image which has non-empty contents.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "isEditable",
                "description": "Whether the context is editable.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "selectionText",
                "description": "Text of the selection that the context menu was invoked on.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "titleText",
                "description": "Title text of the selection that the context menu was invoked on.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "altText",
                "description": "Alt text of the selection that the context menu was invoked on.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "suggestedFilename",
                "description": "Suggested filename to be used when saving file through 'Save Link As' option of context menu.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "selectionRect",
                "description": "Rect representing the coordinates in the document space of the selection.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Rectangle"
              },
              {
                "name": "selectionStartOffset",
                "description": "Start position of the selection text.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              },
              {
                "name": "referrerPolicy",
                "description": "The referrer policy of the frame on which the menu is invoked.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Referrer"
              },
              {
                "name": "misspelledWord",
                "description": "The misspelled word under the cursor, if any.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "dictionarySuggestions",
                "description": "An array of suggested words to show the user to replace the `misspelledWord`.  Only available if there is a misspelled word and spellchecker is enabled.",
                "required": true,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "frameCharset",
                "description": "The character encoding of the frame on which the menu was invoked.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "formControlType",
                "description": "The source that the context menu was invoked on. Possible values include `none`, `button-button`, `field-set`, `input-button`, `input-checkbox`, `input-color`, `input-date`, `input-datetime-local`, `input-email`, `input-file`, `input-hidden`, `input-image`, `input-month`, `input-number`, `input-password`, `input-radio`, `input-range`, `input-reset`, `input-search`, `input-submit`, `input-telephone`, `input-text`, `input-time`, `input-url`, `input-week`, `output`, `reset-button`, `select-list`, `select-list`, `select-multiple`, `select-one`, `submit-button`, and `text-area`,",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "none",
                    "description": ""
                  },
                  {
                    "value": "button-button",
                    "description": ""
                  },
                  {
                    "value": "field-set",
                    "description": ""
                  },
                  {
                    "value": "input-button",
                    "description": ""
                  },
                  {
                    "value": "input-checkbox",
                    "description": ""
                  },
                  {
                    "value": "input-color",
                    "description": ""
                  },
                  {
                    "value": "input-date",
                    "description": ""
                  },
                  {
                    "value": "input-datetime-local",
                    "description": ""
                  },
                  {
                    "value": "input-email",
                    "description": ""
                  },
                  {
                    "value": "input-file",
                    "description": ""
                  },
                  {
                    "value": "input-hidden",
                    "description": ""
                  },
                  {
                    "value": "input-image",
                    "description": ""
                  },
                  {
                    "value": "input-month",
                    "description": ""
                  },
                  {
                    "value": "input-number",
                    "description": ""
                  },
                  {
                    "value": "input-password",
                    "description": ""
                  },
                  {
                    "value": "input-radio",
                    "description": ""
                  },
                  {
                    "value": "input-range",
                    "description": ""
                  },
                  {
                    "value": "input-reset",
                    "description": ""
                  },
                  {
                    "value": "input-search",
                    "description": ""
                  },
                  {
                    "value": "input-submit",
                    "description": ""
                  },
                  {
                    "value": "input-telephone",
                    "description": ""
                  },
                  {
                    "value": "input-text",
                    "description": ""
                  },
                  {
                    "value": "input-time",
                    "description": ""
                  },
                  {
                    "value": "input-url",
                    "description": ""
                  },
                  {
                    "value": "input-week",
                    "description": ""
                  },
                  {
                    "value": "output",
                    "description": ""
                  },
                  {
                    "value": "reset-button",
                    "description": ""
                  },
                  {
                    "value": "select-list",
                    "description": ""
                  },
                  {
                    "value": "select-list",
                    "description": ""
                  },
                  {
                    "value": "select-multiple",
                    "description": ""
                  },
                  {
                    "value": "select-one",
                    "description": ""
                  },
                  {
                    "value": "submit-button",
                    "description": ""
                  },
                  {
                    "value": "text-area",
                    "description": ""
                  }
                ]
              },
              {
                "name": "spellcheckEnabled",
                "description": "If the context is editable, whether or not spellchecking is enabled.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "menuSourceType",
                "description": "Input source that invoked the context menu. Can be `none`, `mouse`, `keyboard`, `touch`, `touchMenu`, `longPress`, `longTap`, `touchHandle`, `stylus`, `adjustSelection`, or `adjustSelectionReset`.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "none",
                    "description": ""
                  },
                  {
                    "value": "mouse",
                    "description": ""
                  },
                  {
                    "value": "keyboard",
                    "description": ""
                  },
                  {
                    "value": "touch",
                    "description": ""
                  },
                  {
                    "value": "touchMenu",
                    "description": ""
                  },
                  {
                    "value": "longPress",
                    "description": ""
                  },
                  {
                    "value": "longTap",
                    "description": ""
                  },
                  {
                    "value": "touchHandle",
                    "description": ""
                  },
                  {
                    "value": "stylus",
                    "description": ""
                  },
                  {
                    "value": "adjustSelection",
                    "description": ""
                  },
                  {
                    "value": "adjustSelectionReset",
                    "description": ""
                  }
                ]
              },
              {
                "name": "mediaFlags",
                "description": "The flags for the media element the context menu was invoked on.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Object",
                "properties": [
                  {
                    "name": "inError",
                    "description": "Whether the media element has crashed.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "isPaused",
                    "description": "Whether the media element is paused.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "isMuted",
                    "description": "Whether the media element is muted.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "hasAudio",
                    "description": "Whether the media element has audio.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "isLooping",
                    "description": "Whether the media element is looping.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "isControlsVisible",
                    "description": "Whether the media element's controls are visible.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canToggleControls",
                    "description": "Whether the media element's controls are toggleable.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canPrint",
                    "description": "Whether the media element can be printed.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canSave",
                    "description": "Whether or not the media element can be downloaded.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canShowPictureInPicture",
                    "description": "Whether the media element can show picture-in-picture.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "isShowingPictureInPicture",
                    "description": "Whether the media element is currently showing picture-in-picture.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canRotate",
                    "description": "Whether the media element can be rotated.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canLoop",
                    "description": "Whether the media element can be looped.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  }
                ]
              },
              {
                "name": "editFlags",
                "description": "These flags indicate whether the renderer believes it is able to perform the corresponding action.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Object",
                "properties": [
                  {
                    "name": "canUndo",
                    "description": "Whether the renderer believes it can undo.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canRedo",
                    "description": "Whether the renderer believes it can redo.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canCut",
                    "description": "Whether the renderer believes it can cut.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canCopy",
                    "description": "Whether the renderer believes it can copy.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canPaste",
                    "description": "Whether the renderer believes it can paste.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canDelete",
                    "description": "Whether the renderer believes it can delete.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canSelectAll",
                    "description": "Whether the renderer believes it can select all.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canEditRichly",
                    "description": "Whether the renderer believes it can edit text richly.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  }
                ]
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-context-menu"
      },
      {
        "name": "select-bluetooth-device",
        "description": "Emitted when a bluetooth device needs to be selected when a call to `navigator.bluetooth.requestDevice` is made. `callback` should be called with the `deviceId` of the device to be selected.  Passing an empty string to `callback` will cancel the request.\n\nIf an event listener is not added for this event, or if `event.preventDefault` is not called when handling this event, the first available device will be automatically selected.\n\nDue to the nature of bluetooth, scanning for devices when `navigator.bluetooth.requestDevice` is called may take time and will cause `select-bluetooth-device` to fire multiple times until `callback` is called with either a device id or an empty string to cancel the request.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "devices",
            "description": "",
            "collection": true,
            "type": "BluetoothDevice",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "callback",
            "description": "",
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "deviceId",
                "description": "",
                "required": true,
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "returns": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-select-bluetooth-device"
      },
      {
        "name": "paint",
        "description": "Emitted when a new frame is generated. Only the dirty area is passed in the buffer.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "dirtyRect",
            "description": "",
            "collection": false,
            "type": "Rectangle",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "image",
            "description": "The image data of the whole frame.",
            "collection": false,
            "type": "NativeImage",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-paint"
      },
      {
        "name": "devtools-reload-page",
        "description": "Emitted when the devtools window instructs the webContents to reload",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-devtools-reload-page"
      },
      {
        "name": "will-attach-webview",
        "description": "Emitted when a `<webview>`'s web contents is being attached to this web contents. Calling `event.preventDefault()` will destroy the guest page.\n\nThis event can be used to configure `webPreferences` for the `webContents` of a `<webview>` before it's loaded, and provides the ability to set settings that can't be set via `<webview>` attributes.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "webPreferences",
            "description": "The web preferences that will be used by the guest page. This object can be modified to adjust the preferences for the guest page.",
            "collection": false,
            "type": "WebPreferences",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "params",
            "description": "The other `<webview>` parameters such as the `src` URL. This object can be modified to adjust the parameters of the guest page.",
            "collection": false,
            "type": "Record",
            "innerTypes": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-will-attach-webview"
      },
      {
        "name": "did-attach-webview",
        "description": "Emitted when a `<webview>` has been attached to this web contents.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "webContents",
            "description": "The guest web contents that is used by the `<webview>`.",
            "collection": false,
            "type": "WebContents",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-attach-webview"
      },
      {
        "name": "console-message",
        "description": "Emitted when the associated window logs a console message.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "level",
            "description": "The log level, from 0 to 3. In order it matches `verbose`, `info`, `warning` and `error`.",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "message",
            "description": "The actual console message",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "line",
            "description": "The line number of the source that triggered this console message",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "sourceId",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-console-message"
      },
      {
        "name": "preload-error",
        "description": "Emitted when the preload script `preloadPath` throws an unhandled exception `error`.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "preloadPath",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "error",
            "description": "",
            "collection": false,
            "type": "Error",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-preload-error"
      },
      {
        "name": "ipc-message",
        "description": "Emitted when the renderer process sends an asynchronous message via `ipcRenderer.send()`.\n\nSee also `webContents.ipc`, which provides an `IpcMain`-like interface for responding to IPC messages specifically from this WebContents.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "IpcMainEvent",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "channel",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "...args",
            "description": "",
            "collection": true,
            "type": "any",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-ipc-message"
      },
      {
        "name": "ipc-message-sync",
        "description": "Emitted when the renderer process sends a synchronous message via `ipcRenderer.sendSync()`.\n\nSee also `webContents.ipc`, which provides an `IpcMain`-like interface for responding to IPC messages specifically from this WebContents.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "IpcMainEvent",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "channel",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "...args",
            "description": "",
            "collection": true,
            "type": "any",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-ipc-message-sync"
      },
      {
        "name": "preferred-size-changed",
        "description": "Emitted when the `WebContents` preferred size has changed.\n\nThis event will only be emitted when `enablePreferredSizeMode` is set to `true` in `webPreferences`.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "preferredSize",
            "description": "The minimum size needed to contain the layout of the document—without requiring scrolling.",
            "collection": false,
            "type": "Size",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-preferred-size-changed"
      },
      {
        "name": "frame-created",
        "description": "Emitted when the mainFrame, an `<iframe>`, or a nested `<iframe>` is loaded within the page.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "frame",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "WebFrameMain"
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-frame-created"
      }
    ],
    "instanceName": "webContents"
  },
  {
    "name": "webFrameMain",
    "description": "> Control web pages and iframes.\n\nProcess: Main\n\nThe `webFrameMain` module can be used to lookup frames across existing `WebContents` instances. Navigation events are the common use case.\n\n```\nconst { BrowserWindow, webFrameMain } = require('electron')\n\nconst win = new BrowserWindow({ width: 800, height: 1500 })\nwin.loadURL('https://twitter.com')\n\nwin.webContents.on(\n  'did-frame-navigate',\n  (event, url, httpResponseCode, httpStatusText, isMainFrame, frameProcessId, frameRoutingId) => {\n    const frame = webFrameMain.fromId(frameProcessId, frameRoutingId)\n    if (frame) {\n      const code = 'document.body.innerHTML = document.body.innerHTML.replaceAll(\"heck\", \"h*ck\")'\n      frame.executeJavaScript(code)\n    }\n  }\n)\n```\n\nYou can also access frames of existing pages by using the `mainFrame` property of `WebContents`.",
    "slug": "web-frame-main",
    "websiteUrl": "https://electronjs.org/docs/api/web-frame-main",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/web-frame-main.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "fromId",
        "signature": "(processId, routingId)",
        "description": "A frame with the given process and routing IDs, or `undefined` if there is no WebFrameMain associated with the given IDs.",
        "parameters": [
          {
            "name": "processId",
            "description": "An `Integer` representing the internal ID of the process which owns the frame.",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "routingId",
            "description": "An `Integer` representing the unique frame ID in the current renderer process. Routing IDs can be retrieved from `WebFrameMain` instances (`frame.routingId`) and are also passed by frame specific `WebContents` navigation events (e.g. `did-frame-navigate`).",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": {
          "collection": false,
          "type": [
            {
              "collection": false,
              "type": "WebFrameMain"
            },
            {
              "collection": false,
              "type": "undefined"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webframemainfromidprocessid-routingid"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "WebFrameMain",
    "description": "",
    "slug": "web-frame-main",
    "websiteUrl": "https://electronjs.org/docs/api/web-frame-main",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/web-frame-main.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": null,
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "executeJavaScript",
        "signature": "(code[, userGesture])",
        "description": "A promise that resolves with the result of the executed code or is rejected if execution throws or results in a rejected promise.\n\nEvaluates `code` in page.\n\nIn the browser window some HTML APIs like `requestFullScreen` can only be invoked by a gesture from the user. Setting `userGesture` to `true` will remove this limitation.",
        "parameters": [
          {
            "name": "code",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "userGesture",
            "description": "Default is `false`.",
            "required": false,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "unknown"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#frameexecutejavascriptcode-usergesture"
      },
      {
        "name": "reload",
        "signature": "()",
        "description": "Whether the reload was initiated successfully. Only results in `false` when the frame has no history.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#framereload"
      },
      {
        "name": "send",
        "signature": "(channel, ...args)",
        "description": "Send an asynchronous message to the renderer process via `channel`, along with arguments. Arguments will be serialized with the Structured Clone Algorithm, just like `postMessage`, so prototype chains will not be included. Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will throw an exception.\n\nThe renderer process can handle the message by listening to `channel` with the `ipcRenderer` module.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "...args",
            "description": "",
            "required": true,
            "collection": true,
            "type": "any"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#framesendchannel-args"
      },
      {
        "name": "postMessage",
        "signature": "(channel, message, [transfer])",
        "description": "Send a message to the renderer process, optionally transferring ownership of zero or more `MessagePortMain` objects.\n\nThe transferred `MessagePortMain` objects will be available in the renderer process by accessing the `ports` property of the emitted event. When they arrive in the renderer, they will be native DOM `MessagePort` objects.\n\nFor example:",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "message",
            "description": "",
            "required": true,
            "collection": false,
            "type": "any"
          },
          {
            "name": "transfer",
            "description": "",
            "required": false,
            "collection": true,
            "type": "MessagePortMain"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#framepostmessagechannel-message-transfer"
      }
    ],
    "instanceProperties": [
      {
        "name": "ipc",
        "description": "An `IpcMain` instance scoped to the frame.\n\nIPC messages sent with `ipcRenderer.send`, `ipcRenderer.sendSync` or `ipcRenderer.postMessage` will be delivered in the following order:\n\n* `contents.on('ipc-message')`\n* `contents.mainFrame.on(channel)`\n* `contents.ipc.on(channel)`\n* `ipcMain.on(channel)`\n\nHandlers registered with `invoke` will be checked in the following order. The first one that is defined will be called, the rest will be ignored.\n\n* `contents.mainFrame.handle(channel)`\n* `contents.handle(channel)`\n* `ipcMain.handle(channel)`\n\nIn most cases, only the main frame of a WebContents can send or receive IPC messages. However, if the `nodeIntegrationInSubFrames` option is enabled, it is possible for child frames to send and receive IPC messages also. The `WebContents.ipc` interface may be more convenient when `nodeIntegrationInSubFrames` is not enabled.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#frameipc-readonly",
        "collection": false,
        "type": "IpcMain"
      },
      {
        "name": "url",
        "description": "A `string` representing the current URL of the frame.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#frameurl-readonly",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "origin",
        "description": "A `string` representing the current origin of the frame, serialized according to RFC 6454. This may be different from the URL. For instance, if the frame is a child window opened to `about:blank`, then `frame.origin` will return the parent frame's origin, while `frame.url` will return the empty string. Pages without a scheme/host/port triple origin will have the serialized origin of `\"null\"` (that is, the string containing the letters n, u, l, l).",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#frameorigin-readonly",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "top",
        "description": "A `WebFrameMain | null` representing top frame in the frame hierarchy to which `frame` belongs.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#frametop-readonly",
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "WebFrameMain"
          },
          {
            "type": "null",
            "collection": false
          }
        ]
      },
      {
        "name": "parent",
        "description": "A `WebFrameMain | null` representing parent frame of `frame`, the property would be `null` if `frame` is the top frame in the frame hierarchy.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#frameparent-readonly",
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "WebFrameMain"
          },
          {
            "type": "null",
            "collection": false
          }
        ]
      },
      {
        "name": "frames",
        "description": "A `WebFrameMain[]` collection containing the direct descendents of `frame`.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#frameframes-readonly",
        "collection": true,
        "type": "WebFrameMain"
      },
      {
        "name": "framesInSubtree",
        "description": "A `WebFrameMain[]` collection containing every frame in the subtree of `frame`, including itself. This can be useful when traversing through all frames.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#frameframesinsubtree-readonly",
        "collection": true,
        "type": "WebFrameMain"
      },
      {
        "name": "frameTreeNodeId",
        "description": "An `Integer` representing the id of the frame's internal FrameTreeNode instance. This id is browser-global and uniquely identifies a frame that hosts content. The identifier is fixed at the creation of the frame and stays constant for the lifetime of the frame. When the frame is removed, the id is not used again.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#frameframetreenodeid-readonly",
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "name",
        "description": "A `string` representing the frame name.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#framename-readonly",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "osProcessId",
        "description": "An `Integer` representing the operating system `pid` of the process which owns this frame.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#frameosprocessid-readonly",
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "processId",
        "description": "An `Integer` representing the Chromium internal `pid` of the process which owns this frame. This is not the same as the OS process ID; to read that use `frame.osProcessId`.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#frameprocessid-readonly",
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "routingId",
        "description": "An `Integer` representing the unique frame id in the current renderer process. Distinct `WebFrameMain` instances that refer to the same underlying frame will have the same `routingId`.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#frameroutingid-readonly",
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "visibilityState",
        "description": "A `string` representing the visibility state of the frame.\n\nSee also how the Page Visibility API is affected by other Electron APIs.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#framevisibilitystate-readonly",
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ],
    "instanceEvents": [
      {
        "name": "dom-ready",
        "description": "Emitted when the document is loaded.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-dom-ready"
      }
    ],
    "instanceName": "webFrameMain"
  },
  {
    "name": "webFrame",
    "description": "> Customize the rendering of the current web page.\n\nProcess: Renderer\n\n`webFrame` export of the Electron module is an instance of the `WebFrame` class representing the current frame. Sub-frames can be retrieved by certain properties and methods (e.g. `webFrame.firstChild`).\n\nAn example of zooming current page to 200%.",
    "slug": "web-frame",
    "websiteUrl": "https://electronjs.org/docs/api/web-frame",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/web-frame.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": false,
      "renderer": true,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "setZoomFactor",
        "signature": "(factor)",
        "description": "Changes the zoom factor to the specified factor. Zoom factor is zoom percent divided by 100, so 300% = 3.0.\n\nThe factor must be greater than 0.0.",
        "parameters": [
          {
            "name": "factor",
            "description": "Zoom factor; default is 1.0.",
            "required": true,
            "collection": false,
            "type": "Double"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webframesetzoomfactorfactor"
      },
      {
        "name": "getZoomFactor",
        "signature": "()",
        "description": "The current zoom factor.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "number"
        },
        "additionalTags": [],
        "urlFragment": "#webframegetzoomfactor"
      },
      {
        "name": "setZoomLevel",
        "signature": "(level)",
        "description": "Changes the zoom level to the specified level. The original size is 0 and each increment above or below represents zooming 20% larger or smaller to default limits of 300% and 50% of original size, respectively.\n\n> **NOTE**: The zoom policy at the Chromium level is same-origin, meaning that the zoom level for a specific domain propagates across all instances of windows with the same domain. Differentiating the window URLs will make zoom work per-window.",
        "parameters": [
          {
            "name": "level",
            "description": "Zoom level.",
            "required": true,
            "collection": false,
            "type": "number"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webframesetzoomlevellevel"
      },
      {
        "name": "getZoomLevel",
        "signature": "()",
        "description": "The current zoom level.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "number"
        },
        "additionalTags": [],
        "urlFragment": "#webframegetzoomlevel"
      },
      {
        "name": "setVisualZoomLevelLimits",
        "signature": "(minimumLevel, maximumLevel)",
        "description": "Sets the maximum and minimum pinch-to-zoom level.\n\n> **NOTE**: Visual zoom is disabled by default in Electron. To re-enable it, call:\n\n> **NOTE**: Visual zoom only applies to pinch-to-zoom behavior. Cmd+/-/0 zoom shortcuts are controlled by the 'zoomIn', 'zoomOut', and 'resetZoom' MenuItem roles in the application Menu. To disable shortcuts, manually define the Menu and omit zoom roles from the definition.",
        "parameters": [
          {
            "name": "minimumLevel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "number"
          },
          {
            "name": "maximumLevel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "number"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webframesetvisualzoomlevellimitsminimumlevel-maximumlevel"
      },
      {
        "name": "setSpellCheckProvider",
        "signature": "(language, provider)",
        "description": "Sets a provider for spell checking in input fields and text areas.\n\nIf you want to use this method you must disable the builtin spellchecker when you construct the window.\n\nThe `provider` must be an object that has a `spellCheck` method that accepts an array of individual words for spellchecking. The `spellCheck` function runs asynchronously and calls the `callback` function with an array of misspelt words when complete.\n\nAn example of using node-spellchecker as provider:",
        "parameters": [
          {
            "name": "language",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "provider",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "spellCheck",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "words",
                    "description": "",
                    "required": true,
                    "collection": true,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "name": "callback",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Function",
                    "parameters": [
                      {
                        "name": "misspeltWords",
                        "description": "",
                        "required": true,
                        "collection": true,
                        "type": "String",
                        "possibleValues": null
                      }
                    ],
                    "returns": null
                  }
                ],
                "returns": null
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webframesetspellcheckproviderlanguage-provider"
      },
      {
        "name": "insertCSS",
        "signature": "(css[, options])",
        "description": "A key for the inserted CSS that can later be used to remove the CSS via `webFrame.removeInsertedCSS(key)`.\n\nInjects CSS into the current web page and returns a unique key for the inserted stylesheet.",
        "parameters": [
          {
            "name": "css",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "cssOrigin",
                "description": "Can be 'user' or 'author'. Sets the cascade origin of the inserted stylesheet. Default is 'author'.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "user",
                    "description": ""
                  },
                  {
                    "value": "author",
                    "description": ""
                  }
                ]
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#webframeinsertcsscss-options"
      },
      {
        "name": "removeInsertedCSS",
        "signature": "(key)",
        "description": "Removes the inserted CSS from the current web page. The stylesheet is identified by its key, which is returned from `webFrame.insertCSS(css)`.",
        "parameters": [
          {
            "name": "key",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webframeremoveinsertedcsskey"
      },
      {
        "name": "insertText",
        "signature": "(text)",
        "description": "Inserts `text` to the focused element.",
        "parameters": [
          {
            "name": "text",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webframeinserttexttext"
      },
      {
        "name": "executeJavaScript",
        "signature": "(code[, userGesture, callback])",
        "description": "A promise that resolves with the result of the executed code or is rejected if execution throws or results in a rejected promise.\n\nEvaluates `code` in page.\n\nIn the browser window some HTML APIs like `requestFullScreen` can only be invoked by a gesture from the user. Setting `userGesture` to `true` will remove this limitation.",
        "parameters": [
          {
            "name": "code",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "userGesture",
            "description": "Default is `false`.",
            "required": false,
            "collection": false,
            "type": "boolean"
          },
          {
            "name": "callback",
            "description": "Called after script has been executed. Unless the frame is suspended (e.g. showing a modal alert), execution will be synchronous and the callback will be invoked before the method returns. For compatibility with an older version of this method, the error parameter is second.",
            "required": false,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "result",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Any"
              },
              {
                "name": "error",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Error"
              }
            ],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "any"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webframeexecutejavascriptcode-usergesture-callback"
      },
      {
        "name": "executeJavaScriptInIsolatedWorld",
        "signature": "(worldId, scripts[, userGesture, callback])",
        "description": "A promise that resolves with the result of the executed code or is rejected if execution could not start.\n\nWorks like `executeJavaScript` but evaluates `scripts` in an isolated context.\n\nNote that when the execution of script fails, the returned promise will not reject and the `result` would be `undefined`. This is because Chromium does not dispatch errors of isolated worlds to foreign worlds.",
        "parameters": [
          {
            "name": "worldId",
            "description": "The ID of the world to run the javascript in, `0` is the default main world (where content runs), `999` is the world used by Electron's `contextIsolation` feature. Accepts values in the range 1..536870911.",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "scripts",
            "description": "",
            "required": true,
            "collection": true,
            "type": "WebSource"
          },
          {
            "name": "userGesture",
            "description": "Default is `false`.",
            "required": false,
            "collection": false,
            "type": "boolean"
          },
          {
            "name": "callback",
            "description": "Called after script has been executed. Unless the frame is suspended (e.g. showing a modal alert), execution will be synchronous and the callback will be invoked before the method returns.  For compatibility with an older version of this method, the error parameter is second.",
            "required": false,
            "collection": false,
            "type": "Function",
            "parameters": [
              {
                "name": "result",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Any"
              },
              {
                "name": "error",
                "description": "",
                "required": true,
                "collection": false,
                "type": "Error"
              }
            ],
            "returns": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "any"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webframeexecutejavascriptinisolatedworldworldid-scripts-usergesture-callback"
      },
      {
        "name": "setIsolatedWorldInfo",
        "signature": "(worldId, info)",
        "description": "Set the security origin, content security policy and name of the isolated world. Note: If the `csp` is specified, then the `securityOrigin` also has to be specified.",
        "parameters": [
          {
            "name": "worldId",
            "description": "The ID of the world to run the javascript in, `0` is the default world, `999` is the world used by Electrons `contextIsolation` feature. Chrome extensions reserve the range of IDs in `[1 << 20, 1 << 29)`. You can provide any integer here.",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "info",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "securityOrigin",
                "description": "Security origin for the isolated world.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "csp",
                "description": "Content Security Policy for the isolated world.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "name",
                "description": "Name for isolated world. Useful in devtools.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webframesetisolatedworldinfoworldid-info"
      },
      {
        "name": "getResourceUsage",
        "signature": "()",
        "description": "* `images` MemoryUsageDetails\n* `scripts` MemoryUsageDetails\n* `cssStyleSheets` MemoryUsageDetails\n* `xslStyleSheets` MemoryUsageDetails\n* `fonts` MemoryUsageDetails\n* `other` MemoryUsageDetails\n\nReturns an object describing usage information of Blink's internal memory caches.\n\nThis will generate:",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "Object",
          "properties": [
            {
              "name": "images",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "MemoryUsageDetails"
            },
            {
              "name": "scripts",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "MemoryUsageDetails"
            },
            {
              "name": "cssStyleSheets",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "MemoryUsageDetails"
            },
            {
              "name": "xslStyleSheets",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "MemoryUsageDetails"
            },
            {
              "name": "fonts",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "MemoryUsageDetails"
            },
            {
              "name": "other",
              "description": "",
              "required": true,
              "additionalTags": [],
              "collection": false,
              "type": "MemoryUsageDetails"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webframegetresourceusage"
      },
      {
        "name": "clearCache",
        "signature": "()",
        "description": "Attempts to free memory that is no longer being used (like images from a previous navigation).\n\nNote that blindly calling this method probably makes Electron slower since it will have to refill these emptied caches, you should only call it if an event in your app has occurred that makes you think your page is actually using less memory (i.e. you have navigated from a super heavy page to a mostly empty one, and intend to stay there).",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webframeclearcache"
      },
      {
        "name": "getFrameForSelector",
        "signature": "(selector)",
        "description": "The frame element in `webFrame's` document selected by `selector`, `null` would be returned if `selector` does not select a frame or if the frame is not in the current renderer process.",
        "parameters": [
          {
            "name": "selector",
            "description": "CSS selector for a frame element.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "WebFrame"
        },
        "additionalTags": [],
        "urlFragment": "#webframegetframeforselectorselector"
      },
      {
        "name": "findFrameByName",
        "signature": "(name)",
        "description": "A child of `webFrame` with the supplied `name`, `null` would be returned if there's no such frame or if the frame is not in the current renderer process.",
        "parameters": [
          {
            "name": "name",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "WebFrame"
        },
        "additionalTags": [],
        "urlFragment": "#webframefindframebynamename"
      },
      {
        "name": "findFrameByRoutingId",
        "signature": "(routingId)",
        "description": "that has the supplied `routingId`, `null` if not found.",
        "parameters": [
          {
            "name": "routingId",
            "description": "An `Integer` representing the unique frame id in the current renderer process. Routing IDs can be retrieved from `WebFrame` instances (`webFrame.routingId`) and are also passed by frame specific `WebContents` navigation events (e.g. `did-frame-navigate`)",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": {
          "collection": false,
          "type": "WebFrame"
        },
        "additionalTags": [],
        "urlFragment": "#webframefindframebyroutingidroutingid"
      },
      {
        "name": "isWordMisspelled",
        "signature": "(word)",
        "description": "True if the word is misspelled according to the built in spellchecker, false otherwise. If no dictionary is loaded, always return false.",
        "parameters": [
          {
            "name": "word",
            "description": "The word to be spellchecked.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#webframeiswordmisspelledword"
      },
      {
        "name": "getWordSuggestions",
        "signature": "(word)",
        "description": "A list of suggested words for a given word. If the word is spelled correctly, the result will be empty.",
        "parameters": [
          {
            "name": "word",
            "description": "The misspelled word.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": true,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#webframegetwordsuggestionsword"
      }
    ],
    "properties": [
      {
        "name": "top",
        "description": "A `WebFrame | null` representing top frame in frame hierarchy to which `webFrame` belongs, the property would be `null` if top frame is not in the current renderer process.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#webframetop-readonly",
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "WebFrame"
          },
          {
            "type": "null",
            "collection": false
          }
        ]
      },
      {
        "name": "opener",
        "description": "A `WebFrame | null` representing the frame which opened `webFrame`, the property would be `null` if there's no opener or opener is not in the current renderer process.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#webframeopener-readonly",
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "WebFrame"
          },
          {
            "type": "null",
            "collection": false
          }
        ]
      },
      {
        "name": "parent",
        "description": "A `WebFrame | null` representing parent frame of `webFrame`, the property would be `null` if `webFrame` is top or parent is not in the current renderer process.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#webframeparent-readonly",
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "WebFrame"
          },
          {
            "type": "null",
            "collection": false
          }
        ]
      },
      {
        "name": "firstChild",
        "description": "A `WebFrame | null` representing the first child frame of `webFrame`, the property would be `null` if `webFrame` has no children or if first child is not in the current renderer process.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#webframefirstchild-readonly",
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "WebFrame"
          },
          {
            "type": "null",
            "collection": false
          }
        ]
      },
      {
        "name": "nextSibling",
        "description": "A `WebFrame | null` representing next sibling frame, the property would be `null` if `webFrame` is the last frame in its parent or if the next sibling is not in the current renderer process.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#webframenextsibling-readonly",
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "WebFrame"
          },
          {
            "type": "null",
            "collection": false
          }
        ]
      },
      {
        "name": "routingId",
        "description": "An `Integer` representing the unique frame id in the current renderer process. Distinct WebFrame instances that refer to the same underlying frame will have the same `routingId`.",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "urlFragment": "#webframeroutingid-readonly",
        "collection": false,
        "type": "Integer"
      }
    ],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "WebRequest",
    "description": "",
    "slug": "web-request",
    "websiteUrl": "https://electronjs.org/docs/api/web-request",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/web-request.md",
    "version": "31.7.7",
    "type": "Class",
    "process": {
      "main": true,
      "renderer": false,
      "utility": false,
      "exported": false
    },
    "constructorMethod": null,
    "staticMethods": [],
    "staticProperties": [],
    "instanceMethods": [
      {
        "name": "onBeforeRequest",
        "signature": "([filter, ]listener)",
        "description": "The `listener` will be called with `listener(details, callback)` when a request is about to occur.\n\nThe `uploadData` is an array of `UploadData` objects.\n\nThe `callback` has to be called with an `response` object.\n\nSome examples of valid `urls`:",
        "parameters": [
          {
            "name": "filter",
            "description": "",
            "required": false,
            "collection": false,
            "type": "WebRequestFilter"
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "details",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Object",
                    "properties": [
                      {
                        "name": "id",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "url",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "method",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "webContentsId",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "webContents",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebContents"
                      },
                      {
                        "name": "frame",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebFrameMain"
                      },
                      {
                        "name": "resourceType",
                        "description": "Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": [
                          {
                            "value": "mainFrame",
                            "description": ""
                          },
                          {
                            "value": "subFrame",
                            "description": ""
                          },
                          {
                            "value": "stylesheet",
                            "description": ""
                          },
                          {
                            "value": "script",
                            "description": ""
                          },
                          {
                            "value": "image",
                            "description": ""
                          },
                          {
                            "value": "font",
                            "description": ""
                          },
                          {
                            "value": "object",
                            "description": ""
                          },
                          {
                            "value": "xhr",
                            "description": ""
                          },
                          {
                            "value": "ping",
                            "description": ""
                          },
                          {
                            "value": "cspReport",
                            "description": ""
                          },
                          {
                            "value": "media",
                            "description": ""
                          },
                          {
                            "value": "webSocket",
                            "description": ""
                          },
                          {
                            "value": "other",
                            "description": ""
                          }
                        ]
                      },
                      {
                        "name": "referrer",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "timestamp",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Double"
                      },
                      {
                        "name": "uploadData",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": true,
                        "type": "UploadData"
                      }
                    ]
                  },
                  {
                    "name": "callback",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Function",
                    "parameters": [
                      {
                        "name": "response",
                        "description": "",
                        "required": true,
                        "collection": false,
                        "type": "Object",
                        "properties": [
                          {
                            "name": "cancel",
                            "description": "",
                            "required": false,
                            "additionalTags": [],
                            "collection": false,
                            "type": "boolean"
                          },
                          {
                            "name": "redirectURL",
                            "description": "The original request is prevented from being sent or completed and is instead redirected to the given URL.",
                            "required": false,
                            "additionalTags": [],
                            "collection": false,
                            "type": "String",
                            "possibleValues": null
                          }
                        ]
                      }
                    ],
                    "returns": null
                  }
                ],
                "returns": null
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webrequestonbeforerequestfilter-listener"
      },
      {
        "name": "onBeforeSendHeaders",
        "signature": "([filter, ]listener)",
        "description": "The `listener` will be called with `listener(details, callback)` before sending an HTTP request, once the request headers are available. This may occur after a TCP connection is made to the server, but before any http data is sent.\n\nThe `callback` has to be called with a `response` object.",
        "parameters": [
          {
            "name": "filter",
            "description": "",
            "required": false,
            "collection": false,
            "type": "WebRequestFilter"
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "details",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Object",
                    "properties": [
                      {
                        "name": "id",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "url",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "method",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "webContentsId",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "webContents",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebContents"
                      },
                      {
                        "name": "frame",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebFrameMain"
                      },
                      {
                        "name": "resourceType",
                        "description": "Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": [
                          {
                            "value": "mainFrame",
                            "description": ""
                          },
                          {
                            "value": "subFrame",
                            "description": ""
                          },
                          {
                            "value": "stylesheet",
                            "description": ""
                          },
                          {
                            "value": "script",
                            "description": ""
                          },
                          {
                            "value": "image",
                            "description": ""
                          },
                          {
                            "value": "font",
                            "description": ""
                          },
                          {
                            "value": "object",
                            "description": ""
                          },
                          {
                            "value": "xhr",
                            "description": ""
                          },
                          {
                            "value": "ping",
                            "description": ""
                          },
                          {
                            "value": "cspReport",
                            "description": ""
                          },
                          {
                            "value": "media",
                            "description": ""
                          },
                          {
                            "value": "webSocket",
                            "description": ""
                          },
                          {
                            "value": "other",
                            "description": ""
                          }
                        ]
                      },
                      {
                        "name": "referrer",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "timestamp",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Double"
                      },
                      {
                        "name": "uploadData",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": true,
                        "type": "UploadData"
                      },
                      {
                        "name": "requestHeaders",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Record",
                        "innerTypes": [
                          {
                            "collection": false,
                            "type": "String",
                            "possibleValues": null
                          },
                          {
                            "collection": false,
                            "type": "String",
                            "possibleValues": null
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "name": "callback",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Function",
                    "parameters": [
                      {
                        "name": "beforeSendResponse",
                        "description": "",
                        "required": true,
                        "collection": false,
                        "type": "Object",
                        "properties": [
                          {
                            "name": "cancel",
                            "description": "",
                            "required": false,
                            "additionalTags": [],
                            "collection": false,
                            "type": "boolean"
                          },
                          {
                            "name": "requestHeaders",
                            "description": "When provided, request will be made with these headers.",
                            "required": false,
                            "additionalTags": [],
                            "collection": false,
                            "type": "Record",
                            "innerTypes": [
                              {
                                "collection": false,
                                "type": "String",
                                "possibleValues": null
                              },
                              {
                                "collection": false,
                                "type": [
                                  {
                                    "collection": false,
                                    "type": "String",
                                    "possibleValues": null
                                  },
                                  {
                                    "collection": true,
                                    "type": "String",
                                    "possibleValues": null
                                  }
                                ]
                              }
                            ]
                          }
                        ]
                      }
                    ],
                    "returns": null
                  }
                ],
                "returns": null
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webrequestonbeforesendheadersfilter-listener"
      },
      {
        "name": "onSendHeaders",
        "signature": "([filter, ]listener)",
        "description": "The `listener` will be called with `listener(details)` just before a request is going to be sent to the server, modifications of previous `onBeforeSendHeaders` response are visible by the time this listener is fired.",
        "parameters": [
          {
            "name": "filter",
            "description": "",
            "required": false,
            "collection": false,
            "type": "WebRequestFilter"
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "details",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Object",
                    "properties": [
                      {
                        "name": "id",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "url",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "method",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "webContentsId",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "webContents",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebContents"
                      },
                      {
                        "name": "frame",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebFrameMain"
                      },
                      {
                        "name": "resourceType",
                        "description": "Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": [
                          {
                            "value": "mainFrame",
                            "description": ""
                          },
                          {
                            "value": "subFrame",
                            "description": ""
                          },
                          {
                            "value": "stylesheet",
                            "description": ""
                          },
                          {
                            "value": "script",
                            "description": ""
                          },
                          {
                            "value": "image",
                            "description": ""
                          },
                          {
                            "value": "font",
                            "description": ""
                          },
                          {
                            "value": "object",
                            "description": ""
                          },
                          {
                            "value": "xhr",
                            "description": ""
                          },
                          {
                            "value": "ping",
                            "description": ""
                          },
                          {
                            "value": "cspReport",
                            "description": ""
                          },
                          {
                            "value": "media",
                            "description": ""
                          },
                          {
                            "value": "webSocket",
                            "description": ""
                          },
                          {
                            "value": "other",
                            "description": ""
                          }
                        ]
                      },
                      {
                        "name": "referrer",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "timestamp",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Double"
                      },
                      {
                        "name": "requestHeaders",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Record",
                        "innerTypes": [
                          {
                            "collection": false,
                            "type": "String",
                            "possibleValues": null
                          },
                          {
                            "collection": false,
                            "type": "String",
                            "possibleValues": null
                          }
                        ]
                      }
                    ]
                  }
                ],
                "returns": null
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webrequestonsendheadersfilter-listener"
      },
      {
        "name": "onHeadersReceived",
        "signature": "([filter, ]listener)",
        "description": "The `listener` will be called with `listener(details, callback)` when HTTP response headers of a request have been received.\n\nThe `callback` has to be called with a `response` object.",
        "parameters": [
          {
            "name": "filter",
            "description": "",
            "required": false,
            "collection": false,
            "type": "WebRequestFilter"
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "details",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Object",
                    "properties": [
                      {
                        "name": "id",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "url",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "method",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "webContentsId",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "webContents",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebContents"
                      },
                      {
                        "name": "frame",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebFrameMain"
                      },
                      {
                        "name": "resourceType",
                        "description": "Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": [
                          {
                            "value": "mainFrame",
                            "description": ""
                          },
                          {
                            "value": "subFrame",
                            "description": ""
                          },
                          {
                            "value": "stylesheet",
                            "description": ""
                          },
                          {
                            "value": "script",
                            "description": ""
                          },
                          {
                            "value": "image",
                            "description": ""
                          },
                          {
                            "value": "font",
                            "description": ""
                          },
                          {
                            "value": "object",
                            "description": ""
                          },
                          {
                            "value": "xhr",
                            "description": ""
                          },
                          {
                            "value": "ping",
                            "description": ""
                          },
                          {
                            "value": "cspReport",
                            "description": ""
                          },
                          {
                            "value": "media",
                            "description": ""
                          },
                          {
                            "value": "webSocket",
                            "description": ""
                          },
                          {
                            "value": "other",
                            "description": ""
                          }
                        ]
                      },
                      {
                        "name": "referrer",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "timestamp",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Double"
                      },
                      {
                        "name": "statusLine",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "statusCode",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "responseHeaders",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Record",
                        "innerTypes": [
                          {
                            "collection": false,
                            "type": "String",
                            "possibleValues": null
                          },
                          {
                            "collection": true,
                            "type": "String",
                            "possibleValues": null
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "name": "callback",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Function",
                    "parameters": [
                      {
                        "name": "headersReceivedResponse",
                        "description": "",
                        "required": true,
                        "collection": false,
                        "type": "Object",
                        "properties": [
                          {
                            "name": "cancel",
                            "description": "",
                            "required": false,
                            "additionalTags": [],
                            "collection": false,
                            "type": "boolean"
                          },
                          {
                            "name": "responseHeaders",
                            "description": "When provided, the server is assumed to have responded with these headers.",
                            "required": false,
                            "additionalTags": [],
                            "collection": false,
                            "type": "Record",
                            "innerTypes": [
                              {
                                "collection": false,
                                "type": "String",
                                "possibleValues": null
                              },
                              {
                                "collection": false,
                                "type": [
                                  {
                                    "collection": false,
                                    "type": "String",
                                    "possibleValues": null
                                  },
                                  {
                                    "collection": true,
                                    "type": "String",
                                    "possibleValues": null
                                  }
                                ]
                              }
                            ]
                          },
                          {
                            "name": "statusLine",
                            "description": "Should be provided when overriding `responseHeaders` to change header status otherwise original response header's status will be used.",
                            "required": false,
                            "additionalTags": [],
                            "collection": false,
                            "type": "String",
                            "possibleValues": null
                          }
                        ]
                      }
                    ],
                    "returns": null
                  }
                ],
                "returns": null
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webrequestonheadersreceivedfilter-listener"
      },
      {
        "name": "onResponseStarted",
        "signature": "([filter, ]listener)",
        "description": "The `listener` will be called with `listener(details)` when first byte of the response body is received. For HTTP requests, this means that the status line and response headers are available.",
        "parameters": [
          {
            "name": "filter",
            "description": "",
            "required": false,
            "collection": false,
            "type": "WebRequestFilter"
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "details",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Object",
                    "properties": [
                      {
                        "name": "id",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "url",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "method",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "webContentsId",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "webContents",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebContents"
                      },
                      {
                        "name": "frame",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebFrameMain"
                      },
                      {
                        "name": "resourceType",
                        "description": "Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": [
                          {
                            "value": "mainFrame",
                            "description": ""
                          },
                          {
                            "value": "subFrame",
                            "description": ""
                          },
                          {
                            "value": "stylesheet",
                            "description": ""
                          },
                          {
                            "value": "script",
                            "description": ""
                          },
                          {
                            "value": "image",
                            "description": ""
                          },
                          {
                            "value": "font",
                            "description": ""
                          },
                          {
                            "value": "object",
                            "description": ""
                          },
                          {
                            "value": "xhr",
                            "description": ""
                          },
                          {
                            "value": "ping",
                            "description": ""
                          },
                          {
                            "value": "cspReport",
                            "description": ""
                          },
                          {
                            "value": "media",
                            "description": ""
                          },
                          {
                            "value": "webSocket",
                            "description": ""
                          },
                          {
                            "value": "other",
                            "description": ""
                          }
                        ]
                      },
                      {
                        "name": "referrer",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "timestamp",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Double"
                      },
                      {
                        "name": "responseHeaders",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Record",
                        "innerTypes": [
                          {
                            "collection": false,
                            "type": "String",
                            "possibleValues": null
                          },
                          {
                            "collection": true,
                            "type": "String",
                            "possibleValues": null
                          }
                        ]
                      },
                      {
                        "name": "fromCache",
                        "description": "Indicates whether the response was fetched from disk cache.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "boolean"
                      },
                      {
                        "name": "statusCode",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "statusLine",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      }
                    ]
                  }
                ],
                "returns": null
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webrequestonresponsestartedfilter-listener"
      },
      {
        "name": "onBeforeRedirect",
        "signature": "([filter, ]listener)",
        "description": "The `listener` will be called with `listener(details)` when a server initiated redirect is about to occur.",
        "parameters": [
          {
            "name": "filter",
            "description": "",
            "required": false,
            "collection": false,
            "type": "WebRequestFilter"
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "details",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Object",
                    "properties": [
                      {
                        "name": "id",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "url",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "method",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "webContentsId",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "webContents",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebContents"
                      },
                      {
                        "name": "frame",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebFrameMain"
                      },
                      {
                        "name": "resourceType",
                        "description": "Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": [
                          {
                            "value": "mainFrame",
                            "description": ""
                          },
                          {
                            "value": "subFrame",
                            "description": ""
                          },
                          {
                            "value": "stylesheet",
                            "description": ""
                          },
                          {
                            "value": "script",
                            "description": ""
                          },
                          {
                            "value": "image",
                            "description": ""
                          },
                          {
                            "value": "font",
                            "description": ""
                          },
                          {
                            "value": "object",
                            "description": ""
                          },
                          {
                            "value": "xhr",
                            "description": ""
                          },
                          {
                            "value": "ping",
                            "description": ""
                          },
                          {
                            "value": "cspReport",
                            "description": ""
                          },
                          {
                            "value": "media",
                            "description": ""
                          },
                          {
                            "value": "webSocket",
                            "description": ""
                          },
                          {
                            "value": "other",
                            "description": ""
                          }
                        ]
                      },
                      {
                        "name": "referrer",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "timestamp",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Double"
                      },
                      {
                        "name": "redirectURL",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "statusCode",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "statusLine",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "ip",
                        "description": "The server IP address that the request was actually sent to.",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "fromCache",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "boolean"
                      },
                      {
                        "name": "responseHeaders",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Record",
                        "innerTypes": [
                          {
                            "collection": false,
                            "type": "String",
                            "possibleValues": null
                          },
                          {
                            "collection": true,
                            "type": "String",
                            "possibleValues": null
                          }
                        ]
                      }
                    ]
                  }
                ],
                "returns": null
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webrequestonbeforeredirectfilter-listener"
      },
      {
        "name": "onCompleted",
        "signature": "([filter, ]listener)",
        "description": "The `listener` will be called with `listener(details)` when a request is completed.",
        "parameters": [
          {
            "name": "filter",
            "description": "",
            "required": false,
            "collection": false,
            "type": "WebRequestFilter"
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "details",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Object",
                    "properties": [
                      {
                        "name": "id",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "url",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "method",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "webContentsId",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "webContents",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebContents"
                      },
                      {
                        "name": "frame",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebFrameMain"
                      },
                      {
                        "name": "resourceType",
                        "description": "Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": [
                          {
                            "value": "mainFrame",
                            "description": ""
                          },
                          {
                            "value": "subFrame",
                            "description": ""
                          },
                          {
                            "value": "stylesheet",
                            "description": ""
                          },
                          {
                            "value": "script",
                            "description": ""
                          },
                          {
                            "value": "image",
                            "description": ""
                          },
                          {
                            "value": "font",
                            "description": ""
                          },
                          {
                            "value": "object",
                            "description": ""
                          },
                          {
                            "value": "xhr",
                            "description": ""
                          },
                          {
                            "value": "ping",
                            "description": ""
                          },
                          {
                            "value": "cspReport",
                            "description": ""
                          },
                          {
                            "value": "media",
                            "description": ""
                          },
                          {
                            "value": "webSocket",
                            "description": ""
                          },
                          {
                            "value": "other",
                            "description": ""
                          }
                        ]
                      },
                      {
                        "name": "referrer",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "timestamp",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Double"
                      },
                      {
                        "name": "responseHeaders",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Record",
                        "innerTypes": [
                          {
                            "collection": false,
                            "type": "String",
                            "possibleValues": null
                          },
                          {
                            "collection": true,
                            "type": "String",
                            "possibleValues": null
                          }
                        ]
                      },
                      {
                        "name": "fromCache",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "boolean"
                      },
                      {
                        "name": "statusCode",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "statusLine",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "error",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      }
                    ]
                  }
                ],
                "returns": null
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webrequestoncompletedfilter-listener"
      },
      {
        "name": "onErrorOccurred",
        "signature": "([filter, ]listener)",
        "description": "The `listener` will be called with `listener(details)` when an error occurs.",
        "parameters": [
          {
            "name": "filter",
            "description": "",
            "required": false,
            "collection": false,
            "type": "WebRequestFilter"
          },
          {
            "name": "listener",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "Function",
                "parameters": [
                  {
                    "name": "details",
                    "description": "",
                    "required": true,
                    "collection": false,
                    "type": "Object",
                    "properties": [
                      {
                        "name": "id",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "url",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "method",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "webContentsId",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Integer"
                      },
                      {
                        "name": "webContents",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebContents"
                      },
                      {
                        "name": "frame",
                        "description": "",
                        "required": false,
                        "additionalTags": [],
                        "collection": false,
                        "type": "WebFrameMain"
                      },
                      {
                        "name": "resourceType",
                        "description": "Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": [
                          {
                            "value": "mainFrame",
                            "description": ""
                          },
                          {
                            "value": "subFrame",
                            "description": ""
                          },
                          {
                            "value": "stylesheet",
                            "description": ""
                          },
                          {
                            "value": "script",
                            "description": ""
                          },
                          {
                            "value": "image",
                            "description": ""
                          },
                          {
                            "value": "font",
                            "description": ""
                          },
                          {
                            "value": "object",
                            "description": ""
                          },
                          {
                            "value": "xhr",
                            "description": ""
                          },
                          {
                            "value": "ping",
                            "description": ""
                          },
                          {
                            "value": "cspReport",
                            "description": ""
                          },
                          {
                            "value": "media",
                            "description": ""
                          },
                          {
                            "value": "webSocket",
                            "description": ""
                          },
                          {
                            "value": "other",
                            "description": ""
                          }
                        ]
                      },
                      {
                        "name": "referrer",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      },
                      {
                        "name": "timestamp",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "Double"
                      },
                      {
                        "name": "fromCache",
                        "description": "",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "boolean"
                      },
                      {
                        "name": "error",
                        "description": "The error description.",
                        "required": true,
                        "additionalTags": [],
                        "collection": false,
                        "type": "String",
                        "possibleValues": null
                      }
                    ]
                  }
                ],
                "returns": null
              },
              {
                "type": "null",
                "collection": false
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webrequestonerroroccurredfilter-listener"
      }
    ],
    "instanceProperties": [],
    "instanceEvents": [],
    "instanceName": "webRequest"
  },
  {
    "name": "webUtils",
    "description": "> A utility layer to interact with Web API objects (Files, Blobs, etc.)\n\nProcess: Renderer",
    "slug": "web-utils",
    "websiteUrl": "https://electronjs.org/docs/api/web-utils",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/web-utils.md",
    "version": "31.7.7",
    "type": "Module",
    "process": {
      "main": false,
      "renderer": true,
      "utility": false,
      "exported": true
    },
    "methods": [
      {
        "name": "getPathForFile",
        "signature": "(file)",
        "description": "The file system path that this `File` object points to. In the case where the object passed in is not a `File` object an exception is thrown. In the case where the File object passed in was constructed in JS and is not backed by a file on disk an empty string is returned.\n\nThis method superseded the previous augmentation to the `File` object with the `path` property.  An example is included below.",
        "parameters": [
          {
            "name": "file",
            "description": "A web File object.",
            "required": true,
            "collection": false,
            "type": "File"
          }
        ],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#webutilsgetpathforfilefile"
      }
    ],
    "properties": [],
    "events": [],
    "exportedClasses": []
  },
  {
    "name": "webviewTag",
    "extends": "HTMLElement",
    "description": "\n\n### Warning\n\nElectron's `webview` tag is based on Chromium's `webview`, which is undergoing dramatic architectural changes. This impacts the stability of `webviews`, including rendering, navigation, and event routing. We currently recommend to not use the `webview` tag and to consider alternatives, like `iframe`, a `WebContentsView`, or an architecture that avoids embedded content altogether.\n\n### Enabling\n\nBy default the `webview` tag is disabled in Electron >= 5.  You need to enable the tag by setting the `webviewTag` webPreferences option when constructing your `BrowserWindow`. For more information see the BrowserWindow constructor docs.\n\n### Overview\n\n> Display external web content in an isolated frame and process.\n\nProcess: Renderer\n _This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._\n\nUse the `webview` tag to embed 'guest' content (such as web pages) in your Electron app. The guest content is contained within the `webview` container. An embedded page within your app controls how the guest content is laid out and rendered.\n\nUnlike an `iframe`, the `webview` runs in a separate process than your app. It doesn't have the same permissions as your web page and all interactions between your app and embedded content will be asynchronous. This keeps your app safe from the embedded content. **Note:** Most methods called on the webview from the host page require a synchronous call to the main process.\n\n### Example\n\nTo embed a web page in your app, add the `webview` tag to your app's embedder page (this is the app page that will display the guest content). In its simplest form, the `webview` tag includes the `src` of the web page and css styles that control the appearance of the `webview` container:\n\n```\n<webview id=\"foo\" src=\"https://www.github.com/\" style=\"display:inline-flex; width:640px; height:480px\"></webview>\n```\n\nIf you want to control the guest content in any way, you can write JavaScript that listens for `webview` events and responds to those events using the `webview` methods. Here's sample code with two event listeners: one that listens for the web page to start loading, the other for the web page to stop loading, and displays a \"loading...\" message during the load time:\n\n```\n<script>\n  onload = () => {\n    const webview = document.querySelector('webview')\n    const indicator = document.querySelector('.indicator')\n\n    const loadstart = () => {\n      indicator.innerText = 'loading...'\n    }\n\n    const loadstop = () => {\n      indicator.innerText = ''\n    }\n\n    webview.addEventListener('did-start-loading', loadstart)\n    webview.addEventListener('did-stop-loading', loadstop)\n  }\n</script>\n```\n\n### Internal implementation\n\nUnder the hood `webview` is implemented with Out-of-Process iframes (OOPIFs). The `webview` tag is essentially a custom element using shadow DOM to wrap an `iframe` element inside it.\n\nSo the behavior of `webview` is very similar to a cross-domain `iframe`, as examples:\n\n* When clicking into a `webview`, the page focus will move from the embedder frame to `webview`.\n* You can not add keyboard, mouse, and scroll event listeners to `webview`.\n* All reactions between the embedder frame and `webview` are asynchronous.\n\n### CSS Styling Notes\n\nPlease note that the `webview` tag's style uses `display:flex;` internally to ensure the child `iframe` element fills the full height and width of its `webview` container when used with traditional and flexbox layouts. Please do not overwrite the default `display:flex;` CSS property, unless specifying `display:inline-flex;` for inline layout.\n\n### Tag Attributes\n\nThe `webview` tag has the following attributes:\n\n### `src`\n\n```\n<webview src=\"https://www.github.com/\"></webview>\n```\n\nA `string` representing the visible URL. Writing to this attribute initiates top-level navigation.\n\nAssigning `src` its own value will reload the current page.\n\nThe `src` attribute can also accept data URLs, such as `data:text/plain,Hello, world!`.\n\n### `nodeintegration`\n\n```\n<webview src=\"https://www.google.com/\" nodeintegration></webview>\n```\n\nA `boolean`. When this attribute is present the guest page in `webview` will have node integration and can use node APIs like `require` and `process` to access low level system resources. Node integration is disabled by default in the guest page.\n\n### `nodeintegrationinsubframes`\n\n```\n<webview src=\"https://www.google.com/\" nodeintegrationinsubframes></webview>\n```\n\nA `boolean` for the experimental option for enabling NodeJS support in sub-frames such as iframes inside the `webview`. All your preloads will load for every iframe, you can use `process.isMainFrame` to determine if you are in the main frame or not. This option is disabled by default in the guest page.\n\n### `plugins`\n\n```\n<webview src=\"https://www.github.com/\" plugins></webview>\n```\n\nA `boolean`. When this attribute is present the guest page in `webview` will be able to use browser plugins. Plugins are disabled by default.\n\n### `preload`\n\n```\n<!-- from a file -->\n<webview src=\"https://www.github.com/\" preload=\"./test.js\"></webview>\n<!-- or if you want to load from an asar archive -->\n<webview src=\"https://www.github.com/\" preload=\"./app.asar/test.js\"></webview>\n```\n\nA `string` that specifies a script that will be loaded before other scripts run in the guest page. The protocol of script's URL must be `file:` (even when using `asar:` archives) because it will be loaded by Node's `require` under the hood, which treats `asar:` archives as virtual directories.\n\nWhen the guest page doesn't have node integration this script will still have access to all Node APIs, but global objects injected by Node will be deleted after this script has finished executing.\n\n### `httpreferrer`\n\n```\n<webview src=\"https://www.github.com/\" httpreferrer=\"https://example.com/\"></webview>\n```\n\nA `string` that sets the referrer URL for the guest page.\n\n### `useragent`\n\n```\n<webview src=\"https://www.github.com/\" useragent=\"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko\"></webview>\n```\n\nA `string` that sets the user agent for the guest page before the page is navigated to. Once the page is loaded, use the `setUserAgent` method to change the user agent.\n\n### `disablewebsecurity`\n\n```\n<webview src=\"https://www.github.com/\" disablewebsecurity></webview>\n```\n\nA `boolean`. When this attribute is present the guest page will have web security disabled. Web security is enabled by default.\n\nThis value can only be modified before the first navigation.\n\n### `partition`\n\n```\n<webview src=\"https://github.com\" partition=\"persist:github\"></webview>\n<webview src=\"https://electronjs.org\" partition=\"electron\"></webview>\n```\n\nA `string` that sets the session used by the page. If `partition` starts with `persist:`, the page will use a persistent session available to all pages in the app with the same `partition`. if there is no `persist:` prefix, the page will use an in-memory session. By assigning the same `partition`, multiple pages can share the same session. If the `partition` is unset then default session of the app will be used.\n\nThis value can only be modified before the first navigation, since the session of an active renderer process cannot change. Subsequent attempts to modify the value will fail with a DOM exception.\n\n### `allowpopups`\n\n```\n<webview src=\"https://www.github.com/\" allowpopups></webview>\n```\n\nA `boolean`. When this attribute is present the guest page will be allowed to open new windows. Popups are disabled by default.\n\n### `webpreferences`\n\n```\n<webview src=\"https://github.com\" webpreferences=\"allowRunningInsecureContent, javascript=no\"></webview>\n```\n\nA `string` which is a comma separated list of strings which specifies the web preferences to be set on the webview. The full list of supported preference strings can be found in BrowserWindow.\n\nThe string follows the same format as the features string in `window.open`. A name by itself is given a `true` boolean value. A preference can be set to another value by including an `=`, followed by the value. Special values `yes` and `1` are interpreted as `true`, while `no` and `0` are interpreted as `false`.\n\n### `enableblinkfeatures`\n\n```\n<webview src=\"https://www.github.com/\" enableblinkfeatures=\"PreciseMemoryInfo, CSSVariables\"></webview>\n```\n\nA `string` which is a list of strings which specifies the blink features to be enabled separated by `,`. The full list of supported feature strings can be found in the RuntimeEnabledFeatures.json5 file.\n\n### `disableblinkfeatures`\n\n```\n<webview src=\"https://www.github.com/\" disableblinkfeatures=\"PreciseMemoryInfo, CSSVariables\"></webview>\n```\n\nA `string` which is a list of strings which specifies the blink features to be disabled separated by `,`. The full list of supported feature strings can be found in the RuntimeEnabledFeatures.json5 file.",
    "slug": "webview-tag",
    "websiteUrl": "https://electronjs.org/docs/api/webview-tag",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/webview-tag.md",
    "version": "31.7.7",
    "type": "Element",
    "process": {
      "main": false,
      "renderer": true,
      "utility": false,
      "exported": false
    },
    "methods": [
      {
        "name": "loadURL",
        "signature": "(url[, options])",
        "description": "The promise will resolve when the page has finished loading (see `did-finish-load`), and rejects if the page fails to load (see `did-fail-load`).\n\nLoads the `url` in the webview, the `url` must contain the protocol prefix, e.g. the `http://` or `file://`.",
        "parameters": [
          {
            "name": "url",
            "description": "",
            "required": true,
            "collection": false,
            "type": "URL"
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "httpReferrer",
                "description": "An HTTP Referrer url.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "Referrer"
                  }
                ]
              },
              {
                "name": "userAgent",
                "description": "A user agent originating the request.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "extraHeaders",
                "description": "Extra headers separated by \"\\n\"",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "postData",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": [
                  {
                    "collection": false,
                    "type": "UploadRawData"
                  },
                  {
                    "collection": false,
                    "type": "UploadFile"
                  }
                ]
              },
              {
                "name": "baseURLForDataURL",
                "description": "Base url (with trailing path separator) for files to be loaded by the data url. This is needed only if the specified `url` is a data url and needs to load other files.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webviewloadurlurl-options"
      },
      {
        "name": "downloadURL",
        "signature": "(url[, options])",
        "description": "Initiates a download of the resource at `url` without navigating.",
        "parameters": [
          {
            "name": "url",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "headers",
                "description": "HTTP request headers.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Record",
                "innerTypes": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  }
                ]
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewdownloadurlurl-options"
      },
      {
        "name": "getURL",
        "signature": "()",
        "description": "The URL of guest page.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#webviewgeturl"
      },
      {
        "name": "getTitle",
        "signature": "()",
        "description": "The title of guest page.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#webviewgettitle"
      },
      {
        "name": "isLoading",
        "signature": "()",
        "description": "Whether guest page is still loading resources.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#webviewisloading"
      },
      {
        "name": "isLoadingMainFrame",
        "signature": "()",
        "description": "Whether the main frame (and not just iframes or frames within it) is still loading.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#webviewisloadingmainframe"
      },
      {
        "name": "isWaitingForResponse",
        "signature": "()",
        "description": "Whether the guest page is waiting for a first-response for the main resource of the page.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#webviewiswaitingforresponse"
      },
      {
        "name": "stop",
        "signature": "()",
        "description": "Stops any pending navigation.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewstop"
      },
      {
        "name": "reload",
        "signature": "()",
        "description": "Reloads the guest page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewreload"
      },
      {
        "name": "reloadIgnoringCache",
        "signature": "()",
        "description": "Reloads the guest page and ignores cache.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewreloadignoringcache"
      },
      {
        "name": "canGoBack",
        "signature": "()",
        "description": "Whether the guest page can go back.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#webviewcangoback"
      },
      {
        "name": "canGoForward",
        "signature": "()",
        "description": "Whether the guest page can go forward.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#webviewcangoforward"
      },
      {
        "name": "canGoToOffset",
        "signature": "(offset)",
        "description": "Whether the guest page can go to `offset`.",
        "parameters": [
          {
            "name": "offset",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#webviewcangotooffsetoffset"
      },
      {
        "name": "clearHistory",
        "signature": "()",
        "description": "Clears the navigation history.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewclearhistory"
      },
      {
        "name": "goBack",
        "signature": "()",
        "description": "Makes the guest page go back.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewgoback"
      },
      {
        "name": "goForward",
        "signature": "()",
        "description": "Makes the guest page go forward.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewgoforward"
      },
      {
        "name": "goToIndex",
        "signature": "(index)",
        "description": "Navigates to the specified absolute index.",
        "parameters": [
          {
            "name": "index",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewgotoindexindex"
      },
      {
        "name": "goToOffset",
        "signature": "(offset)",
        "description": "Navigates to the specified offset from the \"current entry\".",
        "parameters": [
          {
            "name": "offset",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewgotooffsetoffset"
      },
      {
        "name": "isCrashed",
        "signature": "()",
        "description": "Whether the renderer process has crashed.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#webviewiscrashed"
      },
      {
        "name": "setUserAgent",
        "signature": "(userAgent)",
        "description": "Overrides the user agent for the guest page.",
        "parameters": [
          {
            "name": "userAgent",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewsetuseragentuseragent"
      },
      {
        "name": "getUserAgent",
        "signature": "()",
        "description": "The user agent for guest page.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "String",
          "possibleValues": null
        },
        "additionalTags": [],
        "urlFragment": "#webviewgetuseragent"
      },
      {
        "name": "insertCSS",
        "signature": "(css)",
        "description": "A promise that resolves with a key for the inserted CSS that can later be used to remove the CSS via `<webview>.removeInsertedCSS(key)`.\n\nInjects CSS into the current web page and returns a unique key for the inserted stylesheet.",
        "parameters": [
          {
            "name": "css",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "String",
              "possibleValues": null
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webviewinsertcsscss"
      },
      {
        "name": "removeInsertedCSS",
        "signature": "(key)",
        "description": "Resolves if the removal was successful.\n\nRemoves the inserted CSS from the current web page. The stylesheet is identified by its key, which is returned from `<webview>.insertCSS(css)`.",
        "parameters": [
          {
            "name": "key",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webviewremoveinsertedcsskey"
      },
      {
        "name": "executeJavaScript",
        "signature": "(code[, userGesture])",
        "description": "A promise that resolves with the result of the executed code or is rejected if the result of the code is a rejected promise.\n\nEvaluates `code` in page. If `userGesture` is set, it will create the user gesture context in the page. HTML APIs like `requestFullScreen`, which require user action, can take advantage of this option for automation.",
        "parameters": [
          {
            "name": "code",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "userGesture",
            "description": "Default `false`.",
            "required": false,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "any"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webviewexecutejavascriptcode-usergesture"
      },
      {
        "name": "openDevTools",
        "signature": "()",
        "description": "Opens a DevTools window for guest page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewopendevtools"
      },
      {
        "name": "closeDevTools",
        "signature": "()",
        "description": "Closes the DevTools window of guest page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewclosedevtools"
      },
      {
        "name": "isDevToolsOpened",
        "signature": "()",
        "description": "Whether guest page has a DevTools window attached.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#webviewisdevtoolsopened"
      },
      {
        "name": "isDevToolsFocused",
        "signature": "()",
        "description": "Whether DevTools window of guest page is focused.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#webviewisdevtoolsfocused"
      },
      {
        "name": "inspectElement",
        "signature": "(x, y)",
        "description": "Starts inspecting element at position (`x`, `y`) of guest page.",
        "parameters": [
          {
            "name": "x",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "y",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Integer"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewinspectelementx-y"
      },
      {
        "name": "inspectSharedWorker",
        "signature": "()",
        "description": "Opens the DevTools for the shared worker context present in the guest page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewinspectsharedworker"
      },
      {
        "name": "inspectServiceWorker",
        "signature": "()",
        "description": "Opens the DevTools for the service worker context present in the guest page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewinspectserviceworker"
      },
      {
        "name": "setAudioMuted",
        "signature": "(muted)",
        "description": "Set guest page muted.",
        "parameters": [
          {
            "name": "muted",
            "description": "",
            "required": true,
            "collection": false,
            "type": "boolean"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewsetaudiomutedmuted"
      },
      {
        "name": "isAudioMuted",
        "signature": "()",
        "description": "Whether guest page has been muted.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#webviewisaudiomuted"
      },
      {
        "name": "isCurrentlyAudible",
        "signature": "()",
        "description": "Whether audio is currently playing.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "boolean"
        },
        "additionalTags": [],
        "urlFragment": "#webviewiscurrentlyaudible"
      },
      {
        "name": "undo",
        "signature": "()",
        "description": "Executes editing command `undo` in page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewundo"
      },
      {
        "name": "redo",
        "signature": "()",
        "description": "Executes editing command `redo` in page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewredo"
      },
      {
        "name": "cut",
        "signature": "()",
        "description": "Executes editing command `cut` in page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewcut"
      },
      {
        "name": "copy",
        "signature": "()",
        "description": "Executes editing command `copy` in page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewcopy"
      },
      {
        "name": "centerSelection",
        "signature": "()",
        "description": "Centers the current text selection in page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewcenterselection"
      },
      {
        "name": "paste",
        "signature": "()",
        "description": "Executes editing command `paste` in page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewpaste"
      },
      {
        "name": "pasteAndMatchStyle",
        "signature": "()",
        "description": "Executes editing command `pasteAndMatchStyle` in page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewpasteandmatchstyle"
      },
      {
        "name": "delete",
        "signature": "()",
        "description": "Executes editing command `delete` in page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewdelete"
      },
      {
        "name": "selectAll",
        "signature": "()",
        "description": "Executes editing command `selectAll` in page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewselectall"
      },
      {
        "name": "unselect",
        "signature": "()",
        "description": "Executes editing command `unselect` in page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewunselect"
      },
      {
        "name": "scrollToTop",
        "signature": "()",
        "description": "Scrolls to the top of the current `<webview>`.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewscrolltotop"
      },
      {
        "name": "scrollToBottom",
        "signature": "()",
        "description": "Scrolls to the bottom of the current `<webview>`.",
        "parameters": [],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewscrolltobottom"
      },
      {
        "name": "adjustSelection",
        "signature": "(options)",
        "description": "Adjusts the current text selection starting and ending points in the focused frame by the given amounts. A negative amount moves the selection towards the beginning of the document, and a positive amount moves the selection towards the end of the document.\n\nSee `webContents.adjustSelection` for examples.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "start",
                "description": "Amount to shift the start index of the current selection.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Number"
              },
              {
                "name": "end",
                "description": "Amount to shift the end index of the current selection.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Number"
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewadjustselectionoptions"
      },
      {
        "name": "replace",
        "signature": "(text)",
        "description": "Executes editing command `replace` in page.",
        "parameters": [
          {
            "name": "text",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewreplacetext"
      },
      {
        "name": "replaceMisspelling",
        "signature": "(text)",
        "description": "Executes editing command `replaceMisspelling` in page.",
        "parameters": [
          {
            "name": "text",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewreplacemisspellingtext"
      },
      {
        "name": "insertText",
        "signature": "(text)",
        "description": "Inserts `text` to the focused element.",
        "parameters": [
          {
            "name": "text",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webviewinserttexttext"
      },
      {
        "name": "findInPage",
        "signature": "(text[, options])",
        "description": "The request id used for the request.\n\nStarts a request to find all matches for the `text` in the web page. The result of the request can be obtained by subscribing to `found-in-page` event.",
        "parameters": [
          {
            "name": "text",
            "description": "Content to be searched, must not be empty.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "forward",
                "description": "Whether to search forward or backward, defaults to `true`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "findNext",
                "description": "Whether to begin a new text finding session with this request. Should be `true` for initial requests, and `false` for follow-up requests. Defaults to `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "matchCase",
                "description": "Whether search should be case-sensitive, defaults to `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Integer"
        },
        "additionalTags": [],
        "urlFragment": "#webviewfindinpagetext-options"
      },
      {
        "name": "stopFindInPage",
        "signature": "(action)",
        "description": "Stops any `findInPage` request for the `webview` with the provided `action`.",
        "parameters": [
          {
            "name": "action",
            "description": "Specifies the action to take place when ending `<webview>.findInPage` request.",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": [
              {
                "value": "clearSelection",
                "description": "Clear the selection."
              },
              {
                "value": "keepSelection",
                "description": "Translate the selection into a normal selection."
              },
              {
                "value": "activateSelection",
                "description": "Focus and click the selection node."
              }
            ]
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewstopfindinpageaction"
      },
      {
        "name": "print",
        "signature": "([options])",
        "description": "Prints `webview`'s web page. Same as `webContents.print([options])`.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": false,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "silent",
                "description": "Don't ask user for print settings. Default is `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "printBackground",
                "description": "Prints the background color and image of the web page. Default is `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "deviceName",
                "description": "Set the printer device name to use. Must be the system-defined name and not the 'friendly' name, e.g 'Brother_QL_820NWB' and not 'Brother QL-820NWB'.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "color",
                "description": "Set whether the printed web page will be in color or grayscale. Default is `true`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "margins",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Object",
                "properties": [
                  {
                    "name": "marginType",
                    "description": "Can be `default`, `none`, `printableArea`, or `custom`. If `custom` is chosen, you will also need to specify `top`, `bottom`, `left`, and `right`.",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "String",
                    "possibleValues": [
                      {
                        "value": "default",
                        "description": ""
                      },
                      {
                        "value": "none",
                        "description": ""
                      },
                      {
                        "value": "printableArea",
                        "description": ""
                      },
                      {
                        "value": "custom",
                        "description": ""
                      }
                    ]
                  },
                  {
                    "name": "top",
                    "description": "The top margin of the printed web page, in pixels.",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  },
                  {
                    "name": "bottom",
                    "description": "The bottom margin of the printed web page, in pixels.",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  },
                  {
                    "name": "left",
                    "description": "The left margin of the printed web page, in pixels.",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  },
                  {
                    "name": "right",
                    "description": "The right margin of the printed web page, in pixels.",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  }
                ]
              },
              {
                "name": "landscape",
                "description": "Whether the web page should be printed in landscape mode. Default is `false`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "scaleFactor",
                "description": "The scale factor of the web page.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              },
              {
                "name": "pagesPerSheet",
                "description": "The number of pages to print per page sheet.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              },
              {
                "name": "collate",
                "description": "Whether the web page should be collated.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "copies",
                "description": "The number of copies of the web page to print.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              },
              {
                "name": "pageRanges",
                "description": "The page range to print.",
                "required": false,
                "additionalTags": [],
                "collection": true,
                "type": "Object",
                "properties": [
                  {
                    "name": "from",
                    "description": "Index of the first page to print (0-based).",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  },
                  {
                    "name": "to",
                    "description": "Index of the last page to print (inclusive) (0-based).",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  }
                ]
              },
              {
                "name": "duplexMode",
                "description": "Set the duplex mode of the printed web page. Can be `simplex`, `shortEdge`, or `longEdge`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "simplex",
                    "description": ""
                  },
                  {
                    "value": "shortEdge",
                    "description": ""
                  },
                  {
                    "value": "longEdge",
                    "description": ""
                  }
                ]
              },
              {
                "name": "dpi",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Record",
                "innerTypes": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": null
                  },
                  {
                    "collection": false,
                    "type": "number"
                  }
                ]
              },
              {
                "name": "header",
                "description": "string to be printed as page header.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "footer",
                "description": "string to be printed as page footer.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "pageSize",
                "description": "Specify page size of the printed document. Can be `A3`, `A4`, `A5`, `Legal`, `Letter`, `Tabloid` or an Object containing `height` in microns.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": [
                      {
                        "value": "A3",
                        "description": ""
                      },
                      {
                        "value": "A4",
                        "description": ""
                      },
                      {
                        "value": "A5",
                        "description": ""
                      },
                      {
                        "value": "Legal",
                        "description": ""
                      },
                      {
                        "value": "Letter",
                        "description": ""
                      },
                      {
                        "value": "Tabloid",
                        "description": ""
                      }
                    ]
                  },
                  {
                    "collection": false,
                    "type": "Size"
                  }
                ]
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webviewprintoptions"
      },
      {
        "name": "printToPDF",
        "signature": "(options)",
        "description": "Resolves with the generated PDF data.\n\nPrints `webview`'s web page as PDF, Same as `webContents.printToPDF(options)`.",
        "parameters": [
          {
            "name": "options",
            "description": "",
            "required": true,
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "landscape",
                "description": "Paper orientation.`true` for landscape, `false` for portrait. Defaults to false.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "displayHeaderFooter",
                "description": "Whether to display header and footer. Defaults to false.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "printBackground",
                "description": "Whether to print background graphics. Defaults to false.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "scale",
                "description": "Scale of the webpage rendering. Defaults to 1.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              },
              {
                "name": "pageSize",
                "description": "Specify page size of the generated PDF. Can be `A0`, `A1`, `A2`, `A3`, `A4`, `A5`, `A6`, `Legal`, `Letter`, `Tabloid`, `Ledger`, or an Object containing `height` and `width` in inches. Defaults to `Letter`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": [
                  {
                    "collection": false,
                    "type": "String",
                    "possibleValues": [
                      {
                        "value": "A0",
                        "description": ""
                      },
                      {
                        "value": "A1",
                        "description": ""
                      },
                      {
                        "value": "A2",
                        "description": ""
                      },
                      {
                        "value": "A3",
                        "description": ""
                      },
                      {
                        "value": "A4",
                        "description": ""
                      },
                      {
                        "value": "A5",
                        "description": ""
                      },
                      {
                        "value": "A6",
                        "description": ""
                      },
                      {
                        "value": "Legal",
                        "description": ""
                      },
                      {
                        "value": "Letter",
                        "description": ""
                      },
                      {
                        "value": "Tabloid",
                        "description": ""
                      },
                      {
                        "value": "Ledger",
                        "description": ""
                      }
                    ]
                  },
                  {
                    "collection": false,
                    "type": "Size"
                  }
                ]
              },
              {
                "name": "margins",
                "description": "",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Object",
                "properties": [
                  {
                    "name": "top",
                    "description": "Top margin in inches. Defaults to 1cm (~0.4 inches).",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  },
                  {
                    "name": "bottom",
                    "description": "Bottom margin in inches. Defaults to 1cm (~0.4 inches).",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  },
                  {
                    "name": "left",
                    "description": "Left margin in inches. Defaults to 1cm (~0.4 inches).",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  },
                  {
                    "name": "right",
                    "description": "Right margin in inches. Defaults to 1cm (~0.4 inches).",
                    "required": false,
                    "additionalTags": [],
                    "collection": false,
                    "type": "number"
                  }
                ]
              },
              {
                "name": "pageRanges",
                "description": "Page ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "headerTemplate",
                "description": "HTML template for the print header. Should be valid HTML markup with following classes used to inject printing values into them: `date` (formatted print date), `title` (document title), `url` (document location), `pageNumber` (current page number) and `totalPages` (total pages in the document). For example, `<span class=title></span>` would generate span containing the title.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "footerTemplate",
                "description": "HTML template for the print footer. Should use the same format as the `headerTemplate`.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "preferCSSPageSize",
                "description": "Whether or not to prefer page size as defined by css. Defaults to false, in which case the content will be scaled to fit the paper size.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "generateTaggedPDF",
                "description": "Whether or not to generate a tagged (accessible) PDF. Defaults to false. As this property is experimental, the generated PDF may not adhere fully to PDF/UA and WCAG standards.",
                "required": false,
                "additionalTags": [
                  "stability_experimental"
                ],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "generateDocumentOutline",
                "description": "Whether or not to generate a PDF document outline from content headers. Defaults to false.",
                "required": false,
                "additionalTags": [
                  "stability_experimental"
                ],
                "collection": false,
                "type": "boolean"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "Uint8Array"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webviewprinttopdfoptions"
      },
      {
        "name": "capturePage",
        "signature": "([rect])",
        "description": "Resolves with a NativeImage\n\nCaptures a snapshot of the page within `rect`. Omitting `rect` will capture the whole visible page.",
        "parameters": [
          {
            "name": "rect",
            "description": "The area of the page to be captured.",
            "required": false,
            "collection": false,
            "type": "Rectangle"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "NativeImage"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webviewcapturepagerect"
      },
      {
        "name": "send",
        "signature": "(channel, ...args)",
        "description": "Send an asynchronous message to renderer process via `channel`, you can also send arbitrary arguments. The renderer process can handle the message by listening to the `channel` event with the `ipcRenderer` module.\n\nSee webContents.send for examples.",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "...args",
            "description": "",
            "required": true,
            "collection": true,
            "type": "any"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webviewsendchannel-args"
      },
      {
        "name": "sendToFrame",
        "signature": "(frameId, channel, ...args)",
        "description": "Send an asynchronous message to renderer process via `channel`, you can also send arbitrary arguments. The renderer process can handle the message by listening to the `channel` event with the `ipcRenderer` module.\n\nSee webContents.sendToFrame for examples.",
        "parameters": [
          {
            "name": "frameId",
            "description": "`[processId, frameId]`",
            "required": true,
            "collection": false,
            "type": "[number, number]"
          },
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "...args",
            "description": "",
            "required": true,
            "collection": true,
            "type": "any"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webviewsendtoframeframeid-channel-args"
      },
      {
        "name": "sendInputEvent",
        "signature": "(event)",
        "description": "Sends an input `event` to the page.\n\nSee webContents.sendInputEvent for detailed description of `event` object.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "required": true,
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "MouseInputEvent"
              },
              {
                "collection": false,
                "type": "MouseWheelInputEvent"
              },
              {
                "collection": false,
                "type": "KeyboardInputEvent"
              }
            ]
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webviewsendinputeventevent"
      },
      {
        "name": "setZoomFactor",
        "signature": "(factor)",
        "description": "Changes the zoom factor to the specified factor. Zoom factor is zoom percent divided by 100, so 300% = 3.0.",
        "parameters": [
          {
            "name": "factor",
            "description": "Zoom factor.",
            "required": true,
            "collection": false,
            "type": "number"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewsetzoomfactorfactor"
      },
      {
        "name": "setZoomLevel",
        "signature": "(level)",
        "description": "Changes the zoom level to the specified level. The original size is 0 and each increment above or below represents zooming 20% larger or smaller to default limits of 300% and 50% of original size, respectively. The formula for this is `scale := 1.2 ^ level`.\n\n> **NOTE**: The zoom policy at the Chromium level is same-origin, meaning that the zoom level for a specific domain propagates across all instances of windows with the same domain. Differentiating the window URLs will make zoom work per-window.",
        "parameters": [
          {
            "name": "level",
            "description": "Zoom level.",
            "required": true,
            "collection": false,
            "type": "number"
          }
        ],
        "returns": null,
        "additionalTags": [],
        "urlFragment": "#webviewsetzoomlevellevel"
      },
      {
        "name": "getZoomFactor",
        "signature": "()",
        "description": "the current zoom factor.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "number"
        },
        "additionalTags": [],
        "urlFragment": "#webviewgetzoomfactor"
      },
      {
        "name": "getZoomLevel",
        "signature": "()",
        "description": "the current zoom level.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "number"
        },
        "additionalTags": [],
        "urlFragment": "#webviewgetzoomlevel"
      },
      {
        "name": "setVisualZoomLevelLimits",
        "signature": "(minimumLevel, maximumLevel)",
        "description": "Sets the maximum and minimum pinch-to-zoom level.",
        "parameters": [
          {
            "name": "minimumLevel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "number"
          },
          {
            "name": "maximumLevel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "number"
          }
        ],
        "returns": {
          "collection": false,
          "type": "Promise",
          "innerTypes": [
            {
              "collection": false,
              "type": "void"
            }
          ]
        },
        "additionalTags": [],
        "urlFragment": "#webviewsetvisualzoomlevellimitsminimumlevel-maximumlevel"
      },
      {
        "name": "showDefinitionForSelection",
        "signature": "()",
        "description": "Shows pop-up dictionary that searches the selected word on the page.",
        "parameters": [],
        "returns": null,
        "additionalTags": [
          "os_macos"
        ],
        "urlFragment": "#webviewshowdefinitionforselection-macos"
      },
      {
        "name": "getWebContentsId",
        "signature": "()",
        "description": "The WebContents ID of this `webview`.",
        "parameters": [],
        "returns": {
          "collection": false,
          "type": "number"
        },
        "additionalTags": [],
        "urlFragment": "#webviewgetwebcontentsid"
      }
    ],
    "properties": [
      {
        "name": "src",
        "description": "A `string` representing the visible URL. Writing to this attribute initiates top-level navigation.\n\nAssigning `src` its own value will reload the current page.\n\nThe `src` attribute can also accept data URLs, such as `data:text/plain,Hello, world!`.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#src",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "nodeintegration",
        "description": "A `boolean`. When this attribute is present the guest page in `webview` will have node integration and can use node APIs like `require` and `process` to access low level system resources. Node integration is disabled by default in the guest page.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#nodeintegration",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "nodeintegrationinsubframes",
        "description": "A `boolean` for the experimental option for enabling NodeJS support in sub-frames such as iframes inside the `webview`. All your preloads will load for every iframe, you can use `process.isMainFrame` to determine if you are in the main frame or not. This option is disabled by default in the guest page.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#nodeintegrationinsubframes",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "plugins",
        "description": "A `boolean`. When this attribute is present the guest page in `webview` will be able to use browser plugins. Plugins are disabled by default.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#plugins",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "preload",
        "description": "A `string` that specifies a script that will be loaded before other scripts run in the guest page. The protocol of script's URL must be `file:` (even when using `asar:` archives) because it will be loaded by Node's `require` under the hood, which treats `asar:` archives as virtual directories.\n\nWhen the guest page doesn't have node integration this script will still have access to all Node APIs, but global objects injected by Node will be deleted after this script has finished executing.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#preload",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "httpreferrer",
        "description": "A `string` that sets the referrer URL for the guest page.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#httpreferrer",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "useragent",
        "description": "A `string` that sets the user agent for the guest page before the page is navigated to. Once the page is loaded, use the `setUserAgent` method to change the user agent.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#useragent",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "disablewebsecurity",
        "description": "A `boolean`. When this attribute is present the guest page will have web security disabled. Web security is enabled by default.\n\nThis value can only be modified before the first navigation.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#disablewebsecurity",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "partition",
        "description": "A `string` that sets the session used by the page. If `partition` starts with `persist:`, the page will use a persistent session available to all pages in the app with the same `partition`. if there is no `persist:` prefix, the page will use an in-memory session. By assigning the same `partition`, multiple pages can share the same session. If the `partition` is unset then default session of the app will be used.\n\nThis value can only be modified before the first navigation, since the session of an active renderer process cannot change. Subsequent attempts to modify the value will fail with a DOM exception.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#partition",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "allowpopups",
        "description": "A `boolean`. When this attribute is present the guest page will be allowed to open new windows. Popups are disabled by default.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#allowpopups",
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "webpreferences",
        "description": "A `string` which is a comma separated list of strings which specifies the web preferences to be set on the webview. The full list of supported preference strings can be found in BrowserWindow.\n\nThe string follows the same format as the features string in `window.open`. A name by itself is given a `true` boolean value. A preference can be set to another value by including an `=`, followed by the value. Special values `yes` and `1` are interpreted as `true`, while `no` and `0` are interpreted as `false`.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#webpreferences",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "enableblinkfeatures",
        "description": "A `string` which is a list of strings which specifies the blink features to be enabled separated by `,`. The full list of supported feature strings can be found in the RuntimeEnabledFeatures.json5 file.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#enableblinkfeatures",
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "disableblinkfeatures",
        "description": "A `string` which is a list of strings which specifies the blink features to be disabled separated by `,`. The full list of supported feature strings can be found in the RuntimeEnabledFeatures.json5 file.",
        "required": true,
        "additionalTags": [],
        "urlFragment": "#disableblinkfeatures",
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ],
    "events": [
      {
        "name": "load-commit",
        "description": "Fired when a load has committed. This includes navigation within the current document as well as subframe document-level loads, but does not include asynchronous resource loads.",
        "parameters": [
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-load-commit"
      },
      {
        "name": "did-finish-load",
        "description": "Fired when the navigation is done, i.e. the spinner of the tab will stop spinning, and the `onload` event is dispatched.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-did-finish-load"
      },
      {
        "name": "did-fail-load",
        "description": "This event is like `did-finish-load`, but fired when the load failed or was cancelled, e.g. `window.stop()` is invoked.",
        "parameters": [
          {
            "name": "errorCode",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "errorDescription",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "validatedURL",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-fail-load"
      },
      {
        "name": "did-frame-finish-load",
        "description": "Fired when a frame has done navigation.",
        "parameters": [
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-frame-finish-load"
      },
      {
        "name": "did-start-loading",
        "description": "Corresponds to the points in time when the spinner of the tab starts spinning.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-did-start-loading"
      },
      {
        "name": "did-stop-loading",
        "description": "Corresponds to the points in time when the spinner of the tab stops spinning.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-did-stop-loading"
      },
      {
        "name": "did-attach",
        "description": "Fired when attached to the embedder web contents.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-did-attach"
      },
      {
        "name": "dom-ready",
        "description": "Fired when document in the given frame is loaded.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-dom-ready"
      },
      {
        "name": "page-title-updated",
        "description": "Fired when page title is set during navigation. `explicitSet` is false when title is synthesized from file url.",
        "parameters": [
          {
            "name": "title",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "explicitSet",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-page-title-updated"
      },
      {
        "name": "page-favicon-updated",
        "description": "Fired when page receives favicon urls.",
        "parameters": [
          {
            "name": "favicons",
            "description": "Array of URLs.",
            "collection": true,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-page-favicon-updated"
      },
      {
        "name": "enter-html-full-screen",
        "description": "Fired when page enters fullscreen triggered by HTML API.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-enter-html-full-screen"
      },
      {
        "name": "leave-html-full-screen",
        "description": "Fired when page leaves fullscreen triggered by HTML API.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-leave-html-full-screen"
      },
      {
        "name": "console-message",
        "description": "Fired when the guest window logs a console message.\n\nThe following example code forwards all log messages to the embedder's console without regard for log level or other properties.",
        "parameters": [
          {
            "name": "level",
            "description": "The log level, from 0 to 3. In order it matches `verbose`, `info`, `warning` and `error`.",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "message",
            "description": "The actual console message",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "line",
            "description": "The line number of the source that triggered this console message",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "sourceId",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-console-message"
      },
      {
        "name": "found-in-page",
        "description": "Fired when a result is available for `webview.findInPage` request.",
        "parameters": [
          {
            "name": "result",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "requestId",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "activeMatchOrdinal",
                "description": "Position of the active match.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "matches",
                "description": "Number of Matches.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "selectionArea",
                "description": "Coordinates of first match region.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Rectangle"
              },
              {
                "name": "finalUpdate",
                "description": "",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-found-in-page"
      },
      {
        "name": "will-navigate",
        "description": "Emitted when a user or the page wants to start navigation. It can happen when the `window.location` object is changed or a user clicks a link in the page.\n\nThis event will not emit when the navigation is started programmatically with APIs like `<webview>.loadURL` and `<webview>.back`.\n\nIt is also not emitted during in-page navigation, such as clicking anchor links or updating the `window.location.hash`. Use `did-navigate-in-page` event for this purpose.\n\nCalling `event.preventDefault()` does **NOT** have any effect.",
        "parameters": [
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-will-navigate"
      },
      {
        "name": "will-frame-navigate",
        "description": "Emitted when a user or the page wants to start navigation anywhere in the `<webview>` or any frames embedded within. It can happen when the `window.location` object is changed or a user clicks a link in the page.\n\nThis event will not emit when the navigation is started programmatically with APIs like `<webview>.loadURL` and `<webview>.back`.\n\nIt is also not emitted during in-page navigation, such as clicking anchor links or updating the `window.location.hash`. Use `did-navigate-in-page` event for this purpose.\n\nCalling `event.preventDefault()` does **NOT** have any effect.",
        "parameters": [
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameProcessId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameRoutingId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-will-frame-navigate"
      },
      {
        "name": "did-start-navigation",
        "description": "Emitted when any frame (including main) starts navigating. `isInPlace` will be `true` for in-page navigations.",
        "parameters": [
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isInPlace",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameProcessId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameRoutingId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-start-navigation"
      },
      {
        "name": "did-redirect-navigation",
        "description": "Emitted after a server side redirect occurs during navigation. For example a 302 redirect.",
        "parameters": [
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isInPlace",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameProcessId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameRoutingId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-redirect-navigation"
      },
      {
        "name": "did-navigate",
        "description": "Emitted when a navigation is done.\n\nThis event is not emitted for in-page navigations, such as clicking anchor links or updating the `window.location.hash`. Use `did-navigate-in-page` event for this purpose.",
        "parameters": [
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-navigate"
      },
      {
        "name": "did-frame-navigate",
        "description": "Emitted when any frame navigation is done.\n\nThis event is not emitted for in-page navigations, such as clicking anchor links or updating the `window.location.hash`. Use `did-navigate-in-page` event for this purpose.",
        "parameters": [
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "httpResponseCode",
            "description": "-1 for non HTTP navigations",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "httpStatusText",
            "description": "empty for non HTTP navigations,",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameProcessId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "frameRoutingId",
            "description": "",
            "collection": false,
            "type": "Integer",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-frame-navigate"
      },
      {
        "name": "did-navigate-in-page",
        "description": "Emitted when an in-page navigation happened.\n\nWhen in-page navigation happens, the page URL changes but does not cause navigation outside of the page. Examples of this occurring are when anchor links are clicked or when the DOM `hashchange` event is triggered.",
        "parameters": [
          {
            "name": "isMainFrame",
            "description": "",
            "collection": false,
            "type": "boolean",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-navigate-in-page"
      },
      {
        "name": "close",
        "description": "Fired when the guest page attempts to close itself.\n\nThe following example code navigates the `webview` to `about:blank` when the guest attempts to close itself.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-close"
      },
      {
        "name": "ipc-message",
        "description": "Fired when the guest page has sent an asynchronous message to embedder page.\n\nWith `sendToHost` method and `ipc-message` event you can communicate between guest page and embedder page:",
        "parameters": [
          {
            "name": "frameId",
            "description": "pair of `[processId, frameId]`.",
            "collection": false,
            "type": "[number, number]",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "channel",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "args",
            "description": "",
            "collection": true,
            "type": "any",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-ipc-message"
      },
      {
        "name": "render-process-gone",
        "description": "Fired when the renderer process unexpectedly disappears. This is normally because it was crashed or killed.",
        "parameters": [
          {
            "name": "details",
            "description": "",
            "collection": false,
            "type": "RenderProcessGoneDetails",
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-render-process-gone"
      },
      {
        "name": "plugin-crashed",
        "description": "Fired when a plugin process is crashed.",
        "parameters": [
          {
            "name": "name",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          },
          {
            "name": "version",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-plugin-crashed"
      },
      {
        "name": "destroyed",
        "description": "Fired when the WebContents is destroyed.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-destroyed"
      },
      {
        "name": "media-started-playing",
        "description": "Emitted when media starts playing.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-media-started-playing"
      },
      {
        "name": "media-paused",
        "description": "Emitted when media is paused or done playing.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-media-paused"
      },
      {
        "name": "did-change-theme-color",
        "description": "Emitted when a page's theme color changes. This is usually due to encountering a meta tag:",
        "parameters": [
          {
            "name": "themeColor",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-did-change-theme-color"
      },
      {
        "name": "update-target-url",
        "description": "Emitted when mouse moves over a link or the keyboard moves the focus to a link.",
        "parameters": [
          {
            "name": "url",
            "description": "",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-update-target-url"
      },
      {
        "name": "devtools-open-url",
        "description": "",
        "parameters": [
          {
            "name": "url",
            "description": "URL of the link that was clicked or selected.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-devtools-open-url"
      },
      {
        "name": "devtools-search-query",
        "description": "Emitted when 'Search' is selected for text in its context menu.",
        "parameters": [
          {
            "name": "event",
            "description": "",
            "collection": false,
            "type": "Event",
            "additionalTags": [],
            "required": true
          },
          {
            "name": "query",
            "description": "text to query for.",
            "collection": false,
            "type": "String",
            "possibleValues": null,
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-devtools-search-query"
      },
      {
        "name": "devtools-opened",
        "description": "Emitted when DevTools is opened.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-devtools-opened"
      },
      {
        "name": "devtools-closed",
        "description": "Emitted when DevTools is closed.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-devtools-closed"
      },
      {
        "name": "devtools-focused",
        "description": "Emitted when DevTools is focused / opened.",
        "parameters": [],
        "additionalTags": [],
        "urlFragment": "#event-devtools-focused"
      },
      {
        "name": "context-menu",
        "description": "Emitted when there is a new context menu that needs to be handled.",
        "parameters": [
          {
            "name": "params",
            "description": "",
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "x",
                "description": "x coordinate.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "y",
                "description": "y coordinate.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              },
              {
                "name": "linkURL",
                "description": "URL of the link that encloses the node the context menu was invoked on.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "linkText",
                "description": "Text associated with the link. May be an empty string if the contents of the link are an image.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "pageURL",
                "description": "URL of the top level page that the context menu was invoked on.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "frameURL",
                "description": "URL of the subframe that the context menu was invoked on.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "srcURL",
                "description": "Source URL for the element that the context menu was invoked on. Elements with source URLs are images, audio and video.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "mediaType",
                "description": "Type of the node the context menu was invoked on. Can be `none`, `image`, `audio`, `video`, `canvas`, `file` or `plugin`.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "none",
                    "description": ""
                  },
                  {
                    "value": "image",
                    "description": ""
                  },
                  {
                    "value": "audio",
                    "description": ""
                  },
                  {
                    "value": "video",
                    "description": ""
                  },
                  {
                    "value": "canvas",
                    "description": ""
                  },
                  {
                    "value": "file",
                    "description": ""
                  },
                  {
                    "value": "plugin",
                    "description": ""
                  }
                ]
              },
              {
                "name": "hasImageContents",
                "description": "Whether the context menu was invoked on an image which has non-empty contents.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "isEditable",
                "description": "Whether the context is editable.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "selectionText",
                "description": "Text of the selection that the context menu was invoked on.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "titleText",
                "description": "Title text of the selection that the context menu was invoked on.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "altText",
                "description": "Alt text of the selection that the context menu was invoked on.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "suggestedFilename",
                "description": "Suggested filename to be used when saving file through 'Save Link As' option of context menu.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "selectionRect",
                "description": "Rect representing the coordinates in the document space of the selection.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Rectangle"
              },
              {
                "name": "selectionStartOffset",
                "description": "Start position of the selection text.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "number"
              },
              {
                "name": "referrerPolicy",
                "description": "The referrer policy of the frame on which the menu is invoked.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Referrer"
              },
              {
                "name": "misspelledWord",
                "description": "The misspelled word under the cursor, if any.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "dictionarySuggestions",
                "description": "An array of suggested words to show the user to replace the `misspelledWord`.  Only available if there is a misspelled word and spellchecker is enabled.",
                "required": true,
                "additionalTags": [],
                "collection": true,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "frameCharset",
                "description": "The character encoding of the frame on which the menu was invoked.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "formControlType",
                "description": "The source that the context menu was invoked on. Possible values include `none`, `button-button`, `field-set`, `input-button`, `input-checkbox`, `input-color`, `input-date`, `input-datetime-local`, `input-email`, `input-file`, `input-hidden`, `input-image`, `input-month`, `input-number`, `input-password`, `input-radio`, `input-range`, `input-reset`, `input-search`, `input-submit`, `input-telephone`, `input-text`, `input-time`, `input-url`, `input-week`, `output`, `reset-button`, `select-list`, `select-list`, `select-multiple`, `select-one`, `submit-button`, and `text-area`,",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "none",
                    "description": ""
                  },
                  {
                    "value": "button-button",
                    "description": ""
                  },
                  {
                    "value": "field-set",
                    "description": ""
                  },
                  {
                    "value": "input-button",
                    "description": ""
                  },
                  {
                    "value": "input-checkbox",
                    "description": ""
                  },
                  {
                    "value": "input-color",
                    "description": ""
                  },
                  {
                    "value": "input-date",
                    "description": ""
                  },
                  {
                    "value": "input-datetime-local",
                    "description": ""
                  },
                  {
                    "value": "input-email",
                    "description": ""
                  },
                  {
                    "value": "input-file",
                    "description": ""
                  },
                  {
                    "value": "input-hidden",
                    "description": ""
                  },
                  {
                    "value": "input-image",
                    "description": ""
                  },
                  {
                    "value": "input-month",
                    "description": ""
                  },
                  {
                    "value": "input-number",
                    "description": ""
                  },
                  {
                    "value": "input-password",
                    "description": ""
                  },
                  {
                    "value": "input-radio",
                    "description": ""
                  },
                  {
                    "value": "input-range",
                    "description": ""
                  },
                  {
                    "value": "input-reset",
                    "description": ""
                  },
                  {
                    "value": "input-search",
                    "description": ""
                  },
                  {
                    "value": "input-submit",
                    "description": ""
                  },
                  {
                    "value": "input-telephone",
                    "description": ""
                  },
                  {
                    "value": "input-text",
                    "description": ""
                  },
                  {
                    "value": "input-time",
                    "description": ""
                  },
                  {
                    "value": "input-url",
                    "description": ""
                  },
                  {
                    "value": "input-week",
                    "description": ""
                  },
                  {
                    "value": "output",
                    "description": ""
                  },
                  {
                    "value": "reset-button",
                    "description": ""
                  },
                  {
                    "value": "select-list",
                    "description": ""
                  },
                  {
                    "value": "select-list",
                    "description": ""
                  },
                  {
                    "value": "select-multiple",
                    "description": ""
                  },
                  {
                    "value": "select-one",
                    "description": ""
                  },
                  {
                    "value": "submit-button",
                    "description": ""
                  },
                  {
                    "value": "text-area",
                    "description": ""
                  }
                ]
              },
              {
                "name": "spellcheckEnabled",
                "description": "If the context is editable, whether or not spellchecking is enabled.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "boolean"
              },
              {
                "name": "menuSourceType",
                "description": "Input source that invoked the context menu. Can be `none`, `mouse`, `keyboard`, `touch`, `touchMenu`, `longPress`, `longTap`, `touchHandle`, `stylus`, `adjustSelection`, or `adjustSelectionReset`.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "String",
                "possibleValues": [
                  {
                    "value": "none",
                    "description": ""
                  },
                  {
                    "value": "mouse",
                    "description": ""
                  },
                  {
                    "value": "keyboard",
                    "description": ""
                  },
                  {
                    "value": "touch",
                    "description": ""
                  },
                  {
                    "value": "touchMenu",
                    "description": ""
                  },
                  {
                    "value": "longPress",
                    "description": ""
                  },
                  {
                    "value": "longTap",
                    "description": ""
                  },
                  {
                    "value": "touchHandle",
                    "description": ""
                  },
                  {
                    "value": "stylus",
                    "description": ""
                  },
                  {
                    "value": "adjustSelection",
                    "description": ""
                  },
                  {
                    "value": "adjustSelectionReset",
                    "description": ""
                  }
                ]
              },
              {
                "name": "mediaFlags",
                "description": "The flags for the media element the context menu was invoked on.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Object",
                "properties": [
                  {
                    "name": "inError",
                    "description": "Whether the media element has crashed.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "isPaused",
                    "description": "Whether the media element is paused.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "isMuted",
                    "description": "Whether the media element is muted.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "hasAudio",
                    "description": "Whether the media element has audio.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "isLooping",
                    "description": "Whether the media element is looping.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "isControlsVisible",
                    "description": "Whether the media element's controls are visible.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canToggleControls",
                    "description": "Whether the media element's controls are toggleable.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canPrint",
                    "description": "Whether the media element can be printed.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canSave",
                    "description": "Whether or not the media element can be downloaded.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canShowPictureInPicture",
                    "description": "Whether the media element can show picture-in-picture.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "isShowingPictureInPicture",
                    "description": "Whether the media element is currently showing picture-in-picture.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canRotate",
                    "description": "Whether the media element can be rotated.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canLoop",
                    "description": "Whether the media element can be looped.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  }
                ]
              },
              {
                "name": "editFlags",
                "description": "These flags indicate whether the renderer believes it is able to perform the corresponding action.",
                "required": true,
                "additionalTags": [],
                "collection": false,
                "type": "Object",
                "properties": [
                  {
                    "name": "canUndo",
                    "description": "Whether the renderer believes it can undo.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canRedo",
                    "description": "Whether the renderer believes it can redo.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canCut",
                    "description": "Whether the renderer believes it can cut.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canCopy",
                    "description": "Whether the renderer believes it can copy.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canPaste",
                    "description": "Whether the renderer believes it can paste.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canDelete",
                    "description": "Whether the renderer believes it can delete.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canSelectAll",
                    "description": "Whether the renderer believes it can select all.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  },
                  {
                    "name": "canEditRichly",
                    "description": "Whether the renderer believes it can edit text richly.",
                    "required": true,
                    "additionalTags": [],
                    "collection": false,
                    "type": "boolean"
                  }
                ]
              }
            ],
            "additionalTags": [],
            "required": true
          }
        ],
        "additionalTags": [],
        "urlFragment": "#event-context-menu"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "BaseWindowConstructorOptions",
    "description": "When setting minimum or maximum window size with `minWidth`/`maxWidth`/ `minHeight`/`maxHeight`, it only constrains the users. It won't prevent you from passing a size that does not follow size constraints to `setBounds`/`setSize` or to the constructor of `BrowserWindow`.\n\nThe possible values and behaviors of the `type` option are platform dependent. Possible values are:\n\n* On Linux, possible types are `desktop`, `dock`, `toolbar`, `splash`, `notification`.\n  * The `desktop` type places the window at the desktop background window level (kCGDesktopWindowLevel - 1). However, note that a desktop window will not receive focus, keyboard, or mouse events. You can still use globalShortcut to receive input sparingly.\n  * The `dock` type creates a dock-like window behavior.\n  * The `toolbar` type creates a window with a toolbar appearance.\n  * The `splash` type behaves in a specific way. It is not draggable, even if the CSS styling of the window's body contains -webkit-app-region: drag. This type is commonly used for splash screens.\n  * The `notification` type creates a window that behaves like a system notification.\n* On macOS, possible types are `desktop`, `textured`, `panel`.\n  * The `textured` type adds metal gradient appearance (`NSWindowStyleMaskTexturedBackground`).\n  * The `desktop` type places the window at the desktop background window level (`kCGDesktopWindowLevel - 1`). Note that desktop window will not receive focus, keyboard or mouse events, but you can use `globalShortcut` to receive input sparingly.\n  * The `panel` type enables the window to float on top of full-screened apps by adding the `NSWindowStyleMaskNonactivatingPanel` style mask,normally reserved for NSPanel, at runtime. Also, the window will appear on all spaces (desktops).\n* On Windows, possible type is `toolbar`.",
    "slug": "base-window-options",
    "websiteUrl": "https://electronjs.org/docs/api/structures/base-window-options",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/base-window-options.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "width",
        "description": "Window's width in pixels. Default is `800`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "height",
        "description": "Window's height in pixels. Default is `600`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "x",
        "description": "(**required** if y is used) Window's left offset from screen. Default is to center the window.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "y",
        "description": "(**required** if x is used) Window's top offset from screen. Default is to center the window.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "useContentSize",
        "description": "The `width` and `height` would be used as web page's size, which means the actual window's size will include window frame's size and be slightly larger. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "center",
        "description": "Show window in the center of the screen. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "minWidth",
        "description": "Window's minimum width. Default is `0`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "minHeight",
        "description": "Window's minimum height. Default is `0`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "maxWidth",
        "description": "Window's maximum width. Default is no limit.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "maxHeight",
        "description": "Window's maximum height. Default is no limit.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "resizable",
        "description": "Whether window is resizable. Default is `true`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "movable",
        "description": "Whether window is movable. This is not implemented on Linux. Default is `true`.",
        "required": false,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "minimizable",
        "description": "Whether window is minimizable. This is not implemented on Linux. Default is `true`.",
        "required": false,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "maximizable",
        "description": "Whether window is maximizable. This is not implemented on Linux. Default is `true`.",
        "required": false,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "closable",
        "description": "Whether window is closable. This is not implemented on Linux. Default is `true`.",
        "required": false,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "focusable",
        "description": "Whether the window can be focused. Default is `true`. On Windows setting `focusable: false` also implies setting `skipTaskbar: true`. On Linux setting `focusable: false` makes the window stop interacting with wm, so the window will always stay on top in all workspaces.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "alwaysOnTop",
        "description": "Whether the window should always stay on top of other windows. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "fullscreen",
        "description": "Whether the window should show in fullscreen. When explicitly set to `false` the fullscreen button will be hidden or disabled on macOS. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "fullscreenable",
        "description": "Whether the window can be put into fullscreen mode. On macOS, also whether the maximize/zoom button should toggle full screen mode or maximize window. Default is `true`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "simpleFullscreen",
        "description": "Use pre-Lion fullscreen on macOS. Default is `false`.",
        "required": false,
        "additionalTags": [
          "os_macos"
        ],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "skipTaskbar",
        "description": "Whether to show the window in taskbar. Default is `false`.",
        "required": false,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "hiddenInMissionControl",
        "description": "Whether window should be hidden when the user toggles into mission control.",
        "required": false,
        "additionalTags": [
          "os_macos"
        ],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "kiosk",
        "description": "Whether the window is in kiosk mode. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "title",
        "description": "Default window title. Default is `\"Electron\"`. If the HTML tag `<title>` is defined in the HTML file loaded by `loadURL()`, this property will be ignored.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "icon",
        "description": "The window icon. On Windows it is recommended to use `ICO` icons to get best visual effects, you can also leave it undefined so the executable's icon will be used.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "NativeImage"
          },
          {
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ]
      },
      {
        "name": "show",
        "description": "Whether window should be shown when created. Default is `true`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "frame",
        "description": "Specify `false` to create a frameless window. Default is `true`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "parent",
        "description": "Specify parent window. Default is `null`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "BaseWindow"
      },
      {
        "name": "modal",
        "description": "Whether this is a modal window. This only works when the window is a child window. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "acceptFirstMouse",
        "description": "Whether clicking an inactive window will also click through to the web contents. Default is `false` on macOS. This option is not configurable on other platforms.",
        "required": false,
        "additionalTags": [
          "os_macos"
        ],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "disableAutoHideCursor",
        "description": "Whether to hide cursor when typing. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "autoHideMenuBar",
        "description": "Auto hide the menu bar unless the `Alt` key is pressed. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "enableLargerThanScreen",
        "description": "Enable the window to be resized larger than screen. Only relevant for macOS, as other OSes allow larger-than-screen windows by default. Default is `false`.",
        "required": false,
        "additionalTags": [
          "os_macos"
        ],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "backgroundColor",
        "description": "The window's background color in Hex, RGB, RGBA, HSL, HSLA or named CSS color format. Alpha in #AARRGGBB format is supported if `transparent` is set to `true`. Default is `#FFF` (white). See win.setBackgroundColor for more information.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "hasShadow",
        "description": "Whether window should have a shadow. Default is `true`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "opacity",
        "description": "Set the initial opacity of the window, between 0.0 (fully transparent) and 1.0 (fully opaque). This is only implemented on Windows and macOS.",
        "required": false,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "collection": false,
        "type": "number"
      },
      {
        "name": "darkTheme",
        "description": "Forces using dark theme for the window, only works on some GTK+3 desktop environments. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "transparent",
        "description": "Makes the window transparent. Default is `false`. On Windows, does not work unless the window is frameless.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "type",
        "description": "The type of window, default is normal window. See more about this below.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "visualEffectState",
        "description": "Specify how the material appearance should reflect window activity state on macOS. Must be used with the `vibrancy` property. Possible values are:",
        "required": false,
        "additionalTags": [
          "os_macos"
        ],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "followWindow",
            "description": "The backdrop should automatically appear active when the window is active, and inactive when it is not. This is the default."
          },
          {
            "value": "active",
            "description": "The backdrop should always appear active."
          },
          {
            "value": "inactive",
            "description": "The backdrop should always appear inactive."
          }
        ]
      },
      {
        "name": "titleBarStyle",
        "description": "The style of window title bar. Default is `default`. Possible values are:",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "default",
            "description": "Results in the standard title bar for macOS or Windows respectively."
          },
          {
            "value": "hidden",
            "description": "Results in a hidden title bar and a full size content window. On macOS, the window still has the standard window controls (“traffic lights”) in the top left. On Windows and Linux, when combined with `titleBarOverlay: true` it will activate the Window Controls Overlay (see `titleBarOverlay` for more information), otherwise no window controls will be shown."
          },
          {
            "value": "hiddenInset",
            "description": "Results in a hidden title bar with an alternative look where the traffic light buttons are slightly more inset from the window edge."
          },
          {
            "value": "customButtonsOnHover",
            "description": "Results in a hidden title bar and a full size content window, the traffic light buttons will display when being hovered over in the top left of the window. **Note:** This option is currently experimental."
          }
        ]
      },
      {
        "name": "titleBarOverlay",
        "description": " When using a frameless window in conjunction with `win.setWindowButtonVisibility(true)` on macOS or using a `titleBarStyle` so that the standard window controls (\"traffic lights\" on macOS) are visible, this property enables the Window Controls Overlay JavaScript APIs and CSS Environment Variables. Specifying `true` will result in an overlay with default system colors. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "Object",
            "properties": [
              {
                "name": "color",
                "description": "The CSS color of the Window Controls Overlay when enabled. Default is the system color.",
                "required": false,
                "additionalTags": [
                  "os_windows",
                  "os_linux"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "symbolColor",
                "description": "The CSS color of the symbols on the Window Controls Overlay when enabled. Default is the system color.",
                "required": false,
                "additionalTags": [
                  "os_windows"
                ],
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "name": "height",
                "description": "The height of the title bar and Window Controls Overlay in pixels. Default is system height.",
                "required": false,
                "additionalTags": [],
                "collection": false,
                "type": "Integer"
              }
            ]
          },
          {
            "collection": false,
            "type": "Boolean"
          }
        ]
      },
      {
        "name": "trafficLightPosition",
        "description": "Set a custom position for the traffic light buttons in frameless windows.",
        "required": false,
        "additionalTags": [
          "os_macos"
        ],
        "collection": false,
        "type": "Point"
      },
      {
        "name": "roundedCorners",
        "description": "Whether frameless window should have rounded corners on macOS. Default is `true`. Setting this property to `false` will prevent the window from being fullscreenable.",
        "required": false,
        "additionalTags": [
          "os_macos"
        ],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "thickFrame",
        "description": "Use `WS_THICKFRAME` style for frameless windows on Windows, which adds standard window frame. Setting it to `false` will remove window shadow and window animations. Default is `true`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "vibrancy",
        "description": "Add a type of vibrancy effect to the window, only on macOS. Can be `appearance-based`, `titlebar`, `selection`, `menu`, `popover`, `sidebar`, `header`, `sheet`, `window`, `hud`, `fullscreen-ui`, `tooltip`, `content`, `under-window`, or `under-page`.",
        "required": false,
        "additionalTags": [
          "os_macos"
        ],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "appearance-based",
            "description": ""
          },
          {
            "value": "titlebar",
            "description": ""
          },
          {
            "value": "selection",
            "description": ""
          },
          {
            "value": "menu",
            "description": ""
          },
          {
            "value": "popover",
            "description": ""
          },
          {
            "value": "sidebar",
            "description": ""
          },
          {
            "value": "header",
            "description": ""
          },
          {
            "value": "sheet",
            "description": ""
          },
          {
            "value": "window",
            "description": ""
          },
          {
            "value": "hud",
            "description": ""
          },
          {
            "value": "fullscreen-ui",
            "description": ""
          },
          {
            "value": "tooltip",
            "description": ""
          },
          {
            "value": "content",
            "description": ""
          },
          {
            "value": "under-window",
            "description": ""
          },
          {
            "value": "under-page",
            "description": ""
          }
        ]
      },
      {
        "name": "backgroundMaterial",
        "description": "Set the window's system-drawn background material, including behind the non-client area. Can be `auto`, `none`, `mica`, `acrylic` or `tabbed`. See win.setBackgroundMaterial for more information.",
        "required": false,
        "additionalTags": [
          "os_windows"
        ],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "auto",
            "description": ""
          },
          {
            "value": "none",
            "description": ""
          },
          {
            "value": "mica",
            "description": ""
          },
          {
            "value": "acrylic",
            "description": ""
          },
          {
            "value": "tabbed",
            "description": ""
          }
        ]
      },
      {
        "name": "zoomToPageWidth",
        "description": "Controls the behavior on macOS when option-clicking the green stoplight button on the toolbar or by clicking the Window > Zoom menu item. If `true`, the window will grow to the preferred width of the web page when zoomed, `false` will cause it to zoom to the width of the screen. This will also affect the behavior when calling `maximize()` directly. Default is `false`.",
        "required": false,
        "additionalTags": [
          "os_macos"
        ],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "tabbingIdentifier",
        "description": "Tab group name, allows opening the window as a native tab. Windows with the same tabbing identifier will be grouped together. This also adds a native new tab button to your window's tab bar and allows your `app` and window to receive the `new-window-for-tab` event.",
        "required": false,
        "additionalTags": [
          "os_macos"
        ],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "BluetoothDevice",
    "description": "",
    "slug": "bluetooth-device",
    "websiteUrl": "https://electronjs.org/docs/api/structures/bluetooth-device",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/bluetooth-device.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "deviceName",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "deviceId",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "BrowserWindowConstructorOptions",
    "extends": "BaseWindowConstructorOptions",
    "description": "",
    "slug": "browser-window-options",
    "websiteUrl": "https://electronjs.org/docs/api/structures/browser-window-options",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/browser-window-options.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "webPreferences",
        "description": "Settings of web page's features.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "WebPreferences"
      },
      {
        "name": "paintWhenInitiallyHidden",
        "description": "Whether the renderer should be active when `show` is `false` and it has just been created.  In order for `document.visibilityState` to work correctly on first load with `show: false` you should set this to `false`.  Setting this to `false` will cause the `ready-to-show` event to not fire.  Default is `true`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "CertificatePrincipal",
    "description": "",
    "slug": "certificate-principal",
    "websiteUrl": "https://electronjs.org/docs/api/structures/certificate-principal",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/certificate-principal.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "commonName",
        "description": "Common Name.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "organizations",
        "description": "Organization names.",
        "required": true,
        "additionalTags": [],
        "collection": true,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "organizationUnits",
        "description": "Organization Unit names.",
        "required": true,
        "additionalTags": [],
        "collection": true,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "locality",
        "description": "Locality.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "state",
        "description": "State or province.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "country",
        "description": "Country or region.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "Certificate",
    "description": "",
    "slug": "certificate",
    "websiteUrl": "https://electronjs.org/docs/api/structures/certificate",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/certificate.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "data",
        "description": "PEM encoded data",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "issuer",
        "description": "Issuer principal",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "CertificatePrincipal"
      },
      {
        "name": "issuerName",
        "description": "Issuer's Common Name",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "issuerCert",
        "description": "Issuer certificate (if not self-signed)",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Certificate"
      },
      {
        "name": "subject",
        "description": "Subject principal",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "CertificatePrincipal"
      },
      {
        "name": "subjectName",
        "description": "Subject's Common Name",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "serialNumber",
        "description": "Hex value represented string",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "validStart",
        "description": "Start date of the certificate being valid in seconds",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "validExpiry",
        "description": "End date of the certificate being valid in seconds",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "fingerprint",
        "description": "Fingerprint of the certificate",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "Cookie",
    "description": "",
    "slug": "cookie",
    "websiteUrl": "https://electronjs.org/docs/api/structures/cookie",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/cookie.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "name",
        "description": "The name of the cookie.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "value",
        "description": "The value of the cookie.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "domain",
        "description": "The domain of the cookie; this will be normalized with a preceding dot so that it's also valid for subdomains.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "hostOnly",
        "description": "Whether the cookie is a host-only cookie; this will only be `true` if no domain was passed.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "path",
        "description": "The path of the cookie.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "secure",
        "description": "Whether the cookie is marked as secure.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "httpOnly",
        "description": "Whether the cookie is marked as HTTP only.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "session",
        "description": "Whether the cookie is a session cookie or a persistent cookie with an expiration date.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "expirationDate",
        "description": "The expiration date of the cookie as the number of seconds since the UNIX epoch. Not provided for session cookies.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Double"
      },
      {
        "name": "sameSite",
        "description": "The Same Site policy applied to this cookie.  Can be `unspecified`, `no_restriction`, `lax` or `strict`.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "unspecified",
            "description": ""
          },
          {
            "value": "no_restriction",
            "description": ""
          },
          {
            "value": "lax",
            "description": ""
          },
          {
            "value": "strict",
            "description": ""
          }
        ]
      }
    ]
  },
  {
    "type": "Structure",
    "name": "CPUUsage",
    "description": "",
    "slug": "cpu-usage",
    "websiteUrl": "https://electronjs.org/docs/api/structures/cpu-usage",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/cpu-usage.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "percentCPUUsage",
        "description": "Percentage of CPU used since the last call to getCPUUsage. First call returns 0.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "idleWakeupsPerSecond",
        "description": "The number of average idle CPU wakeups per second since the last call to getCPUUsage. First call returns 0. Will always return 0 on Windows.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "CrashReport",
    "description": "",
    "slug": "crash-report",
    "websiteUrl": "https://electronjs.org/docs/api/structures/crash-report",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/crash-report.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "date",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Date"
      },
      {
        "name": "id",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "CustomScheme",
    "description": "",
    "slug": "custom-scheme",
    "websiteUrl": "https://electronjs.org/docs/api/structures/custom-scheme",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/custom-scheme.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "scheme",
        "description": "Custom schemes to be registered with options.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "privileges",
        "description": "",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Object",
        "properties": [
          {
            "name": "standard",
            "description": "Default false.",
            "required": false,
            "additionalTags": [],
            "collection": false,
            "type": "boolean"
          },
          {
            "name": "secure",
            "description": "Default false.",
            "required": false,
            "additionalTags": [],
            "collection": false,
            "type": "boolean"
          },
          {
            "name": "bypassCSP",
            "description": "Default false.",
            "required": false,
            "additionalTags": [],
            "collection": false,
            "type": "boolean"
          },
          {
            "name": "allowServiceWorkers",
            "description": "Default false.",
            "required": false,
            "additionalTags": [],
            "collection": false,
            "type": "boolean"
          },
          {
            "name": "supportFetchAPI",
            "description": "Default false.",
            "required": false,
            "additionalTags": [],
            "collection": false,
            "type": "boolean"
          },
          {
            "name": "corsEnabled",
            "description": "Default false.",
            "required": false,
            "additionalTags": [],
            "collection": false,
            "type": "boolean"
          },
          {
            "name": "stream",
            "description": "Default false.",
            "required": false,
            "additionalTags": [],
            "collection": false,
            "type": "boolean"
          },
          {
            "name": "codeCache",
            "description": "Enable V8 code cache for the scheme, only works when `standard` is also set to true. Default false.",
            "required": false,
            "additionalTags": [],
            "collection": false,
            "type": "boolean"
          }
        ]
      }
    ]
  },
  {
    "type": "Structure",
    "name": "DesktopCapturerSource",
    "description": "",
    "slug": "desktop-capturer-source",
    "websiteUrl": "https://electronjs.org/docs/api/structures/desktop-capturer-source",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/desktop-capturer-source.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "id",
        "description": "The identifier of a window or screen that can be used as a `chromeMediaSourceId` constraint when calling `navigator.getUserMedia`. The format of the identifier will be `window:XX:YY` or `screen:ZZ:0`. XX is the windowID/handle. YY is 1 for the current process, and 0 for all others. ZZ is a sequential number that represents the screen, and it does not equal to the index in the source's name.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "name",
        "description": "A screen source will be named either `Entire Screen` or `Screen <index>`, while the name of a window source will match the window title.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "thumbnail",
        "description": "A thumbnail image. **Note:** There is no guarantee that the size of the thumbnail is the same as the `thumbnailSize` specified in the `options` passed to `desktopCapturer.getSources`. The actual size depends on the scale of the screen or window.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "NativeImage"
      },
      {
        "name": "display_id",
        "description": "A unique identifier that will correspond to the `id` of the matching Display returned by the Screen API. On some platforms, this is equivalent to the `XX` portion of the `id` field above and on others it will differ. It will be an empty string if not available.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "appIcon",
        "description": "An icon image of the application that owns the window or null if the source has a type screen. The size of the icon is not known in advance and depends on what the application provides.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "NativeImage"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "Display",
    "description": "The `Display` object represents a physical display connected to the system. A fake `Display` may exist on a headless system, or a `Display` may correspond to a remote, virtual display.",
    "slug": "display",
    "websiteUrl": "https://electronjs.org/docs/api/structures/display",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/display.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "accelerometerSupport",
        "description": "Can be `available`, `unavailable`, `unknown`.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "available",
            "description": ""
          },
          {
            "value": "unavailable",
            "description": ""
          },
          {
            "value": "unknown",
            "description": ""
          }
        ]
      },
      {
        "name": "bounds",
        "description": "the bounds of the display in DIP points.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Rectangle"
      },
      {
        "name": "colorDepth",
        "description": "The number of bits per pixel.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "colorSpace",
        "description": " represent a color space (three-dimensional object which contains all realizable color combinations) for the purpose of color conversions.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "depthPerComponent",
        "description": "The number of bits per color component.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "detected",
        "description": "`true`` if the display is detected by the system.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "displayFrequency",
        "description": "The display refresh rate.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "id",
        "description": "Unique identifier associated with the display. A value of of -1 means the display is invalid or the correct `id` is not yet known, and a value of -10 means the display is a virtual display assigned to a unified desktop.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "internal",
        "description": "`true` for an internal display and `false` for an external display.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "label",
        "description": "User-friendly label, determined by the platform.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "maximumCursorSize",
        "description": "Maximum cursor size in native pixels.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Size"
      },
      {
        "name": "nativeOrigin",
        "description": "Returns the display's origin in pixel coordinates. Only available on windowing systems like X11 that position displays in pixel coordinates.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Point"
      },
      {
        "name": "rotation",
        "description": "Can be 0, 90, 180, 270, represents screen rotation in clock-wise degrees.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "scaleFactor",
        "description": "Output device's pixel scale factor.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "touchSupport",
        "description": "Can be `available`, `unavailable`, `unknown`.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "available",
            "description": ""
          },
          {
            "value": "unavailable",
            "description": ""
          },
          {
            "value": "unknown",
            "description": ""
          }
        ]
      },
      {
        "name": "monochrome",
        "description": "Whether or not the display is a monochrome display.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "size",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Size"
      },
      {
        "name": "workArea",
        "description": "the work area of the display in DIP points.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Rectangle"
      },
      {
        "name": "workAreaSize",
        "description": "The size of the work area.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Size"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "ExtensionInfo",
    "description": "",
    "slug": "extension-info",
    "websiteUrl": "https://electronjs.org/docs/api/structures/extension-info",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/extension-info.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "name",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "version",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "Extension",
    "description": "",
    "slug": "extension",
    "websiteUrl": "https://electronjs.org/docs/api/structures/extension",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/extension.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "id",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "manifest",
        "description": "Copy of the extension's manifest data.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "any"
      },
      {
        "name": "name",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "path",
        "description": "The extension's file path.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "version",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "url",
        "description": "The extension's `chrome-extension://` URL.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "FileFilter",
    "description": "",
    "slug": "file-filter",
    "websiteUrl": "https://electronjs.org/docs/api/structures/file-filter",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/file-filter.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "name",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "extensions",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": true,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "FilePathWithHeaders",
    "description": "",
    "slug": "file-path-with-headers",
    "websiteUrl": "https://electronjs.org/docs/api/structures/file-path-with-headers",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/file-path-with-headers.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "path",
        "description": "The path to the file to send.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "headers",
        "description": "Additional headers to be sent.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Record",
        "innerTypes": [
          {
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ]
      }
    ]
  },
  {
    "type": "Structure",
    "name": "FilesystemPermissionRequest",
    "extends": "PermissionRequest",
    "description": "",
    "slug": "filesystem-permission-request",
    "websiteUrl": "https://electronjs.org/docs/api/structures/filesystem-permission-request",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/filesystem-permission-request.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "filePath",
        "description": "The path of the `fileSystem` request.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "isDirectory",
        "description": "Whether the `fileSystem` request is a directory.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "fileAccessType",
        "description": "The access type of the `fileSystem` request. Can be `writable` or `readable`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "writable",
            "description": ""
          },
          {
            "value": "readable",
            "description": ""
          }
        ]
      }
    ]
  },
  {
    "type": "Structure",
    "name": "GPUFeatureStatus",
    "description": "Possible values:\n\n* `disabled_software` - Software only. Hardware acceleration disabled (yellow)\n* `disabled_off` - Disabled (red)\n* `disabled_off_ok` - Disabled (yellow)\n* `unavailable_software` - Software only, hardware acceleration unavailable (yellow)\n* `unavailable_off` - Unavailable (red)\n* `unavailable_off_ok` - Unavailable (yellow)\n* `enabled_readback` - Hardware accelerated but at reduced performance (yellow)\n* `enabled_force` - Hardware accelerated on all pages (green)\n* `enabled` - Hardware accelerated (green)\n* `enabled_on` - Enabled (green)\n* `enabled_force_on` - Force enabled (green)",
    "slug": "gpu-feature-status",
    "websiteUrl": "https://electronjs.org/docs/api/structures/gpu-feature-status",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/gpu-feature-status.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "2d_canvas",
        "description": "Canvas.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "flash_3d",
        "description": "Flash.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "flash_stage3d",
        "description": "Flash Stage3D.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "flash_stage3d_baseline",
        "description": "Flash Stage3D Baseline profile.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "gpu_compositing",
        "description": "Compositing.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "multiple_raster_threads",
        "description": "Multiple Raster Threads.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "native_gpu_memory_buffers",
        "description": "Native GpuMemoryBuffers.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "rasterization",
        "description": "Rasterization.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "video_decode",
        "description": "Video Decode.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "video_encode",
        "description": "Video Encode.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "vpx_decode",
        "description": "VPx Video Decode.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "webgl",
        "description": "WebGL.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "webgl2",
        "description": "WebGL2.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "HIDDevice",
    "description": "",
    "slug": "hid-device",
    "websiteUrl": "https://electronjs.org/docs/api/structures/hid-device",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/hid-device.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "deviceId",
        "description": "Unique identifier for the device.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "name",
        "description": "Name of the device.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "vendorId",
        "description": "The USB vendor ID.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "productId",
        "description": "The USB product ID.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "serialNumber",
        "description": "The USB device serial number.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "guid",
        "description": "Unique identifier for the HID interface.  A device may have multiple HID interfaces.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "InputEvent",
    "description": "",
    "slug": "input-event",
    "websiteUrl": "https://electronjs.org/docs/api/structures/input-event",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/input-event.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "type",
        "description": "Can be `undefined`, `mouseDown`, `mouseUp`, `mouseMove`, `mouseEnter`, `mouseLeave`, `contextMenu`, `mouseWheel`, `rawKeyDown`, `keyDown`, `keyUp`, `char`, `gestureScrollBegin`, `gestureScrollEnd`, `gestureScrollUpdate`, `gestureFlingStart`, `gestureFlingCancel`, `gesturePinchBegin`, `gesturePinchEnd`, `gesturePinchUpdate`, `gestureTapDown`, `gestureShowPress`, `gestureTap`, `gestureTapCancel`, `gestureShortPress`, `gestureLongPress`, `gestureLongTap`, `gestureTwoFingerTap`, `gestureTapUnconfirmed`, `gestureDoubleTap`, `touchStart`, `touchMove`, `touchEnd`, `touchCancel`, `touchScrollStarted`, `pointerDown`, `pointerUp`, `pointerMove`, `pointerRawUpdate`, `pointerCancel` or `pointerCausedUaAction`.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "undefined",
            "description": ""
          },
          {
            "value": "mouseDown",
            "description": ""
          },
          {
            "value": "mouseUp",
            "description": ""
          },
          {
            "value": "mouseMove",
            "description": ""
          },
          {
            "value": "mouseEnter",
            "description": ""
          },
          {
            "value": "mouseLeave",
            "description": ""
          },
          {
            "value": "contextMenu",
            "description": ""
          },
          {
            "value": "mouseWheel",
            "description": ""
          },
          {
            "value": "rawKeyDown",
            "description": ""
          },
          {
            "value": "keyDown",
            "description": ""
          },
          {
            "value": "keyUp",
            "description": ""
          },
          {
            "value": "char",
            "description": ""
          },
          {
            "value": "gestureScrollBegin",
            "description": ""
          },
          {
            "value": "gestureScrollEnd",
            "description": ""
          },
          {
            "value": "gestureScrollUpdate",
            "description": ""
          },
          {
            "value": "gestureFlingStart",
            "description": ""
          },
          {
            "value": "gestureFlingCancel",
            "description": ""
          },
          {
            "value": "gesturePinchBegin",
            "description": ""
          },
          {
            "value": "gesturePinchEnd",
            "description": ""
          },
          {
            "value": "gesturePinchUpdate",
            "description": ""
          },
          {
            "value": "gestureTapDown",
            "description": ""
          },
          {
            "value": "gestureShowPress",
            "description": ""
          },
          {
            "value": "gestureTap",
            "description": ""
          },
          {
            "value": "gestureTapCancel",
            "description": ""
          },
          {
            "value": "gestureShortPress",
            "description": ""
          },
          {
            "value": "gestureLongPress",
            "description": ""
          },
          {
            "value": "gestureLongTap",
            "description": ""
          },
          {
            "value": "gestureTwoFingerTap",
            "description": ""
          },
          {
            "value": "gestureTapUnconfirmed",
            "description": ""
          },
          {
            "value": "gestureDoubleTap",
            "description": ""
          },
          {
            "value": "touchStart",
            "description": ""
          },
          {
            "value": "touchMove",
            "description": ""
          },
          {
            "value": "touchEnd",
            "description": ""
          },
          {
            "value": "touchCancel",
            "description": ""
          },
          {
            "value": "touchScrollStarted",
            "description": ""
          },
          {
            "value": "pointerDown",
            "description": ""
          },
          {
            "value": "pointerUp",
            "description": ""
          },
          {
            "value": "pointerMove",
            "description": ""
          },
          {
            "value": "pointerRawUpdate",
            "description": ""
          },
          {
            "value": "pointerCancel",
            "description": ""
          },
          {
            "value": "pointerCausedUaAction",
            "description": ""
          }
        ]
      },
      {
        "name": "modifiers",
        "description": "An array of modifiers of the event, can be `shift`, `control`, `ctrl`, `alt`, `meta`, `command`, `cmd`, `isKeypad`, `isAutoRepeat`, `leftButtonDown`, `middleButtonDown`, `rightButtonDown`, `capsLock`, `numLock`, `left`, `right`.",
        "required": false,
        "additionalTags": [],
        "collection": true,
        "type": "String",
        "possibleValues": [
          {
            "value": "shift",
            "description": ""
          },
          {
            "value": "control",
            "description": ""
          },
          {
            "value": "ctrl",
            "description": ""
          },
          {
            "value": "alt",
            "description": ""
          },
          {
            "value": "meta",
            "description": ""
          },
          {
            "value": "command",
            "description": ""
          },
          {
            "value": "cmd",
            "description": ""
          },
          {
            "value": "isKeypad",
            "description": ""
          },
          {
            "value": "isAutoRepeat",
            "description": ""
          },
          {
            "value": "leftButtonDown",
            "description": ""
          },
          {
            "value": "middleButtonDown",
            "description": ""
          },
          {
            "value": "rightButtonDown",
            "description": ""
          },
          {
            "value": "capsLock",
            "description": ""
          },
          {
            "value": "numLock",
            "description": ""
          },
          {
            "value": "left",
            "description": ""
          },
          {
            "value": "right",
            "description": ""
          }
        ]
      }
    ]
  },
  {
    "type": "Structure",
    "name": "IpcMainEvent",
    "extends": "Event",
    "description": "",
    "slug": "ipc-main-event",
    "websiteUrl": "https://electronjs.org/docs/api/structures/ipc-main-event",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/ipc-main-event.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "processId",
        "description": "The internal ID of the renderer process that sent this message",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "frameId",
        "description": "The ID of the renderer frame that sent this message",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "returnValue",
        "description": "Set this to the value to be returned in a synchronous message",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "any"
      },
      {
        "name": "sender",
        "description": "Returns the `webContents` that sent the message",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "WebContents"
      },
      {
        "name": "senderFrame",
        "description": "The frame that sent this message",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "collection": false,
        "type": "WebFrameMain"
      },
      {
        "name": "ports",
        "description": "A list of MessagePorts that were transferred with this message",
        "required": true,
        "additionalTags": [],
        "collection": true,
        "type": "MessagePortMain"
      },
      {
        "name": "reply",
        "description": "A function that will send an IPC message to the renderer frame that sent the original message that you are currently handling.  You should use this method to \"reply\" to the sent message in order to guarantee the reply will go to the correct process and frame.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Function",
        "parameters": [
          {
            "name": "channel",
            "description": "",
            "required": true,
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "...args",
            "description": "",
            "required": true,
            "collection": true,
            "type": "any"
          }
        ],
        "returns": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "IpcMainInvokeEvent",
    "extends": "Event",
    "description": "",
    "slug": "ipc-main-invoke-event",
    "websiteUrl": "https://electronjs.org/docs/api/structures/ipc-main-invoke-event",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/ipc-main-invoke-event.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "processId",
        "description": "The internal ID of the renderer process that sent this message",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "frameId",
        "description": "The ID of the renderer frame that sent this message",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "sender",
        "description": "Returns the `webContents` that sent the message",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "WebContents"
      },
      {
        "name": "senderFrame",
        "description": "The frame that sent this message",
        "required": true,
        "additionalTags": [
          "availability_readonly"
        ],
        "collection": false,
        "type": "WebFrameMain"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "IpcRendererEvent",
    "extends": "Event",
    "description": "",
    "slug": "ipc-renderer-event",
    "websiteUrl": "https://electronjs.org/docs/api/structures/ipc-renderer-event",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/ipc-renderer-event.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "sender",
        "description": "The `IpcRenderer` instance that emitted the event originally",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "IpcRenderer"
      },
      {
        "name": "ports",
        "description": "A list of MessagePorts that were transferred with this message",
        "required": true,
        "additionalTags": [],
        "collection": true,
        "type": "MessagePort"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "JumpListCategory",
    "description": "**Note:** If a `JumpListCategory` object has neither the `type` nor the `name` property set then its `type` is assumed to be `tasks`. If the `name` property is set but the `type` property is omitted then the `type` is assumed to be `custom`.\n\n**Note:** The maximum length of a Jump List item's `description` property is 260 characters. Beyond this limit, the item will not be added to the Jump List, nor will it be displayed.",
    "slug": "jump-list-category",
    "websiteUrl": "https://electronjs.org/docs/api/structures/jump-list-category",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/jump-list-category.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "type",
        "description": "One of the following:",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "tasks",
            "description": "Items in this category will be placed into the standard `Tasks` category. There can be only one such category, and it will always be displayed at the bottom of the Jump List."
          },
          {
            "value": "frequent",
            "description": "Displays a list of files frequently opened by the app, the name of the category and its items are set by Windows."
          },
          {
            "value": "recent",
            "description": "Displays a list of files recently opened by the app, the name of the category and its items are set by Windows. Items may be added to this category indirectly using `app.addRecentDocument(path)`."
          },
          {
            "value": "custom",
            "description": "Displays tasks or file links, `name` must be set by the app."
          }
        ]
      },
      {
        "name": "name",
        "description": "Must be set if `type` is `custom`, otherwise it should be omitted.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "items",
        "description": "Array of `JumpListItem` objects if `type` is `tasks` or `custom`, otherwise it should be omitted.",
        "required": false,
        "additionalTags": [],
        "collection": true,
        "type": "JumpListItem"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "JumpListItem",
    "description": "",
    "slug": "jump-list-item",
    "websiteUrl": "https://electronjs.org/docs/api/structures/jump-list-item",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/jump-list-item.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "type",
        "description": "One of the following:",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "task",
            "description": "A task will launch an app with specific arguments."
          },
          {
            "value": "separator",
            "description": "Can be used to separate items in the standard `Tasks` category."
          },
          {
            "value": "file",
            "description": "A file link will open a file using the app that created the Jump List, for this to work the app must be registered as a handler for the file type (though it doesn't have to be the default handler)."
          }
        ]
      },
      {
        "name": "path",
        "description": "Path of the file to open, should only be set if `type` is `file`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "program",
        "description": "Path of the program to execute, usually you should specify `process.execPath` which opens the current program. Should only be set if `type` is `task`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "args",
        "description": "The command line arguments when `program` is executed. Should only be set if `type` is `task`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "title",
        "description": "The text to be displayed for the item in the Jump List. Should only be set if `type` is `task`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "description",
        "description": "Description of the task (displayed in a tooltip). Should only be set if `type` is `task`. Maximum length 260 characters.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "iconPath",
        "description": "The absolute path to an icon to be displayed in a Jump List, which can be an arbitrary resource file that contains an icon (e.g. `.ico`, `.exe`, `.dll`). You can usually specify `process.execPath` to show the program icon.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "iconIndex",
        "description": "The index of the icon in the resource file. If a resource file contains multiple icons this value can be used to specify the zero-based index of the icon that should be displayed for this task. If a resource file contains only one icon, this property should be set to zero.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "workingDirectory",
        "description": "The working directory. Default is empty.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "KeyboardEvent",
    "description": "",
    "slug": "keyboard-event",
    "websiteUrl": "https://electronjs.org/docs/api/structures/keyboard-event",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/keyboard-event.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "ctrlKey",
        "description": "whether the Control key was used in an accelerator to trigger the Event",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "metaKey",
        "description": "whether a meta key was used in an accelerator to trigger the Event",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "shiftKey",
        "description": "whether a Shift key was used in an accelerator to trigger the Event",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "altKey",
        "description": "whether an Alt key was used in an accelerator to trigger the Event",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "triggeredByAccelerator",
        "description": "whether an accelerator was used to trigger the event as opposed to another user gesture like mouse click",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "KeyboardInputEvent",
    "extends": "InputEvent",
    "description": "",
    "slug": "keyboard-input-event",
    "websiteUrl": "https://electronjs.org/docs/api/structures/keyboard-input-event",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/keyboard-input-event.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "type",
        "description": "The type of the event, can be `rawKeyDown`, `keyDown`, `keyUp` or `char`.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "rawKeyDown",
            "description": ""
          },
          {
            "value": "keyDown",
            "description": ""
          },
          {
            "value": "keyUp",
            "description": ""
          },
          {
            "value": "char",
            "description": ""
          }
        ]
      },
      {
        "name": "keyCode",
        "description": "The character that will be sent as the keyboard event. Should only use the valid key codes in Accelerator.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "MediaAccessPermissionRequest",
    "extends": "PermissionRequest",
    "description": "",
    "slug": "media-access-permission-request",
    "websiteUrl": "https://electronjs.org/docs/api/structures/media-access-permission-request",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/media-access-permission-request.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "securityOrigin",
        "description": "The security origin of the request.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "mediaTypes",
        "description": "The types of media access being requested - elements can be `video` or `audio`.",
        "required": false,
        "additionalTags": [],
        "collection": true,
        "type": "String",
        "possibleValues": [
          {
            "value": "video",
            "description": ""
          },
          {
            "value": "audio",
            "description": ""
          }
        ]
      }
    ]
  },
  {
    "type": "Structure",
    "name": "MemoryInfo",
    "description": "Note that all statistics are reported in Kilobytes.",
    "slug": "memory-info",
    "websiteUrl": "https://electronjs.org/docs/api/structures/memory-info",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/memory-info.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "workingSetSize",
        "description": "The amount of memory currently pinned to actual physical RAM.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "peakWorkingSetSize",
        "description": "The maximum amount of memory that has ever been pinned to actual physical RAM.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "privateBytes",
        "description": "The amount of memory not shared by other processes, such as JS heap or HTML content.",
        "required": false,
        "additionalTags": [
          "os_windows"
        ],
        "collection": false,
        "type": "Integer"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "MemoryUsageDetails",
    "description": "",
    "slug": "memory-usage-details",
    "websiteUrl": "https://electronjs.org/docs/api/structures/memory-usage-details",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/memory-usage-details.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "count",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "size",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "liveSize",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "MimeTypedBuffer",
    "description": "",
    "slug": "mime-typed-buffer",
    "websiteUrl": "https://electronjs.org/docs/api/structures/mime-typed-buffer",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/mime-typed-buffer.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "mimeType",
        "description": "MIME type of the buffer.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "charset",
        "description": "Charset of the buffer.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "data",
        "description": "The actual Buffer content.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Buffer"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "MouseInputEvent",
    "extends": "InputEvent",
    "description": "",
    "slug": "mouse-input-event",
    "websiteUrl": "https://electronjs.org/docs/api/structures/mouse-input-event",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/mouse-input-event.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "type",
        "description": "The type of the event, can be `mouseDown`, `mouseUp`, `mouseEnter`, `mouseLeave`, `contextMenu`, `mouseWheel` or `mouseMove`.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "mouseDown",
            "description": ""
          },
          {
            "value": "mouseUp",
            "description": ""
          },
          {
            "value": "mouseEnter",
            "description": ""
          },
          {
            "value": "mouseLeave",
            "description": ""
          },
          {
            "value": "contextMenu",
            "description": ""
          },
          {
            "value": "mouseWheel",
            "description": ""
          },
          {
            "value": "mouseMove",
            "description": ""
          }
        ]
      },
      {
        "name": "x",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "y",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "button",
        "description": "The button pressed, can be `left`, `middle`, `right`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "left",
            "description": ""
          },
          {
            "value": "middle",
            "description": ""
          },
          {
            "value": "right",
            "description": ""
          }
        ]
      },
      {
        "name": "globalX",
        "description": "",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "globalY",
        "description": "",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "movementX",
        "description": "",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "movementY",
        "description": "",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "clickCount",
        "description": "",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "MouseWheelInputEvent",
    "extends": "MouseInputEvent",
    "description": "",
    "slug": "mouse-wheel-input-event",
    "websiteUrl": "https://electronjs.org/docs/api/structures/mouse-wheel-input-event",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/mouse-wheel-input-event.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "type",
        "description": "The type of the event, can be `mouseWheel`.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "mouseWheel",
            "description": ""
          }
        ]
      },
      {
        "name": "deltaX",
        "description": "",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "deltaY",
        "description": "",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "wheelTicksX",
        "description": "",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "wheelTicksY",
        "description": "",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "accelerationRatioX",
        "description": "",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "accelerationRatioY",
        "description": "",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "hasPreciseScrollingDeltas",
        "description": "",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "canScroll",
        "description": "",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "NotificationAction",
    "description": "",
    "slug": "notification-action",
    "websiteUrl": "https://electronjs.org/docs/api/structures/notification-action",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/notification-action.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "type",
        "description": "The type of action, can be `button`.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "button",
            "description": ""
          }
        ]
      },
      {
        "name": "text",
        "description": "The label for the given action.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "NotificationResponse",
    "description": "",
    "slug": "notification-response",
    "websiteUrl": "https://electronjs.org/docs/api/structures/notification-response",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/notification-response.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "actionIdentifier",
        "description": "The identifier string of the action that the user selected.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "date",
        "description": "The delivery date of the notification.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "identifier",
        "description": "The unique identifier for this notification request.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "userInfo",
        "description": "A dictionary of custom information associated with the notification.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Record",
        "innerTypes": [
          {
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "collection": false,
            "type": "any"
          }
        ]
      },
      {
        "name": "userText",
        "description": "The text entered or chosen by the user.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "OpenExternalPermissionRequest",
    "extends": "PermissionRequest",
    "description": "",
    "slug": "open-external-permission-request",
    "websiteUrl": "https://electronjs.org/docs/api/structures/open-external-permission-request",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/open-external-permission-request.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "externalURL",
        "description": "The url of the `openExternal` request.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "PaymentDiscount",
    "description": "",
    "slug": "payment-discount",
    "websiteUrl": "https://electronjs.org/docs/api/structures/payment-discount",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/payment-discount.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "identifier",
        "description": "A string used to uniquely identify a discount offer for a product.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "keyIdentifier",
        "description": "A string that identifies the key used to generate the signature.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "nonce",
        "description": "A universally unique ID (UUID) value that you define.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "signature",
        "description": "A UTF-8 string representing the properties of a specific discount offer, cryptographically signed.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "timestamp",
        "description": "The date and time of the signature's creation in milliseconds, formatted in Unix epoch time.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "PermissionRequest",
    "description": "",
    "slug": "permission-request",
    "websiteUrl": "https://electronjs.org/docs/api/structures/permission-request",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/permission-request.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "requestingUrl",
        "description": "The last URL the requesting frame loaded.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "isMainFrame",
        "description": "Whether the frame making the request is the main frame.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "Point",
    "description": "**Note:** Both `x` and `y` must be whole integers, when providing a point object as input to an Electron API we will automatically round your `x` and `y` values to the nearest whole integer.",
    "slug": "point",
    "websiteUrl": "https://electronjs.org/docs/api/structures/point",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/point.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "x",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "y",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "PostBody",
    "description": "",
    "slug": "post-body",
    "websiteUrl": "https://electronjs.org/docs/api/structures/post-body",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/post-body.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "data",
        "description": "The post data to be sent to the new window.",
        "required": true,
        "additionalTags": [],
        "collection": true,
        "type": [
          {
            "collection": false,
            "type": "UploadRawData"
          },
          {
            "collection": false,
            "type": "UploadFile"
          }
        ]
      },
      {
        "name": "contentType",
        "description": "The `content-type` header used for the data. One of `application/x-www-form-urlencoded` or `multipart/form-data`. Corresponds to the `enctype` attribute of the submitted HTML form.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "boundary",
        "description": "The boundary used to separate multiple parts of the message. Only valid when `contentType` is `multipart/form-data`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "PrinterInfo",
    "description": "",
    "slug": "printer-info",
    "websiteUrl": "https://electronjs.org/docs/api/structures/printer-info",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/printer-info.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "name",
        "description": "the name of the printer as understood by the OS.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "displayName",
        "description": "the name of the printer as shown in Print Preview.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "description",
        "description": "a longer description of the printer's type.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "status",
        "description": "the current status of the printer.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "isDefault",
        "description": "whether or not a given printer is set as the default printer on the OS.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "options",
        "description": "an object containing a variable number of platform-specific printer information.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Object",
        "properties": []
      }
    ]
  },
  {
    "type": "Structure",
    "name": "ProcessMemoryInfo",
    "description": "",
    "slug": "process-memory-info",
    "websiteUrl": "https://electronjs.org/docs/api/structures/process-memory-info",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/process-memory-info.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "residentSet",
        "description": "The amount of memory currently pinned to actual physical RAM in Kilobytes.",
        "required": true,
        "additionalTags": [
          "os_linux",
          "os_windows"
        ],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "private",
        "description": "The amount of memory not shared by other processes, such as JS heap or HTML content in Kilobytes.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "shared",
        "description": "The amount of memory shared between processes, typically memory consumed by the Electron code itself in Kilobytes.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "ProcessMetric",
    "description": "",
    "slug": "process-metric",
    "websiteUrl": "https://electronjs.org/docs/api/structures/process-metric",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/process-metric.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "pid",
        "description": "Process id of the process.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "type",
        "description": "Process type. One of the following values:",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "Browser",
            "description": ""
          },
          {
            "value": "Tab",
            "description": ""
          },
          {
            "value": "Utility",
            "description": ""
          },
          {
            "value": "Zygote",
            "description": ""
          },
          {
            "value": "Sandbox helper",
            "description": ""
          },
          {
            "value": "GPU",
            "description": ""
          },
          {
            "value": "Pepper Plugin",
            "description": ""
          },
          {
            "value": "Pepper Plugin Broker",
            "description": ""
          },
          {
            "value": "Unknown",
            "description": ""
          }
        ]
      },
      {
        "name": "serviceName",
        "description": "The non-localized name of the process.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "name",
        "description": "The name of the process. Examples for utility: `Audio Service`, `Content Decryption Module Service`, `Network Service`, `Video Capture`, etc.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "cpu",
        "description": "CPU usage of the process.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "CPUUsage"
      },
      {
        "name": "creationTime",
        "description": "Creation time for this process. The time is represented as number of milliseconds since epoch. Since the `pid` can be reused after a process dies, it is useful to use both the `pid` and the `creationTime` to uniquely identify a process.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "memory",
        "description": "Memory information for the process.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "MemoryInfo"
      },
      {
        "name": "sandboxed",
        "description": "Whether the process is sandboxed on OS level.",
        "required": false,
        "additionalTags": [
          "os_macos",
          "os_windows"
        ],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "integrityLevel",
        "description": "One of the following values:",
        "required": false,
        "additionalTags": [
          "os_windows"
        ],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "untrusted",
            "description": ""
          },
          {
            "value": "low",
            "description": ""
          },
          {
            "value": "medium",
            "description": ""
          },
          {
            "value": "high",
            "description": ""
          },
          {
            "value": "unknown",
            "description": ""
          }
        ]
      }
    ]
  },
  {
    "type": "Structure",
    "name": "ProductDiscount",
    "description": "",
    "slug": "product-discount",
    "websiteUrl": "https://electronjs.org/docs/api/structures/product-discount",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/product-discount.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "identifier",
        "description": "A string used to uniquely identify a discount offer for a product.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "type",
        "description": "The type of discount offer.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "price",
        "description": "The discount price of the product in the local currency.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "priceLocale",
        "description": "The locale used to format the discount price of the product.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "paymentMode",
        "description": "The payment mode for this product discount. Can be `payAsYouGo`, `payUpFront`, or `freeTrial`.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "payAsYouGo",
            "description": ""
          },
          {
            "value": "payUpFront",
            "description": ""
          },
          {
            "value": "freeTrial",
            "description": ""
          }
        ]
      },
      {
        "name": "numberOfPeriods",
        "description": "An integer that indicates the number of periods the product discount is available.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "subscriptionPeriod",
        "description": "An object that defines the period for the product discount.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "ProductSubscriptionPeriod"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "ProductSubscriptionPeriod",
    "description": "",
    "slug": "product-subscription-period",
    "websiteUrl": "https://electronjs.org/docs/api/structures/product-subscription-period",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/product-subscription-period.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "numberOfUnits",
        "description": "The number of units per subscription period.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "unit",
        "description": "The increment of time that a subscription period is specified in. Can be `day`, `week`, `month`, `year`.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "day",
            "description": ""
          },
          {
            "value": "week",
            "description": ""
          },
          {
            "value": "month",
            "description": ""
          },
          {
            "value": "year",
            "description": ""
          }
        ]
      }
    ]
  },
  {
    "type": "Structure",
    "name": "Product",
    "description": "",
    "slug": "product",
    "websiteUrl": "https://electronjs.org/docs/api/structures/product",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/product.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "productIdentifier",
        "description": "The string that identifies the product to the Apple App Store.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "localizedDescription",
        "description": "A description of the product.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "localizedTitle",
        "description": "The name of the product.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "price",
        "description": "The cost of the product in the local currency.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "formattedPrice",
        "description": "The locale formatted price of the product.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "currencyCode",
        "description": "3 character code presenting a product's currency based on the ISO 4217 standard.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "introductoryPrice",
        "description": "The object containing introductory price information for the product. available for the product.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "ProductDiscount"
      },
      {
        "name": "discounts",
        "description": "An array of discount offers",
        "required": true,
        "additionalTags": [],
        "collection": true,
        "type": "ProductDiscount"
      },
      {
        "name": "subscriptionGroupIdentifier",
        "description": "The identifier of the subscription group to which the subscription belongs.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "subscriptionPeriod",
        "description": "The period details for products that are subscriptions.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "ProductSubscriptionPeriod"
      },
      {
        "name": "isDownloadable",
        "description": "A boolean value that indicates whether the App Store has downloadable content for this product. `true` if at least one file has been associated with the product.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "downloadContentVersion",
        "description": "A string that identifies the version of the content.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "downloadContentLengths",
        "description": "The total size of the content, in bytes.",
        "required": true,
        "additionalTags": [],
        "collection": true,
        "type": "number"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "ProtocolRequest",
    "description": "",
    "slug": "protocol-request",
    "websiteUrl": "https://electronjs.org/docs/api/structures/protocol-request",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/protocol-request.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "url",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "referrer",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "method",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "uploadData",
        "description": "",
        "required": false,
        "additionalTags": [],
        "collection": true,
        "type": "UploadData"
      },
      {
        "name": "headers",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Record",
        "innerTypes": [
          {
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ]
      }
    ]
  },
  {
    "type": "Structure",
    "name": "ProtocolResponseUploadData",
    "description": "",
    "slug": "protocol-response-upload-data",
    "websiteUrl": "https://electronjs.org/docs/api/structures/protocol-response-upload-data",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/protocol-response-upload-data.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "contentType",
        "description": "MIME type of the content.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "data",
        "description": "Content to be sent.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "collection": false,
            "type": "Buffer"
          }
        ]
      }
    ]
  },
  {
    "type": "Structure",
    "name": "ProtocolResponse",
    "description": "",
    "slug": "protocol-response",
    "websiteUrl": "https://electronjs.org/docs/api/structures/protocol-response",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/protocol-response.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "error",
        "description": "When assigned, the `request` will fail with the `error` number . For the available error numbers you can use, please see the net error list.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "statusCode",
        "description": "The HTTP response code, default is 200.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "charset",
        "description": "The charset of response body, default is `\"utf-8\"`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "mimeType",
        "description": "The MIME type of response body, default is `\"text/html\"`. Setting `mimeType` would implicitly set the `content-type` header in response, but if `content-type` is already set in `headers`, the `mimeType` would be ignored.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "headers",
        "description": "An object containing the response headers. The keys must be string, and values must be either string or Array of string.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Record",
        "innerTypes": [
          {
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "collection": false,
            "type": [
              {
                "collection": false,
                "type": "String",
                "possibleValues": null
              },
              {
                "collection": true,
                "type": "String",
                "possibleValues": null
              }
            ]
          }
        ]
      },
      {
        "name": "data",
        "description": "The response body. When returning stream as response, this is a Node.js readable stream representing the response body. When returning `Buffer` as response, this is a `Buffer`. When returning `string` as response, this is a `string`. This is ignored for other types of responses.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": [
          {
            "collection": false,
            "type": "Buffer"
          },
          {
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "collection": false,
            "type": "ReadableStream"
          }
        ]
      },
      {
        "name": "path",
        "description": "Path to the file which would be sent as response body. This is only used for file responses.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "url",
        "description": "Download the `url` and pipe the result as response body. This is only used for URL responses.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "referrer",
        "description": "The `referrer` URL. This is only used for file and URL responses.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "method",
        "description": "The HTTP `method`. This is only used for file and URL responses.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "session",
        "description": "The session used for requesting URL, by default the HTTP request will reuse the current session. Setting `session` to `null` would use a random independent session. This is only used for URL responses.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Session"
      },
      {
        "name": "uploadData",
        "description": "The data used as upload data. This is only used for URL responses when `method` is `\"POST\"`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "ProtocolResponseUploadData"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "ProxyConfig",
    "description": "When `mode` is unspecified, `pacScript` and `proxyRules` are provided together, the `proxyRules` option is ignored and `pacScript` configuration is applied.\n\nThe `proxyRules` has to follow the rules below:\n\nFor example:\n\n* `http=foopy:80;ftp=foopy2` - Use HTTP proxy `foopy:80` for `http://` URLs, and HTTP proxy `foopy2:80` for `ftp://` URLs.\n* `foopy:80` - Use HTTP proxy `foopy:80` for all URLs.\n* `foopy:80,bar,direct://` - Use HTTP proxy `foopy:80` for all URLs, failing over to `bar` if `foopy:80` is unavailable, and after that using no proxy.\n* `socks4://foopy` - Use SOCKS v4 proxy `foopy:1080` for all URLs.\n* `http=foopy,socks5://bar.com` - Use HTTP proxy `foopy` for http URLs, and fail over to the SOCKS5 proxy `bar.com` if `foopy` is unavailable.\n* `http=foopy,direct://` - Use HTTP proxy `foopy` for http URLs, and use no proxy if `foopy` is unavailable.\n* `http=foopy;socks=foopy2` - Use HTTP proxy `foopy` for http URLs, and use `socks4://foopy2` for all other URLs.\n\nThe `proxyBypassRules` is a comma separated list of rules described below:\n\n* `[ URL_SCHEME \"://\" ] HOSTNAME_PATTERN [ \":\" <port> ]`\n\nMatch all hostnames that match the pattern HOSTNAME_PATTERN.\n\nExamples: \"foobar.com\", \"*foobar.com\", \"*.foobar.com\", \"*foobar.com:99\", \"https://x.*.y.com:99\"\n* `\".\" HOSTNAME_SUFFIX_PATTERN [ \":\" PORT ]`\n\nMatch a particular domain suffix.\n\nExamples: \".google.com\", \".com\", \"http://.google.com\"\n* `[ SCHEME \"://\" ] IP_LITERAL [ \":\" PORT ]`\n\nMatch URLs which are IP address literals.\n\nExamples: \"127.0.1\", \"[0:0::1]\", \"[::1]\", \"http://[::1]:99\"\n* `IP_LITERAL \"/\" PREFIX_LENGTH_IN_BITS`\n\nMatch any URL that is to an IP literal that falls between the given range. IP range is specified using CIDR notation.\n\nExamples: \"192.168.1.1/16\", \"fefe:13::abc/33\".\n* `<local>`\n\nMatch local addresses. The meaning of `<local>` is whether the host matches one of: \"127.0.0.1\", \"::1\", \"localhost\".",
    "slug": "proxy-config",
    "websiteUrl": "https://electronjs.org/docs/api/structures/proxy-config",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/proxy-config.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "mode",
        "description": "The proxy mode. Should be one of `direct`, `auto_detect`, `pac_script`, `fixed_servers` or `system`. Defaults to `pac_script` proxy mode if `pacScript` option is specified otherwise defaults to `fixed_servers`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "direct",
            "description": "In direct mode all connections are created directly, without any proxy involved."
          },
          {
            "value": "auto_detect",
            "description": "In auto_detect mode the proxy configuration is determined by a PAC script that can be downloaded at http://wpad/wpad.dat."
          },
          {
            "value": "pac_script",
            "description": "In pac_script mode the proxy configuration is determined by a PAC script that is retrieved from the URL specified in the `pacScript`. This is the default mode if `pacScript` is specified."
          },
          {
            "value": "fixed_servers",
            "description": "In fixed_servers mode the proxy configuration is specified in `proxyRules`. This is the default mode if `proxyRules` is specified."
          },
          {
            "value": "system",
            "description": "In system mode the proxy configuration is taken from the operating system. Note that the system mode is different from setting no proxy configuration. In the latter case, Electron falls back to the system settings only if no command-line options influence the proxy configuration."
          }
        ]
      },
      {
        "name": "pacScript",
        "description": "The URL associated with the PAC file.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "proxyRules",
        "description": "Rules indicating which proxies to use.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "proxyBypassRules",
        "description": "Rules indicating which URLs should bypass the proxy settings.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "Rectangle",
    "description": "",
    "slug": "rectangle",
    "websiteUrl": "https://electronjs.org/docs/api/structures/rectangle",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/rectangle.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "x",
        "description": "The x coordinate of the origin of the rectangle (must be an integer).",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "y",
        "description": "The y coordinate of the origin of the rectangle (must be an integer).",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "width",
        "description": "The width of the rectangle (must be an integer).",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "height",
        "description": "The height of the rectangle (must be an integer).",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "Referrer",
    "description": "",
    "slug": "referrer",
    "websiteUrl": "https://electronjs.org/docs/api/structures/referrer",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/referrer.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "url",
        "description": "HTTP Referrer URL.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "policy",
        "description": "Can be `default`, `unsafe-url`, `no-referrer-when-downgrade`, `no-referrer`, `origin`, `strict-origin-when-cross-origin`, `same-origin` or `strict-origin`. See the Referrer-Policy spec for more details on the meaning of these values.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "default",
            "description": ""
          },
          {
            "value": "unsafe-url",
            "description": ""
          },
          {
            "value": "no-referrer-when-downgrade",
            "description": ""
          },
          {
            "value": "no-referrer",
            "description": ""
          },
          {
            "value": "origin",
            "description": ""
          },
          {
            "value": "strict-origin-when-cross-origin",
            "description": ""
          },
          {
            "value": "same-origin",
            "description": ""
          },
          {
            "value": "strict-origin",
            "description": ""
          }
        ]
      }
    ]
  },
  {
    "type": "Structure",
    "name": "RenderProcessGoneDetails",
    "description": "",
    "slug": "render-process-gone-details",
    "websiteUrl": "https://electronjs.org/docs/api/structures/render-process-gone-details",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/render-process-gone-details.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "reason",
        "description": "The reason the render process is gone.  Possible values:",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "clean-exit",
            "description": "Process exited with an exit code of zero"
          },
          {
            "value": "abnormal-exit",
            "description": "Process exited with a non-zero exit code"
          },
          {
            "value": "killed",
            "description": "Process was sent a SIGTERM or otherwise killed externally"
          },
          {
            "value": "crashed",
            "description": "Process crashed"
          },
          {
            "value": "oom",
            "description": "Process ran out of memory"
          },
          {
            "value": "launch-failed",
            "description": "Process never successfully launched"
          },
          {
            "value": "integrity-failure",
            "description": "Windows code integrity checks failed"
          }
        ]
      },
      {
        "name": "exitCode",
        "description": "The exit code of the process, unless `reason` is `launch-failed`, in which case `exitCode` will be a platform-specific launch failure error code.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "ResolvedEndpoint",
    "description": "",
    "slug": "resolved-endpoint",
    "websiteUrl": "https://electronjs.org/docs/api/structures/resolved-endpoint",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/resolved-endpoint.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "address",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "family",
        "description": "One of the following:",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "ipv4",
            "description": "Corresponds to `AF_INET`"
          },
          {
            "value": "ipv6",
            "description": "Corresponds to `AF_INET6`"
          },
          {
            "value": "unspec",
            "description": "Corresponds to `AF_UNSPEC`"
          }
        ]
      }
    ]
  },
  {
    "type": "Structure",
    "name": "ResolvedHost",
    "description": "",
    "slug": "resolved-host",
    "websiteUrl": "https://electronjs.org/docs/api/structures/resolved-host",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/resolved-host.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "endpoints",
        "description": "resolved DNS entries for the hostname",
        "required": true,
        "additionalTags": [],
        "collection": true,
        "type": "ResolvedEndpoint"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "ScrubberItem",
    "description": "",
    "slug": "scrubber-item",
    "websiteUrl": "https://electronjs.org/docs/api/structures/scrubber-item",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/scrubber-item.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "label",
        "description": "The text to appear in this item.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "icon",
        "description": "The image to appear in this item.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "NativeImage"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "SegmentedControlSegment",
    "description": "",
    "slug": "segmented-control-segment",
    "websiteUrl": "https://electronjs.org/docs/api/structures/segmented-control-segment",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/segmented-control-segment.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "label",
        "description": "The text to appear in this segment.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "icon",
        "description": "The image to appear in this segment.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "NativeImage"
      },
      {
        "name": "enabled",
        "description": "Whether this segment is selectable. Default: true.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "SerialPort",
    "description": "",
    "slug": "serial-port",
    "websiteUrl": "https://electronjs.org/docs/api/structures/serial-port",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/serial-port.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "portId",
        "description": "Unique identifier for the port.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "portName",
        "description": "Name of the port.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "displayName",
        "description": "A string suitable for display to the user for describing this device.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "vendorId",
        "description": "The USB vendor ID.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "productId",
        "description": "The USB product ID.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "serialNumber",
        "description": "The USB device serial number.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "usbDriverName",
        "description": "Represents a single serial port on macOS can be enumerated by multiple drivers.",
        "required": false,
        "additionalTags": [
          "os_macos"
        ],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "deviceInstanceId",
        "description": "A stable identifier on Windows that can be used for device permissions.",
        "required": false,
        "additionalTags": [
          "os_windows"
        ],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "ServiceWorkerInfo",
    "description": "",
    "slug": "service-worker-info",
    "websiteUrl": "https://electronjs.org/docs/api/structures/service-worker-info",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/service-worker-info.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "scriptUrl",
        "description": "The full URL to the script that this service worker runs",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "scope",
        "description": "The base URL that this service worker is active for.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "renderProcessId",
        "description": "The virtual ID of the process that this service worker is running in.  This is not an OS level PID.  This aligns with the ID set used for `webContents.getProcessId()`.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "SharedWorkerInfo",
    "description": "",
    "slug": "shared-worker-info",
    "websiteUrl": "https://electronjs.org/docs/api/structures/shared-worker-info",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/shared-worker-info.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "id",
        "description": "The unique id of the shared worker.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "url",
        "description": "The url of the shared worker.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "SharingItem",
    "description": "",
    "slug": "sharing-item",
    "websiteUrl": "https://electronjs.org/docs/api/structures/sharing-item",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/sharing-item.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "texts",
        "description": "An array of text to share.",
        "required": false,
        "additionalTags": [],
        "collection": true,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "filePaths",
        "description": "An array of files to share.",
        "required": false,
        "additionalTags": [],
        "collection": true,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "urls",
        "description": "An array of URLs to share.",
        "required": false,
        "additionalTags": [],
        "collection": true,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "ShortcutDetails",
    "description": "",
    "slug": "shortcut-details",
    "websiteUrl": "https://electronjs.org/docs/api/structures/shortcut-details",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/shortcut-details.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "target",
        "description": "The target to launch from this shortcut.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "cwd",
        "description": "The working directory. Default is empty.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "args",
        "description": "The arguments to be applied to `target` when launching from this shortcut. Default is empty.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "description",
        "description": "The description of the shortcut. Default is empty.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "icon",
        "description": "The path to the icon, can be a DLL or EXE. `icon` and `iconIndex` have to be set together. Default is empty, which uses the target's icon.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "iconIndex",
        "description": "The resource ID of icon when `icon` is a DLL or EXE. Default is 0.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "appUserModelId",
        "description": "The Application User Model ID. Default is empty.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "toastActivatorClsid",
        "description": "The Application Toast Activator CLSID. Needed for participating in Action Center.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "Size",
    "description": "",
    "slug": "size",
    "websiteUrl": "https://electronjs.org/docs/api/structures/size",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/size.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "width",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "height",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "Task",
    "description": "",
    "slug": "task",
    "websiteUrl": "https://electronjs.org/docs/api/structures/task",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/task.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "program",
        "description": "Path of the program to execute, usually you should specify `process.execPath` which opens the current program.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "arguments",
        "description": "The command line arguments when `program` is executed.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "title",
        "description": "The string to be displayed in a JumpList.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "description",
        "description": "Description of this task.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "iconPath",
        "description": "The absolute path to an icon to be displayed in a JumpList, which can be an arbitrary resource file that contains an icon. You can usually specify `process.execPath` to show the icon of the program.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "iconIndex",
        "description": "The icon index in the icon file. If an icon file consists of two or more icons, set this value to identify the icon. If an icon file consists of one icon, this value is 0.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "workingDirectory",
        "description": "The working directory. Default is empty.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "ThumbarButton",
    "description": "The `flags` is an array that can include following `string`s:\n\n* `enabled` - The button is active and available to the user.\n* `disabled` - The button is disabled. It is present, but has a visual state indicating it will not respond to user action.\n* `dismissonclick` - When the button is clicked, the thumbnail window closes immediately.\n* `nobackground` - Do not draw a button border, use only the image.\n* `hidden` - The button is not shown to the user.\n* `noninteractive` - The button is enabled but not interactive; no pressed button state is drawn. This value is intended for instances where the button is used in a notification.",
    "slug": "thumbar-button",
    "websiteUrl": "https://electronjs.org/docs/api/structures/thumbar-button",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/thumbar-button.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "icon",
        "description": "The icon showing in thumbnail toolbar.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "NativeImage"
      },
      {
        "name": "click",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Function",
        "parameters": [],
        "returns": null
      },
      {
        "name": "tooltip",
        "description": "The text of the button's tooltip.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "flags",
        "description": "Control specific states and behaviors of the button. By default, it is `['enabled']`.",
        "required": false,
        "additionalTags": [],
        "collection": true,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "TraceCategoriesAndOptions",
    "description": "",
    "slug": "trace-categories-and-options",
    "websiteUrl": "https://electronjs.org/docs/api/structures/trace-categories-and-options",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/trace-categories-and-options.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "categoryFilter",
        "description": "A filter to control what category groups should be traced. A filter can have an optional '-' prefix to exclude category groups that contain a matching category. Having both included and excluded category patterns in the same list is not supported. Examples: `test_MyTest*`, `test_MyTest*,test_OtherStuff`, `-excluded_category1,-excluded_category2`.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "traceOptions",
        "description": "Controls what kind of tracing is enabled, it is a comma-delimited sequence of the following strings: `record-until-full`, `record-continuously`, `trace-to-console`, `enable-sampling`, `enable-systrace`, e.g. `'record-until-full,enable-sampling'`. The first 3 options are trace recording modes and hence mutually exclusive. If more than one trace recording modes appear in the `traceOptions` string, the last one takes precedence. If none of the trace recording modes are specified, recording mode is `record-until-full`. The trace option will first be reset to the default option (`record_mode` set to `record-until-full`, `enable_sampling` and `enable_systrace` set to `false`) before options parsed from `traceOptions` are applied on it.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "TraceConfig",
    "description": "An example TraceConfig that roughly matches what Chrome DevTools records:",
    "slug": "trace-config",
    "websiteUrl": "https://electronjs.org/docs/api/structures/trace-config",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/trace-config.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "recording_mode",
        "description": "Can be `record-until-full`, `record-continuously`, `record-as-much-as-possible` or `trace-to-console`. Defaults to `record-until-full`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "record-until-full",
            "description": ""
          },
          {
            "value": "record-continuously",
            "description": ""
          },
          {
            "value": "record-as-much-as-possible",
            "description": ""
          },
          {
            "value": "trace-to-console",
            "description": ""
          }
        ]
      },
      {
        "name": "trace_buffer_size_in_kb",
        "description": "maximum size of the trace recording buffer in kilobytes. Defaults to 100MB.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "trace_buffer_size_in_events",
        "description": "maximum size of the trace recording buffer in events.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "enable_argument_filter",
        "description": "if true, filter event data according to a specific list of events that have been manually vetted to not include any PII. See the implementation in Chromium for specifics.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "included_categories",
        "description": "a list of tracing categories to include. Can include glob-like patterns using `*` at the end of the category name. See tracing categories for the list of categories.",
        "required": false,
        "additionalTags": [],
        "collection": true,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "excluded_categories",
        "description": "a list of tracing categories to exclude. Can include glob-like patterns using `*` at the end of the category name. See tracing categories for the list of categories.",
        "required": false,
        "additionalTags": [],
        "collection": true,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "included_process_ids",
        "description": "a list of process IDs to include in the trace. If not specified, trace all processes.",
        "required": false,
        "additionalTags": [],
        "collection": true,
        "type": "number"
      },
      {
        "name": "histogram_names",
        "description": "a list of histogram names to report with the trace.",
        "required": false,
        "additionalTags": [],
        "collection": true,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "memory_dump_config",
        "description": "if the `disabled-by-default-memory-infra` category is enabled, this contains optional additional configuration for data collection. See the Chromium memory-infra docs for more information.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Record",
        "innerTypes": [
          {
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "collection": false,
            "type": "any"
          }
        ]
      }
    ]
  },
  {
    "type": "Structure",
    "name": "Transaction",
    "description": "",
    "slug": "transaction",
    "websiteUrl": "https://electronjs.org/docs/api/structures/transaction",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/transaction.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "transactionIdentifier",
        "description": "A string that uniquely identifies a successful payment transaction.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "transactionDate",
        "description": "The date the transaction was added to the App Store’s payment queue.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "originalTransactionIdentifier",
        "description": "The identifier of the restored transaction by the App Store.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "transactionState",
        "description": "The transaction state, can be `purchasing`, `purchased`, `failed`, `restored` or `deferred`.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "purchasing",
            "description": ""
          },
          {
            "value": "purchased",
            "description": ""
          },
          {
            "value": "failed",
            "description": ""
          },
          {
            "value": "restored",
            "description": ""
          },
          {
            "value": "deferred",
            "description": ""
          }
        ]
      },
      {
        "name": "errorCode",
        "description": "The error code if an error occurred while processing the transaction.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "errorMessage",
        "description": "The error message if an error occurred while processing the transaction.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "payment",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Object",
        "properties": [
          {
            "name": "productIdentifier",
            "description": "The identifier of the purchased product.",
            "required": true,
            "additionalTags": [],
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "quantity",
            "description": "The quantity purchased.",
            "required": true,
            "additionalTags": [],
            "collection": false,
            "type": "Integer"
          },
          {
            "name": "applicationUsername",
            "description": "An opaque identifier for the user’s account on your system.",
            "required": true,
            "additionalTags": [],
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "paymentDiscount",
            "description": "The details of the discount offer to apply to the payment.",
            "required": false,
            "additionalTags": [],
            "collection": false,
            "type": "PaymentDiscount"
          }
        ]
      }
    ]
  },
  {
    "type": "Structure",
    "name": "UploadData",
    "description": "",
    "slug": "upload-data",
    "websiteUrl": "https://electronjs.org/docs/api/structures/upload-data",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/upload-data.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "bytes",
        "description": "Content being sent.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Buffer"
      },
      {
        "name": "file",
        "description": "Path of file being uploaded.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "blobUUID",
        "description": "UUID of blob data. Use ses.getBlobData method to retrieve the data.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "UploadFile",
    "description": "",
    "slug": "upload-file",
    "websiteUrl": "https://electronjs.org/docs/api/structures/upload-file",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/upload-file.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "type",
        "description": "`file`.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "'file'"
      },
      {
        "name": "filePath",
        "description": "Path of file to be uploaded.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "offset",
        "description": "Defaults to `0`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "length",
        "description": "Number of bytes to read from `offset`. Defaults to `0`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "modificationTime",
        "description": "Last Modification time in number of seconds since the UNIX epoch. Defaults to `0`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Double"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "UploadRawData",
    "description": "",
    "slug": "upload-raw-data",
    "websiteUrl": "https://electronjs.org/docs/api/structures/upload-raw-data",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/upload-raw-data.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "type",
        "description": "`rawData`.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "'rawData'"
      },
      {
        "name": "bytes",
        "description": "Data to be uploaded.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Buffer"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "USBDevice",
    "description": "",
    "slug": "usb-device",
    "websiteUrl": "https://electronjs.org/docs/api/structures/usb-device",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/usb-device.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "deviceId",
        "description": "Unique identifier for the device.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "vendorId",
        "description": "The USB vendor ID.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "productId",
        "description": "The USB product ID.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "productName",
        "description": "Name of the device.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "serialNumber",
        "description": "The USB device serial number.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "manufacturerName",
        "description": "The manufacturer name of the device.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "usbVersionMajor",
        "description": "The USB protocol major version supported by the device",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "usbVersionMinor",
        "description": "The USB protocol minor version supported by the device",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "usbVersionSubminor",
        "description": "The USB protocol subminor version supported by the device",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "deviceClass",
        "description": "The device class for the communication interface supported by the device",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "deviceSubclass",
        "description": "The device subclass for the communication interface supported by the device",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "deviceProtocol",
        "description": "The device protocol for the communication interface supported by the device",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "deviceVersionMajor",
        "description": "The major version number of the device as defined by the device manufacturer.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "deviceVersionMinor",
        "description": "The minor version number of the device as defined by the device manufacturer.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "deviceVersionSubminor",
        "description": "The subminor version number of the device as defined by the device manufacturer.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "UserDefaultTypes",
    "description": "This type is a helper alias, no object will ever exist of this type.",
    "slug": "user-default-types",
    "websiteUrl": "https://electronjs.org/docs/api/structures/user-default-types",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/user-default-types.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "string",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "boolean",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "integer",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "float",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "double",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "url",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "array",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Array",
        "innerTypes": [
          {
            "collection": false,
            "type": "unknown"
          }
        ]
      },
      {
        "name": "dictionary",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "Record",
        "innerTypes": [
          {
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "collection": false,
            "type": "unknown"
          }
        ]
      }
    ]
  },
  {
    "type": "Structure",
    "name": "WebPreferences",
    "description": "",
    "slug": "web-preferences",
    "websiteUrl": "https://electronjs.org/docs/api/structures/web-preferences",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/web-preferences.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "devTools",
        "description": "Whether to enable DevTools. If it is set to `false`, can not use `BrowserWindow.webContents.openDevTools()` to open DevTools. Default is `true`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "nodeIntegration",
        "description": "Whether node integration is enabled. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "nodeIntegrationInWorker",
        "description": "Whether node integration is enabled in web workers. Default is `false`. More about this can be found in Multithreading.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "nodeIntegrationInSubFrames",
        "description": "Experimental option for enabling Node.js support in sub-frames such as iframes and child windows. All your preloads will load for every iframe, you can use `process.isMainFrame` to determine if you are in the main frame or not.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "preload",
        "description": "Specifies a script that will be loaded before other scripts run in the page. This script will always have access to node APIs no matter whether node integration is turned on or off. The value should be the absolute file path to the script. When node integration is turned off, the preload script can reintroduce Node global symbols back to the global scope. See example here.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "sandbox",
        "description": "If set, this will sandbox the renderer associated with the window, making it compatible with the Chromium OS-level sandbox and disabling the Node.js engine. This is not the same as the `nodeIntegration` option and the APIs available to the preload script are more limited. Read more about the option here.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "session",
        "description": "Sets the session used by the page. Instead of passing the Session object directly, you can also choose to use the `partition` option instead, which accepts a partition string. When both `session` and `partition` are provided, `session` will be preferred. Default is the default session.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Session"
      },
      {
        "name": "partition",
        "description": "Sets the session used by the page according to the session's partition string. If `partition` starts with `persist:`, the page will use a persistent session available to all pages in the app with the same `partition`. If there is no `persist:` prefix, the page will use an in-memory session. By assigning the same `partition`, multiple pages can share the same session. Default is the default session.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "zoomFactor",
        "description": "The default zoom factor of the page, `3.0` represents `300%`. Default is `1.0`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "number"
      },
      {
        "name": "javascript",
        "description": "Enables JavaScript support. Default is `true`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "webSecurity",
        "description": "When `false`, it will disable the same-origin policy (usually using testing websites by people), and set `allowRunningInsecureContent` to `true` if this options has not been set by user. Default is `true`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "allowRunningInsecureContent",
        "description": "Allow an https page to run JavaScript, CSS or plugins from http URLs. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "images",
        "description": "Enables image support. Default is `true`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "imageAnimationPolicy",
        "description": "Specifies how to run image animations (E.g. GIFs).  Can be `animate`, `animateOnce` or `noAnimation`.  Default is `animate`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "animate",
            "description": ""
          },
          {
            "value": "animateOnce",
            "description": ""
          },
          {
            "value": "noAnimation",
            "description": ""
          }
        ]
      },
      {
        "name": "textAreasAreResizable",
        "description": "Make TextArea elements resizable. Default is `true`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "webgl",
        "description": "Enables WebGL support. Default is `true`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "plugins",
        "description": "Whether plugins should be enabled. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "experimentalFeatures",
        "description": "Enables Chromium's experimental features. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "scrollBounce",
        "description": "Enables scroll bounce (rubber banding) effect on macOS. Default is `false`.",
        "required": false,
        "additionalTags": [
          "os_macos"
        ],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "enableBlinkFeatures",
        "description": "A list of feature strings separated by `,`, like `CSSVariables,KeyboardEventKey` to enable. The full list of supported feature strings can be found in the RuntimeEnabledFeatures.json5 file.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "disableBlinkFeatures",
        "description": "A list of feature strings separated by `,`, like `CSSVariables,KeyboardEventKey` to disable. The full list of supported feature strings can be found in the RuntimeEnabledFeatures.json5 file.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "defaultFontFamily",
        "description": "Sets the default font for the font-family.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Object",
        "properties": [
          {
            "name": "standard",
            "description": "Defaults to `Times New Roman`.",
            "required": false,
            "additionalTags": [],
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "serif",
            "description": "Defaults to `Times New Roman`.",
            "required": false,
            "additionalTags": [],
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "sansSerif",
            "description": "Defaults to `Arial`.",
            "required": false,
            "additionalTags": [],
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "monospace",
            "description": "Defaults to `Courier New`.",
            "required": false,
            "additionalTags": [],
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "cursive",
            "description": "Defaults to `Script`.",
            "required": false,
            "additionalTags": [],
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "fantasy",
            "description": "Defaults to `Impact`.",
            "required": false,
            "additionalTags": [],
            "collection": false,
            "type": "String",
            "possibleValues": null
          },
          {
            "name": "math",
            "description": "Defaults to `Latin Modern Math`.",
            "required": false,
            "additionalTags": [],
            "collection": false,
            "type": "String",
            "possibleValues": null
          }
        ]
      },
      {
        "name": "defaultFontSize",
        "description": "Defaults to `16`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "defaultMonospaceFontSize",
        "description": "Defaults to `13`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "minimumFontSize",
        "description": "Defaults to `0`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "Integer"
      },
      {
        "name": "defaultEncoding",
        "description": "Defaults to `ISO-8859-1`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "backgroundThrottling",
        "description": "Whether to throttle animations and timers when the page becomes background. This also affects the Page Visibility API. When at least one webContents displayed in a single browserWindow has disabled `backgroundThrottling` then frames will be drawn and swapped for the whole window and other webContents displayed by it. Defaults to `true`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "offscreen",
        "description": "Whether to enable offscreen rendering for the browser window. Defaults to `false`. See the offscreen rendering tutorial for more details.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "contextIsolation",
        "description": "Whether to run Electron APIs and the specified `preload` script in a separate JavaScript context. Defaults to `true`. The context that the `preload` script runs in will only have access to its own dedicated `document` and `window` globals, as well as its own set of JavaScript builtins (`Array`, `Object`, `JSON`, etc.), which are all invisible to the loaded content. The Electron API will only be available in the `preload` script and not the loaded page. This option should be used when loading potentially untrusted remote content to ensure the loaded content cannot tamper with the `preload` script and any Electron APIs being used.  This option uses the same technique used by Chrome Content Scripts.  You can access this context in the dev tools by selecting the 'Electron Isolated Context' entry in the combo box at the top of the Console tab.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "webviewTag",
        "description": "Whether to enable the `<webview>` tag. Defaults to `false`. **Note:** The `preload` script configured for the `<webview>` will have node integration enabled when it is executed so you should ensure remote/untrusted content is not able to create a `<webview>` tag with a possibly malicious `preload` script. You can use the `will-attach-webview` event on webContents to strip away the `preload` script and to validate or alter the `<webview>`'s initial settings.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "additionalArguments",
        "description": "A list of strings that will be appended to `process.argv` in the renderer process of this app.  Useful for passing small bits of data down to renderer process preload scripts.",
        "required": false,
        "additionalTags": [],
        "collection": true,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "safeDialogs",
        "description": "Whether to enable browser style consecutive dialog protection. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "safeDialogsMessage",
        "description": "The message to display when consecutive dialog protection is triggered. If not defined the default message would be used, note that currently the default message is in English and not localized.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "disableDialogs",
        "description": "Whether to disable dialogs completely. Overrides `safeDialogs`. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "navigateOnDragDrop",
        "description": "Whether dragging and dropping a file or link onto the page causes a navigation. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "autoplayPolicy",
        "description": "Autoplay policy to apply to content in the window, can be `no-user-gesture-required`, `user-gesture-required`, `document-user-activation-required`. Defaults to `no-user-gesture-required`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "no-user-gesture-required",
            "description": ""
          },
          {
            "value": "user-gesture-required",
            "description": ""
          },
          {
            "value": "document-user-activation-required",
            "description": ""
          }
        ]
      },
      {
        "name": "disableHtmlFullscreenWindowResize",
        "description": "Whether to prevent the window from resizing when entering HTML Fullscreen. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "accessibleTitle",
        "description": "An alternative title string provided only to accessibility tools such as screen readers. This string is not directly visible to users.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "spellcheck",
        "description": "Whether to enable the builtin spellchecker. Default is `true`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "enableWebSQL",
        "description": "Whether to enable the WebSQL api. Default is `true`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "v8CacheOptions",
        "description": "Enforces the v8 code caching policy used by blink. Accepted values are",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "none",
            "description": "Disables code caching"
          },
          {
            "value": "code",
            "description": "Heuristic based code caching"
          },
          {
            "value": "bypassHeatCheck",
            "description": "Bypass code caching heuristics but with lazy compilation"
          },
          {
            "value": "bypassHeatCheckAndEagerCompile",
            "description": "Same as above except compilation is eager. Default policy is `code`."
          }
        ]
      },
      {
        "name": "enablePreferredSizeMode",
        "description": "Whether to enable preferred size mode. The preferred size is the minimum size needed to contain the layout of the document—without requiring scrolling. Enabling this will cause the `preferred-size-changed` event to be emitted on the `WebContents` when the preferred size changes. Default is `false`.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "transparent",
        "description": "Whether to enable background transparency for the guest page. Default is `true`. **Note:** The guest page's text and background colors are derived from the color scheme of its root element. When transparency is enabled, the text color will still change accordingly but the background will remain transparent.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      }
    ]
  },
  {
    "type": "Structure",
    "name": "WebRequestFilter",
    "description": "",
    "slug": "web-request-filter",
    "websiteUrl": "https://electronjs.org/docs/api/structures/web-request-filter",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/web-request-filter.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "urls",
        "description": "Array of URL patterns that will be used to filter out the requests that do not match the URL patterns.",
        "required": true,
        "additionalTags": [],
        "collection": true,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "types",
        "description": "Array of types that will be used to filter out the requests that do not match the types. When not specified, all types will be matched. Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media` or `webSocket`.",
        "required": false,
        "additionalTags": [],
        "collection": true,
        "type": "String",
        "possibleValues": [
          {
            "value": "mainFrame",
            "description": ""
          },
          {
            "value": "subFrame",
            "description": ""
          },
          {
            "value": "stylesheet",
            "description": ""
          },
          {
            "value": "script",
            "description": ""
          },
          {
            "value": "image",
            "description": ""
          },
          {
            "value": "font",
            "description": ""
          },
          {
            "value": "object",
            "description": ""
          },
          {
            "value": "xhr",
            "description": ""
          },
          {
            "value": "ping",
            "description": ""
          },
          {
            "value": "cspReport",
            "description": ""
          },
          {
            "value": "media",
            "description": ""
          },
          {
            "value": "webSocket",
            "description": ""
          }
        ]
      }
    ]
  },
  {
    "type": "Structure",
    "name": "WebSource",
    "description": "",
    "slug": "web-source",
    "websiteUrl": "https://electronjs.org/docs/api/structures/web-source",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/web-source.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "code",
        "description": "",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      },
      {
        "name": "url",
        "description": "",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": null
      }
    ]
  },
  {
    "type": "Structure",
    "name": "WindowOpenHandlerResponse",
    "description": "",
    "slug": "window-open-handler-response",
    "websiteUrl": "https://electronjs.org/docs/api/structures/window-open-handler-response",
    "repoUrl": "https://github.com/electron/electron/blob/v31.7.7/docs/api/structures/window-open-handler-response.md",
    "version": "31.7.7",
    "properties": [
      {
        "name": "action",
        "description": "Can be `allow` or `deny`. Controls whether new window should be created.",
        "required": true,
        "additionalTags": [],
        "collection": false,
        "type": "String",
        "possibleValues": [
          {
            "value": "allow",
            "description": ""
          },
          {
            "value": "deny",
            "description": ""
          }
        ]
      },
      {
        "name": "overrideBrowserWindowOptions",
        "description": "Allows customization of the created window.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "BrowserWindowConstructorOptions"
      },
      {
        "name": "outlivesOpener",
        "description": "By default, child windows are closed when their opener is closed. This can be changed by specifying `outlivesOpener: true`, in which case the opened window will not be closed when its opener is closed.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "boolean"
      },
      {
        "name": "createWindow",
        "description": "If specified, will be called instead of `new BrowserWindow` to create the new child window and event `did-create-window` will not be emitted. Constructed child window should use passed `options` object. This can be used for example to have the new window open as a BrowserView instead of in a separate window.",
        "required": false,
        "additionalTags": [],
        "collection": false,
        "type": "(options: BrowserWindowConstructorOptions) => WebContents"
      }
    ]
  }
]