Update checked-in dependencies

This commit is contained in:
github-actions[bot] 2023-07-13 09:09:17 +00:00
parent 4fad06f438
commit 40a500c743
4168 changed files with 298222 additions and 374905 deletions

View file

@ -3,33 +3,34 @@
> Send parameterized requests to GitHubs APIs with sensible defaults in browsers and Node
[![@latest](https://img.shields.io/npm/v/@octokit/request.svg)](https://www.npmjs.com/package/@octokit/request)
[![Build Status](https://github.com/octokit/request.js/workflows/Test/badge.svg)](https://github.com/octokit/request.js/actions?query=workflow%3ATest+branch%3Amaster)
[![Build Status](https://github.com/octokit/request.js/workflows/Test/badge.svg)](https://github.com/octokit/request.js/actions?query=workflow%3ATest+branch%3Amain)
`@octokit/request` is a request library for browsers & node that makes it easier
to interact with [GitHubs REST API](https://developer.github.com/v3/) and
[GitHubs GraphQL API](https://developer.github.com/v4/guides/forming-calls/#the-graphql-endpoint).
It uses [`@octokit/endpoint`](https://github.com/octokit/endpoint.js) to parse
the passed options and sends the request using [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
([node-fetch](https://github.com/bitinn/node-fetch) in Node).
the passed options and sends the request using [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API). You can pass a custom `fetch` function using the `options.request.fetch` option, see below.
<!-- update table of contents by running `npx markdown-toc README.md -i` -->
<!-- toc -->
- [Features](#features)
- [Usage](#usage)
- [REST API example](#rest-api-example)
- [GraphQL example](#graphql-example)
- [Alternative: pass `method` & `url` as part of options](#alternative-pass-method--url-as-part-of-options)
- [Authentication](#authentication)
- [request()](#request)
- [`request.defaults()`](#requestdefaults)
- [`request.endpoint`](#requestendpoint)
- [Special cases](#special-cases)
- [The `data` parameter set request body directly](#the-data-parameter-%E2%80%93-set-request-body-directly)
- [Set parameters for both the URL/query and the request body](#set-parameters-for-both-the-urlquery-and-the-request-body)
- [LICENSE](#license)
- [request.js](#requestjs)
- [Features](#features)
- [Usage](#usage)
- [REST API example](#rest-api-example)
- [GraphQL example](#graphql-example)
- [Alternative: pass `method` \& `url` as part of options](#alternative-pass-method--url-as-part-of-options)
- [Authentication](#authentication)
- [request()](#request)
- [`request.defaults()`](#requestdefaults)
- [`request.endpoint`](#requestendpoint)
- [Special cases](#special-cases)
- [The `data` parameter set request body directly](#the-data-parameter--set-request-body-directly)
- [Set parameters for both the URL/query and the request body](#set-parameters-for-both-the-urlquery-and-the-request-body)
- [Set a custom Agent to your requests](#set-a-custom-agent-to-your-requests)
- [LICENSE](#license)
<!-- tocstop -->
@ -38,7 +39,7 @@ the passed options and sends the request using [fetch](https://developer.mozilla
🤩 1:1 mapping of REST API endpoint documentation, e.g. [Add labels to an issue](https://developer.github.com/v3/issues/labels/#add-labels-to-an-issue) becomes
```js
request("POST /repos/:owner/:repo/issues/:number/labels", {
request("POST /repos/{owner}/{repo}/issues/{number}/labels", {
mediaType: {
previews: ["symmetra"],
},
@ -57,7 +58,7 @@ request("POST /repos/:owner/:repo/issues/:number/labels", {
- `baseUrl`: `https://api.github.com`
- `headers.accept`: `application/vnd.github.v3+json`
- `headers.agent`: `octokit-request.js/<current version> <OS information>`, e.g. `octokit-request.js/1.2.3 Node.js/10.15.0 (macOS Mojave; x64)`
- `headers['user-agent']`: `octokit-request.js/<current version> <OS information>`, e.g. `octokit-request.js/1.2.3 Node.js/10.15.0 (macOS Mojave; x64)`
👌 Simple to test: mock requests by passing a custom fetch method.
@ -70,11 +71,11 @@ request("POST /repos/:owner/:repo/issues/:number/labels", {
<tr><th>
Browsers
</th><td width=100%>
Load <code>@octokit/request</code> directly from <a href="https://cdn.pika.dev">cdn.pika.dev</a>
Load <code>@octokit/request</code> directly from <a href="https://esm.sh">esm.sh</a>
```html
<script type="module">
import { request } from "https://cdn.pika.dev/@octokit/request";
import { request } from "https://esm.sh/@octokit/request";
</script>
```
@ -99,7 +100,7 @@ const { request } = require("@octokit/request");
```js
// Following GitHub docs formatting:
// https://developer.github.com/v3/repos/#list-organization-repositories
const result = await request("GET /orgs/:org/repos", {
const result = await request("GET /orgs/{org}/repos", {
headers: {
authorization: "token 0000000000000000000000000000000000000001",
},
@ -139,7 +140,7 @@ Alternatively, pass in a method and a url
```js
const result = await request({
method: "GET",
url: "/orgs/:org/repos",
url: "/orgs/{org}/repos",
headers: {
authorization: "token 0000000000000000000000000000000000000001",
},
@ -166,7 +167,7 @@ For more complex authentication strategies such as GitHub Apps or Basic, we reco
```js
const { createAppAuth } = require("@octokit/auth-app");
const auth = createAppAuth({
id: process.env.APP_ID,
appId: process.env.APP_ID,
privateKey: process.env.PRIVATE_KEY,
installationId: 123,
});
@ -180,11 +181,14 @@ const requestWithAuth = request.defaults({
});
const { data: app } = await requestWithAuth("GET /app");
const { data: app } = await requestWithAuth("POST /repos/:owner/:repo/issues", {
owner: "octocat",
repo: "hello-world",
title: "Hello from the engine room",
});
const { data: app } = await requestWithAuth(
"POST /repos/{owner}/{repo}/issues",
{
owner: "octocat",
repo: "hello-world",
title: "Hello from the engine room",
},
);
```
## request()
@ -215,7 +219,7 @@ const { data: app } = await requestWithAuth("POST /repos/:owner/:repo/issues", {
String
</td>
<td>
If <code>route</code> is set it has to be a string consisting of the request method and URL, e.g. <code>GET /orgs/:org</code>
**Required**. If <code>route</code> is set it has to be a string consisting of the request method and URL, e.g. <code>GET /orgs/{org}</code>
</td>
</tr>
<tr>
@ -226,7 +230,7 @@ const { data: app } = await requestWithAuth("POST /repos/:owner/:repo/issues", {
String
</td>
<td>
<strong>Required.</strong> Any supported <a href="https://developer.github.com/v3/#http-verbs">http verb</a>, case insensitive. <em>Defaults to <code>https://api.github.com</code></em>.
The base URL that <code>route</code> or <code>url</code> will be prefixed with, if they use relative paths. <em>Defaults to <code>https://api.github.com</code></em>.
</td>
</tr>
<th align=left>
@ -241,6 +245,17 @@ const { data: app } = await requestWithAuth("POST /repos/:owner/:repo/issues", {
<em><code>headers['accept']</code> defaults to <code>application/vnd.github.v3+json</code>.<br> Use <code>options.mediaType.{format,previews}</code> to request API previews and custom media types.
</td>
</tr>
<tr>
<th align=left>
<code>options.method</code>
</th>
<td>
String
</td>
<td>
Any supported <a href="https://developer.github.com/v3/#http-verbs">http verb</a>, case insensitive. <em>Defaults to <code>Get</code></em>.
</td>
</tr>
<tr>
<th align=left>
<code>options.mediaType.format</code>
@ -260,18 +275,8 @@ const { data: app } = await requestWithAuth("POST /repos/:owner/:repo/issues", {
Array of strings
</td>
<td>
Name of previews, such as `mercy`, `symmetra`, or `scarlet-witch`. See <a href="https://developer.github.com/v3/previews/">API Previews</a>.
</td>
</tr>
<tr>
<th align=left>
<code>options.method</code>
</th>
<td>
String
</td>
<td>
<strong>Required.</strong> Any supported <a href="https://developer.github.com/v3/#http-verbs">http verb</a>, case insensitive. <em>Defaults to <code>Get</code></em>.
Name of previews, such as `mercy`, `symmetra`, or `scarlet-witch`. See <a href="https://docs.github.com/graphql/overview/schema-previews">GraphQL Schema Previews</a>.
Note that these only apply to GraphQL requests and have no effect on REST routes.
</td>
</tr>
<tr>
@ -282,8 +287,8 @@ const { data: app } = await requestWithAuth("POST /repos/:owner/:repo/issues", {
String
</td>
<td>
<strong>Required.</strong> A path or full URL which may contain <code>:variable</code> or <code>{variable}</code> placeholders,
e.g. <code>/orgs/:org/repos</code>. The <code>url</code> is parsed using <a href="https://github.com/bramstein/url-template">url-template</a>.
**Required**. A path or full URL which may contain <code>:variable</code> or <code>{variable}</code> placeholders,
e.g. <code>/orgs/{org}/repos</code>. The <code>url</code> is parsed using <a href="https://github.com/bramstein/url-template">url-template</a>.
</td>
</tr>
<tr>
@ -297,17 +302,7 @@ const { data: app } = await requestWithAuth("POST /repos/:owner/:repo/issues", {
Set request body directly instead of setting it to JSON based on additional parameters. See <a href="#data-parameter">"The `data` parameter"</a> below.
</td>
</tr>
<tr>
<th align=left>
<code>options.request.agent</code>
</th>
<td>
<a href="https://nodejs.org/api/http.html#http_class_http_agent">http(s).Agent</a> instance
</td>
<td>
Node only. Useful for custom proxy, certificate, or dns lookup.
</td>
</tr>
<tr>
<th align=left>
<code>options.request.fetch</code>
@ -316,7 +311,7 @@ const { data: app } = await requestWithAuth("POST /repos/:owner/:repo/issues", {
Function
</td>
<td>
Custom replacement for <a href="https://github.com/bitinn/node-fetch">built-in fetch method</a>. Useful for testing or request hooks.
Custom replacement for <a href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API">fetch</a>. Useful for testing or request hooks.
</td>
</tr>
<tr>
@ -341,28 +336,38 @@ const { data: app } = await requestWithAuth("POST /repos/:owner/:repo/issues", {
Use an <code>AbortController</code> instance to cancel a request. In node you can only cancel streamed requests.
</td>
</tr>
<tr>
<th align=left>
<code>options.request.timeout</code>
<code>options.request.log</code>
</th>
<td>
Number
<code>object</code>
</td>
<td>
Node only. Request/response timeout in ms, it resets on redirect. 0 to disable (OS limit applies). <a href="#options-request-signal">options.request.signal</a> is recommended instead.
Used for internal logging. Defaults to <a href="https://developer.mozilla.org/en-US/docs/Web/API/console"><code>console</code></a>.
</td>
</tr>
</tr>
<th align=left>
<code>options.request.parseSuccessResponseBody</code>
</th>
<td>
<code>boolean</code>
</td>
<td>
If set to <code>false</code> the returned `response` will be passed through from `fetch`. This is useful to stream response.body when downloading files from the GitHub API.
</td>
</tr>
</table>
All other options except `options.request.*` will be passed depending on the `method` and `url` options.
1. If the option key is a placeholder in the `url`, it will be used as replacement. For example, if the passed options are `{url: '/orgs/:org/repos', org: 'foo'}` the returned `options.url` is `https://api.github.com/orgs/foo/repos`
1. If the option key is a placeholder in the `url`, it will be used as replacement. For example, if the passed options are `{url: '/orgs/{org}/repos', org: 'foo'}` the returned `options.url` is `https://api.github.com/orgs/foo/repos`
2. If the `method` is `GET` or `HEAD`, the option is passed as query parameter
3. Otherwise the parameter is passed in the request body as JSON key.
**Result**
`request` returns a promise and resolves with 4 keys
`request` returns a promise. If the request was successful, the promise resolves with an object containing 4 keys:
<table>
<thead>
@ -400,11 +405,13 @@ All other options except `options.request.*` will be passed depending on the `me
</tr>
</table>
If an error occurs, the `error` instance has additional properties to help with debugging
If an error occurs, the promise is rejected with an `error` object containing 3 keys to help with debugging:
- `error.status` The http response status code
- `error.headers` The http response headers as an object
- `error.request` The request options such as `method`, `url` and `data`
- `error.response` The http response object with `url`, `headers`, and `data`
If the error is due to an `AbortSignal` being used, the resulting `AbortError` is bubbled up to the caller.
## `request.defaults()`
@ -421,7 +428,7 @@ const myrequest = require("@octokit/request").defaults({
per_page: 100,
});
myrequest(`GET /orgs/:org/repos`);
myrequest(`GET /orgs/{org}/repos`);
```
You can call `.defaults()` again on the returned method, the defaults will cascade.
@ -450,7 +457,7 @@ by the global default.
See https://github.com/octokit/endpoint.js. Example
```js
const options = request.endpoint("GET /orgs/:org/repos", {
const options = request.endpoint("GET /orgs/{org}/repos", {
org: "my-project",
type: "private",
});
@ -529,10 +536,44 @@ request(
authorization: `token 0000000000000000000000000000000000000001`,
},
data: "Hello, world!",
}
},
);
```
### Set a custom Agent to your requests
The way to pass a custom `Agent` to requests is by creating a custom `fetch` function and pass it as `options.request.fetch`. A good example can be [undici's `fetch` implementation](https://undici.nodejs.org/#/?id=undicifetchinput-init-promise).
Example ([See example in CodeSandbox](https://codesandbox.io/p/sandbox/nifty-stitch-wdlwlf))
```js
import { request } from "@octokit/request";
import { fetch as undiciFetch, Agent } from "undici";
/** @type {typeof import("undici").fetch} */
const myFetch = (url, options) => {
return undiciFetch(url, {
...options,
dispatcher: new Agent({
keepAliveTimeout: 10,
keepAliveMaxTimeout: 10,
}),
});
};
const { data } = await request("GET /users/{username}", {
username: "octocat",
headers: {
"X-GitHub-Api-Version": "2022-11-28",
},
options: {
request: {
fetch: myFetch,
},
},
});
```
## LICENSE
[MIT](LICENSE)