mirror of
https://github.com/ASzc/change-string-case-action.git
synced 2024-11-23 18:53:50 +08:00
Remove node_modules/
This commit is contained in:
parent
fabd239981
commit
54a791097f
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
*.swp
|
*.swp
|
||||||
|
node_modules
|
||||||
|
146
node_modules/@actions/core/README.md
generated
vendored
146
node_modules/@actions/core/README.md
generated
vendored
@ -1,146 +0,0 @@
|
|||||||
# `@actions/core`
|
|
||||||
|
|
||||||
> Core functions for setting results, logging, registering secrets and exporting variables across actions
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
### Import the package
|
|
||||||
|
|
||||||
```js
|
|
||||||
// javascript
|
|
||||||
const core = require('@actions/core');
|
|
||||||
|
|
||||||
// typescript
|
|
||||||
import * as core from '@actions/core';
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Inputs/Outputs
|
|
||||||
|
|
||||||
Action inputs can be read with `getInput`. Outputs can be set with `setOutput` which makes them available to be mapped into inputs of other actions to ensure they are decoupled.
|
|
||||||
|
|
||||||
```js
|
|
||||||
const myInput = core.getInput('inputName', { required: true });
|
|
||||||
|
|
||||||
core.setOutput('outputKey', 'outputVal');
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Exporting variables
|
|
||||||
|
|
||||||
Since each step runs in a separate process, you can use `exportVariable` to add it to this step and future steps environment blocks.
|
|
||||||
|
|
||||||
```js
|
|
||||||
core.exportVariable('envVar', 'Val');
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Setting a secret
|
|
||||||
|
|
||||||
Setting a secret registers the secret with the runner to ensure it is masked in logs.
|
|
||||||
|
|
||||||
```js
|
|
||||||
core.setSecret('myPassword');
|
|
||||||
```
|
|
||||||
|
|
||||||
#### PATH Manipulation
|
|
||||||
|
|
||||||
To make a tool's path available in the path for the remainder of the job (without altering the machine or containers state), use `addPath`. The runner will prepend the path given to the jobs PATH.
|
|
||||||
|
|
||||||
```js
|
|
||||||
core.addPath('/path/to/mytool');
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Exit codes
|
|
||||||
|
|
||||||
You should use this library to set the failing exit code for your action. If status is not set and the script runs to completion, that will lead to a success.
|
|
||||||
|
|
||||||
```js
|
|
||||||
const core = require('@actions/core');
|
|
||||||
|
|
||||||
try {
|
|
||||||
// Do stuff
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
// setFailed logs the message and sets a failing exit code
|
|
||||||
core.setFailed(`Action failed with error ${err}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
Note that `setNeutral` is not yet implemented in actions V2 but equivalent functionality is being planned.
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Logging
|
|
||||||
|
|
||||||
Finally, this library provides some utilities for logging. Note that debug logging is hidden from the logs by default. This behavior can be toggled by enabling the [Step Debug Logs](../../docs/action-debugging.md#step-debug-logs).
|
|
||||||
|
|
||||||
```js
|
|
||||||
const core = require('@actions/core');
|
|
||||||
|
|
||||||
const myInput = core.getInput('input');
|
|
||||||
try {
|
|
||||||
core.debug('Inside try block');
|
|
||||||
|
|
||||||
if (!myInput) {
|
|
||||||
core.warning('myInput was not set');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (core.isDebug()) {
|
|
||||||
// curl -v https://github.com
|
|
||||||
} else {
|
|
||||||
// curl https://github.com
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do stuff
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
core.error(`Error ${err}, action may still succeed though`);
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
This library can also wrap chunks of output in foldable groups.
|
|
||||||
|
|
||||||
```js
|
|
||||||
const core = require('@actions/core')
|
|
||||||
|
|
||||||
// Manually wrap output
|
|
||||||
core.startGroup('Do some function')
|
|
||||||
doSomeFunction()
|
|
||||||
core.endGroup()
|
|
||||||
|
|
||||||
// Wrap an asynchronous function call
|
|
||||||
const result = await core.group('Do something async', async () => {
|
|
||||||
const response = await doSomeHTTPRequest()
|
|
||||||
return response
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Action state
|
|
||||||
|
|
||||||
You can use this library to save state and get state for sharing information between a given wrapper action:
|
|
||||||
|
|
||||||
**action.yml**
|
|
||||||
```yaml
|
|
||||||
name: 'Wrapper action sample'
|
|
||||||
inputs:
|
|
||||||
name:
|
|
||||||
default: 'GitHub'
|
|
||||||
runs:
|
|
||||||
using: 'node12'
|
|
||||||
main: 'main.js'
|
|
||||||
post: 'cleanup.js'
|
|
||||||
```
|
|
||||||
|
|
||||||
In action's `main.js`:
|
|
||||||
|
|
||||||
```js
|
|
||||||
const core = require('@actions/core');
|
|
||||||
|
|
||||||
core.saveState("pidToKill", 12345);
|
|
||||||
```
|
|
||||||
|
|
||||||
In action's `cleanup.js`:
|
|
||||||
```js
|
|
||||||
const core = require('@actions/core');
|
|
||||||
|
|
||||||
var pid = core.getState("pidToKill");
|
|
||||||
|
|
||||||
process.kill(pid);
|
|
||||||
```
|
|
21
node_modules/@actions/core/lib/command.d.ts
generated
vendored
21
node_modules/@actions/core/lib/command.d.ts
generated
vendored
@ -1,21 +0,0 @@
|
|||||||
interface CommandProperties {
|
|
||||||
[key: string]: any;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Commands
|
|
||||||
*
|
|
||||||
* Command Format:
|
|
||||||
* ::name key=value,key=value::message
|
|
||||||
*
|
|
||||||
* Examples:
|
|
||||||
* ::warning::This is the message
|
|
||||||
* ::set-env name=MY_VAR::some value
|
|
||||||
*/
|
|
||||||
export declare function issueCommand(command: string, properties: CommandProperties, message: any): void;
|
|
||||||
export declare function issue(name: string, message?: string): void;
|
|
||||||
/**
|
|
||||||
* Sanitizes an input into a string so it can be passed into issueCommand safely
|
|
||||||
* @param input input to sanitize into a string
|
|
||||||
*/
|
|
||||||
export declare function toCommandValue(input: any): string;
|
|
||||||
export {};
|
|
92
node_modules/@actions/core/lib/command.js
generated
vendored
92
node_modules/@actions/core/lib/command.js
generated
vendored
@ -1,92 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __importStar = (this && this.__importStar) || function (mod) {
|
|
||||||
if (mod && mod.__esModule) return mod;
|
|
||||||
var result = {};
|
|
||||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
|
||||||
result["default"] = mod;
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const os = __importStar(require("os"));
|
|
||||||
/**
|
|
||||||
* Commands
|
|
||||||
*
|
|
||||||
* Command Format:
|
|
||||||
* ::name key=value,key=value::message
|
|
||||||
*
|
|
||||||
* Examples:
|
|
||||||
* ::warning::This is the message
|
|
||||||
* ::set-env name=MY_VAR::some value
|
|
||||||
*/
|
|
||||||
function issueCommand(command, properties, message) {
|
|
||||||
const cmd = new Command(command, properties, message);
|
|
||||||
process.stdout.write(cmd.toString() + os.EOL);
|
|
||||||
}
|
|
||||||
exports.issueCommand = issueCommand;
|
|
||||||
function issue(name, message = '') {
|
|
||||||
issueCommand(name, {}, message);
|
|
||||||
}
|
|
||||||
exports.issue = issue;
|
|
||||||
const CMD_STRING = '::';
|
|
||||||
class Command {
|
|
||||||
constructor(command, properties, message) {
|
|
||||||
if (!command) {
|
|
||||||
command = 'missing.command';
|
|
||||||
}
|
|
||||||
this.command = command;
|
|
||||||
this.properties = properties;
|
|
||||||
this.message = message;
|
|
||||||
}
|
|
||||||
toString() {
|
|
||||||
let cmdStr = CMD_STRING + this.command;
|
|
||||||
if (this.properties && Object.keys(this.properties).length > 0) {
|
|
||||||
cmdStr += ' ';
|
|
||||||
let first = true;
|
|
||||||
for (const key in this.properties) {
|
|
||||||
if (this.properties.hasOwnProperty(key)) {
|
|
||||||
const val = this.properties[key];
|
|
||||||
if (val) {
|
|
||||||
if (first) {
|
|
||||||
first = false;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cmdStr += ',';
|
|
||||||
}
|
|
||||||
cmdStr += `${key}=${escapeProperty(val)}`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cmdStr += `${CMD_STRING}${escapeData(this.message)}`;
|
|
||||||
return cmdStr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Sanitizes an input into a string so it can be passed into issueCommand safely
|
|
||||||
* @param input input to sanitize into a string
|
|
||||||
*/
|
|
||||||
function toCommandValue(input) {
|
|
||||||
if (input === null || input === undefined) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
else if (typeof input === 'string' || input instanceof String) {
|
|
||||||
return input;
|
|
||||||
}
|
|
||||||
return JSON.stringify(input);
|
|
||||||
}
|
|
||||||
exports.toCommandValue = toCommandValue;
|
|
||||||
function escapeData(s) {
|
|
||||||
return toCommandValue(s)
|
|
||||||
.replace(/%/g, '%25')
|
|
||||||
.replace(/\r/g, '%0D')
|
|
||||||
.replace(/\n/g, '%0A');
|
|
||||||
}
|
|
||||||
function escapeProperty(s) {
|
|
||||||
return toCommandValue(s)
|
|
||||||
.replace(/%/g, '%25')
|
|
||||||
.replace(/\r/g, '%0D')
|
|
||||||
.replace(/\n/g, '%0A')
|
|
||||||
.replace(/:/g, '%3A')
|
|
||||||
.replace(/,/g, '%2C');
|
|
||||||
}
|
|
||||||
//# sourceMappingURL=command.js.map
|
|
1
node_modules/@actions/core/lib/command.js.map
generated
vendored
1
node_modules/@actions/core/lib/command.js.map
generated
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":";;;;;;;;;AAAA,uCAAwB;AAWxB;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAC1B,OAAe,EACf,UAA6B,EAC7B,OAAY;IAEZ,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AAC/C,CAAC;AAPD,oCAOC;AAED,SAAgB,KAAK,CAAC,IAAY,EAAE,UAAkB,EAAE;IACtD,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;AACjC,CAAC;AAFD,sBAEC;AAED,MAAM,UAAU,GAAG,IAAI,CAAA;AAEvB,MAAM,OAAO;IAKX,YAAY,OAAe,EAAE,UAA6B,EAAE,OAAe;QACzE,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,iBAAiB,CAAA;SAC5B;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,QAAQ;QACN,IAAI,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,CAAA;QAEtC,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9D,MAAM,IAAI,GAAG,CAAA;YACb,IAAI,KAAK,GAAG,IAAI,CAAA;YAChB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjC,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;oBAChC,IAAI,GAAG,EAAE;wBACP,IAAI,KAAK,EAAE;4BACT,KAAK,GAAG,KAAK,CAAA;yBACd;6BAAM;4BACL,MAAM,IAAI,GAAG,CAAA;yBACd;wBAED,MAAM,IAAI,GAAG,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAA;qBAC1C;iBACF;aACF;SACF;QAED,MAAM,IAAI,GAAG,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;QACpD,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAAU;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;QACzC,OAAO,EAAE,CAAA;KACV;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;QAC/D,OAAO,KAAe,CAAA;KACvB;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAPD,wCAOC;AAED,SAAS,UAAU,CAAC,CAAM;IACxB,OAAO,cAAc,CAAC,CAAC,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,CAAM;IAC5B,OAAO,cAAc,CAAC,CAAC,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AACzB,CAAC"}
|
|
122
node_modules/@actions/core/lib/core.d.ts
generated
vendored
122
node_modules/@actions/core/lib/core.d.ts
generated
vendored
@ -1,122 +0,0 @@
|
|||||||
/**
|
|
||||||
* Interface for getInput options
|
|
||||||
*/
|
|
||||||
export interface InputOptions {
|
|
||||||
/** Optional. Whether the input is required. If required and not present, will throw. Defaults to false */
|
|
||||||
required?: boolean;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* The code to exit an action
|
|
||||||
*/
|
|
||||||
export declare enum ExitCode {
|
|
||||||
/**
|
|
||||||
* A code indicating that the action was successful
|
|
||||||
*/
|
|
||||||
Success = 0,
|
|
||||||
/**
|
|
||||||
* A code indicating that the action was a failure
|
|
||||||
*/
|
|
||||||
Failure = 1
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Sets env variable for this action and future actions in the job
|
|
||||||
* @param name the name of the variable to set
|
|
||||||
* @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify
|
|
||||||
*/
|
|
||||||
export declare function exportVariable(name: string, val: any): void;
|
|
||||||
/**
|
|
||||||
* Registers a secret which will get masked from logs
|
|
||||||
* @param secret value of the secret
|
|
||||||
*/
|
|
||||||
export declare function setSecret(secret: string): void;
|
|
||||||
/**
|
|
||||||
* Prepends inputPath to the PATH (for this action and future actions)
|
|
||||||
* @param inputPath
|
|
||||||
*/
|
|
||||||
export declare function addPath(inputPath: string): void;
|
|
||||||
/**
|
|
||||||
* Gets the value of an input. The value is also trimmed.
|
|
||||||
*
|
|
||||||
* @param name name of the input to get
|
|
||||||
* @param options optional. See InputOptions.
|
|
||||||
* @returns string
|
|
||||||
*/
|
|
||||||
export declare function getInput(name: string, options?: InputOptions): string;
|
|
||||||
/**
|
|
||||||
* Sets the value of an output.
|
|
||||||
*
|
|
||||||
* @param name name of the output to set
|
|
||||||
* @param value value to store. Non-string values will be converted to a string via JSON.stringify
|
|
||||||
*/
|
|
||||||
export declare function setOutput(name: string, value: any): void;
|
|
||||||
/**
|
|
||||||
* Enables or disables the echoing of commands into stdout for the rest of the step.
|
|
||||||
* Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export declare function setCommandEcho(enabled: boolean): void;
|
|
||||||
/**
|
|
||||||
* Sets the action status to failed.
|
|
||||||
* When the action exits it will be with an exit code of 1
|
|
||||||
* @param message add error issue message
|
|
||||||
*/
|
|
||||||
export declare function setFailed(message: string | Error): void;
|
|
||||||
/**
|
|
||||||
* Gets whether Actions Step Debug is on or not
|
|
||||||
*/
|
|
||||||
export declare function isDebug(): boolean;
|
|
||||||
/**
|
|
||||||
* Writes debug message to user log
|
|
||||||
* @param message debug message
|
|
||||||
*/
|
|
||||||
export declare function debug(message: string): void;
|
|
||||||
/**
|
|
||||||
* Adds an error issue
|
|
||||||
* @param message error issue message. Errors will be converted to string via toString()
|
|
||||||
*/
|
|
||||||
export declare function error(message: string | Error): void;
|
|
||||||
/**
|
|
||||||
* Adds an warning issue
|
|
||||||
* @param message warning issue message. Errors will be converted to string via toString()
|
|
||||||
*/
|
|
||||||
export declare function warning(message: string | Error): void;
|
|
||||||
/**
|
|
||||||
* Writes info to log with console.log.
|
|
||||||
* @param message info message
|
|
||||||
*/
|
|
||||||
export declare function info(message: string): void;
|
|
||||||
/**
|
|
||||||
* Begin an output group.
|
|
||||||
*
|
|
||||||
* Output until the next `groupEnd` will be foldable in this group
|
|
||||||
*
|
|
||||||
* @param name The name of the output group
|
|
||||||
*/
|
|
||||||
export declare function startGroup(name: string): void;
|
|
||||||
/**
|
|
||||||
* End an output group.
|
|
||||||
*/
|
|
||||||
export declare function endGroup(): void;
|
|
||||||
/**
|
|
||||||
* Wrap an asynchronous function call in a group.
|
|
||||||
*
|
|
||||||
* Returns the same type as the function itself.
|
|
||||||
*
|
|
||||||
* @param name The name of the group
|
|
||||||
* @param fn The function to wrap in the group
|
|
||||||
*/
|
|
||||||
export declare function group<T>(name: string, fn: () => Promise<T>): Promise<T>;
|
|
||||||
/**
|
|
||||||
* Saves state for current action, the state can only be retrieved by this action's post job execution.
|
|
||||||
*
|
|
||||||
* @param name name of the state to store
|
|
||||||
* @param value value to store. Non-string values will be converted to a string via JSON.stringify
|
|
||||||
*/
|
|
||||||
export declare function saveState(name: string, value: any): void;
|
|
||||||
/**
|
|
||||||
* Gets the value of an state set by this action's main execution.
|
|
||||||
*
|
|
||||||
* @param name name of the state to get
|
|
||||||
* @returns string
|
|
||||||
*/
|
|
||||||
export declare function getState(name: string): string;
|
|
222
node_modules/@actions/core/lib/core.js
generated
vendored
222
node_modules/@actions/core/lib/core.js
generated
vendored
@ -1,222 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
var __importStar = (this && this.__importStar) || function (mod) {
|
|
||||||
if (mod && mod.__esModule) return mod;
|
|
||||||
var result = {};
|
|
||||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
|
||||||
result["default"] = mod;
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const command_1 = require("./command");
|
|
||||||
const os = __importStar(require("os"));
|
|
||||||
const path = __importStar(require("path"));
|
|
||||||
/**
|
|
||||||
* The code to exit an action
|
|
||||||
*/
|
|
||||||
var ExitCode;
|
|
||||||
(function (ExitCode) {
|
|
||||||
/**
|
|
||||||
* A code indicating that the action was successful
|
|
||||||
*/
|
|
||||||
ExitCode[ExitCode["Success"] = 0] = "Success";
|
|
||||||
/**
|
|
||||||
* A code indicating that the action was a failure
|
|
||||||
*/
|
|
||||||
ExitCode[ExitCode["Failure"] = 1] = "Failure";
|
|
||||||
})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));
|
|
||||||
//-----------------------------------------------------------------------
|
|
||||||
// Variables
|
|
||||||
//-----------------------------------------------------------------------
|
|
||||||
/**
|
|
||||||
* Sets env variable for this action and future actions in the job
|
|
||||||
* @param name the name of the variable to set
|
|
||||||
* @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify
|
|
||||||
*/
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
||||||
function exportVariable(name, val) {
|
|
||||||
const convertedVal = command_1.toCommandValue(val);
|
|
||||||
process.env[name] = convertedVal;
|
|
||||||
command_1.issueCommand('set-env', { name }, convertedVal);
|
|
||||||
}
|
|
||||||
exports.exportVariable = exportVariable;
|
|
||||||
/**
|
|
||||||
* Registers a secret which will get masked from logs
|
|
||||||
* @param secret value of the secret
|
|
||||||
*/
|
|
||||||
function setSecret(secret) {
|
|
||||||
command_1.issueCommand('add-mask', {}, secret);
|
|
||||||
}
|
|
||||||
exports.setSecret = setSecret;
|
|
||||||
/**
|
|
||||||
* Prepends inputPath to the PATH (for this action and future actions)
|
|
||||||
* @param inputPath
|
|
||||||
*/
|
|
||||||
function addPath(inputPath) {
|
|
||||||
command_1.issueCommand('add-path', {}, inputPath);
|
|
||||||
process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;
|
|
||||||
}
|
|
||||||
exports.addPath = addPath;
|
|
||||||
/**
|
|
||||||
* Gets the value of an input. The value is also trimmed.
|
|
||||||
*
|
|
||||||
* @param name name of the input to get
|
|
||||||
* @param options optional. See InputOptions.
|
|
||||||
* @returns string
|
|
||||||
*/
|
|
||||||
function getInput(name, options) {
|
|
||||||
const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';
|
|
||||||
if (options && options.required && !val) {
|
|
||||||
throw new Error(`Input required and not supplied: ${name}`);
|
|
||||||
}
|
|
||||||
return val.trim();
|
|
||||||
}
|
|
||||||
exports.getInput = getInput;
|
|
||||||
/**
|
|
||||||
* Sets the value of an output.
|
|
||||||
*
|
|
||||||
* @param name name of the output to set
|
|
||||||
* @param value value to store. Non-string values will be converted to a string via JSON.stringify
|
|
||||||
*/
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
||||||
function setOutput(name, value) {
|
|
||||||
command_1.issueCommand('set-output', { name }, value);
|
|
||||||
}
|
|
||||||
exports.setOutput = setOutput;
|
|
||||||
/**
|
|
||||||
* Enables or disables the echoing of commands into stdout for the rest of the step.
|
|
||||||
* Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
function setCommandEcho(enabled) {
|
|
||||||
command_1.issue('echo', enabled ? 'on' : 'off');
|
|
||||||
}
|
|
||||||
exports.setCommandEcho = setCommandEcho;
|
|
||||||
//-----------------------------------------------------------------------
|
|
||||||
// Results
|
|
||||||
//-----------------------------------------------------------------------
|
|
||||||
/**
|
|
||||||
* Sets the action status to failed.
|
|
||||||
* When the action exits it will be with an exit code of 1
|
|
||||||
* @param message add error issue message
|
|
||||||
*/
|
|
||||||
function setFailed(message) {
|
|
||||||
process.exitCode = ExitCode.Failure;
|
|
||||||
error(message);
|
|
||||||
}
|
|
||||||
exports.setFailed = setFailed;
|
|
||||||
//-----------------------------------------------------------------------
|
|
||||||
// Logging Commands
|
|
||||||
//-----------------------------------------------------------------------
|
|
||||||
/**
|
|
||||||
* Gets whether Actions Step Debug is on or not
|
|
||||||
*/
|
|
||||||
function isDebug() {
|
|
||||||
return process.env['RUNNER_DEBUG'] === '1';
|
|
||||||
}
|
|
||||||
exports.isDebug = isDebug;
|
|
||||||
/**
|
|
||||||
* Writes debug message to user log
|
|
||||||
* @param message debug message
|
|
||||||
*/
|
|
||||||
function debug(message) {
|
|
||||||
command_1.issueCommand('debug', {}, message);
|
|
||||||
}
|
|
||||||
exports.debug = debug;
|
|
||||||
/**
|
|
||||||
* Adds an error issue
|
|
||||||
* @param message error issue message. Errors will be converted to string via toString()
|
|
||||||
*/
|
|
||||||
function error(message) {
|
|
||||||
command_1.issue('error', message instanceof Error ? message.toString() : message);
|
|
||||||
}
|
|
||||||
exports.error = error;
|
|
||||||
/**
|
|
||||||
* Adds an warning issue
|
|
||||||
* @param message warning issue message. Errors will be converted to string via toString()
|
|
||||||
*/
|
|
||||||
function warning(message) {
|
|
||||||
command_1.issue('warning', message instanceof Error ? message.toString() : message);
|
|
||||||
}
|
|
||||||
exports.warning = warning;
|
|
||||||
/**
|
|
||||||
* Writes info to log with console.log.
|
|
||||||
* @param message info message
|
|
||||||
*/
|
|
||||||
function info(message) {
|
|
||||||
process.stdout.write(message + os.EOL);
|
|
||||||
}
|
|
||||||
exports.info = info;
|
|
||||||
/**
|
|
||||||
* Begin an output group.
|
|
||||||
*
|
|
||||||
* Output until the next `groupEnd` will be foldable in this group
|
|
||||||
*
|
|
||||||
* @param name The name of the output group
|
|
||||||
*/
|
|
||||||
function startGroup(name) {
|
|
||||||
command_1.issue('group', name);
|
|
||||||
}
|
|
||||||
exports.startGroup = startGroup;
|
|
||||||
/**
|
|
||||||
* End an output group.
|
|
||||||
*/
|
|
||||||
function endGroup() {
|
|
||||||
command_1.issue('endgroup');
|
|
||||||
}
|
|
||||||
exports.endGroup = endGroup;
|
|
||||||
/**
|
|
||||||
* Wrap an asynchronous function call in a group.
|
|
||||||
*
|
|
||||||
* Returns the same type as the function itself.
|
|
||||||
*
|
|
||||||
* @param name The name of the group
|
|
||||||
* @param fn The function to wrap in the group
|
|
||||||
*/
|
|
||||||
function group(name, fn) {
|
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
|
||||||
startGroup(name);
|
|
||||||
let result;
|
|
||||||
try {
|
|
||||||
result = yield fn();
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
endGroup();
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
exports.group = group;
|
|
||||||
//-----------------------------------------------------------------------
|
|
||||||
// Wrapper action state
|
|
||||||
//-----------------------------------------------------------------------
|
|
||||||
/**
|
|
||||||
* Saves state for current action, the state can only be retrieved by this action's post job execution.
|
|
||||||
*
|
|
||||||
* @param name name of the state to store
|
|
||||||
* @param value value to store. Non-string values will be converted to a string via JSON.stringify
|
|
||||||
*/
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
||||||
function saveState(name, value) {
|
|
||||||
command_1.issueCommand('save-state', { name }, value);
|
|
||||||
}
|
|
||||||
exports.saveState = saveState;
|
|
||||||
/**
|
|
||||||
* Gets the value of an state set by this action's main execution.
|
|
||||||
*
|
|
||||||
* @param name name of the state to get
|
|
||||||
* @returns string
|
|
||||||
*/
|
|
||||||
function getState(name) {
|
|
||||||
return process.env[`STATE_${name}`] || '';
|
|
||||||
}
|
|
||||||
exports.getState = getState;
|
|
||||||
//# sourceMappingURL=core.js.map
|
|
1
node_modules/@actions/core/lib/core.js.map
generated
vendored
1
node_modules/@actions/core/lib/core.js.map
generated
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,uCAA6D;AAE7D,uCAAwB;AACxB,2CAA4B;AAU5B;;GAEG;AACH,IAAY,QAUX;AAVD,WAAY,QAAQ;IAClB;;OAEG;IACH,6CAAW,CAAA;IAEX;;OAEG;IACH,6CAAW,CAAA;AACb,CAAC,EAVW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAUnB;AAED,yEAAyE;AACzE,YAAY;AACZ,yEAAyE;AAEzE;;;;GAIG;AACH,8DAA8D;AAC9D,SAAgB,cAAc,CAAC,IAAY,EAAE,GAAQ;IACnD,MAAM,YAAY,GAAG,wBAAc,CAAC,GAAG,CAAC,CAAA;IACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAA;IAChC,sBAAY,CAAC,SAAS,EAAE,EAAC,IAAI,EAAC,EAAE,YAAY,CAAC,CAAA;AAC/C,CAAC;AAJD,wCAIC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,MAAc;IACtC,sBAAY,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;AACtC,CAAC;AAFD,8BAEC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,SAAiB;IACvC,sBAAY,CAAC,UAAU,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;IACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAA;AAC7E,CAAC;AAHD,0BAGC;AAED;;;;;;GAMG;AACH,SAAgB,QAAQ,CAAC,IAAY,EAAE,OAAsB;IAC3D,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;IACrE,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAA;KAC5D;IAED,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;AACnB,CAAC;AARD,4BAQC;AAED;;;;;GAKG;AACH,8DAA8D;AAC9D,SAAgB,SAAS,CAAC,IAAY,EAAE,KAAU;IAChD,sBAAY,CAAC,YAAY,EAAE,EAAC,IAAI,EAAC,EAAE,KAAK,CAAC,CAAA;AAC3C,CAAC;AAFD,8BAEC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,OAAgB;IAC7C,eAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AACvC,CAAC;AAFD,wCAEC;AAED,yEAAyE;AACzE,UAAU;AACV,yEAAyE;AAEzE;;;;GAIG;AACH,SAAgB,SAAS,CAAC,OAAuB;IAC/C,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAA;IAEnC,KAAK,CAAC,OAAO,CAAC,CAAA;AAChB,CAAC;AAJD,8BAIC;AAED,yEAAyE;AACzE,mBAAmB;AACnB,yEAAyE;AAEzE;;GAEG;AACH,SAAgB,OAAO;IACrB,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,GAAG,CAAA;AAC5C,CAAC;AAFD,0BAEC;AAED;;;GAGG;AACH,SAAgB,KAAK,CAAC,OAAe;IACnC,sBAAY,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;AACpC,CAAC;AAFD,sBAEC;AAED;;;GAGG;AACH,SAAgB,KAAK,CAAC,OAAuB;IAC3C,eAAK,CAAC,OAAO,EAAE,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;AACzE,CAAC;AAFD,sBAEC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,OAAuB;IAC7C,eAAK,CAAC,SAAS,EAAE,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;AAC3E,CAAC;AAFD,0BAEC;AAED;;;GAGG;AACH,SAAgB,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AACxC,CAAC;AAFD,oBAEC;AAED;;;;;;GAMG;AACH,SAAgB,UAAU,CAAC,IAAY;IACrC,eAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AACtB,CAAC;AAFD,gCAEC;AAED;;GAEG;AACH,SAAgB,QAAQ;IACtB,eAAK,CAAC,UAAU,CAAC,CAAA;AACnB,CAAC;AAFD,4BAEC;AAED;;;;;;;GAOG;AACH,SAAsB,KAAK,CAAI,IAAY,EAAE,EAAoB;;QAC/D,UAAU,CAAC,IAAI,CAAC,CAAA;QAEhB,IAAI,MAAS,CAAA;QAEb,IAAI;YACF,MAAM,GAAG,MAAM,EAAE,EAAE,CAAA;SACpB;gBAAS;YACR,QAAQ,EAAE,CAAA;SACX;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CAAA;AAZD,sBAYC;AAED,yEAAyE;AACzE,uBAAuB;AACvB,yEAAyE;AAEzE;;;;;GAKG;AACH,8DAA8D;AAC9D,SAAgB,SAAS,CAAC,IAAY,EAAE,KAAU;IAChD,sBAAY,CAAC,YAAY,EAAE,EAAC,IAAI,EAAC,EAAE,KAAK,CAAC,CAAA;AAC3C,CAAC;AAFD,8BAEC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,IAAY;IACnC,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;AAC3C,CAAC;AAFD,4BAEC"}
|
|
69
node_modules/@actions/core/package.json
generated
vendored
69
node_modules/@actions/core/package.json
generated
vendored
@ -1,69 +0,0 @@
|
|||||||
{
|
|
||||||
"_args": [
|
|
||||||
[
|
|
||||||
"@actions/core@1.2.4",
|
|
||||||
"/home/aszczucz/scm/aszc/change-string-case-action"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"_from": "@actions/core@1.2.4",
|
|
||||||
"_id": "@actions/core@1.2.4",
|
|
||||||
"_inBundle": false,
|
|
||||||
"_integrity": "sha512-YJCEq8BE3CdN8+7HPZ/4DxJjk/OkZV2FFIf+DlZTC/4iBlzYCD5yjRR6eiOS5llO11zbRltIRuKAjMKaWTE6cg==",
|
|
||||||
"_location": "/@actions/core",
|
|
||||||
"_phantomChildren": {},
|
|
||||||
"_requested": {
|
|
||||||
"type": "version",
|
|
||||||
"registry": true,
|
|
||||||
"raw": "@actions/core@1.2.4",
|
|
||||||
"name": "@actions/core",
|
|
||||||
"escapedName": "@actions%2fcore",
|
|
||||||
"scope": "@actions",
|
|
||||||
"rawSpec": "1.2.4",
|
|
||||||
"saveSpec": null,
|
|
||||||
"fetchSpec": "1.2.4"
|
|
||||||
},
|
|
||||||
"_requiredBy": [
|
|
||||||
"/"
|
|
||||||
],
|
|
||||||
"_resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.4.tgz",
|
|
||||||
"_spec": "1.2.4",
|
|
||||||
"_where": "/home/aszczucz/scm/aszc/change-string-case-action",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/actions/toolkit/issues"
|
|
||||||
},
|
|
||||||
"description": "Actions core lib",
|
|
||||||
"devDependencies": {
|
|
||||||
"@types/node": "^12.0.2"
|
|
||||||
},
|
|
||||||
"directories": {
|
|
||||||
"lib": "lib",
|
|
||||||
"test": "__tests__"
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"lib"
|
|
||||||
],
|
|
||||||
"homepage": "https://github.com/actions/toolkit/tree/master/packages/core",
|
|
||||||
"keywords": [
|
|
||||||
"github",
|
|
||||||
"actions",
|
|
||||||
"core"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"main": "lib/core.js",
|
|
||||||
"name": "@actions/core",
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/actions/toolkit.git",
|
|
||||||
"directory": "packages/core"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"audit-moderate": "npm install && npm audit --audit-level=moderate",
|
|
||||||
"test": "echo \"Error: run tests from root\" && exit 1",
|
|
||||||
"tsc": "tsc"
|
|
||||||
},
|
|
||||||
"types": "lib/core.d.ts",
|
|
||||||
"version": "1.2.4"
|
|
||||||
}
|
|
97
node_modules/@actions/github/README.md
generated
vendored
97
node_modules/@actions/github/README.md
generated
vendored
@ -1,97 +0,0 @@
|
|||||||
# `@actions/github`
|
|
||||||
|
|
||||||
> A hydrated Octokit client.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
Returns an authenticated Octokit client that follows the machine [proxy settings](https://help.github.com/en/actions/hosting-your-own-runners/using-a-proxy-server-with-self-hosted-runners) and correctly sets GHES base urls. See https://octokit.github.io/rest.js for the API.
|
|
||||||
|
|
||||||
```js
|
|
||||||
const github = require('@actions/github');
|
|
||||||
const core = require('@actions/core');
|
|
||||||
|
|
||||||
async function run() {
|
|
||||||
// This should be a token with access to your repository scoped in as a secret.
|
|
||||||
// The YML workflow will need to set myToken with the GitHub Secret Token
|
|
||||||
// myToken: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
// https://help.github.com/en/actions/automating-your-workflow-with-github-actions/authenticating-with-the-github_token#about-the-github_token-secret
|
|
||||||
const myToken = core.getInput('myToken');
|
|
||||||
|
|
||||||
const octokit = github.getOctokit(myToken)
|
|
||||||
|
|
||||||
// You can also pass in additional options as a second parameter to getOctokit
|
|
||||||
// const octokit = github.getOctokit(myToken, {userAgent: "MyActionVersion1"});
|
|
||||||
|
|
||||||
const { data: pullRequest } = await octokit.pulls.get({
|
|
||||||
owner: 'octokit',
|
|
||||||
repo: 'rest.js',
|
|
||||||
pull_number: 123,
|
|
||||||
mediaType: {
|
|
||||||
format: 'diff'
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
console.log(pullRequest);
|
|
||||||
}
|
|
||||||
|
|
||||||
run();
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also make GraphQL requests. See https://github.com/octokit/graphql.js for the API.
|
|
||||||
|
|
||||||
```js
|
|
||||||
const result = await octokit.graphql(query, variables);
|
|
||||||
```
|
|
||||||
|
|
||||||
Finally, you can get the context of the current action:
|
|
||||||
|
|
||||||
```js
|
|
||||||
const github = require('@actions/github');
|
|
||||||
|
|
||||||
const context = github.context;
|
|
||||||
|
|
||||||
const newIssue = await octokit.issues.create({
|
|
||||||
...context.repo,
|
|
||||||
title: 'New issue!',
|
|
||||||
body: 'Hello Universe!'
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
## Webhook payload typescript definitions
|
|
||||||
|
|
||||||
The npm module `@octokit/webhooks` provides type definitions for the response payloads. You can cast the payload to these types for better type information.
|
|
||||||
|
|
||||||
First, install the npm module `npm install @octokit/webhooks`
|
|
||||||
|
|
||||||
Then, assert the type based on the eventName
|
|
||||||
```ts
|
|
||||||
import * as core from '@actions/core'
|
|
||||||
import * as github from '@actions/github'
|
|
||||||
import * as Webhooks from '@octokit/webhooks'
|
|
||||||
if (github.context.eventName === 'push') {
|
|
||||||
const pushPayload = github.context.payload as Webhooks.WebhookPayloadPush
|
|
||||||
core.info(`The head commit is: ${pushPayload.head}`)
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Extending the Octokit instance
|
|
||||||
`@octokit/core` now supports the [plugin architecture](https://github.com/octokit/core.js#plugins). You can extend the GitHub instance using plugins.
|
|
||||||
|
|
||||||
For example, using the `@octokit/plugin-enterprise-server` you can now access enterprise admin apis on GHES instances.
|
|
||||||
|
|
||||||
```ts
|
|
||||||
import { GitHub, getOctokitOptions } from '@actions/github/lib/utils'
|
|
||||||
import { enterpriseServer220Admin } from '@octokit/plugin-enterprise-server'
|
|
||||||
|
|
||||||
const octokit = GitHub.plugin(enterpriseServer220Admin)
|
|
||||||
// or override some of the default values as well
|
|
||||||
// const octokit = GitHub.plugin(enterpriseServer220Admin).defaults({userAgent: "MyNewUserAgent"})
|
|
||||||
|
|
||||||
const myToken = core.getInput('myToken');
|
|
||||||
const myOctokit = new octokit(getOctokitOptions(token))
|
|
||||||
// Create a new user
|
|
||||||
myOctokit.enterpriseAdmin.createUser({
|
|
||||||
login: "testuser",
|
|
||||||
email: "testuser@test.com",
|
|
||||||
});
|
|
||||||
```
|
|
29
node_modules/@actions/github/lib/context.d.ts
generated
vendored
29
node_modules/@actions/github/lib/context.d.ts
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
import { WebhookPayload } from './interfaces';
|
|
||||||
export declare class Context {
|
|
||||||
/**
|
|
||||||
* Webhook payload object that triggered the workflow
|
|
||||||
*/
|
|
||||||
payload: WebhookPayload;
|
|
||||||
eventName: string;
|
|
||||||
sha: string;
|
|
||||||
ref: string;
|
|
||||||
workflow: string;
|
|
||||||
action: string;
|
|
||||||
actor: string;
|
|
||||||
job: string;
|
|
||||||
runNumber: number;
|
|
||||||
runId: number;
|
|
||||||
/**
|
|
||||||
* Hydrate the context from the environment
|
|
||||||
*/
|
|
||||||
constructor();
|
|
||||||
get issue(): {
|
|
||||||
owner: string;
|
|
||||||
repo: string;
|
|
||||||
number: number;
|
|
||||||
};
|
|
||||||
get repo(): {
|
|
||||||
owner: string;
|
|
||||||
repo: string;
|
|
||||||
};
|
|
||||||
}
|
|
50
node_modules/@actions/github/lib/context.js
generated
vendored
50
node_modules/@actions/github/lib/context.js
generated
vendored
@ -1,50 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.Context = void 0;
|
|
||||||
const fs_1 = require("fs");
|
|
||||||
const os_1 = require("os");
|
|
||||||
class Context {
|
|
||||||
/**
|
|
||||||
* Hydrate the context from the environment
|
|
||||||
*/
|
|
||||||
constructor() {
|
|
||||||
this.payload = {};
|
|
||||||
if (process.env.GITHUB_EVENT_PATH) {
|
|
||||||
if (fs_1.existsSync(process.env.GITHUB_EVENT_PATH)) {
|
|
||||||
this.payload = JSON.parse(fs_1.readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' }));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const path = process.env.GITHUB_EVENT_PATH;
|
|
||||||
process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.eventName = process.env.GITHUB_EVENT_NAME;
|
|
||||||
this.sha = process.env.GITHUB_SHA;
|
|
||||||
this.ref = process.env.GITHUB_REF;
|
|
||||||
this.workflow = process.env.GITHUB_WORKFLOW;
|
|
||||||
this.action = process.env.GITHUB_ACTION;
|
|
||||||
this.actor = process.env.GITHUB_ACTOR;
|
|
||||||
this.job = process.env.GITHUB_JOB;
|
|
||||||
this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10);
|
|
||||||
this.runId = parseInt(process.env.GITHUB_RUN_ID, 10);
|
|
||||||
}
|
|
||||||
get issue() {
|
|
||||||
const payload = this.payload;
|
|
||||||
return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number });
|
|
||||||
}
|
|
||||||
get repo() {
|
|
||||||
if (process.env.GITHUB_REPOSITORY) {
|
|
||||||
const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');
|
|
||||||
return { owner, repo };
|
|
||||||
}
|
|
||||||
if (this.payload.repository) {
|
|
||||||
return {
|
|
||||||
owner: this.payload.repository.owner.login,
|
|
||||||
repo: this.payload.repository.name
|
|
||||||
};
|
|
||||||
}
|
|
||||||
throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.Context = Context;
|
|
||||||
//# sourceMappingURL=context.js.map
|
|
1
node_modules/@actions/github/lib/context.js.map
generated
vendored
1
node_modules/@actions/github/lib/context.js.map
generated
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;;AAEA,2BAA2C;AAC3C,2BAAsB;AAEtB,MAAa,OAAO;IAgBlB;;OAEG;IACH;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACjB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;YACjC,IAAI,eAAU,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;gBAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CACvB,iBAAY,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAChE,CAAA;aACF;iBAAM;gBACL,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAA;gBAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,IAAI,kBAAkB,QAAG,EAAE,CAAC,CAAA;aACvE;SACF;QACD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAA2B,CAAA;QACxD,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAoB,CAAA;QAC3C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAoB,CAAA;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,eAAyB,CAAA;QACrD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAuB,CAAA;QACjD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAsB,CAAA;QAC/C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAoB,CAAA;QAC3C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAA2B,EAAE,EAAE,CAAC,CAAA;QACtE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAuB,EAAE,EAAE,CAAC,CAAA;IAChE,CAAC;IAED,IAAI,KAAK;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,uCACK,IAAI,CAAC,IAAI,KACZ,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC,MAAM,IAClE;IACH,CAAC;IAED,IAAI,IAAI;QACN,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;YACjC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC9D,OAAO,EAAC,KAAK,EAAE,IAAI,EAAC,CAAA;SACrB;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK;gBAC1C,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;aACnC,CAAA;SACF;QAED,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAA;IACH,CAAC;CACF;AApED,0BAoEC"}
|
|
11
node_modules/@actions/github/lib/github.d.ts
generated
vendored
11
node_modules/@actions/github/lib/github.d.ts
generated
vendored
@ -1,11 +0,0 @@
|
|||||||
import * as Context from './context';
|
|
||||||
import { GitHub } from './utils';
|
|
||||||
import { OctokitOptions } from '@octokit/core/dist-types/types';
|
|
||||||
export declare const context: Context.Context;
|
|
||||||
/**
|
|
||||||
* Returns a hydrated octokit ready to use for GitHub Actions
|
|
||||||
*
|
|
||||||
* @param token the repo PAT or GITHUB_TOKEN
|
|
||||||
* @param options other options to set
|
|
||||||
*/
|
|
||||||
export declare function getOctokit(token: string, options?: OctokitOptions): InstanceType<typeof GitHub>;
|
|
36
node_modules/@actions/github/lib/github.js
generated
vendored
36
node_modules/@actions/github/lib/github.js
generated
vendored
@ -1,36 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
||||||
if (k2 === undefined) k2 = k;
|
|
||||||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
||||||
}) : (function(o, m, k, k2) {
|
|
||||||
if (k2 === undefined) k2 = k;
|
|
||||||
o[k2] = m[k];
|
|
||||||
}));
|
|
||||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
||||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
||||||
}) : function(o, v) {
|
|
||||||
o["default"] = v;
|
|
||||||
});
|
|
||||||
var __importStar = (this && this.__importStar) || function (mod) {
|
|
||||||
if (mod && mod.__esModule) return mod;
|
|
||||||
var result = {};
|
|
||||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
||||||
__setModuleDefault(result, mod);
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.getOctokit = exports.context = void 0;
|
|
||||||
const Context = __importStar(require("./context"));
|
|
||||||
const utils_1 = require("./utils");
|
|
||||||
exports.context = new Context.Context();
|
|
||||||
/**
|
|
||||||
* Returns a hydrated octokit ready to use for GitHub Actions
|
|
||||||
*
|
|
||||||
* @param token the repo PAT or GITHUB_TOKEN
|
|
||||||
* @param options other options to set
|
|
||||||
*/
|
|
||||||
function getOctokit(token, options) {
|
|
||||||
return new utils_1.GitHub(utils_1.getOctokitOptions(token, options));
|
|
||||||
}
|
|
||||||
exports.getOctokit = getOctokit;
|
|
||||||
//# sourceMappingURL=github.js.map
|
|
1
node_modules/@actions/github/lib/github.js.map
generated
vendored
1
node_modules/@actions/github/lib/github.js.map
generated
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAoC;AACpC,mCAAiD;AAKpC,QAAA,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAA;AAE5C;;;;;GAKG;AACH,SAAgB,UAAU,CACxB,KAAa,EACb,OAAwB;IAExB,OAAO,IAAI,cAAM,CAAC,yBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;AACtD,CAAC;AALD,gCAKC"}
|
|
40
node_modules/@actions/github/lib/interfaces.d.ts
generated
vendored
40
node_modules/@actions/github/lib/interfaces.d.ts
generated
vendored
@ -1,40 +0,0 @@
|
|||||||
export interface PayloadRepository {
|
|
||||||
[key: string]: any;
|
|
||||||
full_name?: string;
|
|
||||||
name: string;
|
|
||||||
owner: {
|
|
||||||
[key: string]: any;
|
|
||||||
login: string;
|
|
||||||
name?: string;
|
|
||||||
};
|
|
||||||
html_url?: string;
|
|
||||||
}
|
|
||||||
export interface WebhookPayload {
|
|
||||||
[key: string]: any;
|
|
||||||
repository?: PayloadRepository;
|
|
||||||
issue?: {
|
|
||||||
[key: string]: any;
|
|
||||||
number: number;
|
|
||||||
html_url?: string;
|
|
||||||
body?: string;
|
|
||||||
};
|
|
||||||
pull_request?: {
|
|
||||||
[key: string]: any;
|
|
||||||
number: number;
|
|
||||||
html_url?: string;
|
|
||||||
body?: string;
|
|
||||||
};
|
|
||||||
sender?: {
|
|
||||||
[key: string]: any;
|
|
||||||
type: string;
|
|
||||||
};
|
|
||||||
action?: string;
|
|
||||||
installation?: {
|
|
||||||
id: number;
|
|
||||||
[key: string]: any;
|
|
||||||
};
|
|
||||||
comment?: {
|
|
||||||
id: number;
|
|
||||||
[key: string]: any;
|
|
||||||
};
|
|
||||||
}
|
|
4
node_modules/@actions/github/lib/interfaces.js
generated
vendored
4
node_modules/@actions/github/lib/interfaces.js
generated
vendored
@ -1,4 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
//# sourceMappingURL=interfaces.js.map
|
|
1
node_modules/@actions/github/lib/interfaces.js.map
generated
vendored
1
node_modules/@actions/github/lib/interfaces.js.map
generated
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";AAAA,uDAAuD"}
|
|
6
node_modules/@actions/github/lib/internal/utils.d.ts
generated
vendored
6
node_modules/@actions/github/lib/internal/utils.d.ts
generated
vendored
@ -1,6 +0,0 @@
|
|||||||
/// <reference types="node" />
|
|
||||||
import * as http from 'http';
|
|
||||||
import { OctokitOptions } from '@octokit/core/dist-types/types';
|
|
||||||
export declare function getAuthString(token: string, options: OctokitOptions): string | undefined;
|
|
||||||
export declare function getProxyAgent(destinationUrl: string): http.Agent;
|
|
||||||
export declare function getApiBaseUrl(): string;
|
|
43
node_modules/@actions/github/lib/internal/utils.js
generated
vendored
43
node_modules/@actions/github/lib/internal/utils.js
generated
vendored
@ -1,43 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
||||||
if (k2 === undefined) k2 = k;
|
|
||||||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
||||||
}) : (function(o, m, k, k2) {
|
|
||||||
if (k2 === undefined) k2 = k;
|
|
||||||
o[k2] = m[k];
|
|
||||||
}));
|
|
||||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
||||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
||||||
}) : function(o, v) {
|
|
||||||
o["default"] = v;
|
|
||||||
});
|
|
||||||
var __importStar = (this && this.__importStar) || function (mod) {
|
|
||||||
if (mod && mod.__esModule) return mod;
|
|
||||||
var result = {};
|
|
||||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
||||||
__setModuleDefault(result, mod);
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.getApiBaseUrl = exports.getProxyAgent = exports.getAuthString = void 0;
|
|
||||||
const httpClient = __importStar(require("@actions/http-client"));
|
|
||||||
function getAuthString(token, options) {
|
|
||||||
if (!token && !options.auth) {
|
|
||||||
throw new Error('Parameter token or opts.auth is required');
|
|
||||||
}
|
|
||||||
else if (token && options.auth) {
|
|
||||||
throw new Error('Parameters token and opts.auth may not both be specified');
|
|
||||||
}
|
|
||||||
return typeof options.auth === 'string' ? options.auth : `token ${token}`;
|
|
||||||
}
|
|
||||||
exports.getAuthString = getAuthString;
|
|
||||||
function getProxyAgent(destinationUrl) {
|
|
||||||
const hc = new httpClient.HttpClient();
|
|
||||||
return hc.getAgent(destinationUrl);
|
|
||||||
}
|
|
||||||
exports.getProxyAgent = getProxyAgent;
|
|
||||||
function getApiBaseUrl() {
|
|
||||||
return process.env['GITHUB_API_URL'] || 'https://api.github.com';
|
|
||||||
}
|
|
||||||
exports.getApiBaseUrl = getApiBaseUrl;
|
|
||||||
//# sourceMappingURL=utils.js.map
|
|
1
node_modules/@actions/github/lib/internal/utils.js.map
generated
vendored
1
node_modules/@actions/github/lib/internal/utils.js.map
generated
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/internal/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,iEAAkD;AAGlD,SAAgB,aAAa,CAC3B,KAAa,EACb,OAAuB;IAEvB,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;KAC5D;SAAM,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;KAC5E;IAED,OAAO,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAA;AAC3E,CAAC;AAXD,sCAWC;AAED,SAAgB,aAAa,CAAC,cAAsB;IAClD,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,UAAU,EAAE,CAAA;IACtC,OAAO,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;AACpC,CAAC;AAHD,sCAGC;AAED,SAAgB,aAAa;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,wBAAwB,CAAA;AAClE,CAAC;AAFD,sCAEC"}
|
|
21
node_modules/@actions/github/lib/utils.d.ts
generated
vendored
21
node_modules/@actions/github/lib/utils.d.ts
generated
vendored
@ -1,21 +0,0 @@
|
|||||||
import * as Context from './context';
|
|
||||||
import { Octokit } from '@octokit/core';
|
|
||||||
import { OctokitOptions } from '@octokit/core/dist-types/types';
|
|
||||||
export declare const context: Context.Context;
|
|
||||||
export declare const GitHub: (new (...args: any[]) => {
|
|
||||||
[x: string]: any;
|
|
||||||
}) & {
|
|
||||||
new (...args: any[]): {
|
|
||||||
[x: string]: any;
|
|
||||||
};
|
|
||||||
plugins: any[];
|
|
||||||
} & typeof Octokit & import("@octokit/core/dist-types/types").Constructor<import("@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types").RestEndpointMethods & {
|
|
||||||
paginate: import("@octokit/plugin-paginate-rest").PaginateInterface;
|
|
||||||
}>;
|
|
||||||
/**
|
|
||||||
* Convience function to correctly format Octokit Options to pass into the constructor.
|
|
||||||
*
|
|
||||||
* @param token the repo PAT or GITHUB_TOKEN
|
|
||||||
* @param options other options to set
|
|
||||||
*/
|
|
||||||
export declare function getOctokitOptions(token: string, options?: OctokitOptions): OctokitOptions;
|
|
54
node_modules/@actions/github/lib/utils.js
generated
vendored
54
node_modules/@actions/github/lib/utils.js
generated
vendored
@ -1,54 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
||||||
if (k2 === undefined) k2 = k;
|
|
||||||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
||||||
}) : (function(o, m, k, k2) {
|
|
||||||
if (k2 === undefined) k2 = k;
|
|
||||||
o[k2] = m[k];
|
|
||||||
}));
|
|
||||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
||||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
||||||
}) : function(o, v) {
|
|
||||||
o["default"] = v;
|
|
||||||
});
|
|
||||||
var __importStar = (this && this.__importStar) || function (mod) {
|
|
||||||
if (mod && mod.__esModule) return mod;
|
|
||||||
var result = {};
|
|
||||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
||||||
__setModuleDefault(result, mod);
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.getOctokitOptions = exports.GitHub = exports.context = void 0;
|
|
||||||
const Context = __importStar(require("./context"));
|
|
||||||
const Utils = __importStar(require("./internal/utils"));
|
|
||||||
// octokit + plugins
|
|
||||||
const core_1 = require("@octokit/core");
|
|
||||||
const plugin_rest_endpoint_methods_1 = require("@octokit/plugin-rest-endpoint-methods");
|
|
||||||
const plugin_paginate_rest_1 = require("@octokit/plugin-paginate-rest");
|
|
||||||
exports.context = new Context.Context();
|
|
||||||
const baseUrl = Utils.getApiBaseUrl();
|
|
||||||
const defaults = {
|
|
||||||
baseUrl,
|
|
||||||
request: {
|
|
||||||
agent: Utils.getProxyAgent(baseUrl)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
exports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(defaults);
|
|
||||||
/**
|
|
||||||
* Convience function to correctly format Octokit Options to pass into the constructor.
|
|
||||||
*
|
|
||||||
* @param token the repo PAT or GITHUB_TOKEN
|
|
||||||
* @param options other options to set
|
|
||||||
*/
|
|
||||||
function getOctokitOptions(token, options) {
|
|
||||||
const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller
|
|
||||||
// Auth
|
|
||||||
const auth = Utils.getAuthString(token, opts);
|
|
||||||
if (auth) {
|
|
||||||
opts.auth = auth;
|
|
||||||
}
|
|
||||||
return opts;
|
|
||||||
}
|
|
||||||
exports.getOctokitOptions = getOctokitOptions;
|
|
||||||
//# sourceMappingURL=utils.js.map
|
|
1
node_modules/@actions/github/lib/utils.js.map
generated
vendored
1
node_modules/@actions/github/lib/utils.js.map
generated
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAoC;AACpC,wDAAyC;AAEzC,oBAAoB;AACpB,wCAAqC;AAErC,wFAAyE;AACzE,wEAA0D;AAE7C,QAAA,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAA;AAE5C,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,EAAE,CAAA;AACrC,MAAM,QAAQ,GAAG;IACf,OAAO;IACP,OAAO,EAAE;QACP,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC;KACpC;CACF,CAAA;AAEY,QAAA,MAAM,GAAG,cAAO,CAAC,MAAM,CAClC,kDAAmB,EACnB,mCAAY,CACb,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAEpB;;;;;GAKG;AACH,SAAgB,iBAAiB,CAC/B,KAAa,EACb,OAAwB;IAExB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA,CAAC,iEAAiE;IAE/G,OAAO;IACP,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAC7C,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;KACjB;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAbD,8CAaC"}
|
|
79
node_modules/@actions/github/package.json
generated
vendored
79
node_modules/@actions/github/package.json
generated
vendored
@ -1,79 +0,0 @@
|
|||||||
{
|
|
||||||
"_args": [
|
|
||||||
[
|
|
||||||
"@actions/github@4.0.0",
|
|
||||||
"/home/aszczucz/scm/aszc/change-string-case-action"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"_from": "@actions/github@4.0.0",
|
|
||||||
"_id": "@actions/github@4.0.0",
|
|
||||||
"_inBundle": false,
|
|
||||||
"_integrity": "sha512-Ej/Y2E+VV6sR9X7pWL5F3VgEWrABaT292DRqRU6R4hnQjPtC/zD3nagxVdXWiRQvYDh8kHXo7IDmG42eJ/dOMA==",
|
|
||||||
"_location": "/@actions/github",
|
|
||||||
"_phantomChildren": {},
|
|
||||||
"_requested": {
|
|
||||||
"type": "version",
|
|
||||||
"registry": true,
|
|
||||||
"raw": "@actions/github@4.0.0",
|
|
||||||
"name": "@actions/github",
|
|
||||||
"escapedName": "@actions%2fgithub",
|
|
||||||
"scope": "@actions",
|
|
||||||
"rawSpec": "4.0.0",
|
|
||||||
"saveSpec": null,
|
|
||||||
"fetchSpec": "4.0.0"
|
|
||||||
},
|
|
||||||
"_requiredBy": [
|
|
||||||
"/"
|
|
||||||
],
|
|
||||||
"_resolved": "https://registry.npmjs.org/@actions/github/-/github-4.0.0.tgz",
|
|
||||||
"_spec": "4.0.0",
|
|
||||||
"_where": "/home/aszczucz/scm/aszc/change-string-case-action",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/actions/toolkit/issues"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@actions/http-client": "^1.0.8",
|
|
||||||
"@octokit/core": "^3.0.0",
|
|
||||||
"@octokit/plugin-paginate-rest": "^2.2.3",
|
|
||||||
"@octokit/plugin-rest-endpoint-methods": "^4.0.0"
|
|
||||||
},
|
|
||||||
"description": "Actions github lib",
|
|
||||||
"devDependencies": {
|
|
||||||
"jest": "^25.1.0",
|
|
||||||
"proxy": "^1.0.1"
|
|
||||||
},
|
|
||||||
"directories": {
|
|
||||||
"lib": "lib",
|
|
||||||
"test": "__tests__"
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"lib",
|
|
||||||
"!.DS_Store"
|
|
||||||
],
|
|
||||||
"homepage": "https://github.com/actions/toolkit/tree/master/packages/github",
|
|
||||||
"keywords": [
|
|
||||||
"github",
|
|
||||||
"actions"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"main": "lib/github.js",
|
|
||||||
"name": "@actions/github",
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/actions/toolkit.git",
|
|
||||||
"directory": "packages/github"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"audit-moderate": "npm install && npm audit --audit-level=moderate",
|
|
||||||
"build": "tsc",
|
|
||||||
"format": "prettier --write **/*.ts",
|
|
||||||
"format-check": "prettier --check **/*.ts",
|
|
||||||
"test": "jest",
|
|
||||||
"tsc": "tsc"
|
|
||||||
},
|
|
||||||
"types": "lib/github.d.ts",
|
|
||||||
"version": "4.0.0"
|
|
||||||
}
|
|
21
node_modules/@actions/http-client/LICENSE
generated
vendored
21
node_modules/@actions/http-client/LICENSE
generated
vendored
@ -1,21 +0,0 @@
|
|||||||
Actions Http Client for Node.js
|
|
||||||
|
|
||||||
Copyright (c) GitHub, Inc.
|
|
||||||
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
MIT License
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
|
||||||
associated documentation files (the "Software"), to deal in the Software without restriction,
|
|
||||||
including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
|
||||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
|
||||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
79
node_modules/@actions/http-client/README.md
generated
vendored
79
node_modules/@actions/http-client/README.md
generated
vendored
@ -1,79 +0,0 @@
|
|||||||
|
|
||||||
<p align="center">
|
|
||||||
<img src="actions.png">
|
|
||||||
</p>
|
|
||||||
|
|
||||||
# Actions Http-Client
|
|
||||||
|
|
||||||
[![Http Status](https://github.com/actions/http-client/workflows/http-tests/badge.svg)](https://github.com/actions/http-client/actions)
|
|
||||||
|
|
||||||
A lightweight HTTP client optimized for use with actions, TypeScript with generics and async await.
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
- HTTP client with TypeScript generics and async/await/Promises
|
|
||||||
- Typings included so no need to acquire separately (great for intellisense and no versioning drift)
|
|
||||||
- [Proxy support](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/about-self-hosted-runners#using-a-proxy-server-with-self-hosted-runners) just works with actions and the runner
|
|
||||||
- Targets ES2019 (runner runs actions with node 12+). Only supported on node 12+.
|
|
||||||
- Basic, Bearer and PAT Support out of the box. Extensible handlers for others.
|
|
||||||
- Redirects supported
|
|
||||||
|
|
||||||
Features and releases [here](./RELEASES.md)
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
```
|
|
||||||
npm install @actions/http-client --save
|
|
||||||
```
|
|
||||||
|
|
||||||
## Samples
|
|
||||||
|
|
||||||
See the [HTTP](./__tests__) tests for detailed examples.
|
|
||||||
|
|
||||||
## Errors
|
|
||||||
|
|
||||||
### HTTP
|
|
||||||
|
|
||||||
The HTTP client does not throw unless truly exceptional.
|
|
||||||
|
|
||||||
* A request that successfully executes resulting in a 404, 500 etc... will return a response object with a status code and a body.
|
|
||||||
* Redirects (3xx) will be followed by default.
|
|
||||||
|
|
||||||
See [HTTP tests](./__tests__) for detailed examples.
|
|
||||||
|
|
||||||
## Debugging
|
|
||||||
|
|
||||||
To enable detailed console logging of all HTTP requests and responses, set the NODE_DEBUG environment varible:
|
|
||||||
|
|
||||||
```
|
|
||||||
export NODE_DEBUG=http
|
|
||||||
```
|
|
||||||
|
|
||||||
## Node support
|
|
||||||
|
|
||||||
The http-client is built using the latest LTS version of Node 12. It may work on previous node LTS versions but it's tested and officially supported on Node12+.
|
|
||||||
|
|
||||||
## Support and Versioning
|
|
||||||
|
|
||||||
We follow semver and will hold compatibility between major versions and increment the minor version with new features and capabilities (while holding compat).
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
We welcome PRs. Please create an issue and if applicable, a design before proceeding with code.
|
|
||||||
|
|
||||||
once:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ npm install
|
|
||||||
```
|
|
||||||
|
|
||||||
To build:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ npm run build
|
|
||||||
```
|
|
||||||
|
|
||||||
To run all tests:
|
|
||||||
```bash
|
|
||||||
$ npm test
|
|
||||||
```
|
|
16
node_modules/@actions/http-client/RELEASES.md
generated
vendored
16
node_modules/@actions/http-client/RELEASES.md
generated
vendored
@ -1,16 +0,0 @@
|
|||||||
## Releases
|
|
||||||
|
|
||||||
## 1.0.7
|
|
||||||
Update NPM dependencies and add 429 to the list of HttpCodes
|
|
||||||
|
|
||||||
## 1.0.6
|
|
||||||
Automatically sends Content-Type and Accept application/json headers for \<verb>Json() helper methods if not set in the client or parameters.
|
|
||||||
|
|
||||||
## 1.0.5
|
|
||||||
Adds \<verb>Json() helper methods for json over http scenarios.
|
|
||||||
|
|
||||||
## 1.0.4
|
|
||||||
Started to add \<verb>Json() helper methods. Do not use this release for that. Use >= 1.0.5 since there was an issue with types.
|
|
||||||
|
|
||||||
## 1.0.1 to 1.0.3
|
|
||||||
Adds proxy support.
|
|
BIN
node_modules/@actions/http-client/actions.png
generated
vendored
BIN
node_modules/@actions/http-client/actions.png
generated
vendored
Binary file not shown.
Before Width: | Height: | Size: 33 KiB |
23
node_modules/@actions/http-client/auth.d.ts
generated
vendored
23
node_modules/@actions/http-client/auth.d.ts
generated
vendored
@ -1,23 +0,0 @@
|
|||||||
import ifm = require('./interfaces');
|
|
||||||
export declare class BasicCredentialHandler implements ifm.IRequestHandler {
|
|
||||||
username: string;
|
|
||||||
password: string;
|
|
||||||
constructor(username: string, password: string);
|
|
||||||
prepareRequest(options: any): void;
|
|
||||||
canHandleAuthentication(response: ifm.IHttpClientResponse): boolean;
|
|
||||||
handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise<ifm.IHttpClientResponse>;
|
|
||||||
}
|
|
||||||
export declare class BearerCredentialHandler implements ifm.IRequestHandler {
|
|
||||||
token: string;
|
|
||||||
constructor(token: string);
|
|
||||||
prepareRequest(options: any): void;
|
|
||||||
canHandleAuthentication(response: ifm.IHttpClientResponse): boolean;
|
|
||||||
handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise<ifm.IHttpClientResponse>;
|
|
||||||
}
|
|
||||||
export declare class PersonalAccessTokenCredentialHandler implements ifm.IRequestHandler {
|
|
||||||
token: string;
|
|
||||||
constructor(token: string);
|
|
||||||
prepareRequest(options: any): void;
|
|
||||||
canHandleAuthentication(response: ifm.IHttpClientResponse): boolean;
|
|
||||||
handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise<ifm.IHttpClientResponse>;
|
|
||||||
}
|
|
58
node_modules/@actions/http-client/auth.js
generated
vendored
58
node_modules/@actions/http-client/auth.js
generated
vendored
@ -1,58 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
class BasicCredentialHandler {
|
|
||||||
constructor(username, password) {
|
|
||||||
this.username = username;
|
|
||||||
this.password = password;
|
|
||||||
}
|
|
||||||
prepareRequest(options) {
|
|
||||||
options.headers['Authorization'] =
|
|
||||||
'Basic ' +
|
|
||||||
Buffer.from(this.username + ':' + this.password).toString('base64');
|
|
||||||
}
|
|
||||||
// This handler cannot handle 401
|
|
||||||
canHandleAuthentication(response) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
handleAuthentication(httpClient, requestInfo, objs) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.BasicCredentialHandler = BasicCredentialHandler;
|
|
||||||
class BearerCredentialHandler {
|
|
||||||
constructor(token) {
|
|
||||||
this.token = token;
|
|
||||||
}
|
|
||||||
// currently implements pre-authorization
|
|
||||||
// TODO: support preAuth = false where it hooks on 401
|
|
||||||
prepareRequest(options) {
|
|
||||||
options.headers['Authorization'] = 'Bearer ' + this.token;
|
|
||||||
}
|
|
||||||
// This handler cannot handle 401
|
|
||||||
canHandleAuthentication(response) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
handleAuthentication(httpClient, requestInfo, objs) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.BearerCredentialHandler = BearerCredentialHandler;
|
|
||||||
class PersonalAccessTokenCredentialHandler {
|
|
||||||
constructor(token) {
|
|
||||||
this.token = token;
|
|
||||||
}
|
|
||||||
// currently implements pre-authorization
|
|
||||||
// TODO: support preAuth = false where it hooks on 401
|
|
||||||
prepareRequest(options) {
|
|
||||||
options.headers['Authorization'] =
|
|
||||||
'Basic ' + Buffer.from('PAT:' + this.token).toString('base64');
|
|
||||||
}
|
|
||||||
// This handler cannot handle 401
|
|
||||||
canHandleAuthentication(response) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
handleAuthentication(httpClient, requestInfo, objs) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;
|
|
119
node_modules/@actions/http-client/index.d.ts
generated
vendored
119
node_modules/@actions/http-client/index.d.ts
generated
vendored
@ -1,119 +0,0 @@
|
|||||||
/// <reference types="node" />
|
|
||||||
import http = require('http');
|
|
||||||
import ifm = require('./interfaces');
|
|
||||||
export declare enum HttpCodes {
|
|
||||||
OK = 200,
|
|
||||||
MultipleChoices = 300,
|
|
||||||
MovedPermanently = 301,
|
|
||||||
ResourceMoved = 302,
|
|
||||||
SeeOther = 303,
|
|
||||||
NotModified = 304,
|
|
||||||
UseProxy = 305,
|
|
||||||
SwitchProxy = 306,
|
|
||||||
TemporaryRedirect = 307,
|
|
||||||
PermanentRedirect = 308,
|
|
||||||
BadRequest = 400,
|
|
||||||
Unauthorized = 401,
|
|
||||||
PaymentRequired = 402,
|
|
||||||
Forbidden = 403,
|
|
||||||
NotFound = 404,
|
|
||||||
MethodNotAllowed = 405,
|
|
||||||
NotAcceptable = 406,
|
|
||||||
ProxyAuthenticationRequired = 407,
|
|
||||||
RequestTimeout = 408,
|
|
||||||
Conflict = 409,
|
|
||||||
Gone = 410,
|
|
||||||
TooManyRequests = 429,
|
|
||||||
InternalServerError = 500,
|
|
||||||
NotImplemented = 501,
|
|
||||||
BadGateway = 502,
|
|
||||||
ServiceUnavailable = 503,
|
|
||||||
GatewayTimeout = 504
|
|
||||||
}
|
|
||||||
export declare enum Headers {
|
|
||||||
Accept = "accept",
|
|
||||||
ContentType = "content-type"
|
|
||||||
}
|
|
||||||
export declare enum MediaTypes {
|
|
||||||
ApplicationJson = "application/json"
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Returns the proxy URL, depending upon the supplied url and proxy environment variables.
|
|
||||||
* @param serverUrl The server URL where the request will be sent. For example, https://api.github.com
|
|
||||||
*/
|
|
||||||
export declare function getProxyUrl(serverUrl: string): string;
|
|
||||||
export declare class HttpClientResponse implements ifm.IHttpClientResponse {
|
|
||||||
constructor(message: http.IncomingMessage);
|
|
||||||
message: http.IncomingMessage;
|
|
||||||
readBody(): Promise<string>;
|
|
||||||
}
|
|
||||||
export declare function isHttps(requestUrl: string): boolean;
|
|
||||||
export declare class HttpClient {
|
|
||||||
userAgent: string | undefined;
|
|
||||||
handlers: ifm.IRequestHandler[];
|
|
||||||
requestOptions: ifm.IRequestOptions;
|
|
||||||
private _ignoreSslError;
|
|
||||||
private _socketTimeout;
|
|
||||||
private _allowRedirects;
|
|
||||||
private _allowRedirectDowngrade;
|
|
||||||
private _maxRedirects;
|
|
||||||
private _allowRetries;
|
|
||||||
private _maxRetries;
|
|
||||||
private _agent;
|
|
||||||
private _proxyAgent;
|
|
||||||
private _keepAlive;
|
|
||||||
private _disposed;
|
|
||||||
constructor(userAgent?: string, handlers?: ifm.IRequestHandler[], requestOptions?: ifm.IRequestOptions);
|
|
||||||
options(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
|
|
||||||
get(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
|
|
||||||
del(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
|
|
||||||
post(requestUrl: string, data: string, additionalHeaders?: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
|
|
||||||
patch(requestUrl: string, data: string, additionalHeaders?: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
|
|
||||||
put(requestUrl: string, data: string, additionalHeaders?: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
|
|
||||||
head(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
|
|
||||||
sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
|
|
||||||
/**
|
|
||||||
* Gets a typed object from an endpoint
|
|
||||||
* Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise
|
|
||||||
*/
|
|
||||||
getJson<T>(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise<ifm.ITypedResponse<T>>;
|
|
||||||
postJson<T>(requestUrl: string, obj: any, additionalHeaders?: ifm.IHeaders): Promise<ifm.ITypedResponse<T>>;
|
|
||||||
putJson<T>(requestUrl: string, obj: any, additionalHeaders?: ifm.IHeaders): Promise<ifm.ITypedResponse<T>>;
|
|
||||||
patchJson<T>(requestUrl: string, obj: any, additionalHeaders?: ifm.IHeaders): Promise<ifm.ITypedResponse<T>>;
|
|
||||||
/**
|
|
||||||
* Makes a raw http request.
|
|
||||||
* All other methods such as get, post, patch, and request ultimately call this.
|
|
||||||
* Prefer get, del, post and patch
|
|
||||||
*/
|
|
||||||
request(verb: string, requestUrl: string, data: string | NodeJS.ReadableStream, headers: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
|
|
||||||
/**
|
|
||||||
* Needs to be called if keepAlive is set to true in request options.
|
|
||||||
*/
|
|
||||||
dispose(): void;
|
|
||||||
/**
|
|
||||||
* Raw request.
|
|
||||||
* @param info
|
|
||||||
* @param data
|
|
||||||
*/
|
|
||||||
requestRaw(info: ifm.IRequestInfo, data: string | NodeJS.ReadableStream): Promise<ifm.IHttpClientResponse>;
|
|
||||||
/**
|
|
||||||
* Raw request with callback.
|
|
||||||
* @param info
|
|
||||||
* @param data
|
|
||||||
* @param onResult
|
|
||||||
*/
|
|
||||||
requestRawWithCallback(info: ifm.IRequestInfo, data: string | NodeJS.ReadableStream, onResult: (err: any, res: ifm.IHttpClientResponse) => void): void;
|
|
||||||
/**
|
|
||||||
* Gets an http agent. This function is useful when you need an http agent that handles
|
|
||||||
* routing through a proxy server - depending upon the url and proxy environment variables.
|
|
||||||
* @param serverUrl The server URL where the request will be sent. For example, https://api.github.com
|
|
||||||
*/
|
|
||||||
getAgent(serverUrl: string): http.Agent;
|
|
||||||
private _prepareRequest;
|
|
||||||
private _mergeHeaders;
|
|
||||||
private _getExistingOrDefaultHeader;
|
|
||||||
private _getAgent;
|
|
||||||
private _performExponentialBackoff;
|
|
||||||
private static dateTimeDeserializer;
|
|
||||||
private _processResponse;
|
|
||||||
}
|
|
531
node_modules/@actions/http-client/index.js
generated
vendored
531
node_modules/@actions/http-client/index.js
generated
vendored
@ -1,531 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const url = require("url");
|
|
||||||
const http = require("http");
|
|
||||||
const https = require("https");
|
|
||||||
const pm = require("./proxy");
|
|
||||||
let tunnel;
|
|
||||||
var HttpCodes;
|
|
||||||
(function (HttpCodes) {
|
|
||||||
HttpCodes[HttpCodes["OK"] = 200] = "OK";
|
|
||||||
HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices";
|
|
||||||
HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently";
|
|
||||||
HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved";
|
|
||||||
HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther";
|
|
||||||
HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified";
|
|
||||||
HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy";
|
|
||||||
HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy";
|
|
||||||
HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect";
|
|
||||||
HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect";
|
|
||||||
HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest";
|
|
||||||
HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized";
|
|
||||||
HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired";
|
|
||||||
HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden";
|
|
||||||
HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound";
|
|
||||||
HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed";
|
|
||||||
HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable";
|
|
||||||
HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired";
|
|
||||||
HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout";
|
|
||||||
HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict";
|
|
||||||
HttpCodes[HttpCodes["Gone"] = 410] = "Gone";
|
|
||||||
HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests";
|
|
||||||
HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError";
|
|
||||||
HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented";
|
|
||||||
HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway";
|
|
||||||
HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable";
|
|
||||||
HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout";
|
|
||||||
})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {}));
|
|
||||||
var Headers;
|
|
||||||
(function (Headers) {
|
|
||||||
Headers["Accept"] = "accept";
|
|
||||||
Headers["ContentType"] = "content-type";
|
|
||||||
})(Headers = exports.Headers || (exports.Headers = {}));
|
|
||||||
var MediaTypes;
|
|
||||||
(function (MediaTypes) {
|
|
||||||
MediaTypes["ApplicationJson"] = "application/json";
|
|
||||||
})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {}));
|
|
||||||
/**
|
|
||||||
* Returns the proxy URL, depending upon the supplied url and proxy environment variables.
|
|
||||||
* @param serverUrl The server URL where the request will be sent. For example, https://api.github.com
|
|
||||||
*/
|
|
||||||
function getProxyUrl(serverUrl) {
|
|
||||||
let proxyUrl = pm.getProxyUrl(url.parse(serverUrl));
|
|
||||||
return proxyUrl ? proxyUrl.href : '';
|
|
||||||
}
|
|
||||||
exports.getProxyUrl = getProxyUrl;
|
|
||||||
const HttpRedirectCodes = [
|
|
||||||
HttpCodes.MovedPermanently,
|
|
||||||
HttpCodes.ResourceMoved,
|
|
||||||
HttpCodes.SeeOther,
|
|
||||||
HttpCodes.TemporaryRedirect,
|
|
||||||
HttpCodes.PermanentRedirect
|
|
||||||
];
|
|
||||||
const HttpResponseRetryCodes = [
|
|
||||||
HttpCodes.BadGateway,
|
|
||||||
HttpCodes.ServiceUnavailable,
|
|
||||||
HttpCodes.GatewayTimeout
|
|
||||||
];
|
|
||||||
const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];
|
|
||||||
const ExponentialBackoffCeiling = 10;
|
|
||||||
const ExponentialBackoffTimeSlice = 5;
|
|
||||||
class HttpClientResponse {
|
|
||||||
constructor(message) {
|
|
||||||
this.message = message;
|
|
||||||
}
|
|
||||||
readBody() {
|
|
||||||
return new Promise(async (resolve, reject) => {
|
|
||||||
let output = Buffer.alloc(0);
|
|
||||||
this.message.on('data', (chunk) => {
|
|
||||||
output = Buffer.concat([output, chunk]);
|
|
||||||
});
|
|
||||||
this.message.on('end', () => {
|
|
||||||
resolve(output.toString());
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.HttpClientResponse = HttpClientResponse;
|
|
||||||
function isHttps(requestUrl) {
|
|
||||||
let parsedUrl = url.parse(requestUrl);
|
|
||||||
return parsedUrl.protocol === 'https:';
|
|
||||||
}
|
|
||||||
exports.isHttps = isHttps;
|
|
||||||
class HttpClient {
|
|
||||||
constructor(userAgent, handlers, requestOptions) {
|
|
||||||
this._ignoreSslError = false;
|
|
||||||
this._allowRedirects = true;
|
|
||||||
this._allowRedirectDowngrade = false;
|
|
||||||
this._maxRedirects = 50;
|
|
||||||
this._allowRetries = false;
|
|
||||||
this._maxRetries = 1;
|
|
||||||
this._keepAlive = false;
|
|
||||||
this._disposed = false;
|
|
||||||
this.userAgent = userAgent;
|
|
||||||
this.handlers = handlers || [];
|
|
||||||
this.requestOptions = requestOptions;
|
|
||||||
if (requestOptions) {
|
|
||||||
if (requestOptions.ignoreSslError != null) {
|
|
||||||
this._ignoreSslError = requestOptions.ignoreSslError;
|
|
||||||
}
|
|
||||||
this._socketTimeout = requestOptions.socketTimeout;
|
|
||||||
if (requestOptions.allowRedirects != null) {
|
|
||||||
this._allowRedirects = requestOptions.allowRedirects;
|
|
||||||
}
|
|
||||||
if (requestOptions.allowRedirectDowngrade != null) {
|
|
||||||
this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;
|
|
||||||
}
|
|
||||||
if (requestOptions.maxRedirects != null) {
|
|
||||||
this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);
|
|
||||||
}
|
|
||||||
if (requestOptions.keepAlive != null) {
|
|
||||||
this._keepAlive = requestOptions.keepAlive;
|
|
||||||
}
|
|
||||||
if (requestOptions.allowRetries != null) {
|
|
||||||
this._allowRetries = requestOptions.allowRetries;
|
|
||||||
}
|
|
||||||
if (requestOptions.maxRetries != null) {
|
|
||||||
this._maxRetries = requestOptions.maxRetries;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
options(requestUrl, additionalHeaders) {
|
|
||||||
return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});
|
|
||||||
}
|
|
||||||
get(requestUrl, additionalHeaders) {
|
|
||||||
return this.request('GET', requestUrl, null, additionalHeaders || {});
|
|
||||||
}
|
|
||||||
del(requestUrl, additionalHeaders) {
|
|
||||||
return this.request('DELETE', requestUrl, null, additionalHeaders || {});
|
|
||||||
}
|
|
||||||
post(requestUrl, data, additionalHeaders) {
|
|
||||||
return this.request('POST', requestUrl, data, additionalHeaders || {});
|
|
||||||
}
|
|
||||||
patch(requestUrl, data, additionalHeaders) {
|
|
||||||
return this.request('PATCH', requestUrl, data, additionalHeaders || {});
|
|
||||||
}
|
|
||||||
put(requestUrl, data, additionalHeaders) {
|
|
||||||
return this.request('PUT', requestUrl, data, additionalHeaders || {});
|
|
||||||
}
|
|
||||||
head(requestUrl, additionalHeaders) {
|
|
||||||
return this.request('HEAD', requestUrl, null, additionalHeaders || {});
|
|
||||||
}
|
|
||||||
sendStream(verb, requestUrl, stream, additionalHeaders) {
|
|
||||||
return this.request(verb, requestUrl, stream, additionalHeaders);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Gets a typed object from an endpoint
|
|
||||||
* Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise
|
|
||||||
*/
|
|
||||||
async getJson(requestUrl, additionalHeaders = {}) {
|
|
||||||
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
|
|
||||||
let res = await this.get(requestUrl, additionalHeaders);
|
|
||||||
return this._processResponse(res, this.requestOptions);
|
|
||||||
}
|
|
||||||
async postJson(requestUrl, obj, additionalHeaders = {}) {
|
|
||||||
let data = JSON.stringify(obj, null, 2);
|
|
||||||
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
|
|
||||||
additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
|
|
||||||
let res = await this.post(requestUrl, data, additionalHeaders);
|
|
||||||
return this._processResponse(res, this.requestOptions);
|
|
||||||
}
|
|
||||||
async putJson(requestUrl, obj, additionalHeaders = {}) {
|
|
||||||
let data = JSON.stringify(obj, null, 2);
|
|
||||||
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
|
|
||||||
additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
|
|
||||||
let res = await this.put(requestUrl, data, additionalHeaders);
|
|
||||||
return this._processResponse(res, this.requestOptions);
|
|
||||||
}
|
|
||||||
async patchJson(requestUrl, obj, additionalHeaders = {}) {
|
|
||||||
let data = JSON.stringify(obj, null, 2);
|
|
||||||
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
|
|
||||||
additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
|
|
||||||
let res = await this.patch(requestUrl, data, additionalHeaders);
|
|
||||||
return this._processResponse(res, this.requestOptions);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Makes a raw http request.
|
|
||||||
* All other methods such as get, post, patch, and request ultimately call this.
|
|
||||||
* Prefer get, del, post and patch
|
|
||||||
*/
|
|
||||||
async request(verb, requestUrl, data, headers) {
|
|
||||||
if (this._disposed) {
|
|
||||||
throw new Error('Client has already been disposed.');
|
|
||||||
}
|
|
||||||
let parsedUrl = url.parse(requestUrl);
|
|
||||||
let info = this._prepareRequest(verb, parsedUrl, headers);
|
|
||||||
// Only perform retries on reads since writes may not be idempotent.
|
|
||||||
let maxTries = this._allowRetries && RetryableHttpVerbs.indexOf(verb) != -1
|
|
||||||
? this._maxRetries + 1
|
|
||||||
: 1;
|
|
||||||
let numTries = 0;
|
|
||||||
let response;
|
|
||||||
while (numTries < maxTries) {
|
|
||||||
response = await this.requestRaw(info, data);
|
|
||||||
// Check if it's an authentication challenge
|
|
||||||
if (response &&
|
|
||||||
response.message &&
|
|
||||||
response.message.statusCode === HttpCodes.Unauthorized) {
|
|
||||||
let authenticationHandler;
|
|
||||||
for (let i = 0; i < this.handlers.length; i++) {
|
|
||||||
if (this.handlers[i].canHandleAuthentication(response)) {
|
|
||||||
authenticationHandler = this.handlers[i];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (authenticationHandler) {
|
|
||||||
return authenticationHandler.handleAuthentication(this, info, data);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// We have received an unauthorized response but have no handlers to handle it.
|
|
||||||
// Let the response return to the caller.
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let redirectsRemaining = this._maxRedirects;
|
|
||||||
while (HttpRedirectCodes.indexOf(response.message.statusCode) != -1 &&
|
|
||||||
this._allowRedirects &&
|
|
||||||
redirectsRemaining > 0) {
|
|
||||||
const redirectUrl = response.message.headers['location'];
|
|
||||||
if (!redirectUrl) {
|
|
||||||
// if there's no location to redirect to, we won't
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
let parsedRedirectUrl = url.parse(redirectUrl);
|
|
||||||
if (parsedUrl.protocol == 'https:' &&
|
|
||||||
parsedUrl.protocol != parsedRedirectUrl.protocol &&
|
|
||||||
!this._allowRedirectDowngrade) {
|
|
||||||
throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');
|
|
||||||
}
|
|
||||||
// we need to finish reading the response before reassigning response
|
|
||||||
// which will leak the open socket.
|
|
||||||
await response.readBody();
|
|
||||||
// strip authorization header if redirected to a different hostname
|
|
||||||
if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {
|
|
||||||
for (let header in headers) {
|
|
||||||
// header names are case insensitive
|
|
||||||
if (header.toLowerCase() === 'authorization') {
|
|
||||||
delete headers[header];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// let's make the request with the new redirectUrl
|
|
||||||
info = this._prepareRequest(verb, parsedRedirectUrl, headers);
|
|
||||||
response = await this.requestRaw(info, data);
|
|
||||||
redirectsRemaining--;
|
|
||||||
}
|
|
||||||
if (HttpResponseRetryCodes.indexOf(response.message.statusCode) == -1) {
|
|
||||||
// If not a retry code, return immediately instead of retrying
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
numTries += 1;
|
|
||||||
if (numTries < maxTries) {
|
|
||||||
await response.readBody();
|
|
||||||
await this._performExponentialBackoff(numTries);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Needs to be called if keepAlive is set to true in request options.
|
|
||||||
*/
|
|
||||||
dispose() {
|
|
||||||
if (this._agent) {
|
|
||||||
this._agent.destroy();
|
|
||||||
}
|
|
||||||
this._disposed = true;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Raw request.
|
|
||||||
* @param info
|
|
||||||
* @param data
|
|
||||||
*/
|
|
||||||
requestRaw(info, data) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
let callbackForResult = function (err, res) {
|
|
||||||
if (err) {
|
|
||||||
reject(err);
|
|
||||||
}
|
|
||||||
resolve(res);
|
|
||||||
};
|
|
||||||
this.requestRawWithCallback(info, data, callbackForResult);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Raw request with callback.
|
|
||||||
* @param info
|
|
||||||
* @param data
|
|
||||||
* @param onResult
|
|
||||||
*/
|
|
||||||
requestRawWithCallback(info, data, onResult) {
|
|
||||||
let socket;
|
|
||||||
if (typeof data === 'string') {
|
|
||||||
info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');
|
|
||||||
}
|
|
||||||
let callbackCalled = false;
|
|
||||||
let handleResult = (err, res) => {
|
|
||||||
if (!callbackCalled) {
|
|
||||||
callbackCalled = true;
|
|
||||||
onResult(err, res);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
let req = info.httpModule.request(info.options, (msg) => {
|
|
||||||
let res = new HttpClientResponse(msg);
|
|
||||||
handleResult(null, res);
|
|
||||||
});
|
|
||||||
req.on('socket', sock => {
|
|
||||||
socket = sock;
|
|
||||||
});
|
|
||||||
// If we ever get disconnected, we want the socket to timeout eventually
|
|
||||||
req.setTimeout(this._socketTimeout || 3 * 60000, () => {
|
|
||||||
if (socket) {
|
|
||||||
socket.end();
|
|
||||||
}
|
|
||||||
handleResult(new Error('Request timeout: ' + info.options.path), null);
|
|
||||||
});
|
|
||||||
req.on('error', function (err) {
|
|
||||||
// err has statusCode property
|
|
||||||
// res should have headers
|
|
||||||
handleResult(err, null);
|
|
||||||
});
|
|
||||||
if (data && typeof data === 'string') {
|
|
||||||
req.write(data, 'utf8');
|
|
||||||
}
|
|
||||||
if (data && typeof data !== 'string') {
|
|
||||||
data.on('close', function () {
|
|
||||||
req.end();
|
|
||||||
});
|
|
||||||
data.pipe(req);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
req.end();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Gets an http agent. This function is useful when you need an http agent that handles
|
|
||||||
* routing through a proxy server - depending upon the url and proxy environment variables.
|
|
||||||
* @param serverUrl The server URL where the request will be sent. For example, https://api.github.com
|
|
||||||
*/
|
|
||||||
getAgent(serverUrl) {
|
|
||||||
let parsedUrl = url.parse(serverUrl);
|
|
||||||
return this._getAgent(parsedUrl);
|
|
||||||
}
|
|
||||||
_prepareRequest(method, requestUrl, headers) {
|
|
||||||
const info = {};
|
|
||||||
info.parsedUrl = requestUrl;
|
|
||||||
const usingSsl = info.parsedUrl.protocol === 'https:';
|
|
||||||
info.httpModule = usingSsl ? https : http;
|
|
||||||
const defaultPort = usingSsl ? 443 : 80;
|
|
||||||
info.options = {};
|
|
||||||
info.options.host = info.parsedUrl.hostname;
|
|
||||||
info.options.port = info.parsedUrl.port
|
|
||||||
? parseInt(info.parsedUrl.port)
|
|
||||||
: defaultPort;
|
|
||||||
info.options.path =
|
|
||||||
(info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');
|
|
||||||
info.options.method = method;
|
|
||||||
info.options.headers = this._mergeHeaders(headers);
|
|
||||||
if (this.userAgent != null) {
|
|
||||||
info.options.headers['user-agent'] = this.userAgent;
|
|
||||||
}
|
|
||||||
info.options.agent = this._getAgent(info.parsedUrl);
|
|
||||||
// gives handlers an opportunity to participate
|
|
||||||
if (this.handlers) {
|
|
||||||
this.handlers.forEach(handler => {
|
|
||||||
handler.prepareRequest(info.options);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return info;
|
|
||||||
}
|
|
||||||
_mergeHeaders(headers) {
|
|
||||||
const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});
|
|
||||||
if (this.requestOptions && this.requestOptions.headers) {
|
|
||||||
return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers));
|
|
||||||
}
|
|
||||||
return lowercaseKeys(headers || {});
|
|
||||||
}
|
|
||||||
_getExistingOrDefaultHeader(additionalHeaders, header, _default) {
|
|
||||||
const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});
|
|
||||||
let clientHeader;
|
|
||||||
if (this.requestOptions && this.requestOptions.headers) {
|
|
||||||
clientHeader = lowercaseKeys(this.requestOptions.headers)[header];
|
|
||||||
}
|
|
||||||
return additionalHeaders[header] || clientHeader || _default;
|
|
||||||
}
|
|
||||||
_getAgent(parsedUrl) {
|
|
||||||
let agent;
|
|
||||||
let proxyUrl = pm.getProxyUrl(parsedUrl);
|
|
||||||
let useProxy = proxyUrl && proxyUrl.hostname;
|
|
||||||
if (this._keepAlive && useProxy) {
|
|
||||||
agent = this._proxyAgent;
|
|
||||||
}
|
|
||||||
if (this._keepAlive && !useProxy) {
|
|
||||||
agent = this._agent;
|
|
||||||
}
|
|
||||||
// if agent is already assigned use that agent.
|
|
||||||
if (!!agent) {
|
|
||||||
return agent;
|
|
||||||
}
|
|
||||||
const usingSsl = parsedUrl.protocol === 'https:';
|
|
||||||
let maxSockets = 100;
|
|
||||||
if (!!this.requestOptions) {
|
|
||||||
maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;
|
|
||||||
}
|
|
||||||
if (useProxy) {
|
|
||||||
// If using proxy, need tunnel
|
|
||||||
if (!tunnel) {
|
|
||||||
tunnel = require('tunnel');
|
|
||||||
}
|
|
||||||
const agentOptions = {
|
|
||||||
maxSockets: maxSockets,
|
|
||||||
keepAlive: this._keepAlive,
|
|
||||||
proxy: {
|
|
||||||
proxyAuth: proxyUrl.auth,
|
|
||||||
host: proxyUrl.hostname,
|
|
||||||
port: proxyUrl.port
|
|
||||||
}
|
|
||||||
};
|
|
||||||
let tunnelAgent;
|
|
||||||
const overHttps = proxyUrl.protocol === 'https:';
|
|
||||||
if (usingSsl) {
|
|
||||||
tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;
|
|
||||||
}
|
|
||||||
agent = tunnelAgent(agentOptions);
|
|
||||||
this._proxyAgent = agent;
|
|
||||||
}
|
|
||||||
// if reusing agent across request and tunneling agent isn't assigned create a new agent
|
|
||||||
if (this._keepAlive && !agent) {
|
|
||||||
const options = { keepAlive: this._keepAlive, maxSockets: maxSockets };
|
|
||||||
agent = usingSsl ? new https.Agent(options) : new http.Agent(options);
|
|
||||||
this._agent = agent;
|
|
||||||
}
|
|
||||||
// if not using private agent and tunnel agent isn't setup then use global agent
|
|
||||||
if (!agent) {
|
|
||||||
agent = usingSsl ? https.globalAgent : http.globalAgent;
|
|
||||||
}
|
|
||||||
if (usingSsl && this._ignoreSslError) {
|
|
||||||
// we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
|
|
||||||
// http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
|
|
||||||
// we have to cast it to any and change it directly
|
|
||||||
agent.options = Object.assign(agent.options || {}, {
|
|
||||||
rejectUnauthorized: false
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return agent;
|
|
||||||
}
|
|
||||||
_performExponentialBackoff(retryNumber) {
|
|
||||||
retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);
|
|
||||||
const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);
|
|
||||||
return new Promise(resolve => setTimeout(() => resolve(), ms));
|
|
||||||
}
|
|
||||||
static dateTimeDeserializer(key, value) {
|
|
||||||
if (typeof value === 'string') {
|
|
||||||
let a = new Date(value);
|
|
||||||
if (!isNaN(a.valueOf())) {
|
|
||||||
return a;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
async _processResponse(res, options) {
|
|
||||||
return new Promise(async (resolve, reject) => {
|
|
||||||
const statusCode = res.message.statusCode;
|
|
||||||
const response = {
|
|
||||||
statusCode: statusCode,
|
|
||||||
result: null,
|
|
||||||
headers: {}
|
|
||||||
};
|
|
||||||
// not found leads to null obj returned
|
|
||||||
if (statusCode == HttpCodes.NotFound) {
|
|
||||||
resolve(response);
|
|
||||||
}
|
|
||||||
let obj;
|
|
||||||
let contents;
|
|
||||||
// get the result from the body
|
|
||||||
try {
|
|
||||||
contents = await res.readBody();
|
|
||||||
if (contents && contents.length > 0) {
|
|
||||||
if (options && options.deserializeDates) {
|
|
||||||
obj = JSON.parse(contents, HttpClient.dateTimeDeserializer);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
obj = JSON.parse(contents);
|
|
||||||
}
|
|
||||||
response.result = obj;
|
|
||||||
}
|
|
||||||
response.headers = res.message.headers;
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
// Invalid resource (contents not json); leaving result obj null
|
|
||||||
}
|
|
||||||
// note that 3xx redirects are handled by the http layer.
|
|
||||||
if (statusCode > 299) {
|
|
||||||
let msg;
|
|
||||||
// if exception/error in body, attempt to get better error
|
|
||||||
if (obj && obj.message) {
|
|
||||||
msg = obj.message;
|
|
||||||
}
|
|
||||||
else if (contents && contents.length > 0) {
|
|
||||||
// it may be the case that the exception is in the body message as string
|
|
||||||
msg = contents;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
msg = 'Failed request: (' + statusCode + ')';
|
|
||||||
}
|
|
||||||
let err = new Error(msg);
|
|
||||||
// attach statusCode and body obj (if available) to the error object
|
|
||||||
err['statusCode'] = statusCode;
|
|
||||||
if (response.result) {
|
|
||||||
err['result'] = response.result;
|
|
||||||
}
|
|
||||||
reject(err);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
resolve(response);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.HttpClient = HttpClient;
|
|
50
node_modules/@actions/http-client/interfaces.d.ts
generated
vendored
50
node_modules/@actions/http-client/interfaces.d.ts
generated
vendored
@ -1,50 +0,0 @@
|
|||||||
/// <reference types="node" />
|
|
||||||
import http = require('http');
|
|
||||||
import url = require('url');
|
|
||||||
export interface IHeaders {
|
|
||||||
[key: string]: any;
|
|
||||||
}
|
|
||||||
export interface IHttpClient {
|
|
||||||
options(requestUrl: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
|
|
||||||
get(requestUrl: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
|
|
||||||
del(requestUrl: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
|
|
||||||
post(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
|
|
||||||
patch(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
|
|
||||||
put(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
|
|
||||||
sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
|
|
||||||
request(verb: string, requestUrl: string, data: string | NodeJS.ReadableStream, headers: IHeaders): Promise<IHttpClientResponse>;
|
|
||||||
requestRaw(info: IRequestInfo, data: string | NodeJS.ReadableStream): Promise<IHttpClientResponse>;
|
|
||||||
requestRawWithCallback(info: IRequestInfo, data: string | NodeJS.ReadableStream, onResult: (err: any, res: IHttpClientResponse) => void): void;
|
|
||||||
}
|
|
||||||
export interface IRequestHandler {
|
|
||||||
prepareRequest(options: http.RequestOptions): void;
|
|
||||||
canHandleAuthentication(response: IHttpClientResponse): boolean;
|
|
||||||
handleAuthentication(httpClient: IHttpClient, requestInfo: IRequestInfo, objs: any): Promise<IHttpClientResponse>;
|
|
||||||
}
|
|
||||||
export interface IHttpClientResponse {
|
|
||||||
message: http.IncomingMessage;
|
|
||||||
readBody(): Promise<string>;
|
|
||||||
}
|
|
||||||
export interface IRequestInfo {
|
|
||||||
options: http.RequestOptions;
|
|
||||||
parsedUrl: url.Url;
|
|
||||||
httpModule: any;
|
|
||||||
}
|
|
||||||
export interface IRequestOptions {
|
|
||||||
headers?: IHeaders;
|
|
||||||
socketTimeout?: number;
|
|
||||||
ignoreSslError?: boolean;
|
|
||||||
allowRedirects?: boolean;
|
|
||||||
allowRedirectDowngrade?: boolean;
|
|
||||||
maxRedirects?: number;
|
|
||||||
maxSockets?: number;
|
|
||||||
keepAlive?: boolean;
|
|
||||||
deserializeDates?: boolean;
|
|
||||||
allowRetries?: boolean;
|
|
||||||
maxRetries?: number;
|
|
||||||
}
|
|
||||||
export interface ITypedResponse<T> {
|
|
||||||
statusCode: number;
|
|
||||||
result: T | null;
|
|
||||||
headers: Object;
|
|
||||||
}
|
|
2
node_modules/@actions/http-client/interfaces.js
generated
vendored
2
node_modules/@actions/http-client/interfaces.js
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
70
node_modules/@actions/http-client/package.json
generated
vendored
70
node_modules/@actions/http-client/package.json
generated
vendored
@ -1,70 +0,0 @@
|
|||||||
{
|
|
||||||
"_args": [
|
|
||||||
[
|
|
||||||
"@actions/http-client@1.0.8",
|
|
||||||
"/home/aszczucz/scm/aszc/change-string-case-action"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"_from": "@actions/http-client@1.0.8",
|
|
||||||
"_id": "@actions/http-client@1.0.8",
|
|
||||||
"_inBundle": false,
|
|
||||||
"_integrity": "sha512-G4JjJ6f9Hb3Zvejj+ewLLKLf99ZC+9v+yCxoYf9vSyH+WkzPLB2LuUtRMGNkooMqdugGBFStIKXOuvH1W+EctA==",
|
|
||||||
"_location": "/@actions/http-client",
|
|
||||||
"_phantomChildren": {},
|
|
||||||
"_requested": {
|
|
||||||
"type": "version",
|
|
||||||
"registry": true,
|
|
||||||
"raw": "@actions/http-client@1.0.8",
|
|
||||||
"name": "@actions/http-client",
|
|
||||||
"escapedName": "@actions%2fhttp-client",
|
|
||||||
"scope": "@actions",
|
|
||||||
"rawSpec": "1.0.8",
|
|
||||||
"saveSpec": null,
|
|
||||||
"fetchSpec": "1.0.8"
|
|
||||||
},
|
|
||||||
"_requiredBy": [
|
|
||||||
"/@actions/github"
|
|
||||||
],
|
|
||||||
"_resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.8.tgz",
|
|
||||||
"_spec": "1.0.8",
|
|
||||||
"_where": "/home/aszczucz/scm/aszc/change-string-case-action",
|
|
||||||
"author": {
|
|
||||||
"name": "GitHub, Inc."
|
|
||||||
},
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/actions/http-client/issues"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"tunnel": "0.0.6"
|
|
||||||
},
|
|
||||||
"description": "Actions Http Client",
|
|
||||||
"devDependencies": {
|
|
||||||
"@types/jest": "^25.1.4",
|
|
||||||
"@types/node": "^12.12.31",
|
|
||||||
"jest": "^25.1.0",
|
|
||||||
"prettier": "^2.0.4",
|
|
||||||
"proxy": "^1.0.1",
|
|
||||||
"ts-jest": "^25.2.1",
|
|
||||||
"typescript": "^3.8.3"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/actions/http-client#readme",
|
|
||||||
"keywords": [
|
|
||||||
"Actions",
|
|
||||||
"Http"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"main": "index.js",
|
|
||||||
"name": "@actions/http-client",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/actions/http-client.git"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"audit-check": "npm audit --audit-level=moderate",
|
|
||||||
"build": "rm -Rf ./_out && tsc && cp package*.json ./_out && cp *.md ./_out && cp LICENSE ./_out && cp actions.png ./_out",
|
|
||||||
"format": "prettier --write *.ts && prettier --write **/*.ts",
|
|
||||||
"format-check": "prettier --check *.ts && prettier --check **/*.ts",
|
|
||||||
"test": "jest"
|
|
||||||
},
|
|
||||||
"version": "1.0.8"
|
|
||||||
}
|
|
4
node_modules/@actions/http-client/proxy.d.ts
generated
vendored
4
node_modules/@actions/http-client/proxy.d.ts
generated
vendored
@ -1,4 +0,0 @@
|
|||||||
/// <reference types="node" />
|
|
||||||
import * as url from 'url';
|
|
||||||
export declare function getProxyUrl(reqUrl: url.Url): url.Url | undefined;
|
|
||||||
export declare function checkBypass(reqUrl: url.Url): boolean;
|
|
58
node_modules/@actions/http-client/proxy.js
generated
vendored
58
node_modules/@actions/http-client/proxy.js
generated
vendored
@ -1,58 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const url = require("url");
|
|
||||||
function getProxyUrl(reqUrl) {
|
|
||||||
let usingSsl = reqUrl.protocol === 'https:';
|
|
||||||
let proxyUrl;
|
|
||||||
if (checkBypass(reqUrl)) {
|
|
||||||
return proxyUrl;
|
|
||||||
}
|
|
||||||
let proxyVar;
|
|
||||||
if (usingSsl) {
|
|
||||||
proxyVar = process.env['https_proxy'] || process.env['HTTPS_PROXY'];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
proxyVar = process.env['http_proxy'] || process.env['HTTP_PROXY'];
|
|
||||||
}
|
|
||||||
if (proxyVar) {
|
|
||||||
proxyUrl = url.parse(proxyVar);
|
|
||||||
}
|
|
||||||
return proxyUrl;
|
|
||||||
}
|
|
||||||
exports.getProxyUrl = getProxyUrl;
|
|
||||||
function checkBypass(reqUrl) {
|
|
||||||
if (!reqUrl.hostname) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
let noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';
|
|
||||||
if (!noProxy) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// Determine the request port
|
|
||||||
let reqPort;
|
|
||||||
if (reqUrl.port) {
|
|
||||||
reqPort = Number(reqUrl.port);
|
|
||||||
}
|
|
||||||
else if (reqUrl.protocol === 'http:') {
|
|
||||||
reqPort = 80;
|
|
||||||
}
|
|
||||||
else if (reqUrl.protocol === 'https:') {
|
|
||||||
reqPort = 443;
|
|
||||||
}
|
|
||||||
// Format the request hostname and hostname with port
|
|
||||||
let upperReqHosts = [reqUrl.hostname.toUpperCase()];
|
|
||||||
if (typeof reqPort === 'number') {
|
|
||||||
upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);
|
|
||||||
}
|
|
||||||
// Compare request host against noproxy
|
|
||||||
for (let upperNoProxyItem of noProxy
|
|
||||||
.split(',')
|
|
||||||
.map(x => x.trim().toUpperCase())
|
|
||||||
.filter(x => x)) {
|
|
||||||
if (upperReqHosts.some(x => x === upperNoProxyItem)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
exports.checkBypass = checkBypass;
|
|
21
node_modules/@octokit/auth-token/LICENSE
generated
vendored
21
node_modules/@octokit/auth-token/LICENSE
generated
vendored
@ -1,21 +0,0 @@
|
|||||||
The MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2019 Octokit contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
270
node_modules/@octokit/auth-token/README.md
generated
vendored
270
node_modules/@octokit/auth-token/README.md
generated
vendored
@ -1,270 +0,0 @@
|
|||||||
# auth-token.js
|
|
||||||
|
|
||||||
> GitHub API token authentication for browsers and Node.js
|
|
||||||
|
|
||||||
[![@latest](https://img.shields.io/npm/v/@octokit/auth-token.svg)](https://www.npmjs.com/package/@octokit/auth-token)
|
|
||||||
[![Build Status](https://github.com/octokit/auth-token.js/workflows/Test/badge.svg)](https://github.com/octokit/auth-token.js/actions?query=workflow%3ATest)
|
|
||||||
|
|
||||||
`@octokit/auth-token` is the simplest of [GitHub’s authentication strategies](https://github.com/octokit/auth.js).
|
|
||||||
|
|
||||||
It is useful if you want to support multiple authentication strategies, as it’s API is compatible with its sibling packages for [basic](https://github.com/octokit/auth-basic.js), [GitHub App](https://github.com/octokit/auth-app.js) and [OAuth app](https://github.com/octokit/auth.js) authentication.
|
|
||||||
|
|
||||||
<!-- toc -->
|
|
||||||
|
|
||||||
- [Usage](#usage)
|
|
||||||
- [`createTokenAuth(token) options`](#createtokenauthtoken-options)
|
|
||||||
- [`auth()`](#auth)
|
|
||||||
- [Authentication object](#authentication-object)
|
|
||||||
- [`auth.hook(request, route, options)` or `auth.hook(request, options)`](#authhookrequest-route-options-or-authhookrequest-options)
|
|
||||||
- [Find more information](#find-more-information)
|
|
||||||
- [Find out what scopes are enabled for oauth tokens](#find-out-what-scopes-are-enabled-for-oauth-tokens)
|
|
||||||
- [Find out if token is a personal access token or if it belongs to an OAuth app](#find-out-if-token-is-a-personal-access-token-or-if-it-belongs-to-an-oauth-app)
|
|
||||||
- [Find out what permissions are enabled for a repository](#find-out-what-permissions-are-enabled-for-a-repository)
|
|
||||||
- [Use token for git operations](#use-token-for-git-operations)
|
|
||||||
- [License](#license)
|
|
||||||
|
|
||||||
<!-- tocstop -->
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<tbody valign=top align=left>
|
|
||||||
<tr><th>
|
|
||||||
Browsers
|
|
||||||
</th><td width=100%>
|
|
||||||
|
|
||||||
Load `@octokit/auth-token` directly from [cdn.pika.dev](https://cdn.pika.dev)
|
|
||||||
|
|
||||||
```html
|
|
||||||
<script type="module">
|
|
||||||
import { createTokenAuth } from "https://cdn.pika.dev/@octokit/auth-token";
|
|
||||||
</script>
|
|
||||||
```
|
|
||||||
|
|
||||||
</td></tr>
|
|
||||||
<tr><th>
|
|
||||||
Node
|
|
||||||
</th><td>
|
|
||||||
|
|
||||||
Install with <code>npm install @octokit/auth-token</code>
|
|
||||||
|
|
||||||
```js
|
|
||||||
const { createTokenAuth } = require("@octokit/auth-token");
|
|
||||||
// or: import { createTokenAuth } from "@octokit/auth-token";
|
|
||||||
```
|
|
||||||
|
|
||||||
</td></tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
```js
|
|
||||||
const auth = createTokenAuth("1234567890abcdef1234567890abcdef12345678");
|
|
||||||
const authentication = await auth();
|
|
||||||
// {
|
|
||||||
// type: 'token',
|
|
||||||
// token: '1234567890abcdef1234567890abcdef12345678',
|
|
||||||
// tokenType: 'oauth'
|
|
||||||
```
|
|
||||||
|
|
||||||
## `createTokenAuth(token) options`
|
|
||||||
|
|
||||||
The `createTokenAuth` method accepts a single argument of type string, which is the token. The passed token can be one of the following:
|
|
||||||
|
|
||||||
- [Personal access token](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line)
|
|
||||||
- [OAuth access token](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/)
|
|
||||||
- Installation access token ([GitHub App Installation](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation))
|
|
||||||
- [GITHUB_TOKEN provided to GitHub Actions](https://developer.github.com/actions/creating-github-actions/accessing-the-runtime-environment/#environment-variables)
|
|
||||||
|
|
||||||
Examples
|
|
||||||
|
|
||||||
```js
|
|
||||||
// Personal access token or OAuth access token
|
|
||||||
createTokenAuth("1234567890abcdef1234567890abcdef12345678");
|
|
||||||
|
|
||||||
// Installation access token or GitHub Action token
|
|
||||||
createTokenAuth("v1.d3d433526f780fbcc3129004e2731b3904ad0b86");
|
|
||||||
```
|
|
||||||
|
|
||||||
## `auth()`
|
|
||||||
|
|
||||||
The `auth()` method has no options. It returns a promise which resolves with the the authentication object.
|
|
||||||
|
|
||||||
## Authentication object
|
|
||||||
|
|
||||||
<table width="100%">
|
|
||||||
<thead align=left>
|
|
||||||
<tr>
|
|
||||||
<th width=150>
|
|
||||||
name
|
|
||||||
</th>
|
|
||||||
<th width=70>
|
|
||||||
type
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
description
|
|
||||||
</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody align=left valign=top>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>type</code>
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
<code>string</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
<code>"token"</code>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>token</code>
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
<code>string</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
The provided token.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>tokenType</code>
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
<code>string</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
Can be either <code>"oauth"</code> for personal access tokens and OAuth tokens, or <code>"installation"</code> for installation access tokens (includes <code>GITHUB_TOKEN</code> provided to GitHub Actions)
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
## `auth.hook(request, route, options)` or `auth.hook(request, options)`
|
|
||||||
|
|
||||||
`auth.hook()` hooks directly into the request life cycle. It authenticates the request using the provided token.
|
|
||||||
|
|
||||||
The `request` option is an instance of [`@octokit/request`](https://github.com/octokit/request.js#readme). The `route`/`options` parameters are the same as for the [`request()` method](https://github.com/octokit/request.js#request).
|
|
||||||
|
|
||||||
`auth.hook()` can be called directly to send an authenticated request
|
|
||||||
|
|
||||||
```js
|
|
||||||
const { data: authorizations } = await auth.hook(
|
|
||||||
request,
|
|
||||||
"GET /authorizations"
|
|
||||||
);
|
|
||||||
```
|
|
||||||
|
|
||||||
Or it can be passed as option to [`request()`](https://github.com/octokit/request.js#request).
|
|
||||||
|
|
||||||
```js
|
|
||||||
const requestWithAuth = request.defaults({
|
|
||||||
request: {
|
|
||||||
hook: auth.hook,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const { data: authorizations } = await requestWithAuth("GET /authorizations");
|
|
||||||
```
|
|
||||||
|
|
||||||
## Find more information
|
|
||||||
|
|
||||||
`auth()` does not send any requests, it only transforms the provided token string into an authentication object.
|
|
||||||
|
|
||||||
Here is a list of things you can do to retrieve further information
|
|
||||||
|
|
||||||
### Find out what scopes are enabled for oauth tokens
|
|
||||||
|
|
||||||
Note that this does not work for installations. There is no way to retrieve permissions based on an installation access tokens.
|
|
||||||
|
|
||||||
```js
|
|
||||||
const TOKEN = "1234567890abcdef1234567890abcdef12345678";
|
|
||||||
|
|
||||||
const auth = createTokenAuth(TOKEN);
|
|
||||||
const authentication = await auth();
|
|
||||||
|
|
||||||
const response = await request("HEAD /", {
|
|
||||||
headers: authentication.headers,
|
|
||||||
});
|
|
||||||
const scopes = response.headers["x-oauth-scopes"].split(/,\s+/);
|
|
||||||
|
|
||||||
if (scopes.length) {
|
|
||||||
console.log(
|
|
||||||
`"${TOKEN}" has ${scopes.length} scopes enabled: ${scopes.join(", ")}`
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
console.log(`"${TOKEN}" has no scopes enabled`);
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Find out if token is a personal access token or if it belongs to an OAuth app
|
|
||||||
|
|
||||||
```js
|
|
||||||
const TOKEN = "1234567890abcdef1234567890abcdef12345678";
|
|
||||||
|
|
||||||
const auth = createTokenAuth(TOKEN);
|
|
||||||
const authentication = await auth();
|
|
||||||
|
|
||||||
const response = await request("HEAD /", {
|
|
||||||
headers: authentication.headers,
|
|
||||||
});
|
|
||||||
const clientId = response.headers["x-oauth-client-id"];
|
|
||||||
|
|
||||||
if (clientId) {
|
|
||||||
console.log(
|
|
||||||
`"${token}" is an OAuth token, its app’s client_id is ${clientId}.`
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
console.log(`"${token}" is a personal access token`);
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Find out what permissions are enabled for a repository
|
|
||||||
|
|
||||||
Note that the `permissions` key is not set when authenticated using an installation access token.
|
|
||||||
|
|
||||||
```js
|
|
||||||
const TOKEN = "1234567890abcdef1234567890abcdef12345678";
|
|
||||||
|
|
||||||
const auth = createTokenAuth(TOKEN);
|
|
||||||
const authentication = await auth();
|
|
||||||
|
|
||||||
const response = await request("GET /repos/:owner/:repo", {
|
|
||||||
owner: 'octocat',
|
|
||||||
repo: 'hello-world'
|
|
||||||
headers: authentication.headers
|
|
||||||
});
|
|
||||||
|
|
||||||
console.log(response.data.permissions)
|
|
||||||
// {
|
|
||||||
// admin: true,
|
|
||||||
// push: true,
|
|
||||||
// pull: true
|
|
||||||
// }
|
|
||||||
```
|
|
||||||
|
|
||||||
### Use token for git operations
|
|
||||||
|
|
||||||
Both OAuth and installation access tokens can be used for git operations. However, when using with an installation, [the token must be prefixed with `x-access-token`](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#http-based-git-access-by-an-installation).
|
|
||||||
|
|
||||||
This example is using the [`execa`](https://github.com/sindresorhus/execa) package to run a `git push` command.
|
|
||||||
|
|
||||||
```js
|
|
||||||
const TOKEN = "1234567890abcdef1234567890abcdef12345678";
|
|
||||||
|
|
||||||
const auth = createTokenAuth(TOKEN);
|
|
||||||
const { token, tokenType } = await auth();
|
|
||||||
const tokenWithPrefix =
|
|
||||||
tokenType === "installation" ? `x-access-token:${token}` : token;
|
|
||||||
|
|
||||||
const repositoryUrl = `https://${tokenWithPrefix}@github.com/octocat/hello-world.git`;
|
|
||||||
|
|
||||||
const { stdout } = await execa("git", ["push", repositoryUrl]);
|
|
||||||
console.log(stdout);
|
|
||||||
```
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
[MIT](LICENSE)
|
|
49
node_modules/@octokit/auth-token/dist-node/index.js
generated
vendored
49
node_modules/@octokit/auth-token/dist-node/index.js
generated
vendored
@ -1,49 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
Object.defineProperty(exports, '__esModule', { value: true });
|
|
||||||
|
|
||||||
async function auth(token) {
|
|
||||||
const tokenType = token.split(/\./).length === 3 ? "app" : /^v\d+\./.test(token) ? "installation" : "oauth";
|
|
||||||
return {
|
|
||||||
type: "token",
|
|
||||||
token: token,
|
|
||||||
tokenType
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prefix token for usage in the Authorization header
|
|
||||||
*
|
|
||||||
* @param token OAuth token or JSON Web Token
|
|
||||||
*/
|
|
||||||
function withAuthorizationPrefix(token) {
|
|
||||||
if (token.split(/\./).length === 3) {
|
|
||||||
return `bearer ${token}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
return `token ${token}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function hook(token, request, route, parameters) {
|
|
||||||
const endpoint = request.endpoint.merge(route, parameters);
|
|
||||||
endpoint.headers.authorization = withAuthorizationPrefix(token);
|
|
||||||
return request(endpoint);
|
|
||||||
}
|
|
||||||
|
|
||||||
const createTokenAuth = function createTokenAuth(token) {
|
|
||||||
if (!token) {
|
|
||||||
throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof token !== "string") {
|
|
||||||
throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");
|
|
||||||
}
|
|
||||||
|
|
||||||
token = token.replace(/^(token|bearer) +/i, "");
|
|
||||||
return Object.assign(auth.bind(null, token), {
|
|
||||||
hook: hook.bind(null, token)
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.createTokenAuth = createTokenAuth;
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
1
node_modules/@octokit/auth-token/dist-node/index.js.map
generated
vendored
1
node_modules/@octokit/auth-token/dist-node/index.js.map
generated
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"index.js","sources":["../dist-src/auth.js","../dist-src/with-authorization-prefix.js","../dist-src/hook.js","../dist-src/index.js"],"sourcesContent":["export async function auth(token) {\n const tokenType = token.split(/\\./).length === 3\n ? \"app\"\n : /^v\\d+\\./.test(token)\n ? \"installation\"\n : \"oauth\";\n return {\n type: \"token\",\n token: token,\n tokenType\n };\n}\n","/**\n * Prefix token for usage in the Authorization header\n *\n * @param token OAuth token or JSON Web Token\n */\nexport function withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n","import { withAuthorizationPrefix } from \"./with-authorization-prefix\";\nexport async function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(route, parameters);\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n","import { auth } from \"./auth\";\nimport { hook } from \"./hook\";\nexport const createTokenAuth = function createTokenAuth(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\"[@octokit/auth-token] Token passed to createTokenAuth is not a string\");\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\n"],"names":["auth","token","tokenType","split","length","test","type","withAuthorizationPrefix","hook","request","route","parameters","endpoint","merge","headers","authorization","createTokenAuth","Error","replace","Object","assign","bind"],"mappings":";;;;AAAO,eAAeA,IAAf,CAAoBC,KAApB,EAA2B;AAC9B,QAAMC,SAAS,GAAGD,KAAK,CAACE,KAAN,CAAY,IAAZ,EAAkBC,MAAlB,KAA6B,CAA7B,GACZ,KADY,GAEZ,UAAUC,IAAV,CAAeJ,KAAf,IACI,cADJ,GAEI,OAJV;AAKA,SAAO;AACHK,IAAAA,IAAI,EAAE,OADH;AAEHL,IAAAA,KAAK,EAAEA,KAFJ;AAGHC,IAAAA;AAHG,GAAP;AAKH;;ACXD;;;;;AAKA,AAAO,SAASK,uBAAT,CAAiCN,KAAjC,EAAwC;AAC3C,MAAIA,KAAK,CAACE,KAAN,CAAY,IAAZ,EAAkBC,MAAlB,KAA6B,CAAjC,EAAoC;AAChC,WAAQ,UAASH,KAAM,EAAvB;AACH;;AACD,SAAQ,SAAQA,KAAM,EAAtB;AACH;;ACTM,eAAeO,IAAf,CAAoBP,KAApB,EAA2BQ,OAA3B,EAAoCC,KAApC,EAA2CC,UAA3C,EAAuD;AAC1D,QAAMC,QAAQ,GAAGH,OAAO,CAACG,QAAR,CAAiBC,KAAjB,CAAuBH,KAAvB,EAA8BC,UAA9B,CAAjB;AACAC,EAAAA,QAAQ,CAACE,OAAT,CAAiBC,aAAjB,GAAiCR,uBAAuB,CAACN,KAAD,CAAxD;AACA,SAAOQ,OAAO,CAACG,QAAD,CAAd;AACH;;MCHYI,eAAe,GAAG,SAASA,eAAT,CAAyBf,KAAzB,EAAgC;AAC3D,MAAI,CAACA,KAAL,EAAY;AACR,UAAM,IAAIgB,KAAJ,CAAU,0DAAV,CAAN;AACH;;AACD,MAAI,OAAOhB,KAAP,KAAiB,QAArB,EAA+B;AAC3B,UAAM,IAAIgB,KAAJ,CAAU,uEAAV,CAAN;AACH;;AACDhB,EAAAA,KAAK,GAAGA,KAAK,CAACiB,OAAN,CAAc,oBAAd,EAAoC,EAApC,CAAR;AACA,SAAOC,MAAM,CAACC,MAAP,CAAcpB,IAAI,CAACqB,IAAL,CAAU,IAAV,EAAgBpB,KAAhB,CAAd,EAAsC;AACzCO,IAAAA,IAAI,EAAEA,IAAI,CAACa,IAAL,CAAU,IAAV,EAAgBpB,KAAhB;AADmC,GAAtC,CAAP;AAGH,CAXM;;;;"}
|
|
12
node_modules/@octokit/auth-token/dist-src/auth.js
generated
vendored
12
node_modules/@octokit/auth-token/dist-src/auth.js
generated
vendored
@ -1,12 +0,0 @@
|
|||||||
export async function auth(token) {
|
|
||||||
const tokenType = token.split(/\./).length === 3
|
|
||||||
? "app"
|
|
||||||
: /^v\d+\./.test(token)
|
|
||||||
? "installation"
|
|
||||||
: "oauth";
|
|
||||||
return {
|
|
||||||
type: "token",
|
|
||||||
token: token,
|
|
||||||
tokenType
|
|
||||||
};
|
|
||||||
}
|
|
6
node_modules/@octokit/auth-token/dist-src/hook.js
generated
vendored
6
node_modules/@octokit/auth-token/dist-src/hook.js
generated
vendored
@ -1,6 +0,0 @@
|
|||||||
import { withAuthorizationPrefix } from "./with-authorization-prefix";
|
|
||||||
export async function hook(token, request, route, parameters) {
|
|
||||||
const endpoint = request.endpoint.merge(route, parameters);
|
|
||||||
endpoint.headers.authorization = withAuthorizationPrefix(token);
|
|
||||||
return request(endpoint);
|
|
||||||
}
|
|
14
node_modules/@octokit/auth-token/dist-src/index.js
generated
vendored
14
node_modules/@octokit/auth-token/dist-src/index.js
generated
vendored
@ -1,14 +0,0 @@
|
|||||||
import { auth } from "./auth";
|
|
||||||
import { hook } from "./hook";
|
|
||||||
export const createTokenAuth = function createTokenAuth(token) {
|
|
||||||
if (!token) {
|
|
||||||
throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
|
|
||||||
}
|
|
||||||
if (typeof token !== "string") {
|
|
||||||
throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");
|
|
||||||
}
|
|
||||||
token = token.replace(/^(token|bearer) +/i, "");
|
|
||||||
return Object.assign(auth.bind(null, token), {
|
|
||||||
hook: hook.bind(null, token)
|
|
||||||
});
|
|
||||||
};
|
|
0
node_modules/@octokit/auth-token/dist-src/types.js
generated
vendored
0
node_modules/@octokit/auth-token/dist-src/types.js
generated
vendored
11
node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js
generated
vendored
11
node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js
generated
vendored
@ -1,11 +0,0 @@
|
|||||||
/**
|
|
||||||
* Prefix token for usage in the Authorization header
|
|
||||||
*
|
|
||||||
* @param token OAuth token or JSON Web Token
|
|
||||||
*/
|
|
||||||
export function withAuthorizationPrefix(token) {
|
|
||||||
if (token.split(/\./).length === 3) {
|
|
||||||
return `bearer ${token}`;
|
|
||||||
}
|
|
||||||
return `token ${token}`;
|
|
||||||
}
|
|
2
node_modules/@octokit/auth-token/dist-types/auth.d.ts
generated
vendored
2
node_modules/@octokit/auth-token/dist-types/auth.d.ts
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
import { Token, Authentication } from "./types";
|
|
||||||
export declare function auth(token: Token): Promise<Authentication>;
|
|
2
node_modules/@octokit/auth-token/dist-types/hook.d.ts
generated
vendored
2
node_modules/@octokit/auth-token/dist-types/hook.d.ts
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
import { AnyResponse, EndpointOptions, RequestInterface, RequestParameters, Route, Token } from "./types";
|
|
||||||
export declare function hook(token: Token, request: RequestInterface, route: Route | EndpointOptions, parameters?: RequestParameters): Promise<AnyResponse>;
|
|
7
node_modules/@octokit/auth-token/dist-types/index.d.ts
generated
vendored
7
node_modules/@octokit/auth-token/dist-types/index.d.ts
generated
vendored
@ -1,7 +0,0 @@
|
|||||||
import { StrategyInterface, Token, Authentication } from "./types";
|
|
||||||
export declare type Types = {
|
|
||||||
StrategyOptions: Token;
|
|
||||||
AuthOptions: never;
|
|
||||||
Authentication: Authentication;
|
|
||||||
};
|
|
||||||
export declare const createTokenAuth: StrategyInterface;
|
|
25
node_modules/@octokit/auth-token/dist-types/types.d.ts
generated
vendored
25
node_modules/@octokit/auth-token/dist-types/types.d.ts
generated
vendored
@ -1,25 +0,0 @@
|
|||||||
import * as OctokitTypes from "@octokit/types";
|
|
||||||
export declare type AnyResponse = OctokitTypes.OctokitResponse<any>;
|
|
||||||
export declare type StrategyInterface = OctokitTypes.StrategyInterface<[Token], [], Authentication>;
|
|
||||||
export declare type EndpointDefaults = OctokitTypes.EndpointDefaults;
|
|
||||||
export declare type EndpointOptions = OctokitTypes.EndpointOptions;
|
|
||||||
export declare type RequestParameters = OctokitTypes.RequestParameters;
|
|
||||||
export declare type RequestInterface = OctokitTypes.RequestInterface;
|
|
||||||
export declare type Route = OctokitTypes.Route;
|
|
||||||
export declare type Token = string;
|
|
||||||
export declare type OAuthTokenAuthentication = {
|
|
||||||
type: "token";
|
|
||||||
tokenType: "oauth";
|
|
||||||
token: Token;
|
|
||||||
};
|
|
||||||
export declare type InstallationTokenAuthentication = {
|
|
||||||
type: "token";
|
|
||||||
tokenType: "installation";
|
|
||||||
token: Token;
|
|
||||||
};
|
|
||||||
export declare type AppAuthentication = {
|
|
||||||
type: "token";
|
|
||||||
tokenType: "app";
|
|
||||||
token: Token;
|
|
||||||
};
|
|
||||||
export declare type Authentication = OAuthTokenAuthentication | InstallationTokenAuthentication | AppAuthentication;
|
|
6
node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts
generated
vendored
6
node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts
generated
vendored
@ -1,6 +0,0 @@
|
|||||||
/**
|
|
||||||
* Prefix token for usage in the Authorization header
|
|
||||||
*
|
|
||||||
* @param token OAuth token or JSON Web Token
|
|
||||||
*/
|
|
||||||
export declare function withAuthorizationPrefix(token: string): string;
|
|
46
node_modules/@octokit/auth-token/dist-web/index.js
generated
vendored
46
node_modules/@octokit/auth-token/dist-web/index.js
generated
vendored
@ -1,46 +0,0 @@
|
|||||||
async function auth(token) {
|
|
||||||
const tokenType = token.split(/\./).length === 3
|
|
||||||
? "app"
|
|
||||||
: /^v\d+\./.test(token)
|
|
||||||
? "installation"
|
|
||||||
: "oauth";
|
|
||||||
return {
|
|
||||||
type: "token",
|
|
||||||
token: token,
|
|
||||||
tokenType
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prefix token for usage in the Authorization header
|
|
||||||
*
|
|
||||||
* @param token OAuth token or JSON Web Token
|
|
||||||
*/
|
|
||||||
function withAuthorizationPrefix(token) {
|
|
||||||
if (token.split(/\./).length === 3) {
|
|
||||||
return `bearer ${token}`;
|
|
||||||
}
|
|
||||||
return `token ${token}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function hook(token, request, route, parameters) {
|
|
||||||
const endpoint = request.endpoint.merge(route, parameters);
|
|
||||||
endpoint.headers.authorization = withAuthorizationPrefix(token);
|
|
||||||
return request(endpoint);
|
|
||||||
}
|
|
||||||
|
|
||||||
const createTokenAuth = function createTokenAuth(token) {
|
|
||||||
if (!token) {
|
|
||||||
throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
|
|
||||||
}
|
|
||||||
if (typeof token !== "string") {
|
|
||||||
throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");
|
|
||||||
}
|
|
||||||
token = token.replace(/^(token|bearer) +/i, "");
|
|
||||||
return Object.assign(auth.bind(null, token), {
|
|
||||||
hook: hook.bind(null, token)
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export { createTokenAuth };
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
1
node_modules/@octokit/auth-token/dist-web/index.js.map
generated
vendored
1
node_modules/@octokit/auth-token/dist-web/index.js.map
generated
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"index.js","sources":["../dist-src/auth.js","../dist-src/with-authorization-prefix.js","../dist-src/hook.js","../dist-src/index.js"],"sourcesContent":["export async function auth(token) {\n const tokenType = token.split(/\\./).length === 3\n ? \"app\"\n : /^v\\d+\\./.test(token)\n ? \"installation\"\n : \"oauth\";\n return {\n type: \"token\",\n token: token,\n tokenType\n };\n}\n","/**\n * Prefix token for usage in the Authorization header\n *\n * @param token OAuth token or JSON Web Token\n */\nexport function withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n","import { withAuthorizationPrefix } from \"./with-authorization-prefix\";\nexport async function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(route, parameters);\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n","import { auth } from \"./auth\";\nimport { hook } from \"./hook\";\nexport const createTokenAuth = function createTokenAuth(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\"[@octokit/auth-token] Token passed to createTokenAuth is not a string\");\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\n"],"names":[],"mappings":"AAAO,eAAe,IAAI,CAAC,KAAK,EAAE;AAClC,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;AACpD,UAAU,KAAK;AACf,UAAU,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,cAAc,cAAc;AAC5B,cAAc,OAAO,CAAC;AACtB,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,OAAO;AACrB,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,SAAS;AACjB,KAAK,CAAC;AACN;;ACXA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,uBAAuB,CAAC,KAAK,EAAE;AAC/C,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,QAAQ,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5B,CAAC;;ACTM,eAAe,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;AAC9D,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC/D,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAa,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;AACpE,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC;;ACHW,MAAC,eAAe,GAAG,SAAS,eAAe,CAAC,KAAK,EAAE;AAC/D,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AACpF,KAAK;AACL,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;AACjG,KAAK;AACL,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AACpD,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACjD,QAAQ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AACpC,KAAK,CAAC,CAAC;AACP,CAAC;;;;"}
|
|
80
node_modules/@octokit/auth-token/package.json
generated
vendored
80
node_modules/@octokit/auth-token/package.json
generated
vendored
@ -1,80 +0,0 @@
|
|||||||
{
|
|
||||||
"_args": [
|
|
||||||
[
|
|
||||||
"@octokit/auth-token@2.4.2",
|
|
||||||
"/home/aszczucz/scm/aszc/change-string-case-action"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"_from": "@octokit/auth-token@2.4.2",
|
|
||||||
"_id": "@octokit/auth-token@2.4.2",
|
|
||||||
"_inBundle": false,
|
|
||||||
"_integrity": "sha512-jE/lE/IKIz2v1+/P0u4fJqv0kYwXOTujKemJMFr6FeopsxlIK3+wKDCJGnysg81XID5TgZQbIfuJ5J0lnTiuyQ==",
|
|
||||||
"_location": "/@octokit/auth-token",
|
|
||||||
"_phantomChildren": {},
|
|
||||||
"_requested": {
|
|
||||||
"type": "version",
|
|
||||||
"registry": true,
|
|
||||||
"raw": "@octokit/auth-token@2.4.2",
|
|
||||||
"name": "@octokit/auth-token",
|
|
||||||
"escapedName": "@octokit%2fauth-token",
|
|
||||||
"scope": "@octokit",
|
|
||||||
"rawSpec": "2.4.2",
|
|
||||||
"saveSpec": null,
|
|
||||||
"fetchSpec": "2.4.2"
|
|
||||||
},
|
|
||||||
"_requiredBy": [
|
|
||||||
"/@octokit/core"
|
|
||||||
],
|
|
||||||
"_resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.2.tgz",
|
|
||||||
"_spec": "2.4.2",
|
|
||||||
"_where": "/home/aszczucz/scm/aszc/change-string-case-action",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/octokit/auth-token.js/issues"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@octokit/types": "^5.0.0"
|
|
||||||
},
|
|
||||||
"description": "GitHub API token authentication for browsers and Node.js",
|
|
||||||
"devDependencies": {
|
|
||||||
"@octokit/core": "^2.2.0",
|
|
||||||
"@octokit/request": "^5.3.0",
|
|
||||||
"@pika/pack": "^0.5.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.3.1",
|
|
||||||
"@types/jest": "^26.0.0",
|
|
||||||
"fetch-mock": "^9.0.0",
|
|
||||||
"jest": "^25.1.0",
|
|
||||||
"semantic-release": "^17.0.0",
|
|
||||||
"ts-jest": "^25.1.0",
|
|
||||||
"typescript": "^3.7.2"
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"dist-*/",
|
|
||||||
"bin/"
|
|
||||||
],
|
|
||||||
"homepage": "https://github.com/octokit/auth-token.js#readme",
|
|
||||||
"keywords": [
|
|
||||||
"github",
|
|
||||||
"octokit",
|
|
||||||
"authentication",
|
|
||||||
"api"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"main": "dist-node/index.js",
|
|
||||||
"module": "dist-web/index.js",
|
|
||||||
"name": "@octokit/auth-token",
|
|
||||||
"pika": true,
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/octokit/auth-token.js.git"
|
|
||||||
},
|
|
||||||
"sideEffects": false,
|
|
||||||
"source": "dist-src/index.js",
|
|
||||||
"types": "dist-types/index.d.ts",
|
|
||||||
"version": "2.4.2"
|
|
||||||
}
|
|
21
node_modules/@octokit/core/LICENSE
generated
vendored
21
node_modules/@octokit/core/LICENSE
generated
vendored
@ -1,21 +0,0 @@
|
|||||||
The MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2019 Octokit contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
438
node_modules/@octokit/core/README.md
generated
vendored
438
node_modules/@octokit/core/README.md
generated
vendored
@ -1,438 +0,0 @@
|
|||||||
# core.js
|
|
||||||
|
|
||||||
> Extendable client for GitHub's REST & GraphQL APIs
|
|
||||||
|
|
||||||
[![@latest](https://img.shields.io/npm/v/@octokit/core.svg)](https://www.npmjs.com/package/@octokit/core)
|
|
||||||
[![Build Status](https://github.com/octokit/core.js/workflows/Test/badge.svg)](https://github.com/octokit/core.js/actions?query=workflow%3ATest+branch%3Amaster)
|
|
||||||
|
|
||||||
<!-- toc -->
|
|
||||||
|
|
||||||
- [Usage](#usage)
|
|
||||||
- [REST API example](#rest-api-example)
|
|
||||||
- [GraphQL example](#graphql-example)
|
|
||||||
- [Options](#options)
|
|
||||||
- [Defaults](#defaults)
|
|
||||||
- [Authentication](#authentication)
|
|
||||||
- [Logging](#logging)
|
|
||||||
- [Hooks](#hooks)
|
|
||||||
- [Plugins](#plugins)
|
|
||||||
- [Build your own Octokit with Plugins and Defaults](#build-your-own-octokit-with-plugins-and-defaults)
|
|
||||||
- [LICENSE](#license)
|
|
||||||
|
|
||||||
<!-- tocstop -->
|
|
||||||
|
|
||||||
If you need a minimalistic library to utilize GitHub's [REST API](https://developer.github.com/v3/) and [GraphQL API](https://developer.github.com/v4/) which you can extend with plugins as needed, then `@octokit/core` is a great starting point.
|
|
||||||
|
|
||||||
If you don't need the Plugin API then using [`@octokit/request`](https://github.com/octokit/request.js/) or [`@octokit/graphql`](https://github.com/octokit/graphql.js/) directly is a good alternative.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<tbody valign=top align=left>
|
|
||||||
<tr><th>
|
|
||||||
Browsers
|
|
||||||
</th><td width=100%>
|
|
||||||
Load <code>@octokit/core</code> directly from <a href="https://cdn.pika.dev">cdn.pika.dev</a>
|
|
||||||
|
|
||||||
```html
|
|
||||||
<script type="module">
|
|
||||||
import { Octokit } from "https://cdn.pika.dev/@octokit/core";
|
|
||||||
</script>
|
|
||||||
```
|
|
||||||
|
|
||||||
</td></tr>
|
|
||||||
<tr><th>
|
|
||||||
Node
|
|
||||||
</th><td>
|
|
||||||
|
|
||||||
Install with <code>npm install @octokit/core</code>
|
|
||||||
|
|
||||||
```js
|
|
||||||
const { Octokit } = require("@octokit/core");
|
|
||||||
// or: import { Octokit } from "@octokit/core";
|
|
||||||
```
|
|
||||||
|
|
||||||
</td></tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
### REST API example
|
|
||||||
|
|
||||||
```js
|
|
||||||
// Create a personal access token at https://github.com/settings/tokens/new?scopes=repo
|
|
||||||
const octokit = new Octokit({ auth: `personal-access-token123` });
|
|
||||||
|
|
||||||
const response = await octokit.request("GET /orgs/:org/repos", {
|
|
||||||
org: "octokit",
|
|
||||||
type: "private",
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
See [`@octokit/request`](https://github.com/octokit/request.js) for full documentation of the `.request` method.
|
|
||||||
|
|
||||||
### GraphQL example
|
|
||||||
|
|
||||||
```js
|
|
||||||
const octokit = new Octokit({ auth: `secret123` });
|
|
||||||
|
|
||||||
const response = await octokit.graphql(
|
|
||||||
`query ($login: String!) {
|
|
||||||
organization(login: $login) {
|
|
||||||
repositories(privacy: PRIVATE) {
|
|
||||||
totalCount
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`,
|
|
||||||
{ login: "octokit" }
|
|
||||||
);
|
|
||||||
```
|
|
||||||
|
|
||||||
See [`@octokit/graphql`](https://github.com/octokit/graphql.js) for full documentation of the `.graphql` method.
|
|
||||||
|
|
||||||
## Options
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<thead align=left>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
name
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
type
|
|
||||||
</th>
|
|
||||||
<th width=100%>
|
|
||||||
description
|
|
||||||
</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody align=left valign=top>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>options.authStrategy</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
<code>Function<code>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Defaults to <a href="https://github.com/octokit/auth-token.js#readme"><code>@octokit/auth-token</code></a>. See <a href="authentication">Authentication</a> below for examples.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>options.auth</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
<code>String</code> or <code>Object</code>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
See <a href="authentication">Authentication</a> below for examples.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>options.baseUrl</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
<code>String</code>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
|
|
||||||
When using with GitHub Enterprise Server, set `options.baseUrl` to the root URL of the API. For example, if your GitHub Enterprise Server's hostname is `github.acme-inc.com`, then set `options.baseUrl` to `https://github.acme-inc.com/api/v3`. Example
|
|
||||||
|
|
||||||
```js
|
|
||||||
const octokit = new Octokit({
|
|
||||||
baseUrl: "https://github.acme-inc.com/api/v3",
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
</td></tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>options.previews</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
<code>Array of Strings</code>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
|
|
||||||
Some REST API endpoints require preview headers to be set, or enable
|
|
||||||
additional features. Preview headers can be set on a per-request basis, e.g.
|
|
||||||
|
|
||||||
```js
|
|
||||||
octokit.request("POST /repos/:owner/:repo/pulls", {
|
|
||||||
mediaType: {
|
|
||||||
previews: ["shadow-cat"],
|
|
||||||
},
|
|
||||||
owner,
|
|
||||||
repo,
|
|
||||||
title: "My pull request",
|
|
||||||
base: "master",
|
|
||||||
head: "my-feature",
|
|
||||||
draft: true,
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also set previews globally, by setting the `options.previews` option on the constructor. Example:
|
|
||||||
|
|
||||||
```js
|
|
||||||
const octokit = new Octokit({
|
|
||||||
previews: ["shadow-cat"],
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
</td></tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>options.request</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
<code>Object</code>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
|
|
||||||
Set a default request timeout (`options.request.timeout`) or an [`http(s).Agent`](https://nodejs.org/api/http.html#http_class_http_agent) e.g. for proxy usage (Node only, `options.request.agent`).
|
|
||||||
|
|
||||||
There are more `options.request.*` options, see [`@octokit/request` options](https://github.com/octokit/request.js#request). `options.request` can also be set on a per-request basis.
|
|
||||||
|
|
||||||
</td></tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>options.timeZone</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
<code>String</code>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
|
|
||||||
Sets the `Time-Zone` header which defines a timezone according to the [list of names from the Olson database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
|
|
||||||
|
|
||||||
```js
|
|
||||||
const octokit = new Octokit({
|
|
||||||
timeZone: "America/Los_Angeles",
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
The time zone header will determine the timezone used for generating the timestamp when creating commits. See [GitHub's Timezones documentation](https://developer.github.com/v3/#timezones).
|
|
||||||
|
|
||||||
</td></tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>options.userAgent</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
<code>String</code>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
|
|
||||||
A custom user agent string for your app or library. Example
|
|
||||||
|
|
||||||
```js
|
|
||||||
const octokit = new Octokit({
|
|
||||||
userAgent: "my-app/v1.2.3",
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
</td></tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
## Defaults
|
|
||||||
|
|
||||||
You can create a new Octokit class with customized default options.
|
|
||||||
|
|
||||||
```js
|
|
||||||
const MyOctokit = Octokit.defaults({
|
|
||||||
auth: "personal-access-token123",
|
|
||||||
baseUrl: "https://github.acme-inc.com/api/v3",
|
|
||||||
userAgent: "my-app/v1.2.3",
|
|
||||||
});
|
|
||||||
const octokit1 = new MyOctokit();
|
|
||||||
const octokit2 = new MyOctokit();
|
|
||||||
```
|
|
||||||
|
|
||||||
If you pass additional options to your new constructor, the options will be merged shallowly.
|
|
||||||
|
|
||||||
```js
|
|
||||||
const MyOctokit = Octokit.defaults({
|
|
||||||
foo: {
|
|
||||||
opt1: 1,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const octokit = new MyOctokit({
|
|
||||||
foo: {
|
|
||||||
opt2: 1,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
// options will be { foo: { opt2: 1 }}
|
|
||||||
```
|
|
||||||
|
|
||||||
If you need a deep or conditional merge, you can pass a function instead.
|
|
||||||
|
|
||||||
```js
|
|
||||||
const MyOctokit = Octokit.defaults((options) => {
|
|
||||||
return {
|
|
||||||
foo: Object.assign({}, options.foo, { opt2: 1 }),
|
|
||||||
};
|
|
||||||
});
|
|
||||||
const octokit = new MyOctokit({
|
|
||||||
foo: { opt2: 1 },
|
|
||||||
});
|
|
||||||
// options will be { foo: { opt1: 1, opt2: 1 }}
|
|
||||||
```
|
|
||||||
|
|
||||||
Be careful about mutating the `options` object in the `Octokit.defaults` callback, as it can have unforeseen consequences.
|
|
||||||
|
|
||||||
## Authentication
|
|
||||||
|
|
||||||
Authentication is optional for some REST API endpoints accessing public data, but is required for GraphQL queries. Using authentication also increases your [API rate limit](https://developer.github.com/v3/#rate-limiting).
|
|
||||||
|
|
||||||
By default, Octokit authenticates using the [token authentication strategy](https://github.com/octokit/auth-token.js). Pass in a token using `options.auth`. It can be a personal access token, an OAuth token, an installation access token or a JSON Web Token for GitHub App authentication. The `Authorization` header will be set according to the type of token.
|
|
||||||
|
|
||||||
```js
|
|
||||||
import { Octokit } from "@octokit/core";
|
|
||||||
|
|
||||||
const octokit = new Octokit({
|
|
||||||
auth: "mypersonalaccesstoken123",
|
|
||||||
});
|
|
||||||
|
|
||||||
const { data } = await octokit.request("/user");
|
|
||||||
```
|
|
||||||
|
|
||||||
To use a different authentication strategy, set `options.authStrategy`. A set of officially supported authentication strategies can be retrieved from [`@octokit/auth`](https://github.com/octokit/auth-app.js#readme). Example
|
|
||||||
|
|
||||||
```js
|
|
||||||
import { Octokit } from "@octokit/core";
|
|
||||||
import { createAppAuth } from "@octokit/auth-app";
|
|
||||||
|
|
||||||
const appOctokit = new Octokit({
|
|
||||||
authStrategy: createAppAuth,
|
|
||||||
auth: {
|
|
||||||
id: 123,
|
|
||||||
privateKey: process.env.PRIVATE_KEY,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const { data } = await appOctokit.request("/app");
|
|
||||||
```
|
|
||||||
|
|
||||||
The `.auth()` method returned by the current authentication strategy can be accessed at `octokit.auth()`. Example
|
|
||||||
|
|
||||||
```js
|
|
||||||
const { token } = await appOctokit.auth({
|
|
||||||
type: "installation",
|
|
||||||
installationId: 123,
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
## Logging
|
|
||||||
|
|
||||||
There are four built-in log methods
|
|
||||||
|
|
||||||
1. `octokit.log.debug(message[, additionalInfo])`
|
|
||||||
1. `octokit.log.info(message[, additionalInfo])`
|
|
||||||
1. `octokit.log.warn(message[, additionalInfo])`
|
|
||||||
1. `octokit.log.error(message[, additionalInfo])`
|
|
||||||
|
|
||||||
They can be configured using the [`log` client option](client-options). By default, `octokit.log.debug()` and `octokit.log.info()` are no-ops, while the other two call `console.warn()` and `console.error()` respectively.
|
|
||||||
|
|
||||||
This is useful if you build reusable [plugins](#plugins).
|
|
||||||
|
|
||||||
If you would like to make the log level configurable using an environment variable or external option, we recommend the [console-log-level](https://github.com/watson/console-log-level) package. Example
|
|
||||||
|
|
||||||
```js
|
|
||||||
const octokit = new Octokit({
|
|
||||||
log: require("console-log-level")({ level: "info" }),
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
## Hooks
|
|
||||||
|
|
||||||
You can customize Octokit's request lifecycle with hooks.
|
|
||||||
|
|
||||||
```js
|
|
||||||
octokit.hook.before("request", async (options) => {
|
|
||||||
validate(options);
|
|
||||||
});
|
|
||||||
octokit.hook.after("request", async (response, options) => {
|
|
||||||
console.log(`${options.method} ${options.url}: ${response.status}`);
|
|
||||||
});
|
|
||||||
octokit.hook.error("request", async (error, options) => {
|
|
||||||
if (error.status === 304) {
|
|
||||||
return findInCache(error.headers.etag);
|
|
||||||
}
|
|
||||||
|
|
||||||
throw error;
|
|
||||||
});
|
|
||||||
octokit.hook.wrap("request", async (request, options) => {
|
|
||||||
// add logic before, after, catch errors or replace the request altogether
|
|
||||||
return request(options);
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
See [before-after-hook](https://github.com/gr2m/before-after-hook#readme) for more documentation on hooks.
|
|
||||||
|
|
||||||
## Plugins
|
|
||||||
|
|
||||||
Octokit’s functionality can be extended using plugins. The `Octokit.plugin()` method accepts a plugin (or many) and returns a new constructor.
|
|
||||||
|
|
||||||
A plugin is a function which gets two arguments:
|
|
||||||
|
|
||||||
1. the current instance
|
|
||||||
2. the options passed to the constructor.
|
|
||||||
|
|
||||||
In order to extend `octokit`'s API, the plugin must return an object with the new methods.
|
|
||||||
|
|
||||||
```js
|
|
||||||
// index.js
|
|
||||||
const { Octokit } = require("@octokit/core")
|
|
||||||
const MyOctokit = Octokit.plugin(
|
|
||||||
require("./lib/my-plugin"),
|
|
||||||
require("octokit-plugin-example")
|
|
||||||
);
|
|
||||||
|
|
||||||
const octokit = new MyOctokit({ greeting: "Moin moin" });
|
|
||||||
octokit.helloWorld(); // logs "Moin moin, world!"
|
|
||||||
octokit.request("GET /"); // logs "GET / - 200 in 123ms"
|
|
||||||
|
|
||||||
// lib/my-plugin.js
|
|
||||||
module.exports = (octokit, options = { greeting: "Hello" }) => {
|
|
||||||
// hook into the request lifecycle
|
|
||||||
octokit.hook.wrap("request", async (request, options) => {
|
|
||||||
const time = Date.now();
|
|
||||||
const response = await request(options);
|
|
||||||
console.log(
|
|
||||||
`${options.method} ${options.url} – ${response.status} in ${Date.now() -
|
|
||||||
time}ms`
|
|
||||||
);
|
|
||||||
return response;
|
|
||||||
});
|
|
||||||
|
|
||||||
// add a custom method
|
|
||||||
return {
|
|
||||||
helloWorld: () => console.log(`${options.greeting}, world!`);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
## Build your own Octokit with Plugins and Defaults
|
|
||||||
|
|
||||||
You can build your own Octokit class with preset default options and plugins. In fact, this is mostly how the `@octokit/<context>` modules work, such as [`@octokit/action`](https://github.com/octokit/action.js):
|
|
||||||
|
|
||||||
```js
|
|
||||||
const { Octokit } = require("@octokit/core");
|
|
||||||
const MyActionOctokit = Octokit.plugin(
|
|
||||||
require("@octokit/plugin-paginate"),
|
|
||||||
require("@octokit/plugin-throttle"),
|
|
||||||
require("@octokit/plugin-retry")
|
|
||||||
).defaults({
|
|
||||||
authStrategy: require("@octokit/auth-action"),
|
|
||||||
userAgent: `my-octokit-action/v1.2.3`,
|
|
||||||
});
|
|
||||||
|
|
||||||
const octokit = new MyActionOctokit();
|
|
||||||
const installations = await octokit.paginate("GET /app/installations");
|
|
||||||
```
|
|
||||||
|
|
||||||
## LICENSE
|
|
||||||
|
|
||||||
[MIT](LICENSE)
|
|
176
node_modules/@octokit/core/dist-node/index.js
generated
vendored
176
node_modules/@octokit/core/dist-node/index.js
generated
vendored
@ -1,176 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
Object.defineProperty(exports, '__esModule', { value: true });
|
|
||||||
|
|
||||||
var universalUserAgent = require('universal-user-agent');
|
|
||||||
var beforeAfterHook = require('before-after-hook');
|
|
||||||
var request = require('@octokit/request');
|
|
||||||
var graphql = require('@octokit/graphql');
|
|
||||||
var authToken = require('@octokit/auth-token');
|
|
||||||
|
|
||||||
function _defineProperty(obj, key, value) {
|
|
||||||
if (key in obj) {
|
|
||||||
Object.defineProperty(obj, key, {
|
|
||||||
value: value,
|
|
||||||
enumerable: true,
|
|
||||||
configurable: true,
|
|
||||||
writable: true
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
obj[key] = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
function ownKeys(object, enumerableOnly) {
|
|
||||||
var keys = Object.keys(object);
|
|
||||||
|
|
||||||
if (Object.getOwnPropertySymbols) {
|
|
||||||
var symbols = Object.getOwnPropertySymbols(object);
|
|
||||||
if (enumerableOnly) symbols = symbols.filter(function (sym) {
|
|
||||||
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
||||||
});
|
|
||||||
keys.push.apply(keys, symbols);
|
|
||||||
}
|
|
||||||
|
|
||||||
return keys;
|
|
||||||
}
|
|
||||||
|
|
||||||
function _objectSpread2(target) {
|
|
||||||
for (var i = 1; i < arguments.length; i++) {
|
|
||||||
var source = arguments[i] != null ? arguments[i] : {};
|
|
||||||
|
|
||||||
if (i % 2) {
|
|
||||||
ownKeys(Object(source), true).forEach(function (key) {
|
|
||||||
_defineProperty(target, key, source[key]);
|
|
||||||
});
|
|
||||||
} else if (Object.getOwnPropertyDescriptors) {
|
|
||||||
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
||||||
} else {
|
|
||||||
ownKeys(Object(source)).forEach(function (key) {
|
|
||||||
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return target;
|
|
||||||
}
|
|
||||||
|
|
||||||
const VERSION = "3.1.1";
|
|
||||||
|
|
||||||
class Octokit {
|
|
||||||
constructor(options = {}) {
|
|
||||||
const hook = new beforeAfterHook.Collection();
|
|
||||||
const requestDefaults = {
|
|
||||||
baseUrl: request.request.endpoint.DEFAULTS.baseUrl,
|
|
||||||
headers: {},
|
|
||||||
request: Object.assign({}, options.request, {
|
|
||||||
hook: hook.bind(null, "request")
|
|
||||||
}),
|
|
||||||
mediaType: {
|
|
||||||
previews: [],
|
|
||||||
format: ""
|
|
||||||
}
|
|
||||||
}; // prepend default user agent with `options.userAgent` if set
|
|
||||||
|
|
||||||
requestDefaults.headers["user-agent"] = [options.userAgent, `octokit-core.js/${VERSION} ${universalUserAgent.getUserAgent()}`].filter(Boolean).join(" ");
|
|
||||||
|
|
||||||
if (options.baseUrl) {
|
|
||||||
requestDefaults.baseUrl = options.baseUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (options.previews) {
|
|
||||||
requestDefaults.mediaType.previews = options.previews;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (options.timeZone) {
|
|
||||||
requestDefaults.headers["time-zone"] = options.timeZone;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.request = request.request.defaults(requestDefaults);
|
|
||||||
this.graphql = graphql.withCustomRequest(this.request).defaults(_objectSpread2(_objectSpread2({}, requestDefaults), {}, {
|
|
||||||
baseUrl: requestDefaults.baseUrl.replace(/\/api\/v3$/, "/api")
|
|
||||||
}));
|
|
||||||
this.log = Object.assign({
|
|
||||||
debug: () => {},
|
|
||||||
info: () => {},
|
|
||||||
warn: console.warn.bind(console),
|
|
||||||
error: console.error.bind(console)
|
|
||||||
}, options.log);
|
|
||||||
this.hook = hook; // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance
|
|
||||||
// is unauthenticated. The `this.auth()` method is a no-op and no request hook is registred.
|
|
||||||
// (2) If only `options.auth` is set, use the default token authentication strategy.
|
|
||||||
// (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance.
|
|
||||||
// TODO: type `options.auth` based on `options.authStrategy`.
|
|
||||||
|
|
||||||
if (!options.authStrategy) {
|
|
||||||
if (!options.auth) {
|
|
||||||
// (1)
|
|
||||||
this.auth = async () => ({
|
|
||||||
type: "unauthenticated"
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
// (2)
|
|
||||||
const auth = authToken.createTokenAuth(options.auth); // @ts-ignore ¯\_(ツ)_/¯
|
|
||||||
|
|
||||||
hook.wrap("request", auth.hook);
|
|
||||||
this.auth = auth;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
const auth = options.authStrategy(Object.assign({
|
|
||||||
request: this.request
|
|
||||||
}, options.auth)); // @ts-ignore ¯\_(ツ)_/¯
|
|
||||||
|
|
||||||
hook.wrap("request", auth.hook);
|
|
||||||
this.auth = auth;
|
|
||||||
} // apply plugins
|
|
||||||
// https://stackoverflow.com/a/16345172
|
|
||||||
|
|
||||||
|
|
||||||
const classConstructor = this.constructor;
|
|
||||||
classConstructor.plugins.forEach(plugin => {
|
|
||||||
Object.assign(this, plugin(this, options));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
static defaults(defaults) {
|
|
||||||
const OctokitWithDefaults = class extends this {
|
|
||||||
constructor(...args) {
|
|
||||||
const options = args[0] || {};
|
|
||||||
|
|
||||||
if (typeof defaults === "function") {
|
|
||||||
super(defaults(options));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent ? {
|
|
||||||
userAgent: `${options.userAgent} ${defaults.userAgent}`
|
|
||||||
} : null));
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
return OctokitWithDefaults;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Attach a plugin (or many) to your Octokit instance.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
static plugin(...newPlugins) {
|
|
||||||
var _a;
|
|
||||||
|
|
||||||
const currentPlugins = this.plugins;
|
|
||||||
const NewOctokit = (_a = class extends this {}, _a.plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin))), _a);
|
|
||||||
return NewOctokit;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Octokit.VERSION = VERSION;
|
|
||||||
Octokit.plugins = [];
|
|
||||||
|
|
||||||
exports.Octokit = Octokit;
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
1
node_modules/@octokit/core/dist-node/index.js.map
generated
vendored
1
node_modules/@octokit/core/dist-node/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
118
node_modules/@octokit/core/dist-src/index.js
generated
vendored
118
node_modules/@octokit/core/dist-src/index.js
generated
vendored
@ -1,118 +0,0 @@
|
|||||||
import { getUserAgent } from "universal-user-agent";
|
|
||||||
import { Collection } from "before-after-hook";
|
|
||||||
import { request } from "@octokit/request";
|
|
||||||
import { withCustomRequest } from "@octokit/graphql";
|
|
||||||
import { createTokenAuth } from "@octokit/auth-token";
|
|
||||||
import { VERSION } from "./version";
|
|
||||||
export class Octokit {
|
|
||||||
constructor(options = {}) {
|
|
||||||
const hook = new Collection();
|
|
||||||
const requestDefaults = {
|
|
||||||
baseUrl: request.endpoint.DEFAULTS.baseUrl,
|
|
||||||
headers: {},
|
|
||||||
request: Object.assign({}, options.request, {
|
|
||||||
hook: hook.bind(null, "request"),
|
|
||||||
}),
|
|
||||||
mediaType: {
|
|
||||||
previews: [],
|
|
||||||
format: "",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
// prepend default user agent with `options.userAgent` if set
|
|
||||||
requestDefaults.headers["user-agent"] = [
|
|
||||||
options.userAgent,
|
|
||||||
`octokit-core.js/${VERSION} ${getUserAgent()}`,
|
|
||||||
]
|
|
||||||
.filter(Boolean)
|
|
||||||
.join(" ");
|
|
||||||
if (options.baseUrl) {
|
|
||||||
requestDefaults.baseUrl = options.baseUrl;
|
|
||||||
}
|
|
||||||
if (options.previews) {
|
|
||||||
requestDefaults.mediaType.previews = options.previews;
|
|
||||||
}
|
|
||||||
if (options.timeZone) {
|
|
||||||
requestDefaults.headers["time-zone"] = options.timeZone;
|
|
||||||
}
|
|
||||||
this.request = request.defaults(requestDefaults);
|
|
||||||
this.graphql = withCustomRequest(this.request).defaults({
|
|
||||||
...requestDefaults,
|
|
||||||
baseUrl: requestDefaults.baseUrl.replace(/\/api\/v3$/, "/api"),
|
|
||||||
});
|
|
||||||
this.log = Object.assign({
|
|
||||||
debug: () => { },
|
|
||||||
info: () => { },
|
|
||||||
warn: console.warn.bind(console),
|
|
||||||
error: console.error.bind(console),
|
|
||||||
}, options.log);
|
|
||||||
this.hook = hook;
|
|
||||||
// (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance
|
|
||||||
// is unauthenticated. The `this.auth()` method is a no-op and no request hook is registred.
|
|
||||||
// (2) If only `options.auth` is set, use the default token authentication strategy.
|
|
||||||
// (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance.
|
|
||||||
// TODO: type `options.auth` based on `options.authStrategy`.
|
|
||||||
if (!options.authStrategy) {
|
|
||||||
if (!options.auth) {
|
|
||||||
// (1)
|
|
||||||
this.auth = async () => ({
|
|
||||||
type: "unauthenticated",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// (2)
|
|
||||||
const auth = createTokenAuth(options.auth);
|
|
||||||
// @ts-ignore ¯\_(ツ)_/¯
|
|
||||||
hook.wrap("request", auth.hook);
|
|
||||||
this.auth = auth;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const auth = options.authStrategy(Object.assign({
|
|
||||||
request: this.request,
|
|
||||||
}, options.auth));
|
|
||||||
// @ts-ignore ¯\_(ツ)_/¯
|
|
||||||
hook.wrap("request", auth.hook);
|
|
||||||
this.auth = auth;
|
|
||||||
}
|
|
||||||
// apply plugins
|
|
||||||
// https://stackoverflow.com/a/16345172
|
|
||||||
const classConstructor = this.constructor;
|
|
||||||
classConstructor.plugins.forEach((plugin) => {
|
|
||||||
Object.assign(this, plugin(this, options));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
static defaults(defaults) {
|
|
||||||
const OctokitWithDefaults = class extends this {
|
|
||||||
constructor(...args) {
|
|
||||||
const options = args[0] || {};
|
|
||||||
if (typeof defaults === "function") {
|
|
||||||
super(defaults(options));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent
|
|
||||||
? {
|
|
||||||
userAgent: `${options.userAgent} ${defaults.userAgent}`,
|
|
||||||
}
|
|
||||||
: null));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return OctokitWithDefaults;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Attach a plugin (or many) to your Octokit instance.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)
|
|
||||||
*/
|
|
||||||
static plugin(...newPlugins) {
|
|
||||||
var _a;
|
|
||||||
const currentPlugins = this.plugins;
|
|
||||||
const NewOctokit = (_a = class extends this {
|
|
||||||
},
|
|
||||||
_a.plugins = currentPlugins.concat(newPlugins.filter((plugin) => !currentPlugins.includes(plugin))),
|
|
||||||
_a);
|
|
||||||
return NewOctokit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Octokit.VERSION = VERSION;
|
|
||||||
Octokit.plugins = [];
|
|
0
node_modules/@octokit/core/dist-src/types.js
generated
vendored
0
node_modules/@octokit/core/dist-src/types.js
generated
vendored
1
node_modules/@octokit/core/dist-src/version.js
generated
vendored
1
node_modules/@octokit/core/dist-src/version.js
generated
vendored
@ -1 +0,0 @@
|
|||||||
export const VERSION = "3.1.1";
|
|
40
node_modules/@octokit/core/dist-types/index.d.ts
generated
vendored
40
node_modules/@octokit/core/dist-types/index.d.ts
generated
vendored
@ -1,40 +0,0 @@
|
|||||||
import { HookCollection } from "before-after-hook";
|
|
||||||
import { request } from "@octokit/request";
|
|
||||||
import { graphql } from "@octokit/graphql";
|
|
||||||
import { Constructor, OctokitOptions, OctokitPlugin, ReturnTypeOf, UnionToIntersection } from "./types";
|
|
||||||
export declare class Octokit {
|
|
||||||
static VERSION: string;
|
|
||||||
static defaults<S extends Constructor<any>>(this: S, defaults: OctokitOptions | Function): {
|
|
||||||
new (...args: any[]): {
|
|
||||||
[x: string]: any;
|
|
||||||
};
|
|
||||||
} & S;
|
|
||||||
static plugins: OctokitPlugin[];
|
|
||||||
/**
|
|
||||||
* Attach a plugin (or many) to your Octokit instance.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)
|
|
||||||
*/
|
|
||||||
static plugin<S extends Constructor<any> & {
|
|
||||||
plugins: any[];
|
|
||||||
}, T extends OctokitPlugin[]>(this: S, ...newPlugins: T): {
|
|
||||||
new (...args: any[]): {
|
|
||||||
[x: string]: any;
|
|
||||||
};
|
|
||||||
plugins: any[];
|
|
||||||
} & S & Constructor<UnionToIntersection<ReturnTypeOf<T>>>;
|
|
||||||
constructor(options?: OctokitOptions);
|
|
||||||
request: typeof request;
|
|
||||||
graphql: typeof graphql;
|
|
||||||
log: {
|
|
||||||
debug: (message: string, additionalInfo?: object) => any;
|
|
||||||
info: (message: string, additionalInfo?: object) => any;
|
|
||||||
warn: (message: string, additionalInfo?: object) => any;
|
|
||||||
error: (message: string, additionalInfo?: object) => any;
|
|
||||||
[key: string]: any;
|
|
||||||
};
|
|
||||||
hook: HookCollection;
|
|
||||||
auth: (...args: unknown[]) => Promise<unknown>;
|
|
||||||
[key: string]: any;
|
|
||||||
}
|
|
22
node_modules/@octokit/core/dist-types/types.d.ts
generated
vendored
22
node_modules/@octokit/core/dist-types/types.d.ts
generated
vendored
@ -1,22 +0,0 @@
|
|||||||
import * as OctokitTypes from "@octokit/types";
|
|
||||||
import { Octokit } from ".";
|
|
||||||
export declare type RequestParameters = OctokitTypes.RequestParameters;
|
|
||||||
export declare type OctokitOptions = {
|
|
||||||
authStrategy?: any;
|
|
||||||
auth?: any;
|
|
||||||
request?: OctokitTypes.RequestRequestOptions;
|
|
||||||
timeZone?: string;
|
|
||||||
[option: string]: any;
|
|
||||||
};
|
|
||||||
export declare type Constructor<T> = new (...args: any[]) => T;
|
|
||||||
export declare type ReturnTypeOf<T extends AnyFunction | AnyFunction[]> = T extends AnyFunction ? ReturnType<T> : T extends AnyFunction[] ? UnionToIntersection<ReturnType<T[number]>> : never;
|
|
||||||
/**
|
|
||||||
* @author https://stackoverflow.com/users/2887218/jcalz
|
|
||||||
* @see https://stackoverflow.com/a/50375286/10325032
|
|
||||||
*/
|
|
||||||
export declare type UnionToIntersection<Union> = (Union extends any ? (argument: Union) => void : never) extends (argument: infer Intersection) => void ? Intersection : never;
|
|
||||||
declare type AnyFunction = (...args: any) => any;
|
|
||||||
export declare type OctokitPlugin = (octokit: Octokit, options: OctokitOptions) => {
|
|
||||||
[key: string]: any;
|
|
||||||
} | void;
|
|
||||||
export {};
|
|
1
node_modules/@octokit/core/dist-types/version.d.ts
generated
vendored
1
node_modules/@octokit/core/dist-types/version.d.ts
generated
vendored
@ -1 +0,0 @@
|
|||||||
export declare const VERSION = "3.1.1";
|
|
123
node_modules/@octokit/core/dist-web/index.js
generated
vendored
123
node_modules/@octokit/core/dist-web/index.js
generated
vendored
@ -1,123 +0,0 @@
|
|||||||
import { getUserAgent } from 'universal-user-agent';
|
|
||||||
import { Collection } from 'before-after-hook';
|
|
||||||
import { request } from '@octokit/request';
|
|
||||||
import { withCustomRequest } from '@octokit/graphql';
|
|
||||||
import { createTokenAuth } from '@octokit/auth-token';
|
|
||||||
|
|
||||||
const VERSION = "3.1.1";
|
|
||||||
|
|
||||||
class Octokit {
|
|
||||||
constructor(options = {}) {
|
|
||||||
const hook = new Collection();
|
|
||||||
const requestDefaults = {
|
|
||||||
baseUrl: request.endpoint.DEFAULTS.baseUrl,
|
|
||||||
headers: {},
|
|
||||||
request: Object.assign({}, options.request, {
|
|
||||||
hook: hook.bind(null, "request"),
|
|
||||||
}),
|
|
||||||
mediaType: {
|
|
||||||
previews: [],
|
|
||||||
format: "",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
// prepend default user agent with `options.userAgent` if set
|
|
||||||
requestDefaults.headers["user-agent"] = [
|
|
||||||
options.userAgent,
|
|
||||||
`octokit-core.js/${VERSION} ${getUserAgent()}`,
|
|
||||||
]
|
|
||||||
.filter(Boolean)
|
|
||||||
.join(" ");
|
|
||||||
if (options.baseUrl) {
|
|
||||||
requestDefaults.baseUrl = options.baseUrl;
|
|
||||||
}
|
|
||||||
if (options.previews) {
|
|
||||||
requestDefaults.mediaType.previews = options.previews;
|
|
||||||
}
|
|
||||||
if (options.timeZone) {
|
|
||||||
requestDefaults.headers["time-zone"] = options.timeZone;
|
|
||||||
}
|
|
||||||
this.request = request.defaults(requestDefaults);
|
|
||||||
this.graphql = withCustomRequest(this.request).defaults({
|
|
||||||
...requestDefaults,
|
|
||||||
baseUrl: requestDefaults.baseUrl.replace(/\/api\/v3$/, "/api"),
|
|
||||||
});
|
|
||||||
this.log = Object.assign({
|
|
||||||
debug: () => { },
|
|
||||||
info: () => { },
|
|
||||||
warn: console.warn.bind(console),
|
|
||||||
error: console.error.bind(console),
|
|
||||||
}, options.log);
|
|
||||||
this.hook = hook;
|
|
||||||
// (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance
|
|
||||||
// is unauthenticated. The `this.auth()` method is a no-op and no request hook is registred.
|
|
||||||
// (2) If only `options.auth` is set, use the default token authentication strategy.
|
|
||||||
// (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance.
|
|
||||||
// TODO: type `options.auth` based on `options.authStrategy`.
|
|
||||||
if (!options.authStrategy) {
|
|
||||||
if (!options.auth) {
|
|
||||||
// (1)
|
|
||||||
this.auth = async () => ({
|
|
||||||
type: "unauthenticated",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// (2)
|
|
||||||
const auth = createTokenAuth(options.auth);
|
|
||||||
// @ts-ignore ¯\_(ツ)_/¯
|
|
||||||
hook.wrap("request", auth.hook);
|
|
||||||
this.auth = auth;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const auth = options.authStrategy(Object.assign({
|
|
||||||
request: this.request,
|
|
||||||
}, options.auth));
|
|
||||||
// @ts-ignore ¯\_(ツ)_/¯
|
|
||||||
hook.wrap("request", auth.hook);
|
|
||||||
this.auth = auth;
|
|
||||||
}
|
|
||||||
// apply plugins
|
|
||||||
// https://stackoverflow.com/a/16345172
|
|
||||||
const classConstructor = this.constructor;
|
|
||||||
classConstructor.plugins.forEach((plugin) => {
|
|
||||||
Object.assign(this, plugin(this, options));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
static defaults(defaults) {
|
|
||||||
const OctokitWithDefaults = class extends this {
|
|
||||||
constructor(...args) {
|
|
||||||
const options = args[0] || {};
|
|
||||||
if (typeof defaults === "function") {
|
|
||||||
super(defaults(options));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent
|
|
||||||
? {
|
|
||||||
userAgent: `${options.userAgent} ${defaults.userAgent}`,
|
|
||||||
}
|
|
||||||
: null));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return OctokitWithDefaults;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Attach a plugin (or many) to your Octokit instance.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)
|
|
||||||
*/
|
|
||||||
static plugin(...newPlugins) {
|
|
||||||
var _a;
|
|
||||||
const currentPlugins = this.plugins;
|
|
||||||
const NewOctokit = (_a = class extends this {
|
|
||||||
},
|
|
||||||
_a.plugins = currentPlugins.concat(newPlugins.filter((plugin) => !currentPlugins.includes(plugin))),
|
|
||||||
_a);
|
|
||||||
return NewOctokit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Octokit.VERSION = VERSION;
|
|
||||||
Octokit.plugins = [];
|
|
||||||
|
|
||||||
export { Octokit };
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
1
node_modules/@octokit/core/dist-web/index.js.map
generated
vendored
1
node_modules/@octokit/core/dist-web/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
93
node_modules/@octokit/core/package.json
generated
vendored
93
node_modules/@octokit/core/package.json
generated
vendored
@ -1,93 +0,0 @@
|
|||||||
{
|
|
||||||
"_args": [
|
|
||||||
[
|
|
||||||
"@octokit/core@3.1.1",
|
|
||||||
"/home/aszczucz/scm/aszc/change-string-case-action"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"_from": "@octokit/core@3.1.1",
|
|
||||||
"_id": "@octokit/core@3.1.1",
|
|
||||||
"_inBundle": false,
|
|
||||||
"_integrity": "sha512-cQ2HGrtyNJ1IBxpTP1U5m/FkMAJvgw7d2j1q3c9P0XUuYilEgF6e4naTpsgm4iVcQeOnccZlw7XHRIUBy0ymcg==",
|
|
||||||
"_location": "/@octokit/core",
|
|
||||||
"_phantomChildren": {},
|
|
||||||
"_requested": {
|
|
||||||
"type": "version",
|
|
||||||
"registry": true,
|
|
||||||
"raw": "@octokit/core@3.1.1",
|
|
||||||
"name": "@octokit/core",
|
|
||||||
"escapedName": "@octokit%2fcore",
|
|
||||||
"scope": "@octokit",
|
|
||||||
"rawSpec": "3.1.1",
|
|
||||||
"saveSpec": null,
|
|
||||||
"fetchSpec": "3.1.1"
|
|
||||||
},
|
|
||||||
"_requiredBy": [
|
|
||||||
"/@actions/github"
|
|
||||||
],
|
|
||||||
"_resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.1.1.tgz",
|
|
||||||
"_spec": "3.1.1",
|
|
||||||
"_where": "/home/aszczucz/scm/aszc/change-string-case-action",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/octokit/core.js/issues"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@octokit/auth-token": "^2.4.0",
|
|
||||||
"@octokit/graphql": "^4.3.1",
|
|
||||||
"@octokit/request": "^5.4.0",
|
|
||||||
"@octokit/types": "^5.0.0",
|
|
||||||
"before-after-hook": "^2.1.0",
|
|
||||||
"universal-user-agent": "^6.0.0"
|
|
||||||
},
|
|
||||||
"description": "Extendable client for GitHub's REST & GraphQL APIs",
|
|
||||||
"devDependencies": {
|
|
||||||
"@octokit/auth": "^2.0.0",
|
|
||||||
"@pika/pack": "^0.5.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.3.1",
|
|
||||||
"@types/jest": "^26.0.0",
|
|
||||||
"@types/lolex": "^5.1.0",
|
|
||||||
"@types/node": "^14.0.4",
|
|
||||||
"@types/node-fetch": "^2.5.0",
|
|
||||||
"fetch-mock": "^9.0.0",
|
|
||||||
"http-proxy-agent": "^4.0.1",
|
|
||||||
"jest": "^25.1.0",
|
|
||||||
"lolex": "^6.0.0",
|
|
||||||
"prettier": "^2.0.4",
|
|
||||||
"proxy": "^1.0.1",
|
|
||||||
"semantic-release": "^17.0.0",
|
|
||||||
"semantic-release-plugin-update-version-in-files": "^1.0.0",
|
|
||||||
"ts-jest": "^25.1.0",
|
|
||||||
"typescript": "^3.5.3"
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"dist-*/",
|
|
||||||
"bin/"
|
|
||||||
],
|
|
||||||
"homepage": "https://github.com/octokit/core.js#readme",
|
|
||||||
"keywords": [
|
|
||||||
"octokit",
|
|
||||||
"github",
|
|
||||||
"api",
|
|
||||||
"sdk",
|
|
||||||
"toolkit"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"main": "dist-node/index.js",
|
|
||||||
"module": "dist-web/index.js",
|
|
||||||
"name": "@octokit/core",
|
|
||||||
"pika": true,
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/octokit/core.js.git"
|
|
||||||
},
|
|
||||||
"sideEffects": false,
|
|
||||||
"source": "dist-src/index.js",
|
|
||||||
"types": "dist-types/index.d.ts",
|
|
||||||
"version": "3.1.1"
|
|
||||||
}
|
|
21
node_modules/@octokit/endpoint/LICENSE
generated
vendored
21
node_modules/@octokit/endpoint/LICENSE
generated
vendored
@ -1,21 +0,0 @@
|
|||||||
The MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2018 Octokit contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
421
node_modules/@octokit/endpoint/README.md
generated
vendored
421
node_modules/@octokit/endpoint/README.md
generated
vendored
@ -1,421 +0,0 @@
|
|||||||
# endpoint.js
|
|
||||||
|
|
||||||
> Turns GitHub REST API endpoints into generic request options
|
|
||||||
|
|
||||||
[![@latest](https://img.shields.io/npm/v/@octokit/endpoint.svg)](https://www.npmjs.com/package/@octokit/endpoint)
|
|
||||||
![Build Status](https://github.com/octokit/endpoint.js/workflows/Test/badge.svg)
|
|
||||||
|
|
||||||
`@octokit/endpoint` combines [GitHub REST API routes](https://developer.github.com/v3/) with your parameters and turns them into generic request options that can be used in any request library.
|
|
||||||
|
|
||||||
<!-- update table of contents by running `npx markdown-toc README.md -i` -->
|
|
||||||
|
|
||||||
<!-- toc -->
|
|
||||||
|
|
||||||
- [Usage](#usage)
|
|
||||||
- [API](#api)
|
|
||||||
- [`endpoint(route, options)` or `endpoint(options)`](#endpointroute-options-or-endpointoptions)
|
|
||||||
- [`endpoint.defaults()`](#endpointdefaults)
|
|
||||||
- [`endpoint.DEFAULTS`](#endpointdefaults)
|
|
||||||
- [`endpoint.merge(route, options)` or `endpoint.merge(options)`](#endpointmergeroute-options-or-endpointmergeoptions)
|
|
||||||
- [`endpoint.parse()`](#endpointparse)
|
|
||||||
- [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)
|
|
||||||
|
|
||||||
<!-- tocstop -->
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<tbody valign=top align=left>
|
|
||||||
<tr><th>
|
|
||||||
Browsers
|
|
||||||
</th><td width=100%>
|
|
||||||
Load <code>@octokit/endpoint</code> directly from <a href="https://cdn.pika.dev">cdn.pika.dev</a>
|
|
||||||
|
|
||||||
```html
|
|
||||||
<script type="module">
|
|
||||||
import { endpoint } from "https://cdn.pika.dev/@octokit/endpoint";
|
|
||||||
</script>
|
|
||||||
```
|
|
||||||
|
|
||||||
</td></tr>
|
|
||||||
<tr><th>
|
|
||||||
Node
|
|
||||||
</th><td>
|
|
||||||
|
|
||||||
Install with <code>npm install @octokit/endpoint</code>
|
|
||||||
|
|
||||||
```js
|
|
||||||
const { endpoint } = require("@octokit/endpoint");
|
|
||||||
// or: import { endpoint } from "@octokit/endpoint";
|
|
||||||
```
|
|
||||||
|
|
||||||
</td></tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
Example for [List organization repositories](https://developer.github.com/v3/repos/#list-organization-repositories)
|
|
||||||
|
|
||||||
```js
|
|
||||||
const requestOptions = endpoint("GET /orgs/:org/repos", {
|
|
||||||
headers: {
|
|
||||||
authorization: "token 0000000000000000000000000000000000000001",
|
|
||||||
},
|
|
||||||
org: "octokit",
|
|
||||||
type: "private",
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
The resulting `requestOptions` looks as follows
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"method": "GET",
|
|
||||||
"url": "https://api.github.com/orgs/octokit/repos?type=private",
|
|
||||||
"headers": {
|
|
||||||
"accept": "application/vnd.github.v3+json",
|
|
||||||
"authorization": "token 0000000000000000000000000000000000000001",
|
|
||||||
"user-agent": "octokit/endpoint.js v1.2.3"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
You can pass `requestOptions` to common request libraries
|
|
||||||
|
|
||||||
```js
|
|
||||||
const { url, ...options } = requestOptions;
|
|
||||||
// using with fetch (https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
|
|
||||||
fetch(url, options);
|
|
||||||
// using with request (https://github.com/request/request)
|
|
||||||
request(requestOptions);
|
|
||||||
// using with got (https://github.com/sindresorhus/got)
|
|
||||||
got[options.method](url, options);
|
|
||||||
// using with axios
|
|
||||||
axios(requestOptions);
|
|
||||||
```
|
|
||||||
|
|
||||||
## API
|
|
||||||
|
|
||||||
### `endpoint(route, options)` or `endpoint(options)`
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<thead align=left>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
name
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
type
|
|
||||||
</th>
|
|
||||||
<th width=100%>
|
|
||||||
description
|
|
||||||
</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody align=left valign=top>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>route</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
String
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
If set, it has to be a string consisting of URL and the request method, e.g., <code>GET /orgs/:org</code>. If it’s set to a URL, only the method defaults to <code>GET</code>.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>options.method</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
String
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<strong>Required unless <code>route</code> is set.</strong> Any supported <a href="https://developer.github.com/v3/#http-verbs">http verb</a>. <em>Defaults to <code>GET</code></em>.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>options.url</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
String
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<strong>Required unless <code>route</code> is set.</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>.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>options.baseUrl</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
String
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<em>Defaults to <code>https://api.github.com</code></em>.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>options.headers</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
Object
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Custom headers. Passed headers are merged with defaults:<br>
|
|
||||||
<em><code>headers['user-agent']</code> defaults to <code>octokit-endpoint.js/1.2.3</code> (where <code>1.2.3</code> is the released version)</em>.<br>
|
|
||||||
<em><code>headers['accept']</code> defaults to <code>application/vnd.github.v3+json</code></em>.<br>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>options.mediaType.format</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
String
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Media type param, such as <code>raw</code>, <code>diff</code>, or <code>text+json</code>. See <a href="https://developer.github.com/v3/media/">Media Types</a>. Setting <code>options.mediaType.format</code> will amend the <code>headers.accept</code> value.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>options.mediaType.previews</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
Array of Strings
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Name of previews, such as <code>mercy</code>, <code>symmetra</code>, or <code>scarlet-witch</code>. See <a href="https://developer.github.com/v3/previews/">API Previews</a>. If <code>options.mediaType.previews</code> was set as default, the new previews will be merged into the default ones. Setting <code>options.mediaType.previews</code> will amend the <code>headers.accept</code> value. <code>options.mediaType.previews</code> will be merged with an existing array set using <code>.defaults()</code>.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>options.data</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
Any
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Set request body directly instead of setting it to JSON based on additional parameters. See <a href="#data-parameter">"The <code>data</code> parameter"</a> below.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<code>options.request</code>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
Object
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Pass custom meta information for the request. The <code>request</code> object will be returned as is.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
All other options will be passed depending on the `method` and `url` options.
|
|
||||||
|
|
||||||
1. If the option key has a placeholder in the `url`, it will be used as the 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 a query parameter.
|
|
||||||
3. Otherwise, the parameter is passed in the request body as a JSON key.
|
|
||||||
|
|
||||||
**Result**
|
|
||||||
|
|
||||||
`endpoint()` is a synchronous method and returns an object with the following keys:
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<thead align=left>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
key
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
type
|
|
||||||
</th>
|
|
||||||
<th width=100%>
|
|
||||||
description
|
|
||||||
</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody align=left valign=top>
|
|
||||||
<tr>
|
|
||||||
<th><code>method</code></th>
|
|
||||||
<td>String</td>
|
|
||||||
<td>The http method. Always lowercase.</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th><code>url</code></th>
|
|
||||||
<td>String</td>
|
|
||||||
<td>The url with placeholders replaced with passed parameters.</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th><code>headers</code></th>
|
|
||||||
<td>Object</td>
|
|
||||||
<td>All header names are lowercased.</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th><code>body</code></th>
|
|
||||||
<td>Any</td>
|
|
||||||
<td>The request body if one is present. Only for <code>PATCH</code>, <code>POST</code>, <code>PUT</code>, <code>DELETE</code> requests.</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th><code>request</code></th>
|
|
||||||
<td>Object</td>
|
|
||||||
<td>Request meta option, it will be returned as it was passed into <code>endpoint()</code></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
### `endpoint.defaults()`
|
|
||||||
|
|
||||||
Override or set default options. Example:
|
|
||||||
|
|
||||||
```js
|
|
||||||
const request = require("request");
|
|
||||||
const myEndpoint = require("@octokit/endpoint").defaults({
|
|
||||||
baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
|
|
||||||
headers: {
|
|
||||||
"user-agent": "myApp/1.2.3",
|
|
||||||
authorization: `token 0000000000000000000000000000000000000001`,
|
|
||||||
},
|
|
||||||
org: "my-project",
|
|
||||||
per_page: 100,
|
|
||||||
});
|
|
||||||
|
|
||||||
request(myEndpoint(`GET /orgs/:org/repos`));
|
|
||||||
```
|
|
||||||
|
|
||||||
You can call `.defaults()` again on the returned method, the defaults will cascade.
|
|
||||||
|
|
||||||
```js
|
|
||||||
const myProjectEndpoint = endpoint.defaults({
|
|
||||||
baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
|
|
||||||
headers: {
|
|
||||||
"user-agent": "myApp/1.2.3",
|
|
||||||
},
|
|
||||||
org: "my-project",
|
|
||||||
});
|
|
||||||
const myProjectEndpointWithAuth = myProjectEndpoint.defaults({
|
|
||||||
headers: {
|
|
||||||
authorization: `token 0000000000000000000000000000000000000001`,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
`myProjectEndpointWithAuth` now defaults the `baseUrl`, `headers['user-agent']`,
|
|
||||||
`org` and `headers['authorization']` on top of `headers['accept']` that is set
|
|
||||||
by the global default.
|
|
||||||
|
|
||||||
### `endpoint.DEFAULTS`
|
|
||||||
|
|
||||||
The current default options.
|
|
||||||
|
|
||||||
```js
|
|
||||||
endpoint.DEFAULTS.baseUrl; // https://api.github.com
|
|
||||||
const myEndpoint = endpoint.defaults({
|
|
||||||
baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
|
|
||||||
});
|
|
||||||
myEndpoint.DEFAULTS.baseUrl; // https://github-enterprise.acme-inc.com/api/v3
|
|
||||||
```
|
|
||||||
|
|
||||||
### `endpoint.merge(route, options)` or `endpoint.merge(options)`
|
|
||||||
|
|
||||||
Get the defaulted endpoint options, but without parsing them into request options:
|
|
||||||
|
|
||||||
```js
|
|
||||||
const myProjectEndpoint = endpoint.defaults({
|
|
||||||
baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
|
|
||||||
headers: {
|
|
||||||
"user-agent": "myApp/1.2.3",
|
|
||||||
},
|
|
||||||
org: "my-project",
|
|
||||||
});
|
|
||||||
myProjectEndpoint.merge("GET /orgs/:org/repos", {
|
|
||||||
headers: {
|
|
||||||
authorization: `token 0000000000000000000000000000000000000001`,
|
|
||||||
},
|
|
||||||
org: "my-secret-project",
|
|
||||||
type: "private",
|
|
||||||
});
|
|
||||||
|
|
||||||
// {
|
|
||||||
// baseUrl: 'https://github-enterprise.acme-inc.com/api/v3',
|
|
||||||
// method: 'GET',
|
|
||||||
// url: '/orgs/:org/repos',
|
|
||||||
// headers: {
|
|
||||||
// accept: 'application/vnd.github.v3+json',
|
|
||||||
// authorization: `token 0000000000000000000000000000000000000001`,
|
|
||||||
// 'user-agent': 'myApp/1.2.3'
|
|
||||||
// },
|
|
||||||
// org: 'my-secret-project',
|
|
||||||
// type: 'private'
|
|
||||||
// }
|
|
||||||
```
|
|
||||||
|
|
||||||
### `endpoint.parse()`
|
|
||||||
|
|
||||||
Stateless method to turn endpoint options into request options. Calling
|
|
||||||
`endpoint(options)` is the same as calling `endpoint.parse(endpoint.merge(options))`.
|
|
||||||
|
|
||||||
## Special cases
|
|
||||||
|
|
||||||
<a name="data-parameter"></a>
|
|
||||||
|
|
||||||
### The `data` parameter – set request body directly
|
|
||||||
|
|
||||||
Some endpoints such as [Render a Markdown document in raw mode](https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode) don’t have parameters that are sent as request body keys, instead, the request body needs to be set directly. In these cases, set the `data` parameter.
|
|
||||||
|
|
||||||
```js
|
|
||||||
const options = endpoint("POST /markdown/raw", {
|
|
||||||
data: "Hello world github/linguist#1 **cool**, and #1!",
|
|
||||||
headers: {
|
|
||||||
accept: "text/html;charset=utf-8",
|
|
||||||
"content-type": "text/plain",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
// options is
|
|
||||||
// {
|
|
||||||
// method: 'post',
|
|
||||||
// url: 'https://api.github.com/markdown/raw',
|
|
||||||
// headers: {
|
|
||||||
// accept: 'text/html;charset=utf-8',
|
|
||||||
// 'content-type': 'text/plain',
|
|
||||||
// 'user-agent': userAgent
|
|
||||||
// },
|
|
||||||
// body: 'Hello world github/linguist#1 **cool**, and #1!'
|
|
||||||
// }
|
|
||||||
```
|
|
||||||
|
|
||||||
### Set parameters for both the URL/query and the request body
|
|
||||||
|
|
||||||
There are API endpoints that accept both query parameters as well as a body. In that case, you need to add the query parameters as templates to `options.url`, as defined in the [RFC 6570 URI Template specification](https://tools.ietf.org/html/rfc6570).
|
|
||||||
|
|
||||||
Example
|
|
||||||
|
|
||||||
```js
|
|
||||||
endpoint(
|
|
||||||
"POST https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}",
|
|
||||||
{
|
|
||||||
name: "example.zip",
|
|
||||||
label: "short description",
|
|
||||||
headers: {
|
|
||||||
"content-type": "text/plain",
|
|
||||||
"content-length": 14,
|
|
||||||
authorization: `token 0000000000000000000000000000000000000001`,
|
|
||||||
},
|
|
||||||
data: "Hello, world!",
|
|
||||||
}
|
|
||||||
);
|
|
||||||
```
|
|
||||||
|
|
||||||
## LICENSE
|
|
||||||
|
|
||||||
[MIT](LICENSE)
|
|
379
node_modules/@octokit/endpoint/dist-node/index.js
generated
vendored
379
node_modules/@octokit/endpoint/dist-node/index.js
generated
vendored
@ -1,379 +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 isPlainObject = _interopDefault(require('is-plain-object'));
|
|
||||||
var universalUserAgent = require('universal-user-agent');
|
|
||||||
|
|
||||||
function lowercaseKeys(object) {
|
|
||||||
if (!object) {
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
return Object.keys(object).reduce((newObj, key) => {
|
|
||||||
newObj[key.toLowerCase()] = object[key];
|
|
||||||
return newObj;
|
|
||||||
}, {});
|
|
||||||
}
|
|
||||||
|
|
||||||
function mergeDeep(defaults, options) {
|
|
||||||
const result = Object.assign({}, defaults);
|
|
||||||
Object.keys(options).forEach(key => {
|
|
||||||
if (isPlainObject(options[key])) {
|
|
||||||
if (!(key in defaults)) Object.assign(result, {
|
|
||||||
[key]: options[key]
|
|
||||||
});else result[key] = mergeDeep(defaults[key], options[key]);
|
|
||||||
} else {
|
|
||||||
Object.assign(result, {
|
|
||||||
[key]: options[key]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function merge(defaults, route, options) {
|
|
||||||
if (typeof route === "string") {
|
|
||||||
let [method, url] = route.split(" ");
|
|
||||||
options = Object.assign(url ? {
|
|
||||||
method,
|
|
||||||
url
|
|
||||||
} : {
|
|
||||||
url: method
|
|
||||||
}, options);
|
|
||||||
} else {
|
|
||||||
options = Object.assign({}, route);
|
|
||||||
} // lowercase header names before merging with defaults to avoid duplicates
|
|
||||||
|
|
||||||
|
|
||||||
options.headers = lowercaseKeys(options.headers);
|
|
||||||
const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten
|
|
||||||
|
|
||||||
if (defaults && defaults.mediaType.previews.length) {
|
|
||||||
mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews);
|
|
||||||
}
|
|
||||||
|
|
||||||
mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, ""));
|
|
||||||
return mergedOptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
function addQueryParameters(url, parameters) {
|
|
||||||
const separator = /\?/.test(url) ? "&" : "?";
|
|
||||||
const names = Object.keys(parameters);
|
|
||||||
|
|
||||||
if (names.length === 0) {
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
|
|
||||||
return url + separator + names.map(name => {
|
|
||||||
if (name === "q") {
|
|
||||||
return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+");
|
|
||||||
}
|
|
||||||
|
|
||||||
return `${name}=${encodeURIComponent(parameters[name])}`;
|
|
||||||
}).join("&");
|
|
||||||
}
|
|
||||||
|
|
||||||
const urlVariableRegex = /\{[^}]+\}/g;
|
|
||||||
|
|
||||||
function removeNonChars(variableName) {
|
|
||||||
return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
|
|
||||||
}
|
|
||||||
|
|
||||||
function extractUrlVariableNames(url) {
|
|
||||||
const matches = url.match(urlVariableRegex);
|
|
||||||
|
|
||||||
if (!matches) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
|
|
||||||
}
|
|
||||||
|
|
||||||
function omit(object, keysToOmit) {
|
|
||||||
return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => {
|
|
||||||
obj[key] = object[key];
|
|
||||||
return obj;
|
|
||||||
}, {});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Based on https://github.com/bramstein/url-template, licensed under BSD
|
|
||||||
// TODO: create separate package.
|
|
||||||
//
|
|
||||||
// Copyright (c) 2012-2014, Bram Stein
|
|
||||||
// All rights reserved.
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions
|
|
||||||
// are met:
|
|
||||||
// 1. Redistributions of source code must retain the above copyright
|
|
||||||
// notice, this list of conditions and the following disclaimer.
|
|
||||||
// 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
// notice, this list of conditions and the following disclaimer in the
|
|
||||||
// documentation and/or other materials provided with the distribution.
|
|
||||||
// 3. The name of the author may not be used to endorse or promote products
|
|
||||||
// derived from this software without specific prior written permission.
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
|
|
||||||
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
|
||||||
// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
|
||||||
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
||||||
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
|
||||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
||||||
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
/* istanbul ignore file */
|
|
||||||
function encodeReserved(str) {
|
|
||||||
return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {
|
|
||||||
if (!/%[0-9A-Fa-f]/.test(part)) {
|
|
||||||
part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
|
|
||||||
}
|
|
||||||
|
|
||||||
return part;
|
|
||||||
}).join("");
|
|
||||||
}
|
|
||||||
|
|
||||||
function encodeUnreserved(str) {
|
|
||||||
return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
|
|
||||||
return "%" + c.charCodeAt(0).toString(16).toUpperCase();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function encodeValue(operator, value, key) {
|
|
||||||
value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
|
|
||||||
|
|
||||||
if (key) {
|
|
||||||
return encodeUnreserved(key) + "=" + value;
|
|
||||||
} else {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function isDefined(value) {
|
|
||||||
return value !== undefined && value !== null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function isKeyOperator(operator) {
|
|
||||||
return operator === ";" || operator === "&" || operator === "?";
|
|
||||||
}
|
|
||||||
|
|
||||||
function getValues(context, operator, key, modifier) {
|
|
||||||
var value = context[key],
|
|
||||||
result = [];
|
|
||||||
|
|
||||||
if (isDefined(value) && value !== "") {
|
|
||||||
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
||||||
value = value.toString();
|
|
||||||
|
|
||||||
if (modifier && modifier !== "*") {
|
|
||||||
value = value.substring(0, parseInt(modifier, 10));
|
|
||||||
}
|
|
||||||
|
|
||||||
result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
|
|
||||||
} else {
|
|
||||||
if (modifier === "*") {
|
|
||||||
if (Array.isArray(value)) {
|
|
||||||
value.filter(isDefined).forEach(function (value) {
|
|
||||||
result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
Object.keys(value).forEach(function (k) {
|
|
||||||
if (isDefined(value[k])) {
|
|
||||||
result.push(encodeValue(operator, value[k], k));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
const tmp = [];
|
|
||||||
|
|
||||||
if (Array.isArray(value)) {
|
|
||||||
value.filter(isDefined).forEach(function (value) {
|
|
||||||
tmp.push(encodeValue(operator, value));
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
Object.keys(value).forEach(function (k) {
|
|
||||||
if (isDefined(value[k])) {
|
|
||||||
tmp.push(encodeUnreserved(k));
|
|
||||||
tmp.push(encodeValue(operator, value[k].toString()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isKeyOperator(operator)) {
|
|
||||||
result.push(encodeUnreserved(key) + "=" + tmp.join(","));
|
|
||||||
} else if (tmp.length !== 0) {
|
|
||||||
result.push(tmp.join(","));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (operator === ";") {
|
|
||||||
if (isDefined(value)) {
|
|
||||||
result.push(encodeUnreserved(key));
|
|
||||||
}
|
|
||||||
} else if (value === "" && (operator === "&" || operator === "?")) {
|
|
||||||
result.push(encodeUnreserved(key) + "=");
|
|
||||||
} else if (value === "") {
|
|
||||||
result.push("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function parseUrl(template) {
|
|
||||||
return {
|
|
||||||
expand: expand.bind(null, template)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function expand(template, context) {
|
|
||||||
var operators = ["+", "#", ".", "/", ";", "?", "&"];
|
|
||||||
return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) {
|
|
||||||
if (expression) {
|
|
||||||
let operator = "";
|
|
||||||
const values = [];
|
|
||||||
|
|
||||||
if (operators.indexOf(expression.charAt(0)) !== -1) {
|
|
||||||
operator = expression.charAt(0);
|
|
||||||
expression = expression.substr(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
expression.split(/,/g).forEach(function (variable) {
|
|
||||||
var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
|
|
||||||
values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
|
|
||||||
});
|
|
||||||
|
|
||||||
if (operator && operator !== "+") {
|
|
||||||
var separator = ",";
|
|
||||||
|
|
||||||
if (operator === "?") {
|
|
||||||
separator = "&";
|
|
||||||
} else if (operator !== "#") {
|
|
||||||
separator = operator;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (values.length !== 0 ? operator : "") + values.join(separator);
|
|
||||||
} else {
|
|
||||||
return values.join(",");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return encodeReserved(literal);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function parse(options) {
|
|
||||||
// https://fetch.spec.whatwg.org/#methods
|
|
||||||
let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible
|
|
||||||
|
|
||||||
let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{+$1}");
|
|
||||||
let headers = Object.assign({}, options.headers);
|
|
||||||
let body;
|
|
||||||
let parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); // extract variable names from URL to calculate remaining variables later
|
|
||||||
|
|
||||||
const urlVariableNames = extractUrlVariableNames(url);
|
|
||||||
url = parseUrl(url).expand(parameters);
|
|
||||||
|
|
||||||
if (!/^http/.test(url)) {
|
|
||||||
url = options.baseUrl + url;
|
|
||||||
}
|
|
||||||
|
|
||||||
const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat("baseUrl");
|
|
||||||
const remainingParameters = omit(parameters, omittedParameters);
|
|
||||||
const isBinaryRequset = /application\/octet-stream/i.test(headers.accept);
|
|
||||||
|
|
||||||
if (!isBinaryRequset) {
|
|
||||||
if (options.mediaType.format) {
|
|
||||||
// e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw
|
|
||||||
headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(",");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (options.mediaType.previews.length) {
|
|
||||||
const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
|
|
||||||
headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => {
|
|
||||||
const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
|
|
||||||
return `application/vnd.github.${preview}-preview${format}`;
|
|
||||||
}).join(",");
|
|
||||||
}
|
|
||||||
} // for GET/HEAD requests, set URL query parameters from remaining parameters
|
|
||||||
// for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters
|
|
||||||
|
|
||||||
|
|
||||||
if (["GET", "HEAD"].includes(method)) {
|
|
||||||
url = addQueryParameters(url, remainingParameters);
|
|
||||||
} else {
|
|
||||||
if ("data" in remainingParameters) {
|
|
||||||
body = remainingParameters.data;
|
|
||||||
} else {
|
|
||||||
if (Object.keys(remainingParameters).length) {
|
|
||||||
body = remainingParameters;
|
|
||||||
} else {
|
|
||||||
headers["content-length"] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} // default content-type for JSON if body is set
|
|
||||||
|
|
||||||
|
|
||||||
if (!headers["content-type"] && typeof body !== "undefined") {
|
|
||||||
headers["content-type"] = "application/json; charset=utf-8";
|
|
||||||
} // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.
|
|
||||||
// fetch does not allow to set `content-length` header, but we can set body to an empty string
|
|
||||||
|
|
||||||
|
|
||||||
if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
|
|
||||||
body = "";
|
|
||||||
} // Only return body/request keys if present
|
|
||||||
|
|
||||||
|
|
||||||
return Object.assign({
|
|
||||||
method,
|
|
||||||
url,
|
|
||||||
headers
|
|
||||||
}, typeof body !== "undefined" ? {
|
|
||||||
body
|
|
||||||
} : null, options.request ? {
|
|
||||||
request: options.request
|
|
||||||
} : null);
|
|
||||||
}
|
|
||||||
|
|
||||||
function endpointWithDefaults(defaults, route, options) {
|
|
||||||
return parse(merge(defaults, route, options));
|
|
||||||
}
|
|
||||||
|
|
||||||
function withDefaults(oldDefaults, newDefaults) {
|
|
||||||
const DEFAULTS = merge(oldDefaults, newDefaults);
|
|
||||||
const endpoint = endpointWithDefaults.bind(null, DEFAULTS);
|
|
||||||
return Object.assign(endpoint, {
|
|
||||||
DEFAULTS,
|
|
||||||
defaults: withDefaults.bind(null, DEFAULTS),
|
|
||||||
merge: merge.bind(null, DEFAULTS),
|
|
||||||
parse
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const VERSION = "6.0.5";
|
|
||||||
|
|
||||||
const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url.
|
|
||||||
// So we use RequestParameters and add method as additional required property.
|
|
||||||
|
|
||||||
const DEFAULTS = {
|
|
||||||
method: "GET",
|
|
||||||
baseUrl: "https://api.github.com",
|
|
||||||
headers: {
|
|
||||||
accept: "application/vnd.github.v3+json",
|
|
||||||
"user-agent": userAgent
|
|
||||||
},
|
|
||||||
mediaType: {
|
|
||||||
format: "",
|
|
||||||
previews: []
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const endpoint = withDefaults(null, DEFAULTS);
|
|
||||||
|
|
||||||
exports.endpoint = endpoint;
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
1
node_modules/@octokit/endpoint/dist-node/index.js.map
generated
vendored
1
node_modules/@octokit/endpoint/dist-node/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
17
node_modules/@octokit/endpoint/dist-src/defaults.js
generated
vendored
17
node_modules/@octokit/endpoint/dist-src/defaults.js
generated
vendored
@ -1,17 +0,0 @@
|
|||||||
import { getUserAgent } from "universal-user-agent";
|
|
||||||
import { VERSION } from "./version";
|
|
||||||
const userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;
|
|
||||||
// DEFAULTS has all properties set that EndpointOptions has, except url.
|
|
||||||
// So we use RequestParameters and add method as additional required property.
|
|
||||||
export const DEFAULTS = {
|
|
||||||
method: "GET",
|
|
||||||
baseUrl: "https://api.github.com",
|
|
||||||
headers: {
|
|
||||||
accept: "application/vnd.github.v3+json",
|
|
||||||
"user-agent": userAgent,
|
|
||||||
},
|
|
||||||
mediaType: {
|
|
||||||
format: "",
|
|
||||||
previews: [],
|
|
||||||
},
|
|
||||||
};
|
|
5
node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js
generated
vendored
5
node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js
generated
vendored
@ -1,5 +0,0 @@
|
|||||||
import { merge } from "./merge";
|
|
||||||
import { parse } from "./parse";
|
|
||||||
export function endpointWithDefaults(defaults, route, options) {
|
|
||||||
return parse(merge(defaults, route, options));
|
|
||||||
}
|
|
3
node_modules/@octokit/endpoint/dist-src/index.js
generated
vendored
3
node_modules/@octokit/endpoint/dist-src/index.js
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
import { withDefaults } from "./with-defaults";
|
|
||||||
import { DEFAULTS } from "./defaults";
|
|
||||||
export const endpoint = withDefaults(null, DEFAULTS);
|
|
22
node_modules/@octokit/endpoint/dist-src/merge.js
generated
vendored
22
node_modules/@octokit/endpoint/dist-src/merge.js
generated
vendored
@ -1,22 +0,0 @@
|
|||||||
import { lowercaseKeys } from "./util/lowercase-keys";
|
|
||||||
import { mergeDeep } from "./util/merge-deep";
|
|
||||||
export function merge(defaults, route, options) {
|
|
||||||
if (typeof route === "string") {
|
|
||||||
let [method, url] = route.split(" ");
|
|
||||||
options = Object.assign(url ? { method, url } : { url: method }, options);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
options = Object.assign({}, route);
|
|
||||||
}
|
|
||||||
// lowercase header names before merging with defaults to avoid duplicates
|
|
||||||
options.headers = lowercaseKeys(options.headers);
|
|
||||||
const mergedOptions = mergeDeep(defaults || {}, options);
|
|
||||||
// mediaType.previews arrays are merged, instead of overwritten
|
|
||||||
if (defaults && defaults.mediaType.previews.length) {
|
|
||||||
mergedOptions.mediaType.previews = defaults.mediaType.previews
|
|
||||||
.filter((preview) => !mergedOptions.mediaType.previews.includes(preview))
|
|
||||||
.concat(mergedOptions.mediaType.previews);
|
|
||||||
}
|
|
||||||
mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, ""));
|
|
||||||
return mergedOptions;
|
|
||||||
}
|
|
81
node_modules/@octokit/endpoint/dist-src/parse.js
generated
vendored
81
node_modules/@octokit/endpoint/dist-src/parse.js
generated
vendored
@ -1,81 +0,0 @@
|
|||||||
import { addQueryParameters } from "./util/add-query-parameters";
|
|
||||||
import { extractUrlVariableNames } from "./util/extract-url-variable-names";
|
|
||||||
import { omit } from "./util/omit";
|
|
||||||
import { parseUrl } from "./util/url-template";
|
|
||||||
export function parse(options) {
|
|
||||||
// https://fetch.spec.whatwg.org/#methods
|
|
||||||
let method = options.method.toUpperCase();
|
|
||||||
// replace :varname with {varname} to make it RFC 6570 compatible
|
|
||||||
let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{+$1}");
|
|
||||||
let headers = Object.assign({}, options.headers);
|
|
||||||
let body;
|
|
||||||
let parameters = omit(options, [
|
|
||||||
"method",
|
|
||||||
"baseUrl",
|
|
||||||
"url",
|
|
||||||
"headers",
|
|
||||||
"request",
|
|
||||||
"mediaType",
|
|
||||||
]);
|
|
||||||
// extract variable names from URL to calculate remaining variables later
|
|
||||||
const urlVariableNames = extractUrlVariableNames(url);
|
|
||||||
url = parseUrl(url).expand(parameters);
|
|
||||||
if (!/^http/.test(url)) {
|
|
||||||
url = options.baseUrl + url;
|
|
||||||
}
|
|
||||||
const omittedParameters = Object.keys(options)
|
|
||||||
.filter((option) => urlVariableNames.includes(option))
|
|
||||||
.concat("baseUrl");
|
|
||||||
const remainingParameters = omit(parameters, omittedParameters);
|
|
||||||
const isBinaryRequset = /application\/octet-stream/i.test(headers.accept);
|
|
||||||
if (!isBinaryRequset) {
|
|
||||||
if (options.mediaType.format) {
|
|
||||||
// e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw
|
|
||||||
headers.accept = headers.accept
|
|
||||||
.split(/,/)
|
|
||||||
.map((preview) => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`))
|
|
||||||
.join(",");
|
|
||||||
}
|
|
||||||
if (options.mediaType.previews.length) {
|
|
||||||
const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
|
|
||||||
headers.accept = previewsFromAcceptHeader
|
|
||||||
.concat(options.mediaType.previews)
|
|
||||||
.map((preview) => {
|
|
||||||
const format = options.mediaType.format
|
|
||||||
? `.${options.mediaType.format}`
|
|
||||||
: "+json";
|
|
||||||
return `application/vnd.github.${preview}-preview${format}`;
|
|
||||||
})
|
|
||||||
.join(",");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// for GET/HEAD requests, set URL query parameters from remaining parameters
|
|
||||||
// for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters
|
|
||||||
if (["GET", "HEAD"].includes(method)) {
|
|
||||||
url = addQueryParameters(url, remainingParameters);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if ("data" in remainingParameters) {
|
|
||||||
body = remainingParameters.data;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (Object.keys(remainingParameters).length) {
|
|
||||||
body = remainingParameters;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
headers["content-length"] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// default content-type for JSON if body is set
|
|
||||||
if (!headers["content-type"] && typeof body !== "undefined") {
|
|
||||||
headers["content-type"] = "application/json; charset=utf-8";
|
|
||||||
}
|
|
||||||
// GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.
|
|
||||||
// fetch does not allow to set `content-length` header, but we can set body to an empty string
|
|
||||||
if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
|
|
||||||
body = "";
|
|
||||||
}
|
|
||||||
// Only return body/request keys if present
|
|
||||||
return Object.assign({ method, url, headers }, typeof body !== "undefined" ? { body } : null, options.request ? { request: options.request } : null);
|
|
||||||
}
|
|
17
node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js
generated
vendored
17
node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js
generated
vendored
@ -1,17 +0,0 @@
|
|||||||
export function addQueryParameters(url, parameters) {
|
|
||||||
const separator = /\?/.test(url) ? "&" : "?";
|
|
||||||
const names = Object.keys(parameters);
|
|
||||||
if (names.length === 0) {
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
return (url +
|
|
||||||
separator +
|
|
||||||
names
|
|
||||||
.map((name) => {
|
|
||||||
if (name === "q") {
|
|
||||||
return ("q=" + parameters.q.split("+").map(encodeURIComponent).join("+"));
|
|
||||||
}
|
|
||||||
return `${name}=${encodeURIComponent(parameters[name])}`;
|
|
||||||
})
|
|
||||||
.join("&"));
|
|
||||||
}
|
|
11
node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js
generated
vendored
11
node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js
generated
vendored
@ -1,11 +0,0 @@
|
|||||||
const urlVariableRegex = /\{[^}]+\}/g;
|
|
||||||
function removeNonChars(variableName) {
|
|
||||||
return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
|
|
||||||
}
|
|
||||||
export function extractUrlVariableNames(url) {
|
|
||||||
const matches = url.match(urlVariableRegex);
|
|
||||||
if (!matches) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
|
|
||||||
}
|
|
9
node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js
generated
vendored
9
node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js
generated
vendored
@ -1,9 +0,0 @@
|
|||||||
export function lowercaseKeys(object) {
|
|
||||||
if (!object) {
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
return Object.keys(object).reduce((newObj, key) => {
|
|
||||||
newObj[key.toLowerCase()] = object[key];
|
|
||||||
return newObj;
|
|
||||||
}, {});
|
|
||||||
}
|
|
16
node_modules/@octokit/endpoint/dist-src/util/merge-deep.js
generated
vendored
16
node_modules/@octokit/endpoint/dist-src/util/merge-deep.js
generated
vendored
@ -1,16 +0,0 @@
|
|||||||
import isPlainObject from "is-plain-object";
|
|
||||||
export function mergeDeep(defaults, options) {
|
|
||||||
const result = Object.assign({}, defaults);
|
|
||||||
Object.keys(options).forEach((key) => {
|
|
||||||
if (isPlainObject(options[key])) {
|
|
||||||
if (!(key in defaults))
|
|
||||||
Object.assign(result, { [key]: options[key] });
|
|
||||||
else
|
|
||||||
result[key] = mergeDeep(defaults[key], options[key]);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Object.assign(result, { [key]: options[key] });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return result;
|
|
||||||
}
|
|
8
node_modules/@octokit/endpoint/dist-src/util/omit.js
generated
vendored
8
node_modules/@octokit/endpoint/dist-src/util/omit.js
generated
vendored
@ -1,8 +0,0 @@
|
|||||||
export function omit(object, keysToOmit) {
|
|
||||||
return Object.keys(object)
|
|
||||||
.filter((option) => !keysToOmit.includes(option))
|
|
||||||
.reduce((obj, key) => {
|
|
||||||
obj[key] = object[key];
|
|
||||||
return obj;
|
|
||||||
}, {});
|
|
||||||
}
|
|
164
node_modules/@octokit/endpoint/dist-src/util/url-template.js
generated
vendored
164
node_modules/@octokit/endpoint/dist-src/util/url-template.js
generated
vendored
@ -1,164 +0,0 @@
|
|||||||
// Based on https://github.com/bramstein/url-template, licensed under BSD
|
|
||||||
// TODO: create separate package.
|
|
||||||
//
|
|
||||||
// Copyright (c) 2012-2014, Bram Stein
|
|
||||||
// All rights reserved.
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions
|
|
||||||
// are met:
|
|
||||||
// 1. Redistributions of source code must retain the above copyright
|
|
||||||
// notice, this list of conditions and the following disclaimer.
|
|
||||||
// 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
// notice, this list of conditions and the following disclaimer in the
|
|
||||||
// documentation and/or other materials provided with the distribution.
|
|
||||||
// 3. The name of the author may not be used to endorse or promote products
|
|
||||||
// derived from this software without specific prior written permission.
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
|
|
||||||
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
|
||||||
// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
|
||||||
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
||||||
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
|
||||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
||||||
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
/* istanbul ignore file */
|
|
||||||
function encodeReserved(str) {
|
|
||||||
return str
|
|
||||||
.split(/(%[0-9A-Fa-f]{2})/g)
|
|
||||||
.map(function (part) {
|
|
||||||
if (!/%[0-9A-Fa-f]/.test(part)) {
|
|
||||||
part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
|
|
||||||
}
|
|
||||||
return part;
|
|
||||||
})
|
|
||||||
.join("");
|
|
||||||
}
|
|
||||||
function encodeUnreserved(str) {
|
|
||||||
return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
|
|
||||||
return "%" + c.charCodeAt(0).toString(16).toUpperCase();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function encodeValue(operator, value, key) {
|
|
||||||
value =
|
|
||||||
operator === "+" || operator === "#"
|
|
||||||
? encodeReserved(value)
|
|
||||||
: encodeUnreserved(value);
|
|
||||||
if (key) {
|
|
||||||
return encodeUnreserved(key) + "=" + value;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function isDefined(value) {
|
|
||||||
return value !== undefined && value !== null;
|
|
||||||
}
|
|
||||||
function isKeyOperator(operator) {
|
|
||||||
return operator === ";" || operator === "&" || operator === "?";
|
|
||||||
}
|
|
||||||
function getValues(context, operator, key, modifier) {
|
|
||||||
var value = context[key], result = [];
|
|
||||||
if (isDefined(value) && value !== "") {
|
|
||||||
if (typeof value === "string" ||
|
|
||||||
typeof value === "number" ||
|
|
||||||
typeof value === "boolean") {
|
|
||||||
value = value.toString();
|
|
||||||
if (modifier && modifier !== "*") {
|
|
||||||
value = value.substring(0, parseInt(modifier, 10));
|
|
||||||
}
|
|
||||||
result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (modifier === "*") {
|
|
||||||
if (Array.isArray(value)) {
|
|
||||||
value.filter(isDefined).forEach(function (value) {
|
|
||||||
result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Object.keys(value).forEach(function (k) {
|
|
||||||
if (isDefined(value[k])) {
|
|
||||||
result.push(encodeValue(operator, value[k], k));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const tmp = [];
|
|
||||||
if (Array.isArray(value)) {
|
|
||||||
value.filter(isDefined).forEach(function (value) {
|
|
||||||
tmp.push(encodeValue(operator, value));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Object.keys(value).forEach(function (k) {
|
|
||||||
if (isDefined(value[k])) {
|
|
||||||
tmp.push(encodeUnreserved(k));
|
|
||||||
tmp.push(encodeValue(operator, value[k].toString()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (isKeyOperator(operator)) {
|
|
||||||
result.push(encodeUnreserved(key) + "=" + tmp.join(","));
|
|
||||||
}
|
|
||||||
else if (tmp.length !== 0) {
|
|
||||||
result.push(tmp.join(","));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (operator === ";") {
|
|
||||||
if (isDefined(value)) {
|
|
||||||
result.push(encodeUnreserved(key));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (value === "" && (operator === "&" || operator === "?")) {
|
|
||||||
result.push(encodeUnreserved(key) + "=");
|
|
||||||
}
|
|
||||||
else if (value === "") {
|
|
||||||
result.push("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
export function parseUrl(template) {
|
|
||||||
return {
|
|
||||||
expand: expand.bind(null, template),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function expand(template, context) {
|
|
||||||
var operators = ["+", "#", ".", "/", ";", "?", "&"];
|
|
||||||
return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) {
|
|
||||||
if (expression) {
|
|
||||||
let operator = "";
|
|
||||||
const values = [];
|
|
||||||
if (operators.indexOf(expression.charAt(0)) !== -1) {
|
|
||||||
operator = expression.charAt(0);
|
|
||||||
expression = expression.substr(1);
|
|
||||||
}
|
|
||||||
expression.split(/,/g).forEach(function (variable) {
|
|
||||||
var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
|
|
||||||
values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
|
|
||||||
});
|
|
||||||
if (operator && operator !== "+") {
|
|
||||||
var separator = ",";
|
|
||||||
if (operator === "?") {
|
|
||||||
separator = "&";
|
|
||||||
}
|
|
||||||
else if (operator !== "#") {
|
|
||||||
separator = operator;
|
|
||||||
}
|
|
||||||
return (values.length !== 0 ? operator : "") + values.join(separator);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return values.join(",");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return encodeReserved(literal);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
1
node_modules/@octokit/endpoint/dist-src/version.js
generated
vendored
1
node_modules/@octokit/endpoint/dist-src/version.js
generated
vendored
@ -1 +0,0 @@
|
|||||||
export const VERSION = "6.0.5";
|
|
13
node_modules/@octokit/endpoint/dist-src/with-defaults.js
generated
vendored
13
node_modules/@octokit/endpoint/dist-src/with-defaults.js
generated
vendored
@ -1,13 +0,0 @@
|
|||||||
import { endpointWithDefaults } from "./endpoint-with-defaults";
|
|
||||||
import { merge } from "./merge";
|
|
||||||
import { parse } from "./parse";
|
|
||||||
export function withDefaults(oldDefaults, newDefaults) {
|
|
||||||
const DEFAULTS = merge(oldDefaults, newDefaults);
|
|
||||||
const endpoint = endpointWithDefaults.bind(null, DEFAULTS);
|
|
||||||
return Object.assign(endpoint, {
|
|
||||||
DEFAULTS,
|
|
||||||
defaults: withDefaults.bind(null, DEFAULTS),
|
|
||||||
merge: merge.bind(null, DEFAULTS),
|
|
||||||
parse,
|
|
||||||
});
|
|
||||||
}
|
|
2
node_modules/@octokit/endpoint/dist-types/defaults.d.ts
generated
vendored
2
node_modules/@octokit/endpoint/dist-types/defaults.d.ts
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
import { EndpointDefaults } from "@octokit/types";
|
|
||||||
export declare const DEFAULTS: EndpointDefaults;
|
|
3
node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts
generated
vendored
3
node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
import { EndpointOptions, RequestParameters, Route } from "@octokit/types";
|
|
||||||
import { DEFAULTS } from "./defaults";
|
|
||||||
export declare function endpointWithDefaults(defaults: typeof DEFAULTS, route: Route | EndpointOptions, options?: RequestParameters): import("@octokit/types").RequestOptions;
|
|
1
node_modules/@octokit/endpoint/dist-types/index.d.ts
generated
vendored
1
node_modules/@octokit/endpoint/dist-types/index.d.ts
generated
vendored
@ -1 +0,0 @@
|
|||||||
export declare const endpoint: import("@octokit/types").EndpointInterface<object>;
|
|
2
node_modules/@octokit/endpoint/dist-types/merge.d.ts
generated
vendored
2
node_modules/@octokit/endpoint/dist-types/merge.d.ts
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
import { EndpointDefaults, RequestParameters, Route } from "@octokit/types";
|
|
||||||
export declare function merge(defaults: EndpointDefaults | null, route?: Route | RequestParameters, options?: RequestParameters): EndpointDefaults;
|
|
2
node_modules/@octokit/endpoint/dist-types/parse.d.ts
generated
vendored
2
node_modules/@octokit/endpoint/dist-types/parse.d.ts
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
import { EndpointDefaults, RequestOptions } from "@octokit/types";
|
|
||||||
export declare function parse(options: EndpointDefaults): RequestOptions;
|
|
4
node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts
generated
vendored
4
node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts
generated
vendored
@ -1,4 +0,0 @@
|
|||||||
export declare function addQueryParameters(url: string, parameters: {
|
|
||||||
[x: string]: string | undefined;
|
|
||||||
q?: string;
|
|
||||||
}): string;
|
|
1
node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts
generated
vendored
1
node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts
generated
vendored
@ -1 +0,0 @@
|
|||||||
export declare function extractUrlVariableNames(url: string): string[];
|
|
5
node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts
generated
vendored
5
node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts
generated
vendored
@ -1,5 +0,0 @@
|
|||||||
export declare function lowercaseKeys(object?: {
|
|
||||||
[key: string]: any;
|
|
||||||
}): {
|
|
||||||
[key: string]: any;
|
|
||||||
};
|
|
1
node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts
generated
vendored
1
node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts
generated
vendored
@ -1 +0,0 @@
|
|||||||
export declare function mergeDeep(defaults: any, options: any): object;
|
|
5
node_modules/@octokit/endpoint/dist-types/util/omit.d.ts
generated
vendored
5
node_modules/@octokit/endpoint/dist-types/util/omit.d.ts
generated
vendored
@ -1,5 +0,0 @@
|
|||||||
export declare function omit(object: {
|
|
||||||
[key: string]: any;
|
|
||||||
}, keysToOmit: string[]): {
|
|
||||||
[key: string]: any;
|
|
||||||
};
|
|
3
node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts
generated
vendored
3
node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
export declare function parseUrl(template: string): {
|
|
||||||
expand: (context: object) => string;
|
|
||||||
};
|
|
1
node_modules/@octokit/endpoint/dist-types/version.d.ts
generated
vendored
1
node_modules/@octokit/endpoint/dist-types/version.d.ts
generated
vendored
@ -1 +0,0 @@
|
|||||||
export declare const VERSION = "6.0.5";
|
|
2
node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts
generated
vendored
2
node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
import { EndpointInterface, RequestParameters, EndpointDefaults } from "@octokit/types";
|
|
||||||
export declare function withDefaults(oldDefaults: EndpointDefaults | null, newDefaults: RequestParameters): EndpointInterface;
|
|
369
node_modules/@octokit/endpoint/dist-web/index.js
generated
vendored
369
node_modules/@octokit/endpoint/dist-web/index.js
generated
vendored
@ -1,369 +0,0 @@
|
|||||||
import isPlainObject from 'is-plain-object';
|
|
||||||
import { getUserAgent } from 'universal-user-agent';
|
|
||||||
|
|
||||||
function lowercaseKeys(object) {
|
|
||||||
if (!object) {
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
return Object.keys(object).reduce((newObj, key) => {
|
|
||||||
newObj[key.toLowerCase()] = object[key];
|
|
||||||
return newObj;
|
|
||||||
}, {});
|
|
||||||
}
|
|
||||||
|
|
||||||
function mergeDeep(defaults, options) {
|
|
||||||
const result = Object.assign({}, defaults);
|
|
||||||
Object.keys(options).forEach((key) => {
|
|
||||||
if (isPlainObject(options[key])) {
|
|
||||||
if (!(key in defaults))
|
|
||||||
Object.assign(result, { [key]: options[key] });
|
|
||||||
else
|
|
||||||
result[key] = mergeDeep(defaults[key], options[key]);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Object.assign(result, { [key]: options[key] });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function merge(defaults, route, options) {
|
|
||||||
if (typeof route === "string") {
|
|
||||||
let [method, url] = route.split(" ");
|
|
||||||
options = Object.assign(url ? { method, url } : { url: method }, options);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
options = Object.assign({}, route);
|
|
||||||
}
|
|
||||||
// lowercase header names before merging with defaults to avoid duplicates
|
|
||||||
options.headers = lowercaseKeys(options.headers);
|
|
||||||
const mergedOptions = mergeDeep(defaults || {}, options);
|
|
||||||
// mediaType.previews arrays are merged, instead of overwritten
|
|
||||||
if (defaults && defaults.mediaType.previews.length) {
|
|
||||||
mergedOptions.mediaType.previews = defaults.mediaType.previews
|
|
||||||
.filter((preview) => !mergedOptions.mediaType.previews.includes(preview))
|
|
||||||
.concat(mergedOptions.mediaType.previews);
|
|
||||||
}
|
|
||||||
mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, ""));
|
|
||||||
return mergedOptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
function addQueryParameters(url, parameters) {
|
|
||||||
const separator = /\?/.test(url) ? "&" : "?";
|
|
||||||
const names = Object.keys(parameters);
|
|
||||||
if (names.length === 0) {
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
return (url +
|
|
||||||
separator +
|
|
||||||
names
|
|
||||||
.map((name) => {
|
|
||||||
if (name === "q") {
|
|
||||||
return ("q=" + parameters.q.split("+").map(encodeURIComponent).join("+"));
|
|
||||||
}
|
|
||||||
return `${name}=${encodeURIComponent(parameters[name])}`;
|
|
||||||
})
|
|
||||||
.join("&"));
|
|
||||||
}
|
|
||||||
|
|
||||||
const urlVariableRegex = /\{[^}]+\}/g;
|
|
||||||
function removeNonChars(variableName) {
|
|
||||||
return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
|
|
||||||
}
|
|
||||||
function extractUrlVariableNames(url) {
|
|
||||||
const matches = url.match(urlVariableRegex);
|
|
||||||
if (!matches) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
|
|
||||||
}
|
|
||||||
|
|
||||||
function omit(object, keysToOmit) {
|
|
||||||
return Object.keys(object)
|
|
||||||
.filter((option) => !keysToOmit.includes(option))
|
|
||||||
.reduce((obj, key) => {
|
|
||||||
obj[key] = object[key];
|
|
||||||
return obj;
|
|
||||||
}, {});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Based on https://github.com/bramstein/url-template, licensed under BSD
|
|
||||||
// TODO: create separate package.
|
|
||||||
//
|
|
||||||
// Copyright (c) 2012-2014, Bram Stein
|
|
||||||
// All rights reserved.
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions
|
|
||||||
// are met:
|
|
||||||
// 1. Redistributions of source code must retain the above copyright
|
|
||||||
// notice, this list of conditions and the following disclaimer.
|
|
||||||
// 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
// notice, this list of conditions and the following disclaimer in the
|
|
||||||
// documentation and/or other materials provided with the distribution.
|
|
||||||
// 3. The name of the author may not be used to endorse or promote products
|
|
||||||
// derived from this software without specific prior written permission.
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
|
|
||||||
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
|
||||||
// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
|
||||||
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
||||||
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
|
||||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
||||||
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
/* istanbul ignore file */
|
|
||||||
function encodeReserved(str) {
|
|
||||||
return str
|
|
||||||
.split(/(%[0-9A-Fa-f]{2})/g)
|
|
||||||
.map(function (part) {
|
|
||||||
if (!/%[0-9A-Fa-f]/.test(part)) {
|
|
||||||
part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
|
|
||||||
}
|
|
||||||
return part;
|
|
||||||
})
|
|
||||||
.join("");
|
|
||||||
}
|
|
||||||
function encodeUnreserved(str) {
|
|
||||||
return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
|
|
||||||
return "%" + c.charCodeAt(0).toString(16).toUpperCase();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function encodeValue(operator, value, key) {
|
|
||||||
value =
|
|
||||||
operator === "+" || operator === "#"
|
|
||||||
? encodeReserved(value)
|
|
||||||
: encodeUnreserved(value);
|
|
||||||
if (key) {
|
|
||||||
return encodeUnreserved(key) + "=" + value;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function isDefined(value) {
|
|
||||||
return value !== undefined && value !== null;
|
|
||||||
}
|
|
||||||
function isKeyOperator(operator) {
|
|
||||||
return operator === ";" || operator === "&" || operator === "?";
|
|
||||||
}
|
|
||||||
function getValues(context, operator, key, modifier) {
|
|
||||||
var value = context[key], result = [];
|
|
||||||
if (isDefined(value) && value !== "") {
|
|
||||||
if (typeof value === "string" ||
|
|
||||||
typeof value === "number" ||
|
|
||||||
typeof value === "boolean") {
|
|
||||||
value = value.toString();
|
|
||||||
if (modifier && modifier !== "*") {
|
|
||||||
value = value.substring(0, parseInt(modifier, 10));
|
|
||||||
}
|
|
||||||
result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (modifier === "*") {
|
|
||||||
if (Array.isArray(value)) {
|
|
||||||
value.filter(isDefined).forEach(function (value) {
|
|
||||||
result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Object.keys(value).forEach(function (k) {
|
|
||||||
if (isDefined(value[k])) {
|
|
||||||
result.push(encodeValue(operator, value[k], k));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const tmp = [];
|
|
||||||
if (Array.isArray(value)) {
|
|
||||||
value.filter(isDefined).forEach(function (value) {
|
|
||||||
tmp.push(encodeValue(operator, value));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Object.keys(value).forEach(function (k) {
|
|
||||||
if (isDefined(value[k])) {
|
|
||||||
tmp.push(encodeUnreserved(k));
|
|
||||||
tmp.push(encodeValue(operator, value[k].toString()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (isKeyOperator(operator)) {
|
|
||||||
result.push(encodeUnreserved(key) + "=" + tmp.join(","));
|
|
||||||
}
|
|
||||||
else if (tmp.length !== 0) {
|
|
||||||
result.push(tmp.join(","));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (operator === ";") {
|
|
||||||
if (isDefined(value)) {
|
|
||||||
result.push(encodeUnreserved(key));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (value === "" && (operator === "&" || operator === "?")) {
|
|
||||||
result.push(encodeUnreserved(key) + "=");
|
|
||||||
}
|
|
||||||
else if (value === "") {
|
|
||||||
result.push("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
function parseUrl(template) {
|
|
||||||
return {
|
|
||||||
expand: expand.bind(null, template),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function expand(template, context) {
|
|
||||||
var operators = ["+", "#", ".", "/", ";", "?", "&"];
|
|
||||||
return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) {
|
|
||||||
if (expression) {
|
|
||||||
let operator = "";
|
|
||||||
const values = [];
|
|
||||||
if (operators.indexOf(expression.charAt(0)) !== -1) {
|
|
||||||
operator = expression.charAt(0);
|
|
||||||
expression = expression.substr(1);
|
|
||||||
}
|
|
||||||
expression.split(/,/g).forEach(function (variable) {
|
|
||||||
var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
|
|
||||||
values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
|
|
||||||
});
|
|
||||||
if (operator && operator !== "+") {
|
|
||||||
var separator = ",";
|
|
||||||
if (operator === "?") {
|
|
||||||
separator = "&";
|
|
||||||
}
|
|
||||||
else if (operator !== "#") {
|
|
||||||
separator = operator;
|
|
||||||
}
|
|
||||||
return (values.length !== 0 ? operator : "") + values.join(separator);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return values.join(",");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return encodeReserved(literal);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function parse(options) {
|
|
||||||
// https://fetch.spec.whatwg.org/#methods
|
|
||||||
let method = options.method.toUpperCase();
|
|
||||||
// replace :varname with {varname} to make it RFC 6570 compatible
|
|
||||||
let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{+$1}");
|
|
||||||
let headers = Object.assign({}, options.headers);
|
|
||||||
let body;
|
|
||||||
let parameters = omit(options, [
|
|
||||||
"method",
|
|
||||||
"baseUrl",
|
|
||||||
"url",
|
|
||||||
"headers",
|
|
||||||
"request",
|
|
||||||
"mediaType",
|
|
||||||
]);
|
|
||||||
// extract variable names from URL to calculate remaining variables later
|
|
||||||
const urlVariableNames = extractUrlVariableNames(url);
|
|
||||||
url = parseUrl(url).expand(parameters);
|
|
||||||
if (!/^http/.test(url)) {
|
|
||||||
url = options.baseUrl + url;
|
|
||||||
}
|
|
||||||
const omittedParameters = Object.keys(options)
|
|
||||||
.filter((option) => urlVariableNames.includes(option))
|
|
||||||
.concat("baseUrl");
|
|
||||||
const remainingParameters = omit(parameters, omittedParameters);
|
|
||||||
const isBinaryRequset = /application\/octet-stream/i.test(headers.accept);
|
|
||||||
if (!isBinaryRequset) {
|
|
||||||
if (options.mediaType.format) {
|
|
||||||
// e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw
|
|
||||||
headers.accept = headers.accept
|
|
||||||
.split(/,/)
|
|
||||||
.map((preview) => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`))
|
|
||||||
.join(",");
|
|
||||||
}
|
|
||||||
if (options.mediaType.previews.length) {
|
|
||||||
const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
|
|
||||||
headers.accept = previewsFromAcceptHeader
|
|
||||||
.concat(options.mediaType.previews)
|
|
||||||
.map((preview) => {
|
|
||||||
const format = options.mediaType.format
|
|
||||||
? `.${options.mediaType.format}`
|
|
||||||
: "+json";
|
|
||||||
return `application/vnd.github.${preview}-preview${format}`;
|
|
||||||
})
|
|
||||||
.join(",");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// for GET/HEAD requests, set URL query parameters from remaining parameters
|
|
||||||
// for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters
|
|
||||||
if (["GET", "HEAD"].includes(method)) {
|
|
||||||
url = addQueryParameters(url, remainingParameters);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if ("data" in remainingParameters) {
|
|
||||||
body = remainingParameters.data;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (Object.keys(remainingParameters).length) {
|
|
||||||
body = remainingParameters;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
headers["content-length"] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// default content-type for JSON if body is set
|
|
||||||
if (!headers["content-type"] && typeof body !== "undefined") {
|
|
||||||
headers["content-type"] = "application/json; charset=utf-8";
|
|
||||||
}
|
|
||||||
// GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.
|
|
||||||
// fetch does not allow to set `content-length` header, but we can set body to an empty string
|
|
||||||
if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
|
|
||||||
body = "";
|
|
||||||
}
|
|
||||||
// Only return body/request keys if present
|
|
||||||
return Object.assign({ method, url, headers }, typeof body !== "undefined" ? { body } : null, options.request ? { request: options.request } : null);
|
|
||||||
}
|
|
||||||
|
|
||||||
function endpointWithDefaults(defaults, route, options) {
|
|
||||||
return parse(merge(defaults, route, options));
|
|
||||||
}
|
|
||||||
|
|
||||||
function withDefaults(oldDefaults, newDefaults) {
|
|
||||||
const DEFAULTS = merge(oldDefaults, newDefaults);
|
|
||||||
const endpoint = endpointWithDefaults.bind(null, DEFAULTS);
|
|
||||||
return Object.assign(endpoint, {
|
|
||||||
DEFAULTS,
|
|
||||||
defaults: withDefaults.bind(null, DEFAULTS),
|
|
||||||
merge: merge.bind(null, DEFAULTS),
|
|
||||||
parse,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const VERSION = "6.0.5";
|
|
||||||
|
|
||||||
const userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;
|
|
||||||
// DEFAULTS has all properties set that EndpointOptions has, except url.
|
|
||||||
// So we use RequestParameters and add method as additional required property.
|
|
||||||
const DEFAULTS = {
|
|
||||||
method: "GET",
|
|
||||||
baseUrl: "https://api.github.com",
|
|
||||||
headers: {
|
|
||||||
accept: "application/vnd.github.v3+json",
|
|
||||||
"user-agent": userAgent,
|
|
||||||
},
|
|
||||||
mediaType: {
|
|
||||||
format: "",
|
|
||||||
previews: [],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
const endpoint = withDefaults(null, DEFAULTS);
|
|
||||||
|
|
||||||
export { endpoint };
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user