diff --git a/src/queries/completedCheckSuite.ts b/src/queries/completedCheckSuite.ts index 480f777d..248d4d29 100644 --- a/src/queries/completedCheckSuite.ts +++ b/src/queries/completedCheckSuite.ts @@ -1,3 +1,4 @@ +import assert from 'assert' import { CompletedCheckSuiteQuery, CompletedCheckSuiteQueryVariables } from '../generated/graphql' import { CheckAnnotation, CheckRun, CheckStep } from '../generated/graphql-types' import { Octokit } from '../types' @@ -95,9 +96,8 @@ export const queryCompletedCheckSuite = async ( } const extractCheckRuns = (r: CompletedCheckSuiteQuery): CompletedCheckSuite['node']['checkRuns'] => { - if (r.node?.__typename !== 'CheckSuite') { - throw new Error(`invalid __typename ${String(r.node?.__typename)} !== CheckSuite`) - } + assert(r.node != null) + assert.strictEqual(r.node.__typename, 'CheckSuite') const checkRuns: CompletedCheckRun[] = [] for (const checkRun of r.node.checkRuns?.nodes ?? []) { @@ -147,16 +147,13 @@ const extractCheckRuns = (r: CompletedCheckSuiteQuery): CompletedCheckSuite['nod } const extractCommit = (r: CompletedCheckSuiteQuery): CompletedCheckSuite['node']['commit'] => { - if (r.node?.__typename !== 'CheckSuite') { - throw new Error(`invalid __typename ${String(r.node?.__typename)} !== CheckSuite`) - } - if (r.node.commit.file?.object?.__typename !== 'Blob') { - throw new Error(`invalid __typename ${String(r.node.commit.file?.object?.__typename)} !== Blob`) - } - const { text } = r.node.commit.file.object - if (text == null) { - throw new Error(`invalid text ${String(text)}`) - } + assert(r.node != null) + assert.strictEqual(r.node.__typename, 'CheckSuite') + assert(r.node.commit.file != null) + assert(r.node.commit.file.object != null) + assert.strictEqual(r.node.commit.file.object.__typename, 'Blob') + const text = r.node.commit.file.object.text + assert(text != null) return { file: { object: { diff --git a/src/workflowRun/parse.ts b/src/workflowRun/parse.ts index 3cc2cf17..d9a50f78 100644 --- a/src/workflowRun/parse.ts +++ b/src/workflowRun/parse.ts @@ -1,3 +1,4 @@ +import assert from 'assert' import * as yaml from 'js-yaml' export type WorkflowDefinition = { @@ -10,17 +11,18 @@ export type WorkflowDefinition = { } export const parseWorkflowFile = (s: string): WorkflowDefinition => { - const parsed = yaml.load(s) - if (typeof parsed !== 'object' || parsed === null) { - throw new Error(`workflow is not valid object: ${typeof parsed}`) - } - const workflow = parsed as WorkflowDefinition - if (typeof workflow.jobs !== 'object') { - throw new Error(`workflow does not have valid "jobs" field: ${JSON.stringify(workflow)}`) - } + const workflow = yaml.load(s) + assertWorkflowDefinition(workflow) return workflow } +function assertWorkflowDefinition(x: unknown): asserts x is WorkflowDefinition { + assert(typeof x === 'object') + assert(x !== null) + assert('jobs' in x) + assert(typeof x.jobs === 'object') +} + export const inferRunner = (jobName: string, workflowDefinition?: WorkflowDefinition): string | undefined => { if (workflowDefinition === undefined) { return