Files
dependency-review-action/src/dependency-graph.ts
2023-03-22 21:30:12 +00:00

54 lines
1.3 KiB
TypeScript

import * as core from '@actions/core'
import * as githubUtils from '@actions/github/lib/utils'
import * as retry from '@octokit/plugin-retry'
import {
ChangesSchema,
ComparisonResponse,
ComparisonResponseSchema
} from './schemas'
const retryingOctokit = githubUtils.GitHub.plugin(retry.retry)
const SnapshotWarningsHeader = 'x-github-dependency-graph-snapshot-warnings'
const octo = new retryingOctokit(
githubUtils.getOctokitOptions(core.getInput('repo-token', {required: true}))
)
export async function compare({
owner,
repo,
baseRef,
headRef
}: {
owner: string
repo: string
baseRef: string
headRef: string
}): Promise<ComparisonResponse> {
let snapshot_warnings = ''
const changes = await octo.paginate(
{
method: 'GET',
url: '/repos/{owner}/{repo}/dependency-graph/compare/{basehead}',
owner,
repo,
basehead: `${baseRef}...${headRef}`
},
response => {
if (
response.headers[SnapshotWarningsHeader] &&
typeof response.headers[SnapshotWarningsHeader] === 'string'
) {
snapshot_warnings = Buffer.from(
response.headers[SnapshotWarningsHeader],
'base64'
).toString('utf-8')
}
return ChangesSchema.parse(response.data)
}
)
return ComparisonResponseSchema.parse({
changes,
snapshot_warnings
})
}