+32
-32
@@ -3,8 +3,7 @@
|
||||
> Send parameterized requests to GitHub’s APIs with sensible defaults in browsers and Node
|
||||
|
||||
[](https://www.npmjs.com/package/@octokit/request)
|
||||
[](https://travis-ci.org/octokit/request.js)
|
||||
[](https://greenkeeper.io/)
|
||||
[](https://github.com/octokit/request.js/actions?query=workflow%3ATest+branch%3Amaster)
|
||||
|
||||
`@octokit/request` is a request library for browsers & node that makes it easier
|
||||
to interact with [GitHub’s REST API](https://developer.github.com/v3/) and
|
||||
@@ -23,6 +22,7 @@ the passed options and sends the request using [fetch](https://developer.mozilla
|
||||
- [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)
|
||||
@@ -40,12 +40,12 @@ the passed options and sends the request using [fetch](https://developer.mozilla
|
||||
```js
|
||||
request("POST /repos/:owner/:repo/issues/:number/labels", {
|
||||
mediaType: {
|
||||
previews: ["symmetra"]
|
||||
previews: ["symmetra"],
|
||||
},
|
||||
owner: "octokit",
|
||||
repo: "request.js",
|
||||
number: 1,
|
||||
labels: ["🐛 bug"]
|
||||
labels: ["🐛 bug"],
|
||||
});
|
||||
```
|
||||
|
||||
@@ -70,11 +70,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://cdn.skypack.dev">cdn.skypack.dev</a>
|
||||
|
||||
```html
|
||||
<script type="module">
|
||||
import { request } from "https://cdn.pika.dev/@octokit/request";
|
||||
import { request } from "https://cdn.skypack.dev/@octokit/request";
|
||||
</script>
|
||||
```
|
||||
|
||||
@@ -101,10 +101,10 @@ const { request } = require("@octokit/request");
|
||||
// https://developer.github.com/v3/repos/#list-organization-repositories
|
||||
const result = await request("GET /orgs/:org/repos", {
|
||||
headers: {
|
||||
authorization: "token 0000000000000000000000000000000000000001"
|
||||
authorization: "token 0000000000000000000000000000000000000001",
|
||||
},
|
||||
org: "octokit",
|
||||
type: "private"
|
||||
type: "private",
|
||||
});
|
||||
|
||||
console.log(`${result.data.length} repos found.`);
|
||||
@@ -117,7 +117,7 @@ For GraphQL request we recommend using [`@octokit/graphql`](https://github.com/o
|
||||
```js
|
||||
const result = await request("POST /graphql", {
|
||||
headers: {
|
||||
authorization: "token 0000000000000000000000000000000000000001"
|
||||
authorization: "token 0000000000000000000000000000000000000001",
|
||||
},
|
||||
query: `query ($login: String!) {
|
||||
organization(login: $login) {
|
||||
@@ -127,8 +127,8 @@ const result = await request("POST /graphql", {
|
||||
}
|
||||
}`,
|
||||
variables: {
|
||||
login: "octokit"
|
||||
}
|
||||
login: "octokit",
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
@@ -141,10 +141,10 @@ const result = await request({
|
||||
method: "GET",
|
||||
url: "/orgs/:org/repos",
|
||||
headers: {
|
||||
authorization: "token 0000000000000000000000000000000000000001"
|
||||
authorization: "token 0000000000000000000000000000000000000001",
|
||||
},
|
||||
org: "octokit",
|
||||
type: "private"
|
||||
type: "private",
|
||||
});
|
||||
```
|
||||
|
||||
@@ -155,10 +155,10 @@ The simplest way to authenticate a request is to set the `Authorization` header
|
||||
```js
|
||||
const requestWithAuth = request.defaults({
|
||||
headers: {
|
||||
authorization: "token 0000000000000000000000000000000000000001"
|
||||
}
|
||||
authorization: "token 0000000000000000000000000000000000000001",
|
||||
},
|
||||
});
|
||||
const result = await request("GET /user");
|
||||
const result = await requestWithAuth("GET /user");
|
||||
```
|
||||
|
||||
For more complex authentication strategies such as GitHub Apps or Basic, we recommend the according authentication library exported by [`@octokit/auth`](https://github.com/octokit/auth.js).
|
||||
@@ -168,22 +168,22 @@ const { createAppAuth } = require("@octokit/auth-app");
|
||||
const auth = createAppAuth({
|
||||
id: process.env.APP_ID,
|
||||
privateKey: process.env.PRIVATE_KEY,
|
||||
installationId: 123
|
||||
installationId: 123,
|
||||
});
|
||||
const requestWithAuth = request.defaults({
|
||||
request: {
|
||||
hook: auth.hook
|
||||
hook: auth.hook,
|
||||
},
|
||||
mediaType: {
|
||||
previews: ["machine-man"]
|
||||
}
|
||||
previews: ["machine-man"],
|
||||
},
|
||||
});
|
||||
|
||||
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"
|
||||
title: "Hello from the engine room",
|
||||
});
|
||||
```
|
||||
|
||||
@@ -415,10 +415,10 @@ const myrequest = require("@octokit/request").defaults({
|
||||
baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
|
||||
headers: {
|
||||
"user-agent": "myApp/1.2.3",
|
||||
authorization: `token 0000000000000000000000000000000000000001`
|
||||
authorization: `token 0000000000000000000000000000000000000001`,
|
||||
},
|
||||
org: "my-project",
|
||||
per_page: 100
|
||||
per_page: 100,
|
||||
});
|
||||
|
||||
myrequest(`GET /orgs/:org/repos`);
|
||||
@@ -430,14 +430,14 @@ You can call `.defaults()` again on the returned method, the defaults will casca
|
||||
const myProjectRequest = request.defaults({
|
||||
baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
|
||||
headers: {
|
||||
"user-agent": "myApp/1.2.3"
|
||||
"user-agent": "myApp/1.2.3",
|
||||
},
|
||||
org: "my-project"
|
||||
org: "my-project",
|
||||
});
|
||||
const myProjectRequestWithAuth = myProjectRequest.defaults({
|
||||
headers: {
|
||||
authorization: `token 0000000000000000000000000000000000000001`
|
||||
}
|
||||
authorization: `token 0000000000000000000000000000000000000001`,
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
@@ -452,7 +452,7 @@ See https://github.com/octokit/endpoint.js. Example
|
||||
```js
|
||||
const options = request.endpoint("GET /orgs/:org/repos", {
|
||||
org: "my-project",
|
||||
type: "private"
|
||||
type: "private",
|
||||
});
|
||||
|
||||
// {
|
||||
@@ -486,8 +486,8 @@ const response = await request("POST /markdown/raw", {
|
||||
data: "Hello world github/linguist#1 **cool**, and #1!",
|
||||
headers: {
|
||||
accept: "text/html;charset=utf-8",
|
||||
"content-type": "text/plain"
|
||||
}
|
||||
"content-type": "text/plain",
|
||||
},
|
||||
});
|
||||
|
||||
// Request is sent as
|
||||
@@ -526,9 +526,9 @@ request(
|
||||
headers: {
|
||||
"content-type": "text/plain",
|
||||
"content-length": 14,
|
||||
authorization: `token 0000000000000000000000000000000000000001`
|
||||
authorization: `token 0000000000000000000000000000000000000001`,
|
||||
},
|
||||
data: "Hello, world!"
|
||||
data: "Hello, world!",
|
||||
}
|
||||
);
|
||||
```
|
||||
|
||||
+9
-5
@@ -6,18 +6,18 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
|
||||
|
||||
var endpoint = require('@octokit/endpoint');
|
||||
var universalUserAgent = require('universal-user-agent');
|
||||
var isPlainObject = _interopDefault(require('is-plain-object'));
|
||||
var isPlainObject = require('is-plain-object');
|
||||
var nodeFetch = _interopDefault(require('node-fetch'));
|
||||
var requestError = require('@octokit/request-error');
|
||||
|
||||
const VERSION = "0.0.0-development";
|
||||
const VERSION = "5.4.10";
|
||||
|
||||
function getBufferResponse(response) {
|
||||
return response.arrayBuffer();
|
||||
}
|
||||
|
||||
function fetchWrapper(requestOptions) {
|
||||
if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {
|
||||
if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {
|
||||
requestOptions.body = JSON.stringify(requestOptions.body);
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ function fetchWrapper(requestOptions) {
|
||||
|
||||
if (status === 204 || status === 205) {
|
||||
return;
|
||||
} // GitHub API returns 200 for HEAD requsets
|
||||
} // GitHub API returns 200 for HEAD requests
|
||||
|
||||
|
||||
if (requestOptions.method === "HEAD") {
|
||||
@@ -69,7 +69,11 @@ function fetchWrapper(requestOptions) {
|
||||
});
|
||||
|
||||
try {
|
||||
Object.assign(error, JSON.parse(error.message));
|
||||
let responseBody = JSON.parse(error.message);
|
||||
Object.assign(error, responseBody);
|
||||
let errors = responseBody.errors; // Assumption `errors` would always be in Array format
|
||||
|
||||
error.message = error.message + ": " + errors.map(JSON.stringify).join(", ");
|
||||
} catch (e) {// ignore, see octokit/rest.js#684
|
||||
}
|
||||
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+18
-13
@@ -1,4 +1,4 @@
|
||||
import isPlainObject from "is-plain-object";
|
||||
import { isPlainObject } from "is-plain-object";
|
||||
import nodeFetch from "node-fetch";
|
||||
import { RequestError } from "@octokit/request-error";
|
||||
import getBuffer from "./get-buffer-response";
|
||||
@@ -15,9 +15,9 @@ export default function fetchWrapper(requestOptions) {
|
||||
method: requestOptions.method,
|
||||
body: requestOptions.body,
|
||||
headers: requestOptions.headers,
|
||||
redirect: requestOptions.redirect
|
||||
redirect: requestOptions.redirect,
|
||||
}, requestOptions.request))
|
||||
.then(response => {
|
||||
.then((response) => {
|
||||
url = response.url;
|
||||
status = response.status;
|
||||
for (const keyAndValue of response.headers) {
|
||||
@@ -26,32 +26,37 @@ export default function fetchWrapper(requestOptions) {
|
||||
if (status === 204 || status === 205) {
|
||||
return;
|
||||
}
|
||||
// GitHub API returns 200 for HEAD requsets
|
||||
// GitHub API returns 200 for HEAD requests
|
||||
if (requestOptions.method === "HEAD") {
|
||||
if (status < 400) {
|
||||
return;
|
||||
}
|
||||
throw new RequestError(response.statusText, status, {
|
||||
headers,
|
||||
request: requestOptions
|
||||
request: requestOptions,
|
||||
});
|
||||
}
|
||||
if (status === 304) {
|
||||
throw new RequestError("Not modified", status, {
|
||||
headers,
|
||||
request: requestOptions
|
||||
request: requestOptions,
|
||||
});
|
||||
}
|
||||
if (status >= 400) {
|
||||
return response
|
||||
.text()
|
||||
.then(message => {
|
||||
.then((message) => {
|
||||
const error = new RequestError(message, status, {
|
||||
headers,
|
||||
request: requestOptions
|
||||
request: requestOptions,
|
||||
});
|
||||
try {
|
||||
Object.assign(error, JSON.parse(error.message));
|
||||
let responseBody = JSON.parse(error.message);
|
||||
Object.assign(error, responseBody);
|
||||
let errors = responseBody.errors;
|
||||
// Assumption `errors` would always be in Array format
|
||||
error.message =
|
||||
error.message + ": " + errors.map(JSON.stringify).join(", ");
|
||||
}
|
||||
catch (e) {
|
||||
// ignore, see octokit/rest.js#684
|
||||
@@ -68,21 +73,21 @@ export default function fetchWrapper(requestOptions) {
|
||||
}
|
||||
return getBuffer(response);
|
||||
})
|
||||
.then(data => {
|
||||
.then((data) => {
|
||||
return {
|
||||
status,
|
||||
url,
|
||||
headers,
|
||||
data
|
||||
data,
|
||||
};
|
||||
})
|
||||
.catch(error => {
|
||||
.catch((error) => {
|
||||
if (error instanceof RequestError) {
|
||||
throw error;
|
||||
}
|
||||
throw new RequestError(error.message, 500, {
|
||||
headers,
|
||||
request: requestOptions
|
||||
request: requestOptions,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
+2
-2
@@ -4,6 +4,6 @@ import { VERSION } from "./version";
|
||||
import withDefaults from "./with-defaults";
|
||||
export const request = withDefaults(endpoint, {
|
||||
headers: {
|
||||
"user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}`
|
||||
}
|
||||
"user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}`,
|
||||
},
|
||||
});
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
export const VERSION = "0.0.0-development";
|
||||
export const VERSION = "5.4.10";
|
||||
|
||||
+2
-2
@@ -11,12 +11,12 @@ export default function withDefaults(oldEndpoint, newDefaults) {
|
||||
};
|
||||
Object.assign(request, {
|
||||
endpoint,
|
||||
defaults: withDefaults.bind(null, endpoint)
|
||||
defaults: withDefaults.bind(null, endpoint),
|
||||
});
|
||||
return endpointOptions.request.hook(request, endpointOptions);
|
||||
};
|
||||
return Object.assign(newApi, {
|
||||
endpoint,
|
||||
defaults: withDefaults.bind(null, endpoint)
|
||||
defaults: withDefaults.bind(null, endpoint),
|
||||
});
|
||||
}
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
import { endpoint } from "./types";
|
||||
export default function fetchWrapper(requestOptions: ReturnType<endpoint> & {
|
||||
redirect?: string;
|
||||
import { EndpointInterface } from "@octokit/types";
|
||||
export default function fetchWrapper(requestOptions: ReturnType<EndpointInterface> & {
|
||||
redirect?: "error" | "follow" | "manual";
|
||||
}): Promise<{
|
||||
status: number;
|
||||
url: string;
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
export declare const request: import("./types").request;
|
||||
export declare const request: import("@octokit/types").RequestInterface<object>;
|
||||
|
||||
-152
@@ -1,152 +0,0 @@
|
||||
/// <reference types="node" />
|
||||
import { Agent } from "http";
|
||||
import { endpoint } from "@octokit/endpoint";
|
||||
export interface request {
|
||||
/**
|
||||
* Sends a request based on endpoint options
|
||||
*
|
||||
* @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
|
||||
*/
|
||||
<T = any>(options: Endpoint): Promise<OctokitResponse<T>>;
|
||||
/**
|
||||
* Sends a request based on endpoint options
|
||||
*
|
||||
* @param {string} route Request method + URL. Example: `'GET /orgs/:org'`
|
||||
* @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
|
||||
*/
|
||||
<T = any>(route: Route, parameters?: Parameters): Promise<OctokitResponse<T>>;
|
||||
/**
|
||||
* Returns a new `endpoint` with updated route and parameters
|
||||
*/
|
||||
defaults: (newDefaults: Parameters) => request;
|
||||
/**
|
||||
* Octokit endpoint API, see {@link https://github.com/octokit/endpoint.js|@octokit/endpoint}
|
||||
*/
|
||||
endpoint: typeof endpoint;
|
||||
}
|
||||
export declare type endpoint = typeof endpoint;
|
||||
/**
|
||||
* Request method + URL. Example: `'GET /orgs/:org'`
|
||||
*/
|
||||
export declare type Route = string;
|
||||
/**
|
||||
* Relative or absolute URL. Examples: `'/orgs/:org'`, `https://example.com/foo/bar`
|
||||
*/
|
||||
export declare type Url = string;
|
||||
/**
|
||||
* Request method
|
||||
*/
|
||||
export declare type Method = "DELETE" | "GET" | "HEAD" | "PATCH" | "POST" | "PUT";
|
||||
/**
|
||||
* Endpoint parameters
|
||||
*/
|
||||
export declare type Parameters = {
|
||||
/**
|
||||
* Base URL to be used when a relative URL is passed, such as `/orgs/:org`.
|
||||
* If `baseUrl` is `https://enterprise.acme-inc.com/api/v3`, then the request
|
||||
* will be sent to `https://enterprise.acme-inc.com/api/v3/orgs/:org`.
|
||||
*/
|
||||
baseUrl?: string;
|
||||
/**
|
||||
* HTTP headers. Use lowercase keys.
|
||||
*/
|
||||
headers?: RequestHeaders;
|
||||
/**
|
||||
* Media type options, see {@link https://developer.github.com/v3/media/|GitHub Developer Guide}
|
||||
*/
|
||||
mediaType?: {
|
||||
/**
|
||||
* `json` by default. Can be `raw`, `text`, `html`, `full`, `diff`, `patch`, `sha`, `base64`. Depending on endpoint
|
||||
*/
|
||||
format?: string;
|
||||
/**
|
||||
* Custom media type names of {@link https://developer.github.com/v3/media/|API Previews} without the `-preview` suffix.
|
||||
* Example for single preview: `['squirrel-girl']`.
|
||||
* Example for multiple previews: `['squirrel-girl', 'mister-fantastic']`.
|
||||
*/
|
||||
previews?: string[];
|
||||
};
|
||||
/**
|
||||
* Pass custom meta information for the request. The `request` object will be returned as is.
|
||||
*/
|
||||
request?: OctokitRequestOptions;
|
||||
/**
|
||||
* Any additional parameter will be passed as follows
|
||||
* 1. URL parameter if `':parameter'` or `{parameter}` is part of `url`
|
||||
* 2. Query parameter if `method` is `'GET'` or `'HEAD'`
|
||||
* 3. Request body if `parameter` is `'data'`
|
||||
* 4. JSON in the request body in the form of `body[parameter]` unless `parameter` key is `'data'`
|
||||
*/
|
||||
[parameter: string]: any;
|
||||
};
|
||||
export declare type Endpoint = Parameters & {
|
||||
method: Method;
|
||||
url: Url;
|
||||
};
|
||||
export declare type Defaults = Parameters & {
|
||||
method: Method;
|
||||
baseUrl: string;
|
||||
headers: RequestHeaders & {
|
||||
accept: string;
|
||||
"user-agent": string;
|
||||
};
|
||||
mediaType: {
|
||||
format: string;
|
||||
previews: string[];
|
||||
};
|
||||
};
|
||||
export declare type OctokitResponse<T> = {
|
||||
headers: ResponseHeaders;
|
||||
/**
|
||||
* http response code
|
||||
*/
|
||||
status: number;
|
||||
/**
|
||||
* URL of response after all redirects
|
||||
*/
|
||||
url: string;
|
||||
/**
|
||||
* This is the data you would see in https://developer.Octokit.com/v3/
|
||||
*/
|
||||
data: T;
|
||||
};
|
||||
export declare type AnyResponse = OctokitResponse<any>;
|
||||
export declare type RequestHeaders = {
|
||||
/**
|
||||
* Avoid setting `accept`, use `mediaFormat.{format|previews}` instead.
|
||||
*/
|
||||
accept?: string;
|
||||
/**
|
||||
* Use `authorization` to send authenticated request, remember `token ` / `bearer ` prefixes. Example: `token 1234567890abcdef1234567890abcdef12345678`
|
||||
*/
|
||||
authorization?: string;
|
||||
/**
|
||||
* `user-agent` is set do a default and can be overwritten as needed.
|
||||
*/
|
||||
"user-agent"?: string;
|
||||
[header: string]: string | number | undefined;
|
||||
};
|
||||
export declare type ResponseHeaders = {
|
||||
[header: string]: string;
|
||||
};
|
||||
export declare type Fetch = any;
|
||||
export declare type Signal = any;
|
||||
export declare type OctokitRequestOptions = {
|
||||
/**
|
||||
* Node only. Useful for custom proxy, certificate, or dns lookup.
|
||||
*/
|
||||
agent?: Agent;
|
||||
/**
|
||||
* Custom replacement for built-in fetch method. Useful for testing or request hooks.
|
||||
*/
|
||||
fetch?: Fetch;
|
||||
/**
|
||||
* Use an `AbortController` instance to cancel a request. In node you can only cancel streamed requests.
|
||||
*/
|
||||
signal?: Signal;
|
||||
/**
|
||||
* Node only. Request/response timeout in ms, it resets on redirect. 0 to disable (OS limit applies). `options.request.signal` is recommended instead.
|
||||
*/
|
||||
timeout?: number;
|
||||
[option: string]: any;
|
||||
};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
export declare const VERSION = "0.0.0-development";
|
||||
export declare const VERSION = "5.4.10";
|
||||
|
||||
+2
-2
@@ -1,2 +1,2 @@
|
||||
import { request, endpoint, Parameters } from "./types";
|
||||
export default function withDefaults(oldEndpoint: endpoint, newDefaults: Parameters): request;
|
||||
import { EndpointInterface, RequestInterface, RequestParameters } from "@octokit/types";
|
||||
export default function withDefaults(oldEndpoint: EndpointInterface, newDefaults: RequestParameters): RequestInterface;
|
||||
|
||||
+23
-18
@@ -1,10 +1,10 @@
|
||||
import { endpoint } from '@octokit/endpoint';
|
||||
import { getUserAgent } from 'universal-user-agent';
|
||||
import isPlainObject from 'is-plain-object';
|
||||
import { isPlainObject } from 'is-plain-object';
|
||||
import nodeFetch from 'node-fetch';
|
||||
import { RequestError } from '@octokit/request-error';
|
||||
|
||||
const VERSION = "0.0.0-development";
|
||||
const VERSION = "5.4.10";
|
||||
|
||||
function getBufferResponse(response) {
|
||||
return response.arrayBuffer();
|
||||
@@ -23,9 +23,9 @@ function fetchWrapper(requestOptions) {
|
||||
method: requestOptions.method,
|
||||
body: requestOptions.body,
|
||||
headers: requestOptions.headers,
|
||||
redirect: requestOptions.redirect
|
||||
redirect: requestOptions.redirect,
|
||||
}, requestOptions.request))
|
||||
.then(response => {
|
||||
.then((response) => {
|
||||
url = response.url;
|
||||
status = response.status;
|
||||
for (const keyAndValue of response.headers) {
|
||||
@@ -34,32 +34,37 @@ function fetchWrapper(requestOptions) {
|
||||
if (status === 204 || status === 205) {
|
||||
return;
|
||||
}
|
||||
// GitHub API returns 200 for HEAD requsets
|
||||
// GitHub API returns 200 for HEAD requests
|
||||
if (requestOptions.method === "HEAD") {
|
||||
if (status < 400) {
|
||||
return;
|
||||
}
|
||||
throw new RequestError(response.statusText, status, {
|
||||
headers,
|
||||
request: requestOptions
|
||||
request: requestOptions,
|
||||
});
|
||||
}
|
||||
if (status === 304) {
|
||||
throw new RequestError("Not modified", status, {
|
||||
headers,
|
||||
request: requestOptions
|
||||
request: requestOptions,
|
||||
});
|
||||
}
|
||||
if (status >= 400) {
|
||||
return response
|
||||
.text()
|
||||
.then(message => {
|
||||
.then((message) => {
|
||||
const error = new RequestError(message, status, {
|
||||
headers,
|
||||
request: requestOptions
|
||||
request: requestOptions,
|
||||
});
|
||||
try {
|
||||
Object.assign(error, JSON.parse(error.message));
|
||||
let responseBody = JSON.parse(error.message);
|
||||
Object.assign(error, responseBody);
|
||||
let errors = responseBody.errors;
|
||||
// Assumption `errors` would always be in Array format
|
||||
error.message =
|
||||
error.message + ": " + errors.map(JSON.stringify).join(", ");
|
||||
}
|
||||
catch (e) {
|
||||
// ignore, see octokit/rest.js#684
|
||||
@@ -76,21 +81,21 @@ function fetchWrapper(requestOptions) {
|
||||
}
|
||||
return getBufferResponse(response);
|
||||
})
|
||||
.then(data => {
|
||||
.then((data) => {
|
||||
return {
|
||||
status,
|
||||
url,
|
||||
headers,
|
||||
data
|
||||
data,
|
||||
};
|
||||
})
|
||||
.catch(error => {
|
||||
.catch((error) => {
|
||||
if (error instanceof RequestError) {
|
||||
throw error;
|
||||
}
|
||||
throw new RequestError(error.message, 500, {
|
||||
headers,
|
||||
request: requestOptions
|
||||
request: requestOptions,
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -107,20 +112,20 @@ function withDefaults(oldEndpoint, newDefaults) {
|
||||
};
|
||||
Object.assign(request, {
|
||||
endpoint,
|
||||
defaults: withDefaults.bind(null, endpoint)
|
||||
defaults: withDefaults.bind(null, endpoint),
|
||||
});
|
||||
return endpointOptions.request.hook(request, endpointOptions);
|
||||
};
|
||||
return Object.assign(newApi, {
|
||||
endpoint,
|
||||
defaults: withDefaults.bind(null, endpoint)
|
||||
defaults: withDefaults.bind(null, endpoint),
|
||||
});
|
||||
}
|
||||
|
||||
const request = withDefaults(endpoint, {
|
||||
headers: {
|
||||
"user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}`
|
||||
}
|
||||
"user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}`,
|
||||
},
|
||||
});
|
||||
|
||||
export { request };
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
-7
@@ -1,7 +0,0 @@
|
||||
# [ISC License](https://spdx.org/licenses/ISC)
|
||||
|
||||
Copyright (c) 2018, Gregor Martynus (https://github.com/gr2m)
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
-25
@@ -1,25 +0,0 @@
|
||||
# universal-user-agent
|
||||
|
||||
> Get a user agent string in both browser and node
|
||||
|
||||
[](https://www.npmjs.com/package/universal-user-agent)
|
||||
[](https://travis-ci.com/gr2m/universal-user-agent)
|
||||
[](https://greenkeeper.io/)
|
||||
|
||||
```js
|
||||
const { getUserAgent } = require("universal-user-agent");
|
||||
// or import { getUserAgent } from "universal-user-agent";
|
||||
|
||||
const userAgent = getUserAgent();
|
||||
// userAgent will look like this
|
||||
// in browser: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0"
|
||||
// in node: Node.js/v8.9.4 (macOS High Sierra; x64)
|
||||
```
|
||||
|
||||
## Credits
|
||||
|
||||
The Node implementation was originally inspired by [default-user-agent](https://www.npmjs.com/package/default-user-agent).
|
||||
|
||||
## License
|
||||
|
||||
[ISC](LICENSE.md)
|
||||
Generated
Vendored
-22
@@ -1,22 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
||||
|
||||
var osName = _interopDefault(require('os-name'));
|
||||
|
||||
function getUserAgent() {
|
||||
try {
|
||||
return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;
|
||||
} catch (error) {
|
||||
if (/wmic os get Caption/.test(error.message)) {
|
||||
return "Windows <version undetectable>";
|
||||
}
|
||||
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
exports.getUserAgent = getUserAgent;
|
||||
//# sourceMappingURL=index.js.map
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"index.js","sources":["../dist-src/node.js"],"sourcesContent":["import osName from \"os-name\";\nexport function getUserAgent() {\n try {\n return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;\n }\n catch (error) {\n if (/wmic os get Caption/.test(error.message)) {\n return \"Windows <version undetectable>\";\n }\n throw error;\n }\n}\n"],"names":["getUserAgent","process","version","substr","osName","arch","error","test","message"],"mappings":";;;;;;;;AACO,SAASA,YAAT,GAAwB;MACvB;WACQ,WAAUC,OAAO,CAACC,OAAR,CAAgBC,MAAhB,CAAuB,CAAvB,CAA0B,KAAIC,MAAM,EAAG,KAAIH,OAAO,CAACI,IAAK,GAA1E;GADJ,CAGA,OAAOC,KAAP,EAAc;QACN,sBAAsBC,IAAtB,CAA2BD,KAAK,CAACE,OAAjC,CAAJ,EAA+C;aACpC,gCAAP;;;UAEEF,KAAN;;;;;;"}
|
||||
Generated
Vendored
-3
@@ -1,3 +0,0 @@
|
||||
export function getUserAgent() {
|
||||
return navigator.userAgent;
|
||||
}
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
export { getUserAgent } from "./node";
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
import osName from "os-name";
|
||||
export function getUserAgent() {
|
||||
try {
|
||||
return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;
|
||||
}
|
||||
catch (error) {
|
||||
if (/wmic os get Caption/.test(error.message)) {
|
||||
return "Windows <version undetectable>";
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
export declare function getUserAgent(): string;
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
export { getUserAgent } from "./node";
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
export declare function getUserAgent(): string;
|
||||
Generated
Vendored
-6
@@ -1,6 +0,0 @@
|
||||
function getUserAgent() {
|
||||
return navigator.userAgent;
|
||||
}
|
||||
|
||||
export { getUserAgent };
|
||||
//# sourceMappingURL=index.js.map
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"index.js","sources":["../dist-src/browser.js"],"sourcesContent":["export function getUserAgent() {\n return navigator.userAgent;\n}\n"],"names":[],"mappings":"AAAO,SAAS,YAAY,GAAG;IAC3B,OAAO,SAAS,CAAC,SAAS,CAAC;CAC9B;;;;"}
|
||||
-65
@@ -1,65 +0,0 @@
|
||||
{
|
||||
"_from": "universal-user-agent@^4.0.0",
|
||||
"_id": "universal-user-agent@4.0.0",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA==",
|
||||
"_location": "/@octokit/request/universal-user-agent",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "universal-user-agent@^4.0.0",
|
||||
"name": "universal-user-agent",
|
||||
"escapedName": "universal-user-agent",
|
||||
"rawSpec": "^4.0.0",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "^4.0.0"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/@octokit/request"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.0.tgz",
|
||||
"_shasum": "27da2ec87e32769619f68a14996465ea1cb9df16",
|
||||
"_spec": "universal-user-agent@^4.0.0",
|
||||
"_where": "/Users/yuanrong.man/projects/setup-ossutil/node_modules/@octokit/request",
|
||||
"bugs": {
|
||||
"url": "https://github.com/gr2m/universal-user-agent/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"dependencies": {
|
||||
"os-name": "^3.1.0"
|
||||
},
|
||||
"deprecated": false,
|
||||
"description": "Get a user agent string in both browser and node",
|
||||
"devDependencies": {
|
||||
"@gr2m/pika-plugin-build-web": "^0.6.0-issue-84.1",
|
||||
"@pika/pack": "^0.5.0",
|
||||
"@pika/plugin-build-node": "^0.6.0",
|
||||
"@pika/plugin-ts-standard-pkg": "^0.6.0",
|
||||
"@types/jest": "^24.0.18",
|
||||
"jest": "^24.9.0",
|
||||
"prettier": "^1.18.2",
|
||||
"semantic-release": "^15.9.15",
|
||||
"ts-jest": "^24.0.2",
|
||||
"typescript": "^3.6.2"
|
||||
},
|
||||
"files": [
|
||||
"dist-*/",
|
||||
"bin/"
|
||||
],
|
||||
"homepage": "https://github.com/gr2m/universal-user-agent#readme",
|
||||
"keywords": [],
|
||||
"license": "ISC",
|
||||
"main": "dist-node/index.js",
|
||||
"module": "dist-web/index.js",
|
||||
"name": "universal-user-agent",
|
||||
"pika": true,
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/gr2m/universal-user-agent.git"
|
||||
},
|
||||
"sideEffects": false,
|
||||
"source": "dist-src/index.js",
|
||||
"types": "dist-types/index.d.ts",
|
||||
"version": "4.0.0"
|
||||
}
|
||||
+33
-34
@@ -1,66 +1,65 @@
|
||||
{
|
||||
"_from": "@octokit/request@^5.0.0",
|
||||
"_id": "@octokit/request@5.1.0",
|
||||
"_from": "@octokit/request@^5.4.0",
|
||||
"_id": "@octokit/request@5.4.10",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-I15T9PwjFs4tbWyhtFU2Kq7WDPidYMvRB7spmxoQRZfxSmiqullG+Nz+KbSmpkfnlvHwTr1e31R5WReFRKMXjg==",
|
||||
"_integrity": "sha512-egA49HkqEORVGDZGav1mh+VD+7uLgOxtn5oODj6guJk0HCy+YBSYapFkSLFgeYj3Fr18ZULKGURkjyhkAChylw==",
|
||||
"_location": "/@octokit/request",
|
||||
"_phantomChildren": {
|
||||
"os-name": "3.1.0"
|
||||
},
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "@octokit/request@^5.0.0",
|
||||
"raw": "@octokit/request@^5.4.0",
|
||||
"name": "@octokit/request",
|
||||
"escapedName": "@octokit%2frequest",
|
||||
"scope": "@octokit",
|
||||
"rawSpec": "^5.0.0",
|
||||
"rawSpec": "^5.4.0",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "^5.0.0"
|
||||
"fetchSpec": "^5.4.0"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/@octokit/graphql",
|
||||
"/@octokit/rest"
|
||||
"/@octokit/core",
|
||||
"/@octokit/graphql"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.1.0.tgz",
|
||||
"_shasum": "5609dcc7b5323e529f29d535214383d9eaf0c05c",
|
||||
"_spec": "@octokit/request@^5.0.0",
|
||||
"_where": "/Users/yuanrong.man/projects/setup-ossutil/node_modules/@octokit/graphql",
|
||||
"_resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.10.tgz",
|
||||
"_shasum": "402d2c53768bde12b99348329ba4129746aebb9c",
|
||||
"_spec": "@octokit/request@^5.4.0",
|
||||
"_where": "/workspace/setup-ossutil/node_modules/@octokit/core",
|
||||
"bugs": {
|
||||
"url": "https://github.com/octokit/request.js/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"dependencies": {
|
||||
"@octokit/endpoint": "^5.1.0",
|
||||
"@octokit/request-error": "^1.0.1",
|
||||
"@octokit/endpoint": "^6.0.1",
|
||||
"@octokit/request-error": "^2.0.0",
|
||||
"@octokit/types": "^5.0.0",
|
||||
"deprecation": "^2.0.0",
|
||||
"is-plain-object": "^3.0.0",
|
||||
"node-fetch": "^2.3.0",
|
||||
"is-plain-object": "^5.0.0",
|
||||
"node-fetch": "^2.6.1",
|
||||
"once": "^1.4.0",
|
||||
"universal-user-agent": "^4.0.0"
|
||||
"universal-user-agent": "^6.0.0"
|
||||
},
|
||||
"deprecated": false,
|
||||
"description": "Send parameterized requests to GitHub’s APIs with sensible defaults in browsers and Node",
|
||||
"devDependencies": {
|
||||
"@octokit/auth-app": "^2.1.2",
|
||||
"@pika/pack": "^0.5.0",
|
||||
"@pika/plugin-build-node": "^0.6.0",
|
||||
"@pika/plugin-build-web": "^0.6.0",
|
||||
"@pika/plugin-ts-standard-pkg": "^0.6.0",
|
||||
"@pika/plugin-build-node": "^0.9.0",
|
||||
"@pika/plugin-build-web": "^0.9.0",
|
||||
"@pika/plugin-ts-standard-pkg": "^0.9.0",
|
||||
"@types/fetch-mock": "^7.2.4",
|
||||
"@types/jest": "^24.0.12",
|
||||
"@types/lolex": "^3.1.1",
|
||||
"@types/node": "^12.0.3",
|
||||
"@types/jest": "^26.0.0",
|
||||
"@types/lolex": "^5.1.0",
|
||||
"@types/node": "^14.0.0",
|
||||
"@types/node-fetch": "^2.3.3",
|
||||
"@types/once": "^1.4.0",
|
||||
"fetch-mock": "^7.2.0",
|
||||
"jest": "^24.7.1",
|
||||
"lolex": "^4.2.0",
|
||||
"prettier": "^1.17.0",
|
||||
"semantic-release": "^15.10.5",
|
||||
"fetch-mock": "^9.3.1",
|
||||
"jest": "^26.0.1",
|
||||
"lolex": "^6.0.0",
|
||||
"prettier": "^2.0.1",
|
||||
"semantic-release": "^17.0.0",
|
||||
"semantic-release-plugin-update-version-in-files": "^1.0.0",
|
||||
"ts-jest": "^24.0.2",
|
||||
"typescript": "^3.4.5"
|
||||
"ts-jest": "^26.1.0",
|
||||
"typescript": "^4.0.2"
|
||||
},
|
||||
"files": [
|
||||
"dist-*/",
|
||||
@@ -88,5 +87,5 @@
|
||||
"sideEffects": false,
|
||||
"source": "dist-src/index.js",
|
||||
"types": "dist-types/index.d.ts",
|
||||
"version": "5.1.0"
|
||||
"version": "5.4.10"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user