graphql-yoga
Version:
<div align="center"><img src="./website/public/cover.png" width="720" /></div>
42 lines (41 loc) • 1.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.jsonStringifyResultWithoutInternals = void 0;
const error_js_1 = require("../../error.js");
// JSON stringifier that adjusts the result error extensions while serialising
function jsonStringifyResultWithoutInternals(result) {
return JSON.stringify(Array.isArray(result)
? result.map(omitInternalsFromResultErrors)
: omitInternalsFromResultErrors(result));
}
exports.jsonStringifyResultWithoutInternals = jsonStringifyResultWithoutInternals;
function omitInternalsFromResultErrors(result) {
if (result.errors?.length || result.extensions?.http) {
const newResult = { ...result };
newResult.errors && (newResult.errors = newResult.errors.map(omitInternalsFromError));
if (newResult.extensions) {
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- TS should check for unused vars instead
const { http, ...extensions } = result.extensions;
newResult.extensions = Object.keys(extensions).length
? extensions
: undefined;
}
return newResult;
}
return result;
}
function omitInternalsFromError(err) {
if ((0, error_js_1.isGraphQLError)(err)) {
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- TS should check for unused vars instead
const { http, unexpected, ...extensions } = err.extensions;
return (0, error_js_1.createGraphQLError)(err.message, {
nodes: err.nodes,
source: err.source,
positions: err.positions,
path: err.path,
originalError: omitInternalsFromError(err.originalError),
extensions: Object.keys(extensions).length ? extensions : undefined,
});
}
return err;
}