UNPKG

@octoherd/octokit

Version:

Customized Octokit for Octoherd

150 lines (109 loc) 4.52 kB
# `@octoherd/octokit` > Customized Octokit for Octoherd ## Usage <table> <tbody valign=top align=left> <tr><th> Browsers </th><td width=100%> Load <code>@octoherd/octokit</code> directly from <a href="https://www.skypack.dev">cdn.skypack.dev</a> ```html <script type="module"> import { Octokit } from "https://cdn.skypack.dev/@octoherd/octokit"; </script> ``` </td></tr> <tr><th> Node (12+) </th><td> Install with <code>npm install @octoherd/octokit</code> ```js import { Octokit } from "@octoherd/octokit"; ``` </td></tr> <tr><th> Deno </th><td> Load <code>@octoherd/octokit</code> directly from <a href="https://www.skypack.dev">cdn.skypack.dev</a> with the `?dts` query ```js import { Octokit } from "https://cdn.skypack.dev/@octoherd/octokit?dts"; ``` </td></tr> </tbody> </table> ```js import { Octokit } from "@octoherd/octokit"; const octokit = new Octokit({ auth: /* token here, create one at https://github.com/settings/tokens/new */, }); const { data: me } = await octokit.request("GET /user") console.log(me) ``` By default you authenticate using a token, but you can use any [authentication strategy](https://github.com/octokit/core.js#authentication). ### REST API requests and GraphQL queries `@octokit/octokit` is built on [`@octokit/core`](https://github.com/octokit/core.js#readme). You can send requests to GitHub's REST API using [`octokit.request`](https://github.com/octokit/core.js#rest-api-example) and GraphQL queries [`octokit.graphql`](https://github.com/octokit/core.js#graphql-example). ### Logging By default, messages are logged with meta data using `console.info`, `console.warn`, and `console.error`. `octokit.log.debug` is a no-op, unless `options.octoherd.debug` is set to `true`. **Important**: `options.log` is ignored. Setting it has no effect. You can log simple messages, interpolation is supported. ```js octokit.log.info("Checking repository %s", repository.full_name); ``` You can pass extra meta information as the first argument ```js octokit.log.info( { id: repository.id }, "Checking repository %s", repository.full_name ); ``` You can also just log meta information for reporting later ```js octokit.log.info({ id: repository.id, owner: repositor.owner.login, repo: repository.name, private: repository.private, }); ``` The way data is logged can be customized using `options.octoherd.onLogMessage` and `options.octoherd.onLogData`. ```js const octokit = new Octokit({ octoherd: { onLogData(data) { // e.g. write data as JSON line to debug log file // data always has `.level`, and `.time` properties. `.msg` is set from the log message if set. }, onLogMessage(level, message, additionalData) { // level is one of: debug, info, warn, error. // message is the log message // additionalData is any data that was passed as first argument to the log methods. It defaults to {} console.log( `[%s]`, level.toUpperCase(), Object.keys(additionalData).length ? `${message} ${chalk.gray(JSON.stringify(additionalData))}` : message ); }, }, }); ``` Additional context can be changed at runtime using `octokit.log.setContext(context)`. The additional context is only passed to `options.octoherd.onLogData` ```js octokit.log.setContext({ repo_id: 123 }); octokit.log.info("test"); // data passed to `onLogData` will be { repo_id: 123, msg: "test", level: "info", time: 0 } // additionalData passed to `onLogMessage` will not have the `.repo_id` property ``` ### Built-in plugins `@octoherd/octokit` comes with a few plugins out of the box: - [`@octokit/plugin-paginate-rest`](https://github.com/octokit/plugin-paginate-rest.js#readme) - [`@octokit/plugin-retry`](https://github.com/octokit/plugin-retry.js#readme) - [`@octokit/plugin-throttling`](https://github.com/octokit/plugin-throttling.js#readme) You can use [`octokit.paginate()`](https://github.com/octokit/plugin-paginate-rest.js#octokitpaginate) or [`octokit.paginate.iterator()`](https://github.com/octokit/plugin-paginate-rest.js#octokitpaginateiterator) for paginating REST API requests. The retry & throttling plugins hook into the request lifecycle, retries requests in case of unrelated server errors, and throttles requests to avoid hitting rate or abuse limits. ### Extending You can extend `@octoherd/octokit` with [hooks](https://github.com/octokit/core.js#hooks) and [plugins](https://github.com/octokit/core.js#plugins) ## License [ISC](LICENSE.md)