mirror of
https://github.com/github/codeql-action.git
synced 2025-12-27 01:30:10 +08:00
40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
import { composePaginateRest } from "@octokit/plugin-paginate-rest";
|
|
import { getInstallationOctokit } from "./get-installation-octokit.js";
|
|
function eachInstallationFactory(app) {
|
|
return Object.assign(eachInstallation.bind(null, app), {
|
|
iterator: eachInstallationIterator.bind(null, app)
|
|
});
|
|
}
|
|
async function eachInstallation(app, callback) {
|
|
const i = eachInstallationIterator(app)[Symbol.asyncIterator]();
|
|
let result = await i.next();
|
|
while (!result.done) {
|
|
await callback(result.value);
|
|
result = await i.next();
|
|
}
|
|
}
|
|
function eachInstallationIterator(app) {
|
|
return {
|
|
async *[Symbol.asyncIterator]() {
|
|
const iterator = composePaginateRest.iterator(
|
|
app.octokit,
|
|
"GET /app/installations"
|
|
);
|
|
for await (const { data: installations } of iterator) {
|
|
for (const installation of installations) {
|
|
const installationOctokit = await getInstallationOctokit(
|
|
app,
|
|
installation.id
|
|
);
|
|
yield { octokit: installationOctokit, installation };
|
|
}
|
|
}
|
|
}
|
|
};
|
|
}
|
|
export {
|
|
eachInstallation,
|
|
eachInstallationFactory,
|
|
eachInstallationIterator
|
|
};
|