mirror of
https://github.com/github/codeql-action.git
synced 2025-12-27 01:30:10 +08:00
106 lines
2.9 KiB
JavaScript
106 lines
2.9 KiB
JavaScript
import { Octokit as OctokitCore } from "@octokit/core";
|
|
import { createAppAuth } from "@octokit/auth-app";
|
|
import { OAuthApp } from "@octokit/oauth-app";
|
|
import { VERSION } from "./version.js";
|
|
import { webhooks } from "./webhooks.js";
|
|
import { eachInstallationFactory } from "./each-installation.js";
|
|
import { eachRepositoryFactory } from "./each-repository.js";
|
|
import { getInstallationOctokit } from "./get-installation-octokit.js";
|
|
import { getInstallationUrlFactory } from "./get-installation-url.js";
|
|
class App {
|
|
static VERSION = VERSION;
|
|
static defaults(defaults) {
|
|
const AppWithDefaults = class extends this {
|
|
constructor(...args) {
|
|
super({
|
|
...defaults,
|
|
...args[0]
|
|
});
|
|
}
|
|
};
|
|
return AppWithDefaults;
|
|
}
|
|
octokit;
|
|
// @ts-ignore calling app.webhooks will throw a helpful error when options.webhooks is not set
|
|
webhooks;
|
|
// @ts-ignore calling app.oauth will throw a helpful error when options.oauth is not set
|
|
oauth;
|
|
getInstallationOctokit;
|
|
eachInstallation;
|
|
eachRepository;
|
|
getInstallationUrl;
|
|
log;
|
|
constructor(options) {
|
|
const Octokit = options.Octokit || OctokitCore;
|
|
const authOptions = Object.assign(
|
|
{
|
|
appId: options.appId,
|
|
privateKey: options.privateKey
|
|
},
|
|
options.oauth ? {
|
|
clientId: options.oauth.clientId,
|
|
clientSecret: options.oauth.clientSecret
|
|
} : {}
|
|
);
|
|
const octokitOptions = {
|
|
authStrategy: createAppAuth,
|
|
auth: authOptions
|
|
};
|
|
if ("log" in options && typeof options.log !== "undefined") {
|
|
octokitOptions.log = options.log;
|
|
}
|
|
this.octokit = new Octokit(octokitOptions);
|
|
this.log = Object.assign(
|
|
{
|
|
debug: () => {
|
|
},
|
|
info: () => {
|
|
},
|
|
warn: console.warn.bind(console),
|
|
error: console.error.bind(console)
|
|
},
|
|
options.log
|
|
);
|
|
if (options.webhooks) {
|
|
this.webhooks = webhooks(this.octokit, options.webhooks);
|
|
} else {
|
|
Object.defineProperty(this, "webhooks", {
|
|
get() {
|
|
throw new Error("[@octokit/app] webhooks option not set");
|
|
}
|
|
});
|
|
}
|
|
if (options.oauth) {
|
|
this.oauth = new OAuthApp({
|
|
...options.oauth,
|
|
clientType: "github-app",
|
|
Octokit
|
|
});
|
|
} else {
|
|
Object.defineProperty(this, "oauth", {
|
|
get() {
|
|
throw new Error(
|
|
"[@octokit/app] oauth.clientId / oauth.clientSecret options are not set"
|
|
);
|
|
}
|
|
});
|
|
}
|
|
this.getInstallationOctokit = getInstallationOctokit.bind(
|
|
null,
|
|
this
|
|
);
|
|
this.eachInstallation = eachInstallationFactory(
|
|
this
|
|
);
|
|
this.eachRepository = eachRepositoryFactory(
|
|
this
|
|
);
|
|
this.getInstallationUrl = getInstallationUrlFactory(this);
|
|
}
|
|
}
|
|
import { createNodeMiddleware } from "./middleware/node/index.js";
|
|
export {
|
|
App,
|
|
createNodeMiddleware
|
|
};
|