solid-start-create-api-graphql-handler
Version:
A simple parser of an incoming event in solid-start to support a GraphQL endpoint
33 lines (32 loc) • 998 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseBody = exports.ErrBodyNotFound = void 0;
const utils_1 = require("./utils");
exports.ErrBodyNotFound = new Error('error: request body not found');
async function* decodeBodyAsyncGenerator(body) {
const utf8Decoder = new TextDecoder('utf8');
const reader = body.getReader();
while (true) {
const { done, value } = await reader.read();
yield utf8Decoder.decode(value);
if (done) {
return;
}
}
}
const parseBody = async (body) => {
try {
if (!body) {
return (0, utils_1.newErrorResult)(exports.ErrBodyNotFound);
}
let parts = '';
for await (const part of decodeBodyAsyncGenerator(body)) {
parts += part;
}
return (0, utils_1.newSuccessfulResult)(JSON.parse(parts));
}
catch (e) {
return (0, utils_1.newErrorResult)(e);
}
};
exports.parseBody = parseBody;