UNPKG

@graphql-inspector/action

Version:

GraphQL Inspector functionality for GitHub Actions

60 lines (59 loc) 2.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fileLoader = fileLoader; const tslib_1 = require("tslib"); const fs_1 = require("fs"); const path_1 = require("path"); const core = tslib_1.__importStar(require("@actions/core")); function fileLoader({ octokit, owner, repo, }) { const query = /* GraphQL */ ` query GetFile($repo: String!, $owner: String!, $expression: String!) { repository(name: $repo, owner: $owner) { object(expression: $expression) { ... on Blob { isTruncated oid text } } } } `; return async function loadFile(file) { if (file.workspace) { return (0, fs_1.readFileSync)((0, path_1.resolve)(file.workspace, file.path), 'utf8'); } const result = await octokit.graphql(query, { repo, owner, expression: `${file.ref}:${file.path}`, }); core.info(`Query ${file.ref}:${file.path} from ${owner}/${repo}`); try { if (result?.repository?.object?.oid && result?.repository?.object?.isTruncated) { const oid = result?.repository?.object?.oid; const getBlobResponse = await octokit.git.getBlob({ owner, repo, file_sha: oid, }); if (getBlobResponse?.data?.content) { return Buffer.from(getBlobResponse?.data?.content, 'base64').toString('utf-8'); } throw new Error('getBlobResponse.data.content is null'); } if (result?.repository?.object?.text) { if (result?.repository?.object?.isTruncated === false) { return result.repository.object.text; } throw new Error('result.repository.object.text is truncated and oid is null'); } throw new Error('result.repository.object.text is null'); } catch (error) { console.log(result); console.error(error); throw new Error(`Failed to load '${file.path}' (ref: ${file.ref})`); } }; }