move linting work to electron-docs-linter's new CLI
authorZeke Sikelianos <zeke@sikelianos.com>
Thu, 14 Jul 2016 23:35:40 +0000 (16:35 -0700)
committerZeke Sikelianos <zeke@sikelianos.com>
Fri, 9 Sep 2016 17:07:22 +0000 (10:07 -0700)
docs/api.json [deleted file]
package.json
script/lint-docs.js [deleted file]

diff --git a/docs/api.json b/docs/api.json
deleted file mode 100644 (file)
index 4baf3a2..0000000
+++ /dev/null
@@ -1,6217 +0,0 @@
-[
-  {
-    "name": "clipboard",
-    "description": "Perform copy and paste operations on the system clipboard.",
-    "process": {
-      "main": true,
-      "renderer": true
-    },
-    "type": "Object",
-    "slug": "clipboard",
-    "websiteUrl": "http://electron.atom.io/docs/api/clipboard",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/clipboard.md",
-    "methods": [
-      {
-        "name": "readText",
-        "signature": "([type])",
-        "description": "Returns the content in the clipboard as plain text.",
-        "arguments": [
-          {
-            "name": "type",
-            "type": "String",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "writeText",
-        "signature": "(text[, type])",
-        "description": "Writes the text into the clipboard as plain text.",
-        "arguments": [
-          {
-            "name": "text",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "type",
-            "type": "String",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "readHTML",
-        "signature": "([type])",
-        "description": "Returns the content in the clipboard as markup.",
-        "arguments": [
-          {
-            "name": "type",
-            "type": "String",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "writeHTML",
-        "signature": "(markup[, type])",
-        "description": "Writes markup to the clipboard.",
-        "arguments": [
-          {
-            "name": "markup",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "type",
-            "type": "String",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "readImage",
-        "signature": "([type])",
-        "description": "Returns the content in the clipboard as a NativeImage.",
-        "arguments": [
-          {
-            "name": "type",
-            "type": "String",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "writeImage",
-        "signature": "(image[, type])",
-        "description": "Writes image to the clipboard.",
-        "arguments": [
-          {
-            "name": "image",
-            "type": "NativeImage",
-            "required": true
-          },
-          {
-            "name": "type",
-            "type": "String",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "readRTF",
-        "signature": "([type])",
-        "description": "Returns the content in the clipboard as RTF.",
-        "arguments": [
-          {
-            "name": "type",
-            "type": "String",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "writeRTF",
-        "signature": "(text[, type])",
-        "description": "Writes the text into the clipboard in RTF.",
-        "arguments": [
-          {
-            "name": "text",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "type",
-            "type": "String",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "readBookmark",
-        "signature": "()",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "description": "Returns 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."
-      },
-      {
-        "name": "writeBookmark",
-        "signature": "(title, url[, type])",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "description": "Writes the title and url into the clipboard as a bookmark.",
-        "arguments": [
-          {
-            "name": "title",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "url",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "type",
-            "type": "String",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "clear",
-        "signature": "([type])",
-        "description": "Clears the clipboard content.",
-        "arguments": [
-          {
-            "name": "type",
-            "type": "String",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "availableFormats",
-        "signature": "([type])",
-        "description": "Returns an array of supported formats for the clipboard type.",
-        "arguments": [
-          {
-            "name": "type",
-            "type": "String",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "has",
-        "signature": "(data[, type])",
-        "platforms": [
-          "Experimental"
-        ],
-        "description": "Returns whether the clipboard supports the format of specified data.",
-        "arguments": [
-          {
-            "name": "data",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "type",
-            "type": "String",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "read",
-        "signature": "(data[, type])",
-        "platforms": [
-          "Experimental"
-        ],
-        "description": "Reads data from the clipboard.",
-        "arguments": [
-          {
-            "name": "data",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "type",
-            "type": "String",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "write",
-        "signature": "(data[, type])",
-        "description": "Writes data to the clipboard.",
-        "arguments": [
-          {
-            "name": "data",
-            "type": "Object",
-            "required": true,
-            "properties": [
-              {
-                "name": "text",
-                "type": "String"
-              },
-              {
-                "name": "html",
-                "type": "String"
-              },
-              {
-                "name": "image",
-                "type": "NativeImage"
-              },
-              {
-                "name": "rtf",
-                "type": "String"
-              },
-              {
-                "name": "bookmark",
-                "type": "String",
-                "description": "The title of the url at <code>text</code>."
-              }
-            ]
-          },
-          {
-            "name": "type",
-            "type": "String",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      }
-    ]
-  },
-  {
-    "name": "crashReporter",
-    "description": "Submit crash reports to a remote server.",
-    "process": {
-      "main": true,
-      "renderer": true
-    },
-    "type": "Object",
-    "slug": "crash-reporter",
-    "websiteUrl": "http://electron.atom.io/docs/api/crash-reporter",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/crash-reporter.md",
-    "methods": [
-      {
-        "name": "start",
-        "signature": "(options)",
-        "description": "You are required to call this method before using other crashReporter APIs. Note: On macOS, Electron uses a new crashpad client, which is different from breakpad on Windows and Linux. To enable the crash collection feature, you are required to call the crashReporter.start API to initialize crashpad in the main process and in each renderer process from which you wish to collect crash reports.",
-        "arguments": [
-          {
-            "name": "options",
-            "type": "Object",
-            "required": false,
-            "properties": [
-              {
-                "name": "companyName",
-                "type": "String"
-              },
-              {
-                "name": "submitURL",
-                "type": "String",
-                "description": "URL that crash reports will be sent to as POST."
-              },
-              {
-                "name": "productName",
-                "type": "String",
-                "description": " (optional) - Default is <code>Electron</code>."
-              },
-              {
-                "name": "ignoreSystemCrashHandler",
-                "type": "Boolean",
-                "description": "Default is <code>false</code>."
-              }
-            ]
-          }
-        ]
-      },
-      {
-        "name": "getLastCrashReport",
-        "signature": "()",
-        "description": "Returns the date and ID of the last crash report. If no crash reports have been sent or the crash reporter has not been started, null is returned."
-      },
-      {
-        "name": "getUploadedReports",
-        "signature": "()",
-        "description": "Returns all uploaded crash reports. Each report contains the date and uploaded ID."
-      }
-    ]
-  },
-  {
-    "name": "nativeImage",
-    "description": "Create tray, dock, and application icons using PNG or JPG files.",
-    "process": {
-      "main": true,
-      "renderer": true
-    },
-    "type": "Object",
-    "slug": "native-image",
-    "websiteUrl": "http://electron.atom.io/docs/api/native-image",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/native-image.md",
-    "methods": [
-      {
-        "name": "createEmpty",
-        "signature": "()",
-        "description": "Creates an empty nativeImage instance."
-      },
-      {
-        "name": "createFromPath",
-        "signature": "(path)",
-        "description": "Creates a new nativeImage instance from a file located at path.",
-        "arguments": [
-          {
-            "name": "path",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "createFromBuffer",
-        "signature": "(buffer[, scaleFactor])",
-        "description": "Creates a new nativeImage instance from buffer. The default scaleFactor is 1.0.",
-        "arguments": [
-          {
-            "name": "buffer",
-            "type": "Buffer",
-            "required": true
-          },
-          {
-            "name": "scaleFactor",
-            "type": "Double",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "createFromDataURL",
-        "signature": "(dataURL)",
-        "description": "Creates a new nativeImage instance from dataURL.",
-        "arguments": [
-          {
-            "name": "dataURL",
-            "type": "String",
-            "required": true
-          }
-        ]
-      }
-    ],
-    "instanceMethods": [
-      {
-        "name": "toPNG",
-        "signature": "()",
-        "description": "Returns a Buffer that contains the image's PNG encoded data."
-      },
-      {
-        "name": "toJPEG",
-        "signature": "(quality)",
-        "description": "Returns a Buffer that contains the image's JPEG encoded data.",
-        "arguments": [
-          {
-            "name": "quality",
-            "type": "Integer",
-            "description": "(required) - Between 0 - 100.",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "toDataURL",
-        "signature": "()",
-        "description": "Returns the data URL of the image."
-      },
-      {
-        "name": "getNativeHandle",
-        "signature": "()",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Returns a Buffer that stores C pointer to underlying native handle of the image. On macOS, a pointer to NSImage instance would be returned. Notice 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."
-      },
-      {
-        "name": "isEmpty",
-        "signature": "()",
-        "description": "Returns a boolean whether the image is empty."
-      },
-      {
-        "name": "getSize",
-        "signature": "()",
-        "description": "Returns the size of the image."
-      },
-      {
-        "name": "setTemplateImage",
-        "signature": "(option)",
-        "description": "Marks the image as template image.",
-        "arguments": [
-          {
-            "name": "option",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isTemplateImage",
-        "signature": "()",
-        "description": "Returns a boolean whether the image is a template image."
-      }
-    ]
-  },
-  {
-    "name": "shell",
-    "description": "Manage files and URLs using their default applications.",
-    "process": {
-      "main": true,
-      "renderer": true
-    },
-    "type": "Object",
-    "slug": "shell",
-    "websiteUrl": "http://electron.atom.io/docs/api/shell",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/shell.md",
-    "methods": [
-      {
-        "name": "showItemInFolder",
-        "signature": "(fullPath)",
-        "description": "Show the given file in a file manager. If possible, select the file.",
-        "arguments": [
-          {
-            "name": "fullPath",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "openItem",
-        "signature": "(fullPath)",
-        "description": "Open the given file in the desktop's default manner.",
-        "arguments": [
-          {
-            "name": "fullPath",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "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.) Returns true if an application was available to open the URL, false otherwise.",
-        "arguments": [
-          {
-            "name": "url",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "options",
-            "type": "Object",
-            "description": "(optional) macOS",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "moveItemToTrash",
-        "signature": "(fullPath)",
-        "description": "Move the given file to trash and returns a boolean status for the operation.",
-        "arguments": [
-          {
-            "name": "fullPath",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "beep",
-        "signature": "()",
-        "description": "Play the beep sound."
-      }
-    ]
-  },
-  {
-    "name": "app",
-    "description": "Control your application's event lifecycle.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Object",
-    "slug": "app",
-    "websiteUrl": "http://electron.atom.io/docs/api/app",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/app.md",
-    "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. You would usually set up listeners for the open-file and open-url events here, and start the crash reporter and auto updater. In most cases, you should just do everything in the ready event handler."
-      },
-      {
-        "name": "ready",
-        "description": "Emitted when Electron has finished initialization."
-      },
-      {
-        "name": "window-all-closed",
-        "description": "Emitted when all windows have been closed. If 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."
-      },
-      {
-        "name": "before-quit",
-        "description": "Emitted before the application starts closing its windows. Calling event.preventDefault() will prevent the default behaviour, which is terminating the application.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          }
-        ]
-      },
-      {
-        "name": "will-quit",
-        "description": "Emitted when all windows have been closed and the application will quit. Calling event.preventDefault() will prevent the default behaviour, which is terminating the application. See the description of the window-all-closed event for the differences between the will-quit and window-all-closed events.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          }
-        ]
-      },
-      {
-        "name": "quit",
-        "description": "Emitted when the application is quitting.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "exitCode",
-            "type": "Integer"
-          }
-        ]
-      },
-      {
-        "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). You should call event.preventDefault() if you want to handle this event. On Windows, you have to parse process.argv (in the main process) to get the filepath.",
-        "platforms": [
-          "macOS"
-        ],
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "path",
-            "type": "String"
-          }
-        ]
-      },
-      {
-        "name": "open-url",
-        "description": "Emitted when the user wants to open a URL with the application. The URL scheme must be registered to be opened by your application. You should call event.preventDefault() if you want to handle this event.",
-        "platforms": [
-          "macOS"
-        ],
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "url",
-            "type": "String"
-          }
-        ]
-      },
-      {
-        "name": "activate",
-        "description": "Emitted when the application is activated, which usually happens when the user clicks on the application's dock icon.",
-        "platforms": [
-          "macOS"
-        ],
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "hasVisibleWindows",
-            "type": "Boolean"
-          }
-        ]
-      },
-      {
-        "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. A 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.",
-        "platforms": [
-          "macOS"
-        ],
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "type",
-            "type": "String",
-            "description": "A string identifying the activity. Maps to"
-          },
-          {
-            "name": "userInfo",
-            "type": "Object",
-            "description": "Contains app-specific state stored by the activity on"
-          }
-        ]
-      },
-      {
-        "name": "browser-window-blur",
-        "description": "Emitted when a browserWindow gets blurred.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "window",
-            "type": "BrowserWindow"
-          }
-        ]
-      },
-      {
-        "name": "browser-window-focus",
-        "description": "Emitted when a browserWindow gets focused.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "window",
-            "type": "BrowserWindow"
-          }
-        ]
-      },
-      {
-        "name": "browser-window-created",
-        "description": "Emitted when a new browserWindow is created.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "window",
-            "type": "BrowserWindow"
-          }
-        ]
-      },
-      {
-        "name": "web-contents-created",
-        "description": "Emitted when a new webContents is created.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "webContents",
-            "type": "WebContents"
-          }
-        ]
-      },
-      {
-        "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).",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "webContents",
-            "type": "WebContents"
-          },
-          {
-            "name": "url",
-            "type": "URL"
-          },
-          {
-            "name": "error",
-            "type": "String",
-            "description": "The error code"
-          },
-          {
-            "name": "certificate",
-            "type": "Object",
-            "properties": [
-              {
-                "name": "data",
-                "type": "Buffer",
-                "description": "PEM encoded data"
-              },
-              {
-                "name": "issuerName",
-                "type": "String"
-              }
-            ]
-          },
-          {
-            "name": "callback",
-            "type": "Function"
-          }
-        ]
-      },
-      {
-        "name": "select-client-certificate",
-        "description": "Emitted when a client certificate is requested. The url corresponds to the navigation entry requesting the client certificate and callback needs to be called with an entry filtered from the list. Using event.preventDefault() prevents the application from using the first certificate from the store.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "webContents",
-            "type": "WebContents"
-          },
-          {
-            "name": "url",
-            "type": "URL"
-          },
-          {
-            "name": "callback",
-            "type": "Function"
-          }
-        ]
-      },
-      {
-        "name": "login",
-        "description": "Emitted when webContents wants to do basic auth. The 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.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "webContents",
-            "type": "WebContents"
-          },
-          {
-            "name": "request",
-            "type": "Object",
-            "properties": [
-              {
-                "name": "method",
-                "type": "String"
-              },
-              {
-                "name": "url",
-                "type": "URL"
-              },
-              {
-                "name": "referrer",
-                "type": "URL"
-              }
-            ]
-          },
-          {
-            "name": "authInfo",
-            "type": "Object",
-            "properties": [
-              {
-                "name": "isProxy",
-                "type": "Boolean"
-              },
-              {
-                "name": "scheme",
-                "type": "String"
-              },
-              {
-                "name": "host",
-                "type": "String"
-              },
-              {
-                "name": "port",
-                "type": "Integer"
-              },
-              {
-                "name": "realm",
-                "type": "String"
-              }
-            ]
-          },
-          {
-            "name": "callback",
-            "type": "Function"
-          }
-        ]
-      },
-      {
-        "name": "gpu-process-crashed",
-        "description": "Emitted when the gpu process crashes."
-      }
-    ],
-    "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. This 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."
-      },
-      {
-        "name": "exit",
-        "signature": "(exitCode)",
-        "description": "Exits immediately with exitCode. All windows will be closed immediately without asking user and the before-quit and will-quit events will not be emitted.",
-        "arguments": [
-          {
-            "name": "exitCode",
-            "type": "Integer",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "relaunch",
-        "signature": "([options])",
-        "description": "Relaunches the app when current instance exits. By 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. Note 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. When app.relaunch is called for multiple times, multiple instances will be started after current instance exited. An example of restarting current instance immediately and adding a new command line argument to the new instance:",
-        "arguments": [
-          {
-            "name": "options",
-            "type": "Object",
-            "description": "(optional)",
-            "required": false,
-            "properties": [
-              {
-                "name": "args",
-                "type": "Array",
-                "description": " (optional)"
-              },
-              {
-                "name": "execPath",
-                "type": "String",
-                "description": " (optional)"
-              }
-            ]
-          }
-        ]
-      },
-      {
-        "name": "focus",
-        "signature": "()",
-        "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."
-      },
-      {
-        "name": "hide",
-        "signature": "()",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Hides all application windows without minimizing them."
-      },
-      {
-        "name": "show",
-        "signature": "()",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Shows application windows after they were hidden. Does not automatically focus them."
-      },
-      {
-        "name": "getAppPath",
-        "signature": "()",
-        "description": "Returns the current application directory."
-      },
-      {
-        "name": "getPath",
-        "signature": "(name)",
-        "description": "Retrieves a path to a special directory or file associated with name. On failure an Error is thrown. You can request the following paths by the name:",
-        "arguments": [
-          {
-            "name": "name",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "home",
-            "type": "User",
-            "description": "'s home directory.",
-            "required": true
-          },
-          {
-            "name": "appData",
-            "type": "Per",
-            "description": "-user application data directory, which by default points to:",
-            "required": true
-          },
-          {
-            "name": "userData",
-            "type": "The",
-            "description": "directory for storing your app's configuration files, which by",
-            "required": true
-          },
-          {
-            "name": "temp",
-            "type": "Temporary",
-            "description": "directory.",
-            "required": true
-          },
-          {
-            "name": "exe",
-            "type": "The",
-            "description": "current executable file.",
-            "required": true
-          },
-          {
-            "name": "module",
-            "type": "The",
-            "description": "`libchromiumcontent` library.",
-            "required": true
-          },
-          {
-            "name": "desktop",
-            "type": "The",
-            "description": "current user's Desktop directory.",
-            "required": true
-          },
-          {
-            "name": "documents",
-            "type": "Directory",
-            "description": "for a user's \"My Documents\".",
-            "required": true
-          },
-          {
-            "name": "downloads",
-            "type": "Directory",
-            "description": "for a user's downloads.",
-            "required": true
-          },
-          {
-            "name": "music",
-            "type": "Directory",
-            "description": "for a user's music.",
-            "required": true
-          },
-          {
-            "name": "pictures",
-            "type": "Directory",
-            "description": "for a user's pictures.",
-            "required": true
-          },
-          {
-            "name": "videos",
-            "type": "Directory",
-            "description": "for a user's videos.",
-            "required": true
-          },
-          {
-            "name": "pepperFlashSystemPlugin",
-            "type": "Full",
-            "description": "path to the system version of the Pepper Flash plugin.",
-            "required": true
-          }
-        ]
-      },
-      {
-        "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, the directory will be created by this method. On failure an Error is thrown. You can only override paths of a name defined in app.getPath. By default, web pages' cookies and caches will be stored under the userData directory. If you want to change this location, you have to override the userData path before the ready event of the app module is emitted.",
-        "arguments": [
-          {
-            "name": "name",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "path",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getVersion",
-        "signature": "()",
-        "description": "Returns 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."
-      },
-      {
-        "name": "getName",
-        "signature": "()",
-        "description": "Returns the current application's name, which is the name in the application's package.json file. Usually the name field of package.json is a short lowercased 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."
-      },
-      {
-        "name": "setName",
-        "signature": "(name)",
-        "description": "Overrides the current application's name.",
-        "arguments": [
-          {
-            "name": "name",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getLocale",
-        "signature": "()",
-        "description": "Returns the current application locale. Possible return values are documented here. Note: When distributing your packaged app, you have to also ship the locales folder. Note: On Windows you have to call it after the ready events gets emitted."
-      },
-      {
-        "name": "addRecentDocument",
-        "signature": "(path)",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "description": "Adds path to the recent documents list. This 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.",
-        "arguments": [
-          {
-            "name": "path",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "clearRecentDocuments",
-        "signature": "()",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "description": "Clears the recent documents list."
-      },
-      {
-        "name": "setAsDefaultProtocolClient",
-        "signature": "(protocol)",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "description": "This method sets 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. Note: On macOS, you can only register protocols that have been added to your app's info.plist, which can not be modified at runtime. You can however change the file with a simple text editor or script during build time. Please refer to Apple's documentation for details. The API uses the Windows Registry and LSSetDefaultHandlerForURLScheme internally.",
-        "arguments": [
-          {
-            "name": "protocol",
-            "type": "String",
-            "description": "The name of your protocol, without `://`. If you want your",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "removeAsDefaultProtocolClient",
-        "signature": "(protocol)",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "description": "This 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.",
-        "arguments": [
-          {
-            "name": "protocol",
-            "type": "String",
-            "description": "The name of your protocol, without `://`.",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isDefaultProtocolClient",
-        "signature": "(protocol)",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "description": "This method checks if the current executable is the default handler for a protocol (aka URI scheme). If so, it will return true. Otherwise, it will return false. 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. The API uses the Windows Registry and LSCopyDefaultHandlerForURLScheme internally.",
-        "arguments": [
-          {
-            "name": "protocol",
-            "type": "String",
-            "description": "The name of your protocol, without `://`.",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "setUserTasks",
-        "signature": "(tasks)",
-        "platforms": [
-          "Windows"
-        ],
-        "description": "Adds tasks to the Tasks category of the JumpList on Windows. tasks is an array of Task objects in the following format: Task Object:",
-        "arguments": [
-          {
-            "name": "tasks",
-            "type": "Array",
-            "description": "Array of `Task` objects",
-            "required": true
-          },
-          {
-            "name": "program",
-            "type": "String",
-            "description": "Path of the program to execute, usually you should",
-            "required": true
-          },
-          {
-            "name": "arguments",
-            "type": "String",
-            "description": "The command line arguments when `program` is",
-            "required": true
-          },
-          {
-            "name": "title",
-            "type": "String",
-            "description": "The string to be displayed in a JumpList.",
-            "required": true
-          },
-          {
-            "name": "description",
-            "type": "String",
-            "description": "Description of this task.",
-            "required": true
-          },
-          {
-            "name": "iconPath",
-            "type": "String",
-            "description": "The absolute path to an icon to be displayed in a",
-            "required": true
-          },
-          {
-            "name": "iconIndex",
-            "type": "Integer",
-            "description": "The icon index in the icon file. If an icon file",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "makeSingleInstance",
-        "signature": "(callback)",
-        "description": "This method makes your application a Single Instance Application - instead of allowing multiple instances of your app to run, this will ensure that only a single instance of your app is running, and other instances signal this instance and exit. callback will be called with callback(argv, workingDirectory) when a second instance has been executed. 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. The callback is guaranteed to be executed after the ready event of app gets emitted. This method returns false if your process is the primary instance of the application and your app should continue loading. And returns true if your process has sent its parameters to another instance, and you should immediately quit. On 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. An example of activating the window of primary instance when a second instance starts:",
-        "arguments": [
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "releaseSingleInstance",
-        "signature": "()",
-        "description": "Releases all locks that were created by makeSingleInstance. This will allow multiple instances of the application to once again run side by side."
-      },
-      {
-        "name": "setUserActivity",
-        "signature": "(type, userInfo[, webpageURL])",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Creates an NSUserActivity and sets it as the current activity. The activity is eligible for Handoff to another device afterward.",
-        "arguments": [
-          {
-            "name": "type",
-            "type": "String",
-            "description": "Uniquely identifies the activity. Maps to",
-            "required": true
-          },
-          {
-            "name": "userInfo",
-            "type": "Object",
-            "description": "App-specific state to store for use by another device.",
-            "required": true
-          },
-          {
-            "name": "webpageURL",
-            "type": "String",
-            "description": "The webpage to load in a browser if no suitable app is",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getCurrentActivityType",
-        "signature": "()",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Returns the type of the currently running activity."
-      },
-      {
-        "name": "setAppUserModelId",
-        "signature": "(id)",
-        "platforms": [
-          "Windows"
-        ],
-        "description": "Changes the Application User Model ID to id.",
-        "arguments": [
-          {
-            "name": "id",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "importCertificate",
-        "signature": "(options, callback)",
-        "platforms": [
-          "LINUX"
-        ],
-        "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.",
-        "arguments": [
-          {
-            "name": "options",
-            "type": "Object",
-            "required": true,
-            "properties": [
-              {
-                "name": "certificate",
-                "type": "String",
-                "description": "Path for the pkcs12 file."
-              },
-              {
-                "name": "password",
-                "type": "String",
-                "description": "Passphrase for the certificate."
-              }
-            ]
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true,
-            "properties": [
-              {
-                "name": "result",
-                "type": "Integer",
-                "description": "Result of import."
-              }
-            ]
-          }
-        ]
-      },
-      {
-        "name": "disableHardwareAcceleration",
-        "signature": "()",
-        "description": "Disables hardware acceleration for current app. This method can only be called before app is ready."
-      },
-      {
-        "name": "setBadgeCount",
-        "signature": "(count)",
-        "platforms": [
-          "Linux",
-          "macOS"
-        ],
-        "description": "Sets the counter badge for current app. Setting the count to 0 will hide the badge. Returns true when the call succeeded, otherwise returns false. On macOS it shows on the dock icon. On Linux it only works for Unity launcher, Note: Unity launcher requires the exsistence of a .desktop file to work, for more information please read Desktop Environment Integration.",
-        "arguments": [
-          {
-            "name": "count",
-            "type": "Integer",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getBadgeCount",
-        "signature": "()",
-        "platforms": [
-          "Linux",
-          "macOS"
-        ],
-        "description": "Returns the current value displayed in the counter badge."
-      },
-      {
-        "name": "isUnityRunning",
-        "signature": "()",
-        "platforms": [
-          "Linux"
-        ],
-        "description": "Returns whether current desktop environment is Unity launcher."
-      },
-      {
-        "name": "getLoginItemSettings",
-        "signature": "()",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Return an Object with the login item settings of the app.",
-        "arguments": [
-          {
-            "name": "openAtLogin",
-            "type": "Boolean",
-            "description": "`true` if the app is set to open at login.",
-            "required": true
-          },
-          {
-            "name": "openAsHidden",
-            "type": "Boolean",
-            "description": "`true` if the app is set to open as hidden at login.",
-            "required": true
-          },
-          {
-            "name": "wasOpenedAtLogin",
-            "type": "Boolean",
-            "description": "`true` if the app was opened at login",
-            "required": true
-          },
-          {
-            "name": "wasOpenedAsHidden",
-            "type": "Boolean",
-            "description": "`true` if the app was opened as a hidden login",
-            "required": true
-          },
-          {
-            "name": "restoreState",
-            "type": "Boolean",
-            "description": "`true` if the app was opened as a login item that",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "setLoginItemSettings",
-        "signature": "(settings)",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Set the app's login item settings.",
-        "arguments": [
-          {
-            "name": "settings",
-            "type": "Object",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "appendSwitch",
-        "signature": "(switch[, value])",
-        "description": "Append a switch (with optional value) to Chromium's command line. Note: This will not affect process.argv, and is mainly used by developers to control some low-level Chromium behaviors."
-      },
-      {
-        "name": "appendArgument",
-        "signature": "(value)",
-        "description": "Append an argument to Chromium's command line. The argument will be quoted correctly. Note: This will not affect process.argv."
-      },
-      {
-        "name": "bounce",
-        "signature": "([type])",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "When critical is passed, the dock icon will bounce until either the application becomes active or the request is canceled. When 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. Returns an ID representing the request.",
-        "arguments": [
-          {
-            "name": "type",
-            "type": "String",
-            "description": "(optional) - Can be `critical` or `informational`. The default is",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "cancelBounce",
-        "signature": "(id)",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Cancel the bounce of id.",
-        "arguments": [
-          {
-            "name": "id",
-            "type": "Integer",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "downloadFinished",
-        "signature": "(filePath)",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Bounces the Downloads stack if the filePath is inside the Downloads folder.",
-        "arguments": [
-          {
-            "name": "filePath",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "setBadge",
-        "signature": "(text)",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Sets the string to be displayed in the dock’s badging area.",
-        "arguments": [
-          {
-            "name": "text",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getBadge",
-        "signature": "()",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Returns the badge string of the dock."
-      },
-      {
-        "name": "hide",
-        "signature": "()",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Hides the dock icon."
-      },
-      {
-        "name": "show",
-        "signature": "()",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Shows the dock icon."
-      },
-      {
-        "name": "setMenu",
-        "signature": "(menu)",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Sets the application's dock menu.",
-        "arguments": [
-          {
-            "name": "menu",
-            "type": "Menu",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "setIcon",
-        "signature": "(image)",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Sets the image associated with this dock icon.",
-        "arguments": [
-          {
-            "name": "image",
-            "type": "NativeImage",
-            "required": true
-          }
-        ]
-      }
-    ]
-  },
-  {
-    "name": "autoUpdater",
-    "description": "Enable apps to automatically update themselves.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Object",
-    "slug": "auto-updater",
-    "websiteUrl": "http://electron.atom.io/docs/api/auto-updater",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/auto-updater.md",
-    "events": [
-      {
-        "name": "error",
-        "description": "Emitted when there is an error while updating.",
-        "returns": [
-          {
-            "name": "error",
-            "type": "Error"
-          }
-        ]
-      },
-      {
-        "name": "checking-for-update",
-        "description": "Emitted when checking if an update has started."
-      },
-      {
-        "name": "update-available",
-        "description": "Emitted when there is an available update. The update is downloaded automatically."
-      },
-      {
-        "name": "update-not-available",
-        "description": "Emitted when there is no available update."
-      },
-      {
-        "name": "update-downloaded",
-        "description": "Emitted when an update has been downloaded. On Windows only releaseName is available.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "releaseNotes",
-            "type": "String"
-          },
-          {
-            "name": "releaseName",
-            "type": "String"
-          },
-          {
-            "name": "releaseDate",
-            "type": "Date"
-          },
-          {
-            "name": "updateURL",
-            "type": "String"
-          }
-        ]
-      }
-    ],
-    "methods": [
-      {
-        "name": "setFeedURL",
-        "signature": "(url[, requestHeaders])",
-        "description": "Sets the url and initialize the auto updater.",
-        "arguments": [
-          {
-            "name": "url",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "requestHeaders",
-            "type": "Object",
-            "description": "macOS - HTTP request headers.",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "checkForUpdates",
-        "signature": "()",
-        "description": "Asks the server whether there is an update. You must call setFeedURL before using this API."
-      },
-      {
-        "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."
-      }
-    ]
-  },
-  {
-    "name": "BrowserWindow",
-    "description": "Create and control browser windows.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Class",
-    "slug": "browser-window",
-    "websiteUrl": "http://electron.atom.io/docs/api/browser-window",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/browser-window.md",
-    "events": [
-      {
-        "name": "page-title-updated",
-        "description": "Emitted when the document changed its title, calling event.preventDefault() would prevent the native window's title to change.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          }
-        ]
-      },
-      {
-        "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. Usually 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:",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          }
-        ]
-      },
-      {
-        "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 anymore."
-      },
-      {
-        "name": "unresponsive",
-        "description": "Emitted when the web page becomes unresponsive."
-      },
-      {
-        "name": "responsive",
-        "description": "Emitted when the unresponsive web page becomes responsive again."
-      },
-      {
-        "name": "blur",
-        "description": "Emitted when the window loses focus."
-      },
-      {
-        "name": "focus",
-        "description": "Emitted when the window gains focus."
-      },
-      {
-        "name": "show",
-        "description": "Emitted when the window is shown."
-      },
-      {
-        "name": "hide",
-        "description": "Emitted when the window is hidden."
-      },
-      {
-        "name": "ready-to-show",
-        "description": "Emitted when the web page has been rendered and window can be displayed without visual flash."
-      },
-      {
-        "name": "maximize",
-        "description": "Emitted when window is maximized."
-      },
-      {
-        "name": "unmaximize",
-        "description": "Emitted when the window exits from maximized state."
-      },
-      {
-        "name": "minimize",
-        "description": "Emitted when the window is minimized."
-      },
-      {
-        "name": "restore",
-        "description": "Emitted when the window is restored from minimized state."
-      },
-      {
-        "name": "resize",
-        "description": "Emitted when the window is getting resized."
-      },
-      {
-        "name": "move",
-        "description": "Emitted when the window is getting moved to a new position. Note: On macOS this event is just an alias of moved."
-      },
-      {
-        "name": "moved",
-        "description": "Emitted once when the window is moved to a new position.",
-        "platforms": [
-          "macOS"
-        ]
-      },
-      {
-        "name": "enter-full-screen",
-        "description": "Emitted when the window enters full screen state."
-      },
-      {
-        "name": "leave-full-screen",
-        "description": "Emitted when the window leaves full screen state."
-      },
-      {
-        "name": "enter-html-full-screen",
-        "description": "Emitted when the window enters full screen state triggered by html api."
-      },
-      {
-        "name": "leave-html-full-screen",
-        "description": "Emitted when the window leaves full screen state triggered by html api."
-      },
-      {
-        "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. Commands are lowercased with underscores replaced with hyphens and the APPCOMMAND_ prefix stripped off. e.g. APPCOMMAND_BROWSER_BACKWARD is emitted as browser-backward.",
-        "platforms": [
-          "Windows"
-        ],
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "command",
-            "type": "String"
-          }
-        ]
-      },
-      {
-        "name": "scroll-touch-begin",
-        "description": "Emitted when scroll wheel event phase has begun.",
-        "platforms": [
-          "macOS"
-        ]
-      },
-      {
-        "name": "scroll-touch-end",
-        "description": "Emitted when scroll wheel event phase has ended.",
-        "platforms": [
-          "macOS"
-        ]
-      },
-      {
-        "name": "swipe",
-        "description": "Emitted on 3-finger swipe. Possible directions are up, right, down, left.",
-        "platforms": [
-          "macOS"
-        ],
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "direction",
-            "type": "String"
-          }
-        ]
-      }
-    ],
-    "methods": [
-      {
-        "name": "getAllWindows",
-        "signature": "()",
-        "description": "Returns an array of all opened browser windows."
-      },
-      {
-        "name": "getFocusedWindow",
-        "signature": "()",
-        "description": "Returns the window that is focused in this application, otherwise returns null."
-      },
-      {
-        "name": "fromWebContents",
-        "signature": "(webContents)",
-        "description": "Find a window according to the webContents it owns.",
-        "arguments": [
-          {
-            "name": "webContents",
-            "type": "WebContents",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "fromId",
-        "signature": "(id)",
-        "description": "Find a window according to its ID.",
-        "arguments": [
-          {
-            "name": "id",
-            "type": "Integer",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "addDevToolsExtension",
-        "signature": "(path)",
-        "description": "Adds DevTools extension located at path, and returns extension's name. The extension will be remembered so you only need to call this API once, this API is not for programming use. If you try to add an extension that has already been loaded, this method will not return and instead log a warning to the console. Method will also not return if the extension's manifest is missing or incomplete. Note: This API cannot be called before the ready event of the app module is emitted.",
-        "arguments": [
-          {
-            "name": "path",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "removeDevToolsExtension",
-        "signature": "(name)",
-        "description": "Remove the DevTools extension whose name is name. Note: This API cannot be called before the ready event of the app module is emitted.",
-        "arguments": [
-          {
-            "name": "name",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getDevToolsExtensions",
-        "signature": "()",
-        "description": "Returns an Object where the keys are the extension names and each value is an Object containing name and version properties. To check if a DevTools extension is installed you can run the following: Note: This API cannot be called before the ready event of the app module is emitted."
-      }
-    ],
-    "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."
-      },
-      {
-        "name": "close",
-        "signature": "()",
-        "description": "Try to close the window, this has the same effect with user manually clicking the close button of the window. The web page may cancel the close though, see the close event."
-      },
-      {
-        "name": "focus",
-        "signature": "()",
-        "description": "Focuses on the window."
-      },
-      {
-        "name": "blur",
-        "signature": "()",
-        "description": "Removes focus from the window."
-      },
-      {
-        "name": "isFocused",
-        "signature": "()",
-        "description": "Returns a boolean, whether the window is focused."
-      },
-      {
-        "name": "show",
-        "signature": "()",
-        "description": "Shows and gives focus to the window."
-      },
-      {
-        "name": "showInactive",
-        "signature": "()",
-        "description": "Shows the window but doesn't focus on it."
-      },
-      {
-        "name": "hide",
-        "signature": "()",
-        "description": "Hides the window."
-      },
-      {
-        "name": "isVisible",
-        "signature": "()",
-        "description": "Returns a boolean, whether the window is visible to the user."
-      },
-      {
-        "name": "isModal",
-        "signature": "()",
-        "description": "Returns whether current window is a modal window."
-      },
-      {
-        "name": "maximize",
-        "signature": "()",
-        "description": "Maximizes the window."
-      },
-      {
-        "name": "unmaximize",
-        "signature": "()",
-        "description": "Unmaximizes the window."
-      },
-      {
-        "name": "isMaximized",
-        "signature": "()",
-        "description": "Returns a boolean, whether the window is maximized."
-      },
-      {
-        "name": "minimize",
-        "signature": "()",
-        "description": "Minimizes the window. On some platforms the minimized window will be shown in the Dock."
-      },
-      {
-        "name": "restore",
-        "signature": "()",
-        "description": "Restores the window from minimized state to its previous state."
-      },
-      {
-        "name": "isMinimized",
-        "signature": "()",
-        "description": "Returns a boolean, whether the window is minimized."
-      },
-      {
-        "name": "setFullScreen",
-        "signature": "(flag)",
-        "description": "Sets whether the window should be in fullscreen mode.",
-        "arguments": [
-          {
-            "name": "flag",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isFullScreen",
-        "signature": "()",
-        "description": "Returns a boolean, whether the window is in fullscreen mode."
-      },
-      {
-        "name": "setAspectRatio",
-        "signature": "(aspectRatio[, extraSize])",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "This will have 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. Consider 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 [ 40, 50 ]. The second argument doesn't care where the extra width and height are within the content view--only that they exist. Just sum any extra width and height areas you have within the overall content view.",
-        "arguments": [
-          {
-            "name": "aspectRatio",
-            "type": "The",
-            "description": "aspect ratio we want to maintain for some portion of the",
-            "required": true
-          },
-          {
-            "name": "extraSize",
-            "type": "Object",
-            "description": "(optional) - The extra size not to be included while",
-            "required": false,
-            "properties": [
-              {
-                "name": "width",
-                "type": "Integer"
-              },
-              {
-                "name": "height",
-                "type": "Integer"
-              }
-            ]
-          }
-        ]
-      },
-      {
-        "name": "setBounds",
-        "signature": "(options[, animate])",
-        "description": "Resizes and moves the window to width, height, x, y.",
-        "arguments": [
-          {
-            "name": "options",
-            "type": "Object",
-            "required": true,
-            "properties": [
-              {
-                "name": "x",
-                "type": "Integer"
-              },
-              {
-                "name": "y",
-                "type": "Integer"
-              },
-              {
-                "name": "width",
-                "type": "Integer"
-              },
-              {
-                "name": "height",
-                "type": "Integer"
-              }
-            ]
-          },
-          {
-            "name": "animate",
-            "type": "Boolean",
-            "description": "(optional) macOS",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "getBounds",
-        "signature": "()",
-        "description": "Returns an object that contains window's width, height, x and y values."
-      },
-      {
-        "name": "setSize",
-        "signature": "(width, height[, animate])",
-        "description": "Resizes the window to width and height.",
-        "arguments": [
-          {
-            "name": "width",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "height",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "animate",
-            "type": "Boolean",
-            "description": "(optional) macOS",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "getSize",
-        "signature": "()",
-        "description": "Returns an array that contains window's width and height."
-      },
-      {
-        "name": "setContentSize",
-        "signature": "(width, height[, animate])",
-        "description": "Resizes the window's client area (e.g. the web page) to width and height.",
-        "arguments": [
-          {
-            "name": "width",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "height",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "animate",
-            "type": "Boolean",
-            "description": "(optional) macOS",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "getContentSize",
-        "signature": "()",
-        "description": "Returns an array that contains window's client area's width and height."
-      },
-      {
-        "name": "setMinimumSize",
-        "signature": "(width, height)",
-        "description": "Sets the minimum size of window to width and height.",
-        "arguments": [
-          {
-            "name": "width",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "height",
-            "type": "Integer",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getMinimumSize",
-        "signature": "()",
-        "description": "Returns an array that contains window's minimum width and height."
-      },
-      {
-        "name": "setMaximumSize",
-        "signature": "(width, height)",
-        "description": "Sets the maximum size of window to width and height.",
-        "arguments": [
-          {
-            "name": "width",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "height",
-            "type": "Integer",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getMaximumSize",
-        "signature": "()",
-        "description": "Returns an array that contains window's maximum width and height."
-      },
-      {
-        "name": "setResizable",
-        "signature": "(resizable)",
-        "description": "Sets whether the window can be manually resized by user.",
-        "arguments": [
-          {
-            "name": "resizable",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isResizable",
-        "signature": "()",
-        "description": "Returns whether the window can be manually resized by user."
-      },
-      {
-        "name": "setMovable",
-        "signature": "(movable)",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "description": "Sets whether the window can be moved by user. On Linux does nothing.",
-        "arguments": [
-          {
-            "name": "movable",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isMovable",
-        "signature": "()",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "description": "Returns whether the window can be moved by user. On Linux always returns true."
-      },
-      {
-        "name": "setMinimizable",
-        "signature": "(minimizable)",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "description": "Sets whether the window can be manually minimized by user. On Linux does nothing.",
-        "arguments": [
-          {
-            "name": "minimizable",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isMinimizable",
-        "signature": "()",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "description": "Returns whether the window can be manually minimized by user. On Linux always returns true."
-      },
-      {
-        "name": "setMaximizable",
-        "signature": "(maximizable)",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "description": "Sets whether the window can be manually maximized by user. On Linux does nothing.",
-        "arguments": [
-          {
-            "name": "maximizable",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isMaximizable",
-        "signature": "()",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "description": "Returns whether the window can be manually maximized by user. On Linux always returns true."
-      },
-      {
-        "name": "setFullScreenable",
-        "signature": "(fullscreenable)",
-        "description": "Sets whether the maximize/zoom window button toggles fullscreen mode or maximizes the window.",
-        "arguments": [
-          {
-            "name": "fullscreenable",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isFullScreenable",
-        "signature": "()",
-        "description": "Returns whether the maximize/zoom window button toggles fullscreen mode or maximizes the window."
-      },
-      {
-        "name": "setClosable",
-        "signature": "(closable)",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "description": "Sets whether the window can be manually closed by user. On Linux does nothing.",
-        "arguments": [
-          {
-            "name": "closable",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isClosable",
-        "signature": "()",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "description": "Returns whether the window can be manually closed by user. On Linux always returns true."
-      },
-      {
-        "name": "setAlwaysOnTop",
-        "signature": "(flag)",
-        "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.",
-        "arguments": [
-          {
-            "name": "flag",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isAlwaysOnTop",
-        "signature": "()",
-        "description": "Returns whether the window is always on top of other windows."
-      },
-      {
-        "name": "center",
-        "signature": "()",
-        "description": "Moves window to the center of the screen."
-      },
-      {
-        "name": "setPosition",
-        "signature": "(x, y[, animate])",
-        "description": "Moves window to x and y.",
-        "arguments": [
-          {
-            "name": "x",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "y",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "animate",
-            "type": "Boolean",
-            "description": "(optional) macOS",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "getPosition",
-        "signature": "()",
-        "description": "Returns an array that contains window's current position."
-      },
-      {
-        "name": "setTitle",
-        "signature": "(title)",
-        "description": "Changes the title of native window to title.",
-        "arguments": [
-          {
-            "name": "title",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getTitle",
-        "signature": "()",
-        "description": "Returns the title of the native window. Note: The title of web page can be different from the title of the native window."
-      },
-      {
-        "name": "setSheetOffset",
-        "signature": "(offsetY[, offsetX])",
-        "platforms": [
-          "macOS"
-        ],
-        "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:"
-      },
-      {
-        "name": "flashFrame",
-        "signature": "(flag)",
-        "description": "Starts or stops flashing the window to attract user's attention.",
-        "arguments": [
-          {
-            "name": "flag",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "setSkipTaskbar",
-        "signature": "(skip)",
-        "description": "Makes the window not show in the taskbar.",
-        "arguments": [
-          {
-            "name": "skip",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "setKiosk",
-        "signature": "(flag)",
-        "description": "Enters or leaves the kiosk mode.",
-        "arguments": [
-          {
-            "name": "flag",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isKiosk",
-        "signature": "()",
-        "description": "Returns whether the window is in kiosk mode."
-      },
-      {
-        "name": "getNativeWindowHandle",
-        "signature": "()",
-        "description": "Returns the platform-specific handle of the window as Buffer. The native type of the handle is HWND on Windows, NSView* on macOS, and Window (unsigned long) on Linux."
-      },
-      {
-        "name": "hookWindowMessage",
-        "signature": "(message, callback)",
-        "platforms": [
-          "Windows"
-        ],
-        "description": "Hooks a windows message. The callback is called when the message is received in the WndProc.",
-        "arguments": [
-          {
-            "name": "message",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isWindowMessageHooked",
-        "signature": "(message)",
-        "platforms": [
-          "Windows"
-        ],
-        "description": "Returns true or false depending on whether the message is hooked.",
-        "arguments": [
-          {
-            "name": "message",
-            "type": "Integer",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "unhookWindowMessage",
-        "signature": "(message)",
-        "platforms": [
-          "Windows"
-        ],
-        "description": "Unhook the window message.",
-        "arguments": [
-          {
-            "name": "message",
-            "type": "Integer",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "unhookAllWindowMessages",
-        "signature": "()",
-        "platforms": [
-          "Windows"
-        ],
-        "description": "Unhooks all of the window messages."
-      },
-      {
-        "name": "setRepresentedFilename",
-        "signature": "(filename)",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Sets the pathname of the file the window represents, and the icon of the file will show in window's title bar.",
-        "arguments": [
-          {
-            "name": "filename",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getRepresentedFilename",
-        "signature": "()",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Returns the pathname of the file the window represents."
-      },
-      {
-        "name": "setDocumentEdited",
-        "signature": "(edited)",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Specifies whether the window’s document has been edited, and the icon in title bar will become gray when set to true.",
-        "arguments": [
-          {
-            "name": "edited",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isDocumentEdited",
-        "signature": "()",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Whether the window's document has been edited."
-      },
-      {
-        "name": "focusOnWebView",
-        "signature": "()"
-      },
-      {
-        "name": "blurWebView",
-        "signature": "()"
-      },
-      {
-        "name": "capturePage",
-        "signature": "([rect, ]callback)",
-        "description": "Same as webContents.capturePage([rect, ]callback)."
-      },
-      {
-        "name": "loadURL",
-        "signature": "(url[, options])",
-        "description": "Same as webContents.loadURL(url[, options])."
-      },
-      {
-        "name": "reload",
-        "signature": "()",
-        "description": "Same as webContents.reload."
-      },
-      {
-        "name": "setMenu",
-        "signature": "(menu)",
-        "platforms": [
-          "Linux",
-          "Windows"
-        ],
-        "description": "Sets the menu as the window's menu bar, setting it to null will remove the menu bar.",
-        "arguments": [
-          {
-            "name": "menu",
-            "type": "Menu",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "setProgressBar",
-        "signature": "(progress)",
-        "description": "Sets progress value in progress bar. Valid range is [0, 1.0]. Remove progress bar when progress < 0; Change to indeterminate mode when progress > 1. On 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.getName().desktop.",
-        "arguments": [
-          {
-            "name": "progress",
-            "type": "Double",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "setOverlayIcon",
-        "signature": "(overlay, description)",
-        "platforms": [
-          "Windows 7+"
-        ],
-        "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.",
-        "arguments": [
-          {
-            "name": "overlay",
-            "type": "NativeImage",
-            "description": "the icon to display on the bottom",
-            "required": true
-          },
-          {
-            "name": "description",
-            "type": "String",
-            "description": "a description that will be provided to Accessibility",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "setHasShadow",
-        "signature": "(hasShadow)",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Sets whether the window should have a shadow. On Windows and Linux does nothing.",
-        "arguments": [
-          {
-            "name": "hasShadow",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "hasShadow",
-        "signature": "()",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Returns whether the window has a shadow. On Windows and Linux always returns true."
-      },
-      {
-        "name": "setThumbarButtons",
-        "signature": "(buttons)",
-        "platforms": [
-          "Windows 7+"
-        ],
-        "description": "Add 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. The 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. The buttons is an array of Button objects: The flags is an array that can include following Strings:",
-        "arguments": [
-          {
-            "name": "buttons",
-            "type": "Array",
-            "required": true
-          },
-          {
-            "name": "Button",
-            "type": "Object",
-            "required": false,
-            "properties": [
-              {
-                "name": "click",
-                "type": "Function"
-              },
-              {
-                "name": "tooltip",
-                "type": "String",
-                "description": " (optional) - The text of the button&apos;s tooltip."
-              }
-            ]
-          }
-        ]
-      },
-      {
-        "name": "showDefinitionForSelection",
-        "signature": "()",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Same as webContents.showDefinitionForSelection()."
-      },
-      {
-        "name": "setIcon",
-        "signature": "(icon)",
-        "platforms": [
-          "Windows",
-          "Linux"
-        ],
-        "description": "Changes window icon.",
-        "arguments": [
-          {
-            "name": "icon",
-            "type": "NativeImage",
-            "required": true
-          }
-        ]
-      },
-      {
-        "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. If the menu bar is already visible, calling setAutoHideMenuBar(true) won't hide it immediately.",
-        "arguments": [
-          {
-            "name": "hide",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isMenuBarAutoHide",
-        "signature": "()",
-        "description": "Returns whether menu bar automatically hides itself."
-      },
-      {
-        "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.",
-        "arguments": [
-          {
-            "name": "visible",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isMenuBarVisible",
-        "signature": "()",
-        "description": "Returns whether the menu bar is visible."
-      },
-      {
-        "name": "setVisibleOnAllWorkspaces",
-        "signature": "(visible)",
-        "description": "Sets whether the window should be visible on all workspaces. Note: This API does nothing on Windows.",
-        "arguments": [
-          {
-            "name": "visible",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isVisibleOnAllWorkspaces",
-        "signature": "()",
-        "description": "Returns whether the window is visible on all workspaces. Note: This API always returns false on Windows."
-      },
-      {
-        "name": "setIgnoreMouseEvents",
-        "signature": "(ignore)",
-        "description": "Makes the window ignore all mouse events. All 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.",
-        "arguments": [
-          {
-            "name": "ignore",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "setContentProtection",
-        "signature": "(enable)",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "description": "Prevents the window contents from being captured by other apps. On macOS it sets the NSWindow's sharingType to NSWindowSharingNone. On Windows it calls SetWindowDisplayAffinity with WDA_MONITOR."
-      },
-      {
-        "name": "setFocusable",
-        "signature": "(focusable)",
-        "platforms": [
-          "Windows"
-        ],
-        "description": "Changes whether the window can be focused.",
-        "arguments": [
-          {
-            "name": "focusable",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "setParentWindow",
-        "signature": "(parent)",
-        "platforms": [
-          "Linux",
-          "macOS"
-        ],
-        "description": "Sets parent as current window's parent window, passing null will turn current window into a top-level window.",
-        "arguments": [
-          {
-            "name": "parent",
-            "type": "BrowserWindow",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getParentWindow",
-        "signature": "()",
-        "description": "Returns the parent window."
-      },
-      {
-        "name": "getChildWindows",
-        "signature": "()",
-        "description": "Returns all child windows."
-      }
-    ]
-  },
-  {
-    "name": "contentTracing",
-    "description": "Collect tracing data from Chromium's content module for finding performance\nbottlenecks and slow operations.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Object",
-    "slug": "content-tracing",
-    "websiteUrl": "http://electron.atom.io/docs/api/content-tracing",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/content-tracing.md",
-    "methods": [
-      {
-        "name": "getCategories",
-        "signature": "(callback)",
-        "description": "Get a set of category groups. The category groups can change as new code paths are reached. Once all child processes have acknowledged the getCategories request the callback is invoked with an array of category groups.",
-        "arguments": [
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "startRecording",
-        "signature": "(options, callback)",
-        "description": "Start recording on all processes. Recording begins immediately locally and asynchronously on child processes as soon as they receive the EnableRecording request. The callback will be called once all child processes have acknowledged the startRecording request. categoryFilter is 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: traceOptions controls what kind of tracing is enabled, it is a comma-delimited list. Possible options are: The first 3 options are trace recoding 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.",
-        "arguments": [
-          {
-            "name": "options",
-            "type": "Object",
-            "required": true,
-            "properties": [
-              {
-                "name": "categoryFilter",
-                "type": "String"
-              },
-              {
-                "name": "traceOptions",
-                "type": "String"
-              }
-            ]
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "stopRecording",
-        "signature": "(resultFilePath, callback)",
-        "description": "Stop recording on all processes. Child 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, we must asynchronously ask all child processes to flush any pending trace data. Once all child processes have acknowledged the stopRecording request, callback will be called with a file that contains the traced data. Trace data will be written into resultFilePath if it is not empty or into a temporary file. The actual file path will be passed to callback if it's not null.",
-        "arguments": [
-          {
-            "name": "resultFilePath",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "startMonitoring",
-        "signature": "(options, callback)",
-        "description": "Start monitoring on all processes. Monitoring begins immediately locally and asynchronously on child processes as soon as they receive the startMonitoring request. Once all child processes have acknowledged the startMonitoring request the callback will be called.",
-        "arguments": [
-          {
-            "name": "options",
-            "type": "Object",
-            "required": true,
-            "properties": [
-              {
-                "name": "categoryFilter",
-                "type": "String"
-              },
-              {
-                "name": "traceOptions",
-                "type": "String"
-              }
-            ]
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "stopMonitoring",
-        "signature": "(callback)",
-        "description": "Stop monitoring on all processes. Once all child processes have acknowledged the stopMonitoring request the callback is called.",
-        "arguments": [
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "captureMonitoringSnapshot",
-        "signature": "(resultFilePath, callback)",
-        "description": "Get the current monitoring traced data. Child processes typically cache trace data and only rarely flush and send trace data back to the main process. This is because it may be an expensive operation to send the trace data over IPC and we would like to avoid unneeded runtime overhead from tracing. So, to end tracing, we must asynchronously ask all child processes to flush any pending trace data. Once all child processes have acknowledged the captureMonitoringSnapshot request the callback will be called with a file that contains the traced data.",
-        "arguments": [
-          {
-            "name": "resultFilePath",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getTraceBufferUsage",
-        "signature": "(callback)",
-        "description": "Get the maximum usage across processes of trace buffer as a percentage of the full state. When the TraceBufferUsage value is determined the callback is called.",
-        "arguments": [
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "setWatchEvent",
-        "signature": "(categoryName, eventName, callback)",
-        "description": "callback will be called every time the given event occurs on any process.",
-        "arguments": [
-          {
-            "name": "categoryName",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "eventName",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "cancelWatchEvent",
-        "signature": "()",
-        "description": "Cancel the watch event. This may lead to a race condition with the watch event callback if tracing is enabled."
-      }
-    ]
-  },
-  {
-    "name": "dialog",
-    "description": "Display native system dialogs for opening and saving files, alerting, etc.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Object",
-    "slug": "dialog",
-    "websiteUrl": "http://electron.atom.io/docs/api/dialog",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/dialog.md",
-    "methods": [
-      {
-        "name": "showOpenDialog",
-        "signature": "([browserWindow, ]options[, callback])",
-        "description": "On success this method returns an array of file paths chosen by the user, otherwise it returns undefined. The 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: The 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). If a callback is passed, the API call will be asynchronous and the result will be passed via callback(filenames) 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.",
-        "arguments": [
-          {
-            "name": "browserWindow",
-            "type": "BrowserWindow",
-            "description": "(optional)",
-            "required": false
-          },
-          {
-            "name": "options",
-            "type": "Object",
-            "required": true,
-            "properties": [
-              {
-                "name": "title",
-                "type": "String"
-              },
-              {
-                "name": "defaultPath",
-                "type": "String"
-              },
-              {
-                "name": "filters",
-                "type": "Array"
-              }
-            ]
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "showSaveDialog",
-        "signature": "([browserWindow, ]options[, callback])",
-        "description": "On success this method returns the path of the file chosen by the user, otherwise it returns undefined. The filters specifies an array of file types that can be displayed, see dialog.showOpenDialog for an example. If a callback is passed, the API call will be asynchronous and the result will be passed via callback(filename)",
-        "arguments": [
-          {
-            "name": "browserWindow",
-            "type": "BrowserWindow",
-            "description": "(optional)",
-            "required": false
-          },
-          {
-            "name": "options",
-            "type": "Object",
-            "required": true,
-            "properties": [
-              {
-                "name": "title",
-                "type": "String"
-              },
-              {
-                "name": "defaultPath",
-                "type": "String"
-              },
-              {
-                "name": "filters",
-                "type": "Array"
-              }
-            ]
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "showMessageBox",
-        "signature": "([browserWindow, ]options[, callback])",
-        "description": "Shows a message box, it will block the process until the message box is closed. It returns the index of the clicked button. If a callback is passed, the API call will be asynchronous and the result will be passed via callback(response).",
-        "arguments": [
-          {
-            "name": "browserWindow",
-            "type": "BrowserWindow",
-            "description": "(optional)",
-            "required": false
-          },
-          {
-            "name": "options",
-            "type": "Object",
-            "required": true,
-            "properties": [
-              {
-                "name": "title",
-                "type": "String",
-                "description": "Title of the message box, some platforms will not show it."
-              },
-              {
-                "name": "message",
-                "type": "String",
-                "description": "Content of the message box."
-              },
-              {
-                "name": "detail",
-                "type": "String",
-                "description": "Extra information of the message."
-              },
-              {
-                "name": "icon",
-                "type": "NativeImage"
-              },
-              {
-                "name": "noLink",
-                "type": "to",
-                "description": " <code>true</code>."
-              }
-            ]
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "showErrorBox",
-        "signature": "(title, content)",
-        "description": "Displays a modal dialog that shows an error message. This 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 readyevent on Linux, the message will be emitted to stderr, and no GUI dialog will appear."
-      }
-    ]
-  },
-  {
-    "name": "ipcMain",
-    "description": "Communicate asynchronously from the main process to renderer processes.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Object",
-    "slug": "ipc-main",
-    "websiteUrl": "http://electron.atom.io/docs/api/ipc-main",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/ipc-main.md"
-  },
-  {
-    "name": "globalShortcut",
-    "description": "Detect keyboard events when the application does not have keyboard focus.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Object",
-    "slug": "global-shortcut",
-    "websiteUrl": "http://electron.atom.io/docs/api/global-shortcut",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/global-shortcut.md",
-    "methods": [
-      {
-        "name": "register",
-        "signature": "(accelerator, callback)",
-        "description": "Registers a global shortcut of accelerator. The callback is called when the registered shortcut is pressed by the user. When 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.",
-        "arguments": [
-          {
-            "name": "accelerator",
-            "type": "Accelerator",
-            "required": true
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isRegistered",
-        "signature": "(accelerator)",
-        "description": "Returns whether this application has registered accelerator. When 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.",
-        "arguments": [
-          {
-            "name": "accelerator",
-            "type": "Accelerator",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "unregister",
-        "signature": "(accelerator)",
-        "description": "Unregisters the global shortcut of accelerator.",
-        "arguments": [
-          {
-            "name": "accelerator",
-            "type": "Accelerator",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "unregisterAll",
-        "signature": "()",
-        "description": "Unregisters all of the global shortcuts."
-      }
-    ]
-  },
-  {
-    "name": "Menu",
-    "description": "Create native application menus and context menus.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Class",
-    "slug": "menu",
-    "websiteUrl": "http://electron.atom.io/docs/api/menu",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/menu.md",
-    "methods": [
-      {
-        "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. Note: This API has to be called after the ready event of app module.",
-        "arguments": [
-          {
-            "name": "menu",
-            "type": "Menu",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getApplicationMenu",
-        "signature": "()",
-        "description": "Returns the application menu (an instance of Menu), if set, or null, if not set."
-      },
-      {
-        "name": "sendActionToFirstResponder",
-        "signature": "(action)",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Sends the action to the first responder of application. This is used for emulating default Cocoa menu behaviors, usually you would just use the role property of MenuItem. See the macOS Cocoa Event Handling Guide for more information on macOS' native actions.",
-        "arguments": [
-          {
-            "name": "action",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "buildFromTemplate",
-        "signature": "(template)",
-        "description": "Generally, the template is just an array of options for constructing a MenuItem. The usage can be referenced above. You can also attach other fields to the element of the template and they will become properties of the constructed menu items.",
-        "arguments": [
-          {
-            "name": "template",
-            "type": "Array",
-            "required": true
-          }
-        ]
-      }
-    ],
-    "instanceMethods": [
-      {
-        "name": "popup",
-        "signature": "([browserWindow, x, y, positioningItem])",
-        "description": "Pops up this menu as a context menu in the browserWindow. You can optionally provide a x, y coordinate to place the menu at, otherwise it will be placed at the current mouse cursor position.",
-        "arguments": [
-          {
-            "name": "browserWindow",
-            "type": "BrowserWindow",
-            "description": "(optional) - Default is `null`.",
-            "required": false
-          },
-          {
-            "name": "x",
-            "type": "Number",
-            "description": "(optional) - Default is -1.",
-            "required": false
-          },
-          {
-            "name": "y",
-            "type": "Number",
-            "description": "(required if `x` is used) - Default is -1.",
-            "required": true
-          },
-          {
-            "name": "positioningItem",
-            "type": "Number",
-            "description": "(optional) macOS - The index of the menu item to",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "append",
-        "signature": "(menuItem)",
-        "description": "Appends the menuItem to the menu.",
-        "arguments": [
-          {
-            "name": "menuItem",
-            "type": "MenuItem",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "insert",
-        "signature": "(pos, menuItem)",
-        "description": "Inserts the menuItem to the pos position of the menu.",
-        "arguments": [
-          {
-            "name": "pos",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "menuItem",
-            "type": "MenuItem",
-            "required": true
-          }
-        ]
-      }
-    ]
-  },
-  {
-    "name": "MenuItem",
-    "description": "Add items to native application menus and context menus.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Class",
-    "slug": "menu-item",
-    "websiteUrl": "http://electron.atom.io/docs/api/menu-item",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/menu-item.md"
-  },
-  {
-    "name": "powerMonitor",
-    "description": "Monitor power state changes.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Object",
-    "slug": "power-monitor",
-    "websiteUrl": "http://electron.atom.io/docs/api/power-monitor",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/power-monitor.md",
-    "events": [
-      {
-        "name": "suspend",
-        "description": "Emitted when the system is suspending."
-      },
-      {
-        "name": "resume",
-        "description": "Emitted when system is resuming."
-      },
-      {
-        "name": "on-ac",
-        "description": "Emitted when the system changes to AC power.",
-        "platforms": [
-          "Windows"
-        ]
-      },
-      {
-        "name": "on-battery",
-        "description": "Emitted when system changes to battery power.",
-        "platforms": [
-          "Windows"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "powerSaveBlocker",
-    "description": "Block the system from entering low-power (sleep) mode.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Object",
-    "slug": "power-save-blocker",
-    "websiteUrl": "http://electron.atom.io/docs/api/power-save-blocker",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/power-save-blocker.md",
-    "methods": [
-      {
-        "name": "start",
-        "signature": "(type)",
-        "description": "Starts preventing the system from entering lower-power mode. Returns an integer identifying the power save blocker. 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. For 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.",
-        "arguments": [
-          {
-            "name": "type",
-            "type": "String",
-            "description": "Power save blocker type.",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "stop",
-        "signature": "(id)",
-        "description": "Stops the specified power save blocker.",
-        "arguments": [
-          {
-            "name": "id",
-            "type": "Integer",
-            "description": "The power save blocker id returned by `powerSaveBlocker.start`.",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isStarted",
-        "signature": "(id)",
-        "description": "Returns a boolean whether the corresponding powerSaveBlocker has started.",
-        "arguments": [
-          {
-            "name": "id",
-            "type": "Integer",
-            "description": "The power save blocker id returned by `powerSaveBlocker.start`.",
-            "required": true
-          }
-        ]
-      }
-    ]
-  },
-  {
-    "name": "protocol",
-    "description": "Register a custom protocol and intercept existing protocol requests.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Object",
-    "slug": "protocol",
-    "websiteUrl": "http://electron.atom.io/docs/api/protocol",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/protocol.md",
-    "methods": [
-      {
-        "name": "registerStandardSchemes",
-        "signature": "(schemes)",
-        "description": "A standard scheme adheres to what RFC 3986 calls generic URI syntax. For example http and https are standard schemes, while file is not. Registering a scheme as standard, will allow 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. For 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: So if you want to register a custom protocol to replace the http protocol, you have to register it as standard scheme: Note: This method can only be used before the ready event of the app module gets emitted.",
-        "arguments": [
-          {
-            "name": "schemes",
-            "type": "Array",
-            "description": "Custom schemes to be registered as standard schemes.",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "registerServiceWorkerSchemes",
-        "signature": "(schemes)",
-        "arguments": [
-          {
-            "name": "schemes",
-            "type": "Array",
-            "description": "Custom schemes to be registered to handle service workers.",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "registerFileProtocol",
-        "signature": "(scheme, handler[, completion])",
-        "description": "Registers a protocol of scheme that will send the file as a response. The handler will be called with handler(request, callback) when a request is going to be created with scheme. completion will be called with completion(null) when scheme is successfully registered or completion(error) when failed. The uploadData is an array of data objects: To 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}). When callback is called with nothing, a number, or an object that has an error property, the request will fail with the error number you specified. For the available error numbers you can use, please see the net error list. By default the scheme is treated like http:, which is parsed differently than protocols that follow the \"generic URI syntax\" like file:, so you probably want to call protocol.registerStandardSchemes to have your scheme treated as a standard scheme.",
-        "arguments": [
-          {
-            "name": "scheme",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "handler",
-            "type": "Function",
-            "required": true
-          },
-          {
-            "name": "completion",
-            "type": "Function",
-            "description": "(optional)",
-            "required": false
-          },
-          {
-            "name": "request",
-            "type": "Object",
-            "required": false,
-            "properties": [
-              {
-                "name": "url",
-                "type": "String"
-              },
-              {
-                "name": "referrer",
-                "type": "String"
-              },
-              {
-                "name": "method",
-                "type": "String"
-              },
-              {
-                "name": "uploadData",
-                "type": "Array",
-                "description": " (optional)"
-              }
-            ]
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          },
-          {
-            "name": "data",
-            "type": "Object",
-            "required": true,
-            "properties": [
-              {
-                "name": "bytes",
-                "type": "Buffer",
-                "description": "Content being sent."
-              },
-              {
-                "name": "file",
-                "type": "String",
-                "description": "Path of file being uploaded."
-              }
-            ]
-          }
-        ]
-      },
-      {
-        "name": "registerBufferProtocol",
-        "signature": "(scheme, handler[, completion])",
-        "description": "Registers a protocol of scheme that will send a Buffer as a response. The 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, mimeType, and charset properties. Example:",
-        "arguments": [
-          {
-            "name": "scheme",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "handler",
-            "type": "Function",
-            "required": true
-          },
-          {
-            "name": "completion",
-            "type": "Function",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "registerStringProtocol",
-        "signature": "(scheme, handler[, completion])",
-        "description": "Registers a protocol of scheme that will send a String as a response. The usage is the same with registerFileProtocol, except that the callback should be called with either a String or an object that has the data, mimeType, and charset properties.",
-        "arguments": [
-          {
-            "name": "scheme",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "handler",
-            "type": "Function",
-            "required": true
-          },
-          {
-            "name": "completion",
-            "type": "Function",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "registerHttpProtocol",
-        "signature": "(scheme, handler[, completion])",
-        "description": "Registers a protocol of scheme that will send an HTTP request as a response. The usage is the same with registerFileProtocol, except that the callback should be called with a redirectRequest object that has the url, method, referrer, uploadData and session properties. By default the HTTP request will reuse the current session. If you want the request to have a different session you should set session to null. For POST requests the uploadData object must be provided.",
-        "arguments": [
-          {
-            "name": "scheme",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "handler",
-            "type": "Function",
-            "required": true
-          },
-          {
-            "name": "completion",
-            "type": "Function",
-            "description": "(optional)",
-            "required": false
-          },
-          {
-            "name": "redirectRequest",
-            "type": "Object",
-            "required": false,
-            "properties": [
-              {
-                "name": "url",
-                "type": "String"
-              },
-              {
-                "name": "method",
-                "type": "String"
-              },
-              {
-                "name": "session",
-                "type": "Object",
-                "description": " (optional)"
-              },
-              {
-                "name": "uploadData",
-                "type": "Object",
-                "description": " (optional)"
-              }
-            ]
-          },
-          {
-            "name": "uploadData",
-            "type": "object",
-            "required": true,
-            "properties": [
-              {
-                "name": "contentType",
-                "type": "String",
-                "description": "MIME type of the content."
-              },
-              {
-                "name": "data",
-                "type": "String",
-                "description": "Content to be sent."
-              }
-            ]
-          }
-        ]
-      },
-      {
-        "name": "unregisterProtocol",
-        "signature": "(scheme[, completion])",
-        "description": "Unregisters the custom protocol of scheme.",
-        "arguments": [
-          {
-            "name": "scheme",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "completion",
-            "type": "Function",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "isProtocolHandled",
-        "signature": "(scheme, callback)",
-        "description": "The callback will be called with a boolean that indicates whether there is already a handler for scheme.",
-        "arguments": [
-          {
-            "name": "scheme",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "interceptFileProtocol",
-        "signature": "(scheme, handler[, completion])",
-        "description": "Intercepts scheme protocol and uses handler as the protocol's new handler which sends a file as a response.",
-        "arguments": [
-          {
-            "name": "scheme",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "handler",
-            "type": "Function",
-            "required": true
-          },
-          {
-            "name": "completion",
-            "type": "Function",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "interceptStringProtocol",
-        "signature": "(scheme, handler[, completion])",
-        "description": "Intercepts scheme protocol and uses handler as the protocol's new handler which sends a String as a response.",
-        "arguments": [
-          {
-            "name": "scheme",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "handler",
-            "type": "Function",
-            "required": true
-          },
-          {
-            "name": "completion",
-            "type": "Function",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "interceptBufferProtocol",
-        "signature": "(scheme, handler[, completion])",
-        "description": "Intercepts scheme protocol and uses handler as the protocol's new handler which sends a Buffer as a response.",
-        "arguments": [
-          {
-            "name": "scheme",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "handler",
-            "type": "Function",
-            "required": true
-          },
-          {
-            "name": "completion",
-            "type": "Function",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "interceptHttpProtocol",
-        "signature": "(scheme, handler[, completion])",
-        "description": "Intercepts scheme protocol and uses handler as the protocol's new handler which sends a new HTTP request as a response.",
-        "arguments": [
-          {
-            "name": "scheme",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "handler",
-            "type": "Function",
-            "required": true
-          },
-          {
-            "name": "completion",
-            "type": "Function",
-            "description": "(optional)",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "uninterceptProtocol",
-        "signature": "(scheme[, completion])",
-        "description": "Remove the interceptor installed for scheme and restore its original handler.",
-        "arguments": [
-          {
-            "name": "scheme",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "completion",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      }
-    ]
-  },
-  {
-    "name": "screen",
-    "description": "Retrieve information about screen size, displays, cursor position, etc.",
-    "process": {
-      "main": true,
-      "renderer": true
-    },
-    "type": "Object",
-    "slug": "screen",
-    "websiteUrl": "http://electron.atom.io/docs/api/screen",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/screen.md",
-    "events": [
-      {
-        "name": "display-added",
-        "description": "Emitted when newDisplay has been added.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "newDisplay",
-            "type": "Object"
-          }
-        ]
-      },
-      {
-        "name": "display-removed",
-        "description": "Emitted when oldDisplay has been removed.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "oldDisplay",
-            "type": "Object"
-          }
-        ]
-      },
-      {
-        "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.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "display",
-            "type": "Object"
-          },
-          {
-            "name": "changedMetrics",
-            "type": "Array"
-          }
-        ]
-      }
-    ],
-    "methods": [
-      {
-        "name": "getCursorScreenPoint",
-        "signature": "()",
-        "description": "Returns the current absolute position of the mouse pointer."
-      },
-      {
-        "name": "getPrimaryDisplay",
-        "signature": "()",
-        "description": "Returns the primary display."
-      },
-      {
-        "name": "getAllDisplays",
-        "signature": "()",
-        "description": "Returns an array of displays that are currently available."
-      },
-      {
-        "name": "getDisplayNearestPoint",
-        "signature": "(point)",
-        "description": "Returns the display nearest the specified point.",
-        "arguments": [
-          {
-            "name": "point",
-            "type": "Object",
-            "required": true,
-            "properties": [
-              {
-                "name": "x",
-                "type": "Integer"
-              },
-              {
-                "name": "y",
-                "type": "Integer"
-              }
-            ]
-          }
-        ]
-      },
-      {
-        "name": "getDisplayMatching",
-        "signature": "(rect)",
-        "description": "Returns the display that most closely intersects the provided bounds.",
-        "arguments": [
-          {
-            "name": "rect",
-            "type": "Object",
-            "required": true,
-            "properties": [
-              {
-                "name": "x",
-                "type": "Integer"
-              },
-              {
-                "name": "y",
-                "type": "Integer"
-              },
-              {
-                "name": "width",
-                "type": "Integer"
-              },
-              {
-                "name": "height",
-                "type": "Integer"
-              }
-            ]
-          }
-        ]
-      }
-    ]
-  },
-  {
-    "name": "session",
-    "description": "Manage browser sessions, cookies, cache, proxy settings, etc.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Object",
-    "slug": "session",
-    "websiteUrl": "http://electron.atom.io/docs/api/session",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/session.md",
-    "instanceEvents": [
-      {
-        "name": "will-download",
-        "description": "Emitted when Electron is about to download item in webContents. Calling event.preventDefault() will cancel the download and item will not be available from next tick of the process.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "item",
-            "type": "DownloadItem"
-          },
-          {
-            "name": "webContents",
-            "type": "WebContents"
-          }
-        ]
-      }
-    ]
-  },
-  {
-    "name": "systemPreferences",
-    "description": "Get system preferences.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Object",
-    "slug": "system-preferences",
-    "websiteUrl": "http://electron.atom.io/docs/api/system-preferences",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/system-preferences.md",
-    "methods": [
-      {
-        "name": "isDarkMode",
-        "signature": "()",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "This method returns true if the system is in Dark Mode, and false otherwise."
-      },
-      {
-        "name": "subscribeNotification",
-        "signature": "(event, callback)",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Subscribes 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 id of the subscriber is returned, which can be used to unsubscribe the event. Under the hood this API subscribes to NSDistributedNotificationCenter, example values of event are:",
-        "arguments": [
-          {
-            "name": "event",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "unsubscribeNotification",
-        "signature": "(id)",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Removes the subscriber with id.",
-        "arguments": [
-          {
-            "name": "id",
-            "type": "Integer",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "subscribeLocalNotification",
-        "signature": "(event, callback)",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Same as subscribeNotification, but uses NSNotificationCenter for local defaults. This is necessary for events such as:"
-      },
-      {
-        "name": "unsubscribeLocalNotification",
-        "signature": "(id)",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Same as unsubscribeNotification, but removes the subscriber from NSNotificationCenter."
-      },
-      {
-        "name": "getUserDefault",
-        "signature": "(key, type)",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Get the value of key in system preferences. This API reads from NSUserDefaults on macOS, some popular key and types are:",
-        "arguments": [
-          {
-            "name": "key",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "type",
-            "type": "String",
-            "description": "Can be `string`, `boolean`, `integer`, `float`, `double`,",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isAeroGlassEnabled",
-        "signature": "()",
-        "platforms": [
-          "Windows"
-        ],
-        "description": "This method returns true if DWM composition (Aero Glass) is enabled, and false otherwise. An 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):"
-      }
-    ]
-  },
-  {
-    "name": "Tray",
-    "description": "Add icons and context menus to the system's notification area.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Class",
-    "slug": "tray",
-    "websiteUrl": "http://electron.atom.io/docs/api/tray",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/tray.md",
-    "instanceEvents": [
-      {
-        "name": "click",
-        "description": "Emitted when the tray icon is clicked. Emitted when the tray icon is right clicked. Emitted when the tray icon is double clicked. Emitted when the tray balloon shows. Emitted when the tray balloon is clicked. Emitted when the tray balloon is closed because of timeout or user manually closes it. Emitted when any dragged items are dropped on the tray icon. Emitted when dragged files are dropped in the tray icon. Emitted when a drag operation enters the tray icon. Emitted when a drag operation exits the tray icon. Emitted when a drag operation ends on the tray or ends at another location.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event",
-            "properties": [
-              {
-                "name": "altKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "shiftKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "ctrlKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "metaKey",
-                "type": "Boolean"
-              }
-            ]
-          },
-          {
-            "name": "bounds",
-            "type": "Object",
-            "description": "macOS Windows - the bounds of tray icon.",
-            "properties": [
-              {
-                "name": "x",
-                "type": "Integer"
-              },
-              {
-                "name": "y",
-                "type": "Integer"
-              },
-              {
-                "name": "width",
-                "type": "Integer"
-              },
-              {
-                "name": "height",
-                "type": "Integer"
-              }
-            ]
-          },
-          {
-            "name": "event",
-            "type": "Event",
-            "properties": [
-              {
-                "name": "altKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "shiftKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "ctrlKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "metaKey",
-                "type": "Boolean"
-              }
-            ]
-          },
-          {
-            "name": "bounds",
-            "type": "Object",
-            "description": "the bounds of tray icon.",
-            "properties": [
-              {
-                "name": "x",
-                "type": "Integer"
-              },
-              {
-                "name": "y",
-                "type": "Integer"
-              },
-              {
-                "name": "width",
-                "type": "Integer"
-              },
-              {
-                "name": "height",
-                "type": "Integer"
-              }
-            ]
-          },
-          {
-            "name": "event",
-            "type": "Event",
-            "properties": [
-              {
-                "name": "altKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "shiftKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "ctrlKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "metaKey",
-                "type": "Boolean"
-              }
-            ]
-          },
-          {
-            "name": "bounds",
-            "type": "Object",
-            "description": "the bounds of tray icon",
-            "properties": [
-              {
-                "name": "x",
-                "type": "Integer"
-              },
-              {
-                "name": "y",
-                "type": "Integer"
-              },
-              {
-                "name": "width",
-                "type": "Integer"
-              },
-              {
-                "name": "height",
-                "type": "Integer"
-              }
-            ]
-          },
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "files",
-            "type": "Array",
-            "description": "the file path of dropped files."
-          }
-        ]
-      },
-      {
-        "name": "right-click",
-        "description": "Emitted when the tray icon is right clicked. Emitted when the tray icon is double clicked. Emitted when the tray balloon shows. Emitted when the tray balloon is clicked. Emitted when the tray balloon is closed because of timeout or user manually closes it. Emitted when any dragged items are dropped on the tray icon. Emitted when dragged files are dropped in the tray icon. Emitted when a drag operation enters the tray icon. Emitted when a drag operation exits the tray icon. Emitted when a drag operation ends on the tray or ends at another location.",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event",
-            "properties": [
-              {
-                "name": "altKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "shiftKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "ctrlKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "metaKey",
-                "type": "Boolean"
-              }
-            ]
-          },
-          {
-            "name": "bounds",
-            "type": "Object",
-            "description": "the bounds of tray icon.",
-            "properties": [
-              {
-                "name": "x",
-                "type": "Integer"
-              },
-              {
-                "name": "y",
-                "type": "Integer"
-              },
-              {
-                "name": "width",
-                "type": "Integer"
-              },
-              {
-                "name": "height",
-                "type": "Integer"
-              }
-            ]
-          },
-          {
-            "name": "event",
-            "type": "Event",
-            "properties": [
-              {
-                "name": "altKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "shiftKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "ctrlKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "metaKey",
-                "type": "Boolean"
-              }
-            ]
-          },
-          {
-            "name": "bounds",
-            "type": "Object",
-            "description": "the bounds of tray icon",
-            "properties": [
-              {
-                "name": "x",
-                "type": "Integer"
-              },
-              {
-                "name": "y",
-                "type": "Integer"
-              },
-              {
-                "name": "width",
-                "type": "Integer"
-              },
-              {
-                "name": "height",
-                "type": "Integer"
-              }
-            ]
-          },
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "files",
-            "type": "Array",
-            "description": "the file path of dropped files."
-          }
-        ]
-      },
-      {
-        "name": "double-click",
-        "description": "Emitted when the tray icon is double clicked. Emitted when the tray balloon shows. Emitted when the tray balloon is clicked. Emitted when the tray balloon is closed because of timeout or user manually closes it. Emitted when any dragged items are dropped on the tray icon. Emitted when dragged files are dropped in the tray icon. Emitted when a drag operation enters the tray icon. Emitted when a drag operation exits the tray icon. Emitted when a drag operation ends on the tray or ends at another location.",
-        "platforms": [
-          "macOS",
-          "Windows"
-        ],
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event",
-            "properties": [
-              {
-                "name": "altKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "shiftKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "ctrlKey",
-                "type": "Boolean"
-              },
-              {
-                "name": "metaKey",
-                "type": "Boolean"
-              }
-            ]
-          },
-          {
-            "name": "bounds",
-            "type": "Object",
-            "description": "the bounds of tray icon",
-            "properties": [
-              {
-                "name": "x",
-                "type": "Integer"
-              },
-              {
-                "name": "y",
-                "type": "Integer"
-              },
-              {
-                "name": "width",
-                "type": "Integer"
-              },
-              {
-                "name": "height",
-                "type": "Integer"
-              }
-            ]
-          },
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "files",
-            "type": "Array",
-            "description": "the file path of dropped files."
-          }
-        ]
-      },
-      {
-        "name": "balloon-show",
-        "description": "Emitted when the tray balloon shows. Emitted when the tray balloon is clicked. Emitted when the tray balloon is closed because of timeout or user manually closes it. Emitted when any dragged items are dropped on the tray icon. Emitted when dragged files are dropped in the tray icon. Emitted when a drag operation enters the tray icon. Emitted when a drag operation exits the tray icon. Emitted when a drag operation ends on the tray or ends at another location.",
-        "platforms": [
-          "Windows"
-        ],
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "files",
-            "type": "Array",
-            "description": "the file path of dropped files."
-          }
-        ]
-      },
-      {
-        "name": "balloon-click",
-        "description": "Emitted when the tray balloon is clicked. Emitted when the tray balloon is closed because of timeout or user manually closes it. Emitted when any dragged items are dropped on the tray icon. Emitted when dragged files are dropped in the tray icon. Emitted when a drag operation enters the tray icon. Emitted when a drag operation exits the tray icon. Emitted when a drag operation ends on the tray or ends at another location.",
-        "platforms": [
-          "Windows"
-        ],
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "files",
-            "type": "Array",
-            "description": "the file path of dropped files."
-          }
-        ]
-      },
-      {
-        "name": "balloon-closed",
-        "description": "Emitted when the tray balloon is closed because of timeout or user manually closes it. Emitted when any dragged items are dropped on the tray icon. Emitted when dragged files are dropped in the tray icon. Emitted when a drag operation enters the tray icon. Emitted when a drag operation exits the tray icon. Emitted when a drag operation ends on the tray or ends at another location.",
-        "platforms": [
-          "Windows"
-        ],
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "files",
-            "type": "Array",
-            "description": "the file path of dropped files."
-          }
-        ]
-      },
-      {
-        "name": "drop",
-        "description": "Emitted when any dragged items are dropped on the tray icon. Emitted when dragged files are dropped in the tray icon. Emitted when a drag operation enters the tray icon. Emitted when a drag operation exits the tray icon. Emitted when a drag operation ends on the tray or ends at another location.",
-        "platforms": [
-          "macOS"
-        ],
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "files",
-            "type": "Array",
-            "description": "the file path of dropped files."
-          }
-        ]
-      },
-      {
-        "name": "drop-files",
-        "description": "Emitted when dragged files are dropped in the tray icon. Emitted when a drag operation enters the tray icon. Emitted when a drag operation exits the tray icon. Emitted when a drag operation ends on the tray or ends at another location.",
-        "platforms": [
-          "macOS"
-        ],
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "files",
-            "type": "Array",
-            "description": "the file path of dropped files."
-          }
-        ]
-      },
-      {
-        "name": "drag-enter",
-        "description": "Emitted when a drag operation enters the tray icon. Emitted when a drag operation exits the tray icon. Emitted when a drag operation ends on the tray or ends at another location.",
-        "platforms": [
-          "macOS"
-        ]
-      },
-      {
-        "name": "drag-leave",
-        "description": "Emitted when a drag operation exits the tray icon. Emitted when a drag operation ends on the tray or ends at another location.",
-        "platforms": [
-          "macOS"
-        ]
-      },
-      {
-        "name": "drag-end",
-        "description": "Emitted when a drag operation ends on the tray or ends at another location.",
-        "platforms": [
-          "macOS"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "webContents",
-    "description": "Render and control web pages.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Object",
-    "slug": "web-contents",
-    "websiteUrl": "http://electron.atom.io/docs/api/web-contents",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/web-contents.md",
-    "events": [
-      {
-        "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."
-      },
-      {
-        "name": "did-fail-load",
-        "description": "This event is like did-finish-load but emitted when the load failed or was cancelled, e.g. window.stop() is invoked. The full list of error codes and their meaning is available here. Note that redirect responses will emit errorCode -3; you may want to ignore that error explicitly.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "errorCode",
-            "type": "Integer"
-          },
-          {
-            "name": "errorDescription",
-            "type": "String"
-          },
-          {
-            "name": "validatedURL",
-            "type": "String"
-          },
-          {
-            "name": "isMainFrame",
-            "type": "Boolean"
-          }
-        ]
-      },
-      {
-        "name": "did-frame-finish-load",
-        "description": "Emitted when a frame has done navigation.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "isMainFrame",
-            "type": "Boolean"
-          }
-        ]
-      },
-      {
-        "name": "did-start-loading",
-        "description": "Corresponds to the points in time when the spinner of the tab started spinning."
-      },
-      {
-        "name": "did-stop-loading",
-        "description": "Corresponds to the points in time when the spinner of the tab stopped spinning."
-      },
-      {
-        "name": "did-get-response-details",
-        "description": "Emitted when details regarding a requested resource are available. status indicates the socket connection to download the resource.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "status",
-            "type": "Boolean"
-          },
-          {
-            "name": "newURL",
-            "type": "String"
-          },
-          {
-            "name": "originalURL",
-            "type": "String"
-          },
-          {
-            "name": "httpResponseCode",
-            "type": "Integer"
-          },
-          {
-            "name": "requestMethod",
-            "type": "String"
-          },
-          {
-            "name": "referrer",
-            "type": "String"
-          },
-          {
-            "name": "headers",
-            "type": "Object"
-          },
-          {
-            "name": "resourceType",
-            "type": "String"
-          }
-        ]
-      },
-      {
-        "name": "did-get-redirect-request",
-        "description": "Emitted when a redirect is received while requesting a resource.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "oldURL",
-            "type": "String"
-          },
-          {
-            "name": "newURL",
-            "type": "String"
-          },
-          {
-            "name": "isMainFrame",
-            "type": "Boolean"
-          },
-          {
-            "name": "httpResponseCode",
-            "type": "Integer"
-          },
-          {
-            "name": "requestMethod",
-            "type": "String"
-          },
-          {
-            "name": "referrer",
-            "type": "String"
-          },
-          {
-            "name": "headers",
-            "type": "Object"
-          }
-        ]
-      },
-      {
-        "name": "dom-ready",
-        "description": "Emitted when the document in the given frame is loaded.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          }
-        ]
-      },
-      {
-        "name": "page-favicon-updated",
-        "description": "Emitted when page receives favicon urls.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "favicons",
-            "type": "Array",
-            "description": "Array of URLs"
-          }
-        ]
-      },
-      {
-        "name": "new-window",
-        "description": "Emitted when the page requests to open a new window for a url. It could be requested by window.open or an external link like <a target='_blank'>. By default a new BrowserWindow will be created for the url. Calling event.preventDefault() will prevent creating new windows.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "url",
-            "type": "String"
-          },
-          {
-            "name": "frameName",
-            "type": "String"
-          },
-          {
-            "name": "disposition",
-            "type": "String",
-            "description": "Can be `default`, `foreground-tab`, `background-tab`,"
-          },
-          {
-            "name": "options",
-            "type": "Object",
-            "description": "The options which will be used for creating the new"
-          }
-        ]
-      },
-      {
-        "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. This event will not emit when the navigation is started programmatically with APIs like webContents.loadURL and webContents.back. It 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. Calling event.preventDefault() will prevent the navigation.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "url",
-            "type": "String"
-          }
-        ]
-      },
-      {
-        "name": "did-navigate",
-        "description": "Emitted when a navigation is done. This 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.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "url",
-            "type": "String"
-          }
-        ]
-      },
-      {
-        "name": "did-navigate-in-page",
-        "description": "Emitted when an in-page navigation happened. When 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.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "url",
-            "type": "String"
-          }
-        ]
-      },
-      {
-        "name": "crashed",
-        "description": "Emitted when the renderer process has crashed."
-      },
-      {
-        "name": "plugin-crashed",
-        "description": "Emitted when a plugin process has crashed.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "name",
-            "type": "String"
-          },
-          {
-            "name": "version",
-            "type": "String"
-          }
-        ]
-      },
-      {
-        "name": "destroyed",
-        "description": "Emitted when webContents is destroyed."
-      },
-      {
-        "name": "devtools-opened",
-        "description": "Emitted when DevTools is opened."
-      },
-      {
-        "name": "devtools-closed",
-        "description": "Emitted when DevTools is closed."
-      },
-      {
-        "name": "devtools-focused",
-        "description": "Emitted when DevTools is focused / opened."
-      },
-      {
-        "name": "certificate-error",
-        "description": "Emitted when failed to verify the certificate for url. The usage is the same with the certificate-error event of app.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "url",
-            "type": "URL"
-          },
-          {
-            "name": "error",
-            "type": "String",
-            "description": "The error code"
-          },
-          {
-            "name": "certificate",
-            "type": "Object",
-            "properties": [
-              {
-                "name": "data",
-                "type": "Buffer",
-                "description": "PEM encoded data"
-              },
-              {
-                "name": "issuerName",
-                "type": "String"
-              }
-            ]
-          },
-          {
-            "name": "callback",
-            "type": "Function"
-          }
-        ]
-      },
-      {
-        "name": "select-client-certificate",
-        "description": "Emitted when a client certificate is requested. The usage is the same with the select-client-certificate event of app.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "url",
-            "type": "URL"
-          },
-          {
-            "name": "callback",
-            "type": "Function"
-          }
-        ]
-      },
-      {
-        "name": "login",
-        "description": "Emitted when webContents wants to do basic auth. The usage is the same with the login event of app.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "request",
-            "type": "Object",
-            "properties": [
-              {
-                "name": "method",
-                "type": "String"
-              },
-              {
-                "name": "url",
-                "type": "URL"
-              },
-              {
-                "name": "referrer",
-                "type": "URL"
-              }
-            ]
-          },
-          {
-            "name": "authInfo",
-            "type": "Object",
-            "properties": [
-              {
-                "name": "isProxy",
-                "type": "Boolean"
-              },
-              {
-                "name": "scheme",
-                "type": "String"
-              },
-              {
-                "name": "host",
-                "type": "String"
-              },
-              {
-                "name": "port",
-                "type": "Integer"
-              },
-              {
-                "name": "realm",
-                "type": "String"
-              }
-            ]
-          },
-          {
-            "name": "callback",
-            "type": "Function"
-          }
-        ]
-      },
-      {
-        "name": "found-in-page",
-        "description": "Emitted when a result is available for webContents.findInPage request.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "result",
-            "type": "Object",
-            "properties": [
-              {
-                "name": "requestId",
-                "type": "Integer"
-              },
-              {
-                "name": "finalUpdate",
-                "type": "Boolean",
-                "description": "Indicates if more responses are to follow."
-              },
-              {
-                "name": "activeMatchOrdinal",
-                "type": "Integer",
-                "description": " (optional) - Position of the active match."
-              },
-              {
-                "name": "matches",
-                "type": "Integer",
-                "description": " (optional) - Number of Matches."
-              },
-              {
-                "name": "selectionArea",
-                "type": "Object",
-                "description": " (optional) - Coordinates of first match region."
-              }
-            ]
-          }
-        ]
-      },
-      {
-        "name": "media-started-playing",
-        "description": "Emitted when media starts playing."
-      },
-      {
-        "name": "media-paused",
-        "description": "Emitted when media is paused or done playing."
-      },
-      {
-        "name": "did-change-theme-color",
-        "description": "Emitted when a page's theme color changes. This is usually due to encountering a meta tag:"
-      },
-      {
-        "name": "update-target-url",
-        "description": "Emitted when mouse moves over a link or the keyboard moves the focus to a link.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "url",
-            "type": "String"
-          }
-        ]
-      },
-      {
-        "name": "cursor-changed",
-        "description": "Emitted when the cursor's type changes. The type parameter can be default, crosshair, pointer, 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, 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. If the type parameter is custom, the image parameter will hold the custom cursor image in a NativeImage, and the scale will hold scaling information for the image.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "type",
-            "type": "String"
-          },
-          {
-            "name": "image",
-            "type": "NativeImage",
-            "description": "(optional)"
-          },
-          {
-            "name": "scale",
-            "type": "Float",
-            "description": "(optional)"
-          }
-        ]
-      },
-      {
-        "name": "context-menu",
-        "description": "The mediaFlags is an object with the following properties: The editFlags is an object with the following properties: Emitted when there is a new context menu that needs to be handled.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "params",
-            "type": "Object",
-            "properties": [
-              {
-                "name": "x",
-                "type": "Integer",
-                "description": "x coordinate"
-              },
-              {
-                "name": "y",
-                "type": "Integer",
-                "description": "y coordinate"
-              },
-              {
-                "name": "file",
-                "type": "or",
-                "description": " <code>plugin</code>."
-              },
-              {
-                "name": "isEditable",
-                "type": "Boolean",
-                "description": "Whether the context is editable."
-              },
-              {
-                "name": "misspelledWord",
-                "type": "String",
-                "description": "The misspelled word under the cursor, if any."
-              }
-            ]
-          },
-          {
-            "name": "inError",
-            "type": "Boolean",
-            "description": "Whether the media element has crashed."
-          },
-          {
-            "name": "isPaused",
-            "type": "Boolean",
-            "description": "Whether the media element is paused."
-          },
-          {
-            "name": "isMuted",
-            "type": "Boolean",
-            "description": "Whether the media element is muted."
-          },
-          {
-            "name": "hasAudio",
-            "type": "Boolean",
-            "description": "Whether the media element has audio."
-          },
-          {
-            "name": "isLooping",
-            "type": "Boolean",
-            "description": "Whether the media element is looping."
-          },
-          {
-            "name": "isControlsVisible",
-            "type": "Boolean",
-            "description": "Whether the media element's controls are"
-          },
-          {
-            "name": "canToggleControls",
-            "type": "Boolean",
-            "description": "Whether the media element's controls are"
-          },
-          {
-            "name": "canRotate",
-            "type": "Boolean",
-            "description": "Whether the media element can be rotated."
-          },
-          {
-            "name": "canUndo",
-            "type": "Boolean",
-            "description": "Whether the renderer believes it can undo."
-          },
-          {
-            "name": "canRedo",
-            "type": "Boolean",
-            "description": "Whether the renderer believes it can redo."
-          },
-          {
-            "name": "canCut",
-            "type": "Boolean",
-            "description": "Whether the renderer believes it can cut."
-          },
-          {
-            "name": "canCopy",
-            "type": "Boolean",
-            "description": "Whether the renderer believes it can copy"
-          },
-          {
-            "name": "canPaste",
-            "type": "Boolean",
-            "description": "Whether the renderer believes it can paste."
-          },
-          {
-            "name": "canDelete",
-            "type": "Boolean",
-            "description": "Whether the renderer believes it can delete."
-          },
-          {
-            "name": "canSelectAll",
-            "type": "Boolean",
-            "description": "Whether the renderer believes it can select all."
-          }
-        ]
-      },
-      {
-        "name": "select-bluetooth-device",
-        "description": "Emitted when bluetooth device needs to be selected on call to navigator.bluetooth.requestDevice. To use navigator.bluetooth api webBluetooth should be enabled.  If event.preventDefault is not called, first available device will be selected. callback should be called with deviceId to be selected, passing empty string to callback will cancel the request.",
-        "returns": [
-          {
-            "name": "event",
-            "type": "Event"
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "properties": [
-              {
-                "name": "deviceId",
-                "type": "String"
-              }
-            ]
-          }
-        ]
-      }
-    ],
-    "instanceMethods": [
-      {
-        "name": "loadURL",
-        "signature": "(url[, options])",
-        "description": "Loads 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.",
-        "arguments": [
-          {
-            "name": "url",
-            "type": "URL",
-            "required": true
-          },
-          {
-            "name": "options",
-            "type": "Object",
-            "description": "(optional)",
-            "required": false,
-            "properties": [
-              {
-                "name": "httpReferrer",
-                "type": "String",
-                "description": "A HTTP Referrer url."
-              },
-              {
-                "name": "userAgent",
-                "type": "String",
-                "description": "A user agent originating the request."
-              },
-              {
-                "name": "extraHeaders",
-                "type": "String",
-                "description": "Extra headers separated by &quot;\\n&quot;"
-              }
-            ]
-          }
-        ]
-      },
-      {
-        "name": "downloadURL",
-        "signature": "(url)",
-        "description": "Initiates a download of the resource at url without navigating. The will-download event of session will be triggered.",
-        "arguments": [
-          {
-            "name": "url",
-            "type": "URL",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getURL",
-        "signature": "()",
-        "description": "Returns URL of the current web page."
-      },
-      {
-        "name": "getTitle",
-        "signature": "()",
-        "description": "Returns the title of the current web page."
-      },
-      {
-        "name": "isLoading",
-        "signature": "()",
-        "description": "Returns whether web page is still loading resources."
-      },
-      {
-        "name": "isLoadingMainFrame",
-        "signature": "()",
-        "description": "Returns whether the main frame (and not just iframes or frames within it) is still loading."
-      },
-      {
-        "name": "isWaitingForResponse",
-        "signature": "()",
-        "description": "Returns whether the web page is waiting for a first-response from the main resource of the page."
-      },
-      {
-        "name": "stop",
-        "signature": "()",
-        "description": "Stops any pending navigation."
-      },
-      {
-        "name": "reload",
-        "signature": "()",
-        "description": "Reloads the current web page."
-      },
-      {
-        "name": "reloadIgnoringCache",
-        "signature": "()",
-        "description": "Reloads current page and ignores cache."
-      },
-      {
-        "name": "canGoBack",
-        "signature": "()",
-        "description": "Returns whether the browser can go back to previous web page."
-      },
-      {
-        "name": "canGoForward",
-        "signature": "()",
-        "description": "Returns whether the browser can go forward to next web page."
-      },
-      {
-        "name": "canGoToOffset",
-        "signature": "(offset)",
-        "description": "Returns whether the web page can go to offset.",
-        "arguments": [
-          {
-            "name": "offset",
-            "type": "Integer",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "clearHistory",
-        "signature": "()",
-        "description": "Clears the navigation history."
-      },
-      {
-        "name": "goBack",
-        "signature": "()",
-        "description": "Makes the browser go back a web page."
-      },
-      {
-        "name": "goForward",
-        "signature": "()",
-        "description": "Makes the browser go forward a web page."
-      },
-      {
-        "name": "goToIndex",
-        "signature": "(index)",
-        "description": "Navigates browser to the specified absolute web page index.",
-        "arguments": [
-          {
-            "name": "index",
-            "type": "Integer",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "goToOffset",
-        "signature": "(offset)",
-        "description": "Navigates to the specified offset from the \"current entry\".",
-        "arguments": [
-          {
-            "name": "offset",
-            "type": "Integer",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isCrashed",
-        "signature": "()",
-        "description": "Whether the renderer process has crashed."
-      },
-      {
-        "name": "setUserAgent",
-        "signature": "(userAgent)",
-        "description": "Overrides the user agent for this web page.",
-        "arguments": [
-          {
-            "name": "userAgent",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getUserAgent",
-        "signature": "()",
-        "description": "Returns a String representing the user agent for this web page."
-      },
-      {
-        "name": "insertCSS",
-        "signature": "(css)",
-        "description": "Injects CSS into the current web page.",
-        "arguments": [
-          {
-            "name": "css",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "executeJavaScript",
-        "signature": "(code[, userGesture, callback])",
-        "description": "Evaluates code in page. In 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.",
-        "arguments": [
-          {
-            "name": "code",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "userGesture",
-            "type": "Boolean",
-            "description": "(optional)",
-            "required": false
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "description": "(optional) - Called after script has been executed.",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "setAudioMuted",
-        "signature": "(muted)",
-        "description": "Mute the audio on the current web page.",
-        "arguments": [
-          {
-            "name": "muted",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "isAudioMuted",
-        "signature": "()",
-        "description": "Returns whether this page has been muted."
-      },
-      {
-        "name": "undo",
-        "signature": "()",
-        "description": "Executes the editing command undo in web page."
-      },
-      {
-        "name": "redo",
-        "signature": "()",
-        "description": "Executes the editing command redo in web page."
-      },
-      {
-        "name": "cut",
-        "signature": "()",
-        "description": "Executes the editing command cut in web page."
-      },
-      {
-        "name": "copy",
-        "signature": "()",
-        "description": "Executes the editing command copy in web page."
-      },
-      {
-        "name": "paste",
-        "signature": "()",
-        "description": "Executes the editing command paste in web page."
-      },
-      {
-        "name": "pasteAndMatchStyle",
-        "signature": "()",
-        "description": "Executes the editing command pasteAndMatchStyle in web page."
-      },
-      {
-        "name": "delete",
-        "signature": "()",
-        "description": "Executes the editing command delete in web page."
-      },
-      {
-        "name": "selectAll",
-        "signature": "()",
-        "description": "Executes the editing command selectAll in web page."
-      },
-      {
-        "name": "unselect",
-        "signature": "()",
-        "description": "Executes the editing command unselect in web page."
-      },
-      {
-        "name": "replace",
-        "signature": "(text)",
-        "description": "Executes the editing command replace in web page.",
-        "arguments": [
-          {
-            "name": "text",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "replaceMisspelling",
-        "signature": "(text)",
-        "description": "Executes the editing command replaceMisspelling in web page.",
-        "arguments": [
-          {
-            "name": "text",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "insertText",
-        "signature": "(text)",
-        "description": "Inserts text to the focused element.",
-        "arguments": [
-          {
-            "name": "text",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "findInPage",
-        "signature": "(text[, options])",
-        "description": "Starts a request to find all matches for the text in the web page and returns an Integer representing the request id used for the request. The result of the request can be obtained by subscribing to found-in-page event.",
-        "arguments": [
-          {
-            "name": "text",
-            "type": "String",
-            "description": "Content to be searched, must not be empty.",
-            "required": true
-          },
-          {
-            "name": "options",
-            "type": "Object",
-            "description": "(optional)",
-            "required": false,
-            "properties": [
-              {
-                "name": "forward",
-                "type": "Boolean",
-                "description": "Whether to search forward or backward, defaults to <code>true</code>."
-              }
-            ]
-          }
-        ]
-      },
-      {
-        "name": "stopFindInPage",
-        "signature": "(action)",
-        "description": "Stops any findInPage request for the webContents with the provided action.",
-        "arguments": [
-          {
-            "name": "action",
-            "type": "String",
-            "description": "Specifies the action to take place when ending",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "capturePage",
-        "signature": "([rect, ]callback)",
-        "description": "Captures a snapshot of the page within rect. Upon completion callback will be called with callback(image). The image is an instance of NativeImage that stores data of the snapshot. Omitting rect will capture the whole visible page.",
-        "arguments": [
-          {
-            "name": "rect",
-            "type": "Object",
-            "description": "(optional) - The area of the page to be captured",
-            "required": false,
-            "properties": [
-              {
-                "name": "x",
-                "type": "Integer"
-              },
-              {
-                "name": "y",
-                "type": "Integer"
-              },
-              {
-                "name": "width",
-                "type": "Integer"
-              },
-              {
-                "name": "height",
-                "type": "Integer"
-              }
-            ]
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "hasServiceWorker",
-        "signature": "(callback)",
-        "description": "Checks if any ServiceWorker is registered and returns a boolean as response to callback.",
-        "arguments": [
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "unregisterServiceWorker",
-        "signature": "(callback)",
-        "description": "Unregisters any ServiceWorker if present and returns a boolean as response to callback when the JS promise is fulfilled or false when the JS promise is rejected.",
-        "arguments": [
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "print",
-        "signature": "([options])",
-        "description": "Prints window's web page. When silent is set to false, Electron will pick up system's default printer and default settings for printing. Calling window.print() in web page is equivalent to calling webContents.print({silent: false, printBackground: false}).",
-        "arguments": [
-          {
-            "name": "options",
-            "type": "Object",
-            "description": "(optional)",
-            "required": false,
-            "properties": [
-              {
-                "name": "silent",
-                "type": "Boolean",
-                "description": "Don&apos;t ask user for print settings. Default is <code>false</code>."
-              }
-            ]
-          }
-        ]
-      },
-      {
-        "name": "printToPDF",
-        "signature": "(options, callback)",
-        "description": "Prints window's web page as PDF with Chromium's preview printing custom settings. The callback will be called with callback(error, data) on completion. The data is a Buffer that contains the generated PDF data. By default, an empty options will be regarded as: An example of webContents.printToPDF:",
-        "arguments": [
-          {
-            "name": "options",
-            "type": "Object",
-            "required": true,
-            "properties": [
-              {
-                "name": "height",
-                "type": "and",
-                "description": " <code>width</code> in microns."
-              },
-              {
-                "name": "printBackground",
-                "type": "Boolean",
-                "description": "Whether to print CSS backgrounds."
-              },
-              {
-                "name": "printSelectionOnly",
-                "type": "Boolean",
-                "description": "Whether to print selection only."
-              },
-              {
-                "name": "landscape",
-                "type": "Boolean",
-                "description": "<code>true</code> for landscape, <code>false</code> for portrait."
-              }
-            ]
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "addWorkSpace",
-        "signature": "(path)",
-        "description": "Adds the specified path to DevTools workspace. Must be used after DevTools creation:",
-        "arguments": [
-          {
-            "name": "path",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "removeWorkSpace",
-        "signature": "(path)",
-        "description": "Removes the specified path from DevTools workspace.",
-        "arguments": [
-          {
-            "name": "path",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "openDevTools",
-        "signature": "([options])",
-        "description": "Opens the devtools.",
-        "arguments": [
-          {
-            "name": "options",
-            "type": "Object",
-            "description": "(optional)",
-            "required": false,
-            "properties": [
-              {
-                "name": "undocked",
-                "type": "mode",
-                "description": " it&apos;s possible to dock back. In <code>detach</code> mode it&apos;s not."
-              }
-            ]
-          }
-        ]
-      },
-      {
-        "name": "closeDevTools",
-        "signature": "()",
-        "description": "Closes the devtools."
-      },
-      {
-        "name": "isDevToolsOpened",
-        "signature": "()",
-        "description": "Returns whether the devtools is opened."
-      },
-      {
-        "name": "isDevToolsFocused",
-        "signature": "()",
-        "description": "Returns whether the devtools view is focused ."
-      },
-      {
-        "name": "toggleDevTools",
-        "signature": "()",
-        "description": "Toggles the developer tools."
-      },
-      {
-        "name": "inspectElement",
-        "signature": "(x, y)",
-        "description": "Starts inspecting element at position (x, y).",
-        "arguments": [
-          {
-            "name": "x",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "y",
-            "type": "Integer",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "inspectServiceWorker",
-        "signature": "()",
-        "description": "Opens the developer tools for the service worker context."
-      },
-      {
-        "name": "send",
-        "signature": "(channel[, arg1][, arg2][, ...])",
-        "description": "Send an asynchronous message to renderer process via channel, you can also send arbitrary arguments. Arguments will be serialized in JSON internally and hence no functions or prototype chain will be included. The renderer process can handle the message by listening to channel with the ipcRenderer module. An example of sending messages from the main process to the renderer process:",
-        "arguments": [
-          {
-            "name": "channel",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "enableDeviceEmulation",
-        "signature": "(parameters)",
-        "description": "parameters Object, properties: Enable device emulation with the given parameters.",
-        "arguments": [
-          {
-            "name": "screenPosition",
-            "type": "String",
-            "description": "Specify the screen type to emulate",
-            "required": true
-          },
-          {
-            "name": "screenSize",
-            "type": "Object",
-            "description": "Set the emulated screen size (screenPosition == mobile)",
-            "required": true,
-            "properties": [
-              {
-                "name": "width",
-                "type": "Integer",
-                "description": "Set the emulated screen width"
-              },
-              {
-                "name": "height",
-                "type": "Integer",
-                "description": "Set the emulated screen height"
-              }
-            ]
-          },
-          {
-            "name": "viewPosition",
-            "type": "Object",
-            "description": "Position the view on the screen",
-            "required": true,
-            "properties": [
-              {
-                "name": "x",
-                "type": "Integer",
-                "description": "Set the x axis offset from top left corner"
-              },
-              {
-                "name": "y",
-                "type": "Integer",
-                "description": "Set the y axis offset from top left corner"
-              }
-            ]
-          },
-          {
-            "name": "deviceScaleFactor",
-            "type": "Integer",
-            "description": "Set the device scale factor (if zero defaults to",
-            "required": true
-          },
-          {
-            "name": "viewSize",
-            "type": "Object",
-            "description": "Set the emulated view size (empty means no override)",
-            "required": true,
-            "properties": [
-              {
-                "name": "width",
-                "type": "Integer",
-                "description": "Set the emulated view width"
-              },
-              {
-                "name": "height",
-                "type": "Integer",
-                "description": "Set the emulated view height"
-              }
-            ]
-          },
-          {
-            "name": "fitToView",
-            "type": "Boolean",
-            "description": "Whether emulated view should be scaled down if",
-            "required": true
-          },
-          {
-            "name": "offset",
-            "type": "Object",
-            "description": "Offset of the emulated view inside available space (not in",
-            "required": true,
-            "properties": [
-              {
-                "name": "x",
-                "type": "Float",
-                "description": "Set the x axis offset from top left corner"
-              },
-              {
-                "name": "y",
-                "type": "Float",
-                "description": "Set the y axis offset from top left corner"
-              }
-            ]
-          },
-          {
-            "name": "scale",
-            "type": "Float",
-            "description": "Scale of emulated view inside available space (not in fit to",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "disableDeviceEmulation",
-        "signature": "()",
-        "description": "Disable device emulation enabled by webContents.enableDeviceEmulation."
-      },
-      {
-        "name": "sendInputEvent",
-        "signature": "(event)",
-        "description": "Sends an input event to the page. For keyboard events, the event object also have following properties: For mouse events, the event object also have following properties: For the mouseWheel event, the event object also have following properties:",
-        "arguments": [
-          {
-            "name": "event",
-            "type": "Object",
-            "required": true
-          },
-          {
-            "name": "keyCode",
-            "type": "String",
-            "description": "(required) - The character that will be sent",
-            "required": true
-          },
-          {
-            "name": "x",
-            "type": "Integer",
-            "description": "(required)",
-            "required": true
-          },
-          {
-            "name": "y",
-            "type": "Integer",
-            "description": "(required)",
-            "required": true
-          },
-          {
-            "name": "button",
-            "type": "String",
-            "description": "The button pressed, can be `left`, `middle`, `right`",
-            "required": true
-          },
-          {
-            "name": "globalX",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "globalY",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "movementX",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "movementY",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "clickCount",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "deltaX",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "deltaY",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "wheelTicksX",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "wheelTicksY",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "accelerationRatioX",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "accelerationRatioY",
-            "type": "Integer",
-            "required": true
-          },
-          {
-            "name": "hasPreciseScrollingDeltas",
-            "type": "Boolean",
-            "required": true
-          },
-          {
-            "name": "canScroll",
-            "type": "Boolean",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "beginFrameSubscription",
-        "signature": "([onlyDirty ,]callback)",
-        "description": "Begin subscribing for presentation events and captured frames, the callback will be called with callback(frameBuffer, dirtyRect) when there is a presentation event. The frameBuffer is a Buffer that contains raw pixel data. On most machines, the pixel data is effectively stored in 32bit BGRA format, but the actual representation depends on the endianness of the processor (most modern processors are little-endian, on machines with big-endian processors the data is in 32bit ARGB format). The 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, frameBuffer will only contain the repainted area. onlyDirty defaults to false.",
-        "arguments": [
-          {
-            "name": "onlyDirty",
-            "type": "Boolean",
-            "description": "(optional) - Defaults to `false`",
-            "required": false
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "endFrameSubscription",
-        "signature": "()",
-        "description": "End subscribing for frame presentation events."
-      },
-      {
-        "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.",
-        "arguments": [
-          {
-            "name": "item",
-            "type": "object",
-            "required": true,
-            "properties": [
-              {
-                "name": "file",
-                "type": "String"
-              },
-              {
-                "name": "icon",
-                "type": "NativeImage"
-              }
-            ]
-          }
-        ]
-      },
-      {
-        "name": "savePage",
-        "signature": "(fullPath, saveType, callback)",
-        "description": "Returns true if the process of saving page has been initiated successfully.",
-        "arguments": [
-          {
-            "name": "fullPath",
-            "type": "String",
-            "description": "The full file path.",
-            "required": true
-          },
-          {
-            "name": "saveType",
-            "type": "String",
-            "description": "Specify the save type.",
-            "required": true
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "description": "`(error) => {}`.",
-            "required": true,
-            "properties": [
-              {
-                "name": "error",
-                "type": "Error"
-              }
-            ]
-          }
-        ]
-      },
-      {
-        "name": "showDefinitionForSelection",
-        "signature": "()",
-        "platforms": [
-          "macOS"
-        ],
-        "description": "Shows pop-up dictionary that searches the selected word on the page."
-      }
-    ]
-  },
-  {
-    "name": "process",
-    "description": "Extensions to process object.",
-    "process": {
-      "main": true,
-      "renderer": false
-    },
-    "type": "Object",
-    "slug": "process",
-    "websiteUrl": "http://electron.atom.io/docs/api/process",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/process.md",
-    "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. It can be used by the preload script to add removed Node global symbols back to the global scope when node integration is turned off:"
-      }
-    ],
-    "methods": [
-      {
-        "name": "crash",
-        "signature": "()",
-        "description": "Causes the main thread of the current process crash."
-      },
-      {
-        "name": "hang",
-        "signature": "()",
-        "description": "Causes the main thread of the current process hang."
-      },
-      {
-        "name": "setFdLimit",
-        "signature": "(maxDescriptors)",
-        "platforms": [
-          "macOS",
-          "Linux"
-        ],
-        "description": "Sets the file descriptor soft limit to maxDescriptors or the OS hard limit, whichever is lower for the current process.",
-        "arguments": [
-          {
-            "name": "maxDescriptors",
-            "type": "Integer",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getProcessMemoryInfo",
-        "signature": "()",
-        "description": "Returns an object giving memory usage statistics about the current process. Note that all statistics are reported in Kilobytes."
-      },
-      {
-        "name": "getSystemMemoryInfo",
-        "signature": "()",
-        "description": "Returns an object giving memory usage statistics about the entire system. Note that all statistics are reported in Kilobytes. On Windows / Linux:"
-      }
-    ]
-  },
-  {
-    "name": "desktopCapturer",
-    "description": "List getUserMedia sources for capturing audio, video, and images from a\nmicrophone, camera, or screen.",
-    "process": {
-      "main": false,
-      "renderer": true
-    },
-    "type": "Object",
-    "slug": "desktop-capturer",
-    "websiteUrl": "http://electron.atom.io/docs/api/desktop-capturer",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/desktop-capturer.md",
-    "methods": [
-      {
-        "name": "getSources",
-        "signature": "(options, callback)",
-        "description": "Starts a request to get all desktop sources, callback will be called with callback(error, sources) when the request is completed. The sources is an array of Source objects, each Source represents a captured screen or individual window, and has following properties: Note: There is no guarantee that the size of source.thumbnail is always the same as the thumnbailSize in options. It also depends on the scale of the screen or window.",
-        "arguments": [
-          {
-            "name": "options",
-            "type": "Object",
-            "required": false,
-            "properties": [
-              {
-                "name": "screen",
-                "type": "and",
-                "description": " <code>window</code>."
-              }
-            ]
-          },
-          {
-            "name": "callback",
-            "type": "Function",
-            "required": true
-          },
-          {
-            "name": "id",
-            "type": "String",
-            "description": "The id of the captured window or screen used in",
-            "required": true
-          },
-          {
-            "name": "name",
-            "type": "String",
-            "description": "The described name of the capturing screen or window. If the",
-            "required": true
-          },
-          {
-            "name": "thumbnail",
-            "type": "NativeImage",
-            "description": "A thumbnail native image.",
-            "required": true
-          }
-        ]
-      }
-    ]
-  },
-  {
-    "name": "ipcRenderer",
-    "description": "Communicate asynchronously from a renderer process to the main process.",
-    "process": {
-      "main": false,
-      "renderer": true
-    },
-    "type": "Object",
-    "slug": "ipc-renderer",
-    "websiteUrl": "http://electron.atom.io/docs/api/ipc-renderer",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/ipc-renderer.md"
-  },
-  {
-    "name": "remote",
-    "description": "Use main process modules from the renderer process.",
-    "process": {
-      "main": false,
-      "renderer": true
-    },
-    "type": "Object",
-    "slug": "remote",
-    "websiteUrl": "http://electron.atom.io/docs/api/remote",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/remote.md",
-    "methods": [
-      {
-        "name": "require",
-        "signature": "(module)",
-        "description": "Returns the object returned by require(module) in the main process.",
-        "arguments": [
-          {
-            "name": "module",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getCurrentWindow",
-        "signature": "()",
-        "description": "Returns the BrowserWindow object to which this web page belongs."
-      },
-      {
-        "name": "getCurrentWebContents",
-        "signature": "()",
-        "description": "Returns the WebContents object of this web page."
-      },
-      {
-        "name": "getGlobal",
-        "signature": "(name)",
-        "description": "Returns the global variable of name (e.g. global[name]) in the main process.",
-        "arguments": [
-          {
-            "name": "name",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "process",
-        "description": "Returns the process object in the main process. This is the same as remote.getGlobal('process') but is cached."
-      }
-    ]
-  },
-  {
-    "name": "webFrame",
-    "description": "Customize the rendering of the current web page.",
-    "process": {
-      "main": false,
-      "renderer": true
-    },
-    "type": "Object",
-    "slug": "web-frame",
-    "websiteUrl": "http://electron.atom.io/docs/api/web-frame",
-    "repoUrl": "https://github.com/electron/electron/blob/v1.2.7/docs/api/web-frame.md",
-    "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.",
-        "arguments": [
-          {
-            "name": "factor",
-            "type": "Number",
-            "description": "Zoom factor.",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getZoomFactor",
-        "signature": "()",
-        "description": "Returns the current zoom factor."
-      },
-      {
-        "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.",
-        "arguments": [
-          {
-            "name": "level",
-            "type": "Number",
-            "description": "Zoom level",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "getZoomLevel",
-        "signature": "()",
-        "description": "Returns the current zoom level."
-      },
-      {
-        "name": "setZoomLevelLimits",
-        "signature": "(minimumLevel, maximumLevel)",
-        "description": "Sets the maximum and minimum zoom level.",
-        "arguments": [
-          {
-            "name": "minimumLevel",
-            "type": "Number",
-            "required": true
-          },
-          {
-            "name": "maximumLevel",
-            "type": "Number",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "setSpellCheckProvider",
-        "signature": "(language, autoCorrectWord, provider)",
-        "description": "Sets a provider for spell checking in input fields and text areas. The provider must be an object that has a spellCheck method that returns whether the word passed is correctly spelled. An example of using node-spellchecker as provider:",
-        "arguments": [
-          {
-            "name": "language",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "autoCorrectWord",
-            "type": "Boolean",
-            "required": true
-          },
-          {
-            "name": "provider",
-            "type": "Object",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "registerURLSchemeAsSecure",
-        "signature": "(scheme)",
-        "description": "Registers the scheme as secure scheme. Secure schemes do not trigger mixed content warnings. For example, https and data are secure schemes because they cannot be corrupted by active network attackers.",
-        "arguments": [
-          {
-            "name": "scheme",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "registerURLSchemeAsBypassingCSP",
-        "signature": "(scheme)",
-        "description": "Resources will be loaded from this scheme regardless of the current page's Content Security Policy.",
-        "arguments": [
-          {
-            "name": "scheme",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "registerURLSchemeAsPrivileged",
-        "signature": "(scheme)",
-        "description": "Registers the scheme as secure, bypasses content security policy for resources, allows registering ServiceWorker and supports fetch API.",
-        "arguments": [
-          {
-            "name": "scheme",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "insertText",
-        "signature": "(text)",
-        "description": "Inserts text to the focused element.",
-        "arguments": [
-          {
-            "name": "text",
-            "type": "String",
-            "required": true
-          }
-        ]
-      },
-      {
-        "name": "executeJavaScript",
-        "signature": "(code[, userGesture])",
-        "description": "Evaluates code in page. In 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.",
-        "arguments": [
-          {
-            "name": "code",
-            "type": "String",
-            "required": true
-          },
-          {
-            "name": "userGesture",
-            "type": "Boolean",
-            "description": "(optional) - Default is `false`.",
-            "required": false
-          }
-        ]
-      },
-      {
-        "name": "getResourceUsage",
-        "signature": "()",
-        "description": "Returns an object describing usage information of Blink's internal memory caches. This will generate:"
-      },
-      {
-        "name": "clearCache",
-        "signature": "()",
-        "description": "Attempts to free memory that is no longer being used (like images from a previous navigation). Note 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)."
-      }
-    ]
-  }
-]
\ No newline at end of file
index 1367dcd..7f716d2 100644 (file)
@@ -4,7 +4,7 @@
   "devDependencies": {
     "asar": "^0.11.0",
     "electabul": "~0.0.4",
-    "electron-docs-linter": "^1.0.1",
+    "electron-docs-linter": "^1.3.0",
     "request": "*",
     "standard": "^7.1.2",
     "standard-markdown": "^1.2.1"
     "clean": "python ./script/clean.py",
     "coverage": "npm run instrument-code-coverage && npm test -- --use-instrumented-asar",
     "instrument-code-coverage": "electabul instrument --input-path ./lib --output-path ./out/coverage/electron.asar",
-    "lint": "npm run lint-js && npm run lint-cpp && npm run lint-py && npm run lint-docs",
+    "lint": "npm run lint-js && npm run lint-cpp && npm run lint-py && npm run lint-api-docs-js && npm run lint-api-docs",
     "lint-js": "standard && cd spec && standard",
     "lint-cpp": "python ./script/cpplint.py",
     "lint-py": "python ./script/pylint.py",
-    "lint-docs": "standard-markdown docs",
+    "lint-api-docs-js": "standard-markdown docs",
+    "lint-api-docs": "electron-docs-linter docs/api",
     "preinstall": "node -e 'process.exit(0)'",
     "repl": "python ./script/start.py --interactive",
     "start": "python ./script/start.py",
diff --git a/script/lint-docs.js b/script/lint-docs.js
deleted file mode 100755 (executable)
index ecea5bb..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env node
-
-const fs = require('fs')
-const path = require('path')
-const lint = require('electron-docs-linter')
-const args = process.argv.slice(2)
-const docsPath = path.join(__dirname, '../docs/api')
-const targetVersion = args[0]
-const outFile = path.join(__dirname, '../docs/api.json')
-
-if (!targetVersion) {
-  console.error(`Usage: ./script/lint-docs.js <targetVersion>`)
-  process.exit(1)
-}
-
-lint(docsPath, targetVersion).then(function(apis) {
-  fs.writeFileSync(outFile, JSON.stringify(apis, null, 2))
-  console.log(`Wrote ${outFile}`)
-})