@callstack/repack-dev-server
Version:
A bundler-agnostic development server for React Native applications as part of @callstack/repack.
34 lines (33 loc) • 1.35 kB
JavaScript
import fastifyPlugin from 'fastify-plugin';
import { Symbolicator } from './Symbolicator.js';
async function symbolicatePlugin(instance, { delegate, }) {
const symbolicator = new Symbolicator(delegate.symbolicator);
instance.post('/symbolicate', async (request, reply) => {
// React Native sends stack as JSON but tests content-type to text/plain, so
// we cannot use JSON schema to validate the body.
try {
const { stack } = JSON.parse(request.body);
const platform = Symbolicator.inferPlatformFromStack(stack);
if (!platform) {
request.log.debug({ msg: 'Received stack', stack });
reply.badRequest('Cannot infer platform from stack trace');
}
else {
request.log.debug({ msg: 'Starting symbolication', platform, stack });
const results = await symbolicator.process(request.log, stack);
reply.send(results);
}
}
catch (error) {
request.log.error({
msg: 'Failed to symbolicate',
error: error.message,
});
reply.internalServerError();
}
});
}
export default fastifyPlugin(symbolicatePlugin, {
name: 'symbolicate-plugin',
dependencies: ['@fastify/sensible'],
});