@graphql-inspector/action
Version:
GraphQL Inspector functionality for GitHub Actions
60 lines (59 loc) • 2.23 kB
JavaScript
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})`);
}
};
}
;