electron-apis

2.0.2 • Public • Published

electron-apis Build Status

A JSON object describing Electron's APIs.

See apis.json or explore the object in the node repl:

npm i -g trymodule && trymodule electron-apis

Installation

The module exports a function that parses markdown docs in a given directory, then returns a JSON representation of the docs.

npm install electron-apis --save

Usage

const lint = require('electron-apis')
const docPath = './vendor/electron/docs/api'

lint(docPath).then(function (apis) {
  // `apis` is an array of API objects. To find one:
  const win = apis.find(api => api.name === 'BrowserWindow')

  win.events.length
  // => 25

  win.events[0]
  // {
  //   "name": "page-title-updated",
  //   "description": "Emitted when the document...",
  //   "returns": [
  //     {
  //       "name": "event",
  //       "type": "Event"
  //     }
  //   ]
  // }

  win.instanceMethods[20]
  // {
  //   name: 'setSize',
  //   signature: '(width, height[, animate])'
  // }
})

How It Works

The linter starts with a list of all the API names as well as booleans indicating if they're available on the Main Process or the Renderer Process (or both).

Each API's structure is inferred by parsing its raw markdown documentation from the electron repo. The electron-docs module abstracts away the challenges of fetching file contents in bulk.

Electron's API documentation adheres to Electron Coding Style and the Electron Styleguide, so its content can be programmatically parsed. To make the content easy to parse, the raw markdown is converted to HTML using marky-markdown-lite, which returns a cheerio DOM object that can be queried and traversed using familiar CSS selectors.

The result is an array of APIs. The following metadata is included for each API, where appropriate:

  • name
  • description
  • type (Class or Object)
  • process (main, renderer, or both)
  • methods
  • instance methods
  • events
  • website URL
  • GitHub repository URL

Dependencies

None

Dev Dependencies

  • chai: BDD/TDD assertion library for node.js and the browser. Test framework agnostic.
  • decamelize: Convert a camelized string into a lowercased one with a custom separator: unicornRainbow → unicorn_rainbow
  • electron-docs: Fetch Electron documentation as raw markdown strings
  • heads: Make parallel HEAD requests for an array of URLs and get back their HTTP status codes.
  • lodash.find: The lodash method _.find exported as a module.
  • marky-markdown-lite: A version of marky-markdown that does less
  • mocha: simple, flexible, fun test framework
  • omit-empty: Recursively omit empty properties from an object. Omits empty objects, arrays, strings or zero.
  • standard: JavaScript Standard Style

Related

License

MIT

Package Sidebar

Install

npm i electron-apis

Weekly Downloads

1

Version

2.0.2

License

MIT

Last publish

Collaborators

  • zeke