@riddance/aws-host
Version:
47 lines • 10.6 kB
JavaScript
import { clientFromHeaders, executeRequest } from '@riddance/host/http';
import { measure } from '@riddance/host/lib/http';
import { getHandlers } from '@riddance/host/registry';
import { createAwsContext } from './context.js';
export * from '@riddance/service/http';
function isRestRequest(request) {
return !request.version;
}
async function asyncIndex(req, awsContext, callback) {
const [handler] = getHandlers('http');
if (!handler) {
throw new Error('No http handler registered.');
}
const { log, context, success, flush } = createAwsContext(awsContext, req.stageVariables, clientFromHeaders(req.headers), handler.config, handler.meta);
if (req.body && req.isBase64Encoded) {
req.body = Buffer.from(req.body, 'base64').toString('utf-8');
}
const result = await executeRequest(log, context, handler, {
headers: req.headers,
uri: isRestRequest(req)
? `https://${req.requestContext.domainName}${req.requestContext.path}`
: `https://${req.requestContext.domainName}${req.rawPath}${req.rawQueryString ? '?' + req.rawQueryString : ''}`,
json: req.body ? JSON.parse(req.body) : undefined,
}, success);
try {
callback(undefined, Buffer.isBuffer(result.body)
? {
statusCode: result.status,
headers: result.headers,
body: result.body.toString('base64'),
}
: {
statusCode: result.status,
headers: result.headers,
body: result.body,
});
}
catch (e) {
log.fatal('Error sending response to Lambda.', e);
}
await measure(log, 'flush', flush);
}
export function awsHandler(req, context, callback) {
context.callbackWaitsForEmptyEventLoop = false;
asyncIndex(req, context, callback).catch((e) => setImmediate(callback, e, undefined));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImh0dHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3ZFLE9BQU8sRUFBUSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDckQsT0FBTyxFQUFjLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTNELGNBQWMsd0JBQXdCLENBQUE7QUFzRXRDLFNBQVMsYUFBYSxDQUFDLE9BQXFCO0lBQ3hDLE9BQU8sQ0FBRSxPQUFnQyxDQUFDLE9BQU8sQ0FBQTtBQUNyRCxDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FDckIsR0FBaUIsRUFDakIsVUFBc0IsRUFDdEIsUUFBc0U7SUFFdEUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNyQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUE7SUFDbEQsQ0FBQztJQUNELE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxnQkFBZ0IsQ0FDckQsVUFBVSxFQUNWLEdBQUcsQ0FBQyxjQUFjLEVBQ2xCLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFDOUIsT0FBTyxDQUFDLE1BQU0sRUFDZCxPQUFPLENBQUMsSUFBSSxDQUNmLENBQUE7SUFFRCxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ2xDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNoRSxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQy9CLEdBQUcsRUFDSCxPQUFPLEVBQ1AsT0FBTyxFQUNQO1FBQ0ksT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1FBQ3BCLEdBQUcsRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFO1lBQ3RFLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEdBQ2xELEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUNwRCxFQUFFO1FBQ1IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBVSxDQUFDLENBQUMsQ0FBQyxTQUFTO0tBQzlELEVBQ0QsT0FBTyxDQUNWLENBQUE7SUFFRCxJQUFJLENBQUM7UUFDRCxRQUFRLENBQ0osU0FBUyxFQUNULE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUN4QixDQUFDLENBQUM7Z0JBQ0ksVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2dCQUN6QixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87Z0JBQ3ZCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7YUFDdkM7WUFDSCxDQUFDLENBQUM7Z0JBQ0ksVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2dCQUN6QixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87Z0JBQ3ZCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTthQUNwQixDQUNWLENBQUE7SUFDTCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNULEdBQUcsQ0FBQyxLQUFLLENBQUMsbUNBQW1DLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUVELE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFDdEMsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQ3RCLEdBQXFCLEVBQ3JCLE9BQW1CLEVBQ25CLFFBQXNFO0lBRXRFLE9BQU8sQ0FBQyw4QkFBOEIsR0FBRyxLQUFLLENBQUE7SUFDOUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFBO0FBQ2xHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbGllbnRGcm9tSGVhZGVycywgZXhlY3V0ZVJlcXVlc3QgfSBmcm9tICdAcmlkZGFuY2UvaG9zdC9odHRwJ1xuaW1wb3J0IHsgSnNvbiwgbWVhc3VyZSB9IGZyb20gJ0ByaWRkYW5jZS9ob3N0L2xpYi9odHRwJ1xuaW1wb3J0IHsgZ2V0SGFuZGxlcnMgfSBmcm9tICdAcmlkZGFuY2UvaG9zdC9yZWdpc3RyeSdcbmltcG9ydCB7IEF3c0NvbnRleHQsIGNyZWF0ZUF3c0NvbnRleHQgfSBmcm9tICcuL2NvbnRleHQuanMnXG5cbmV4cG9ydCAqIGZyb20gJ0ByaWRkYW5jZS9zZXJ2aWNlL2h0dHAnXG5cbnR5cGUgSHR0cFJlc3BvbnNlID0ge1xuICAgIHN0YXR1c0NvZGU6IHN0cmluZyB8IG51bWJlclxuICAgIGhlYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9XG4gICAgbXVsdGlWYWx1ZUhlYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH1cbiAgICBib2R5Pzogc3RyaW5nXG4gICAgaXNCYXNlNjRFbmNvZGVkPzogYm9vbGVhblxufVxuXG50eXBlIENvbW1vblJlcXVlc3RFdmVudCA9IHtcbiAgICBwYXRoUGFyYW1ldGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICAgIHN0YWdlVmFyaWFibGVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9XG4gICAgYm9keT86IHN0cmluZ1xuICAgIGlzQmFzZTY0RW5jb2RlZDogYm9vbGVhblxufVxuXG50eXBlIFJlc3RSZXF1ZXN0RXZlbnQgPSB7XG4gICAgcmVzb3VyY2U6IHN0cmluZ1xuICAgIHBhdGg6IHN0cmluZ1xuICAgIGh0dHBNZXRob2Q6IHN0cmluZ1xuICAgIHJlcXVlc3RDb250ZXh0OiB7XG4gICAgICAgIHJlc291cmNlUGF0aDogc3RyaW5nXG4gICAgICAgIGh0dHBNZXRob2Q6IHN0cmluZ1xuICAgICAgICBkb21haW5OYW1lOiBzdHJpbmdcbiAgICAgICAgcGF0aDogc3RyaW5nXG4gICAgICAgIHByb3RvY29sOiBzdHJpbmdcbiAgICAgICAgc3RhZ2U6IHN0cmluZ1xuICAgICAgICByZXF1ZXN0SWQ6IHN0cmluZ1xuICAgICAgICBpZGVudGl0eToge1xuICAgICAgICAgICAgYWNjb3VudElkOiBzdHJpbmdcbiAgICAgICAgICAgIHNvdXJjZUlwOiBzdHJpbmdcbiAgICAgICAgICAgIHVzZXJBZ2VudDogc3RyaW5nXG4gICAgICAgIH1cbiAgICB9XG4gICAgaGVhZGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICAgIG11bHRpVmFsdWVIZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH1cbiAgICBtdWx0aVZhbHVlUXVlcnlTdHJpbmdQYXJhbWV0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH1cbn0gJiBDb21tb25SZXF1ZXN0RXZlbnRcblxudHlwZSBIdHRwUmVxdWVzdEV2ZW50ID0ge1xuICAgIHZlcnNpb246ICcyLjAnXG4gICAgcm91dGVLZXk6IHN0cmluZ1xuICAgIHJhd1BhdGg6IHN0cmluZ1xuICAgIHJhd1F1ZXJ5U3RyaW5nOiBzdHJpbmdcbiAgICBoZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9XG4gICAgY29va2llczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICAgIHF1ZXJ5U3RyaW5nUGFyYW1ldGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICAgIHJlcXVlc3RDb250ZXh0OiB7XG4gICAgICAgIGFjY291bnRJZDogc3RyaW5nXG4gICAgICAgIGFwaUlkOiBzdHJpbmdcbiAgICAgICAgZG9tYWluTmFtZTogc3RyaW5nXG4gICAgICAgIGRvbWFpblByZWZpeDogc3RyaW5nXG4gICAgICAgIGh0dHA6IHtcbiAgICAgICAgICAgIG1ldGhvZDogc3RyaW5nXG4gICAgICAgICAgICBwYXRoOiBzdHJpbmdcbiAgICAgICAgICAgIHByb3RvY29sOiBzdHJpbmdcbiAgICAgICAgICAgIHNvdXJjZUlwOiBzdHJpbmdcbiAgICAgICAgICAgIHVzZXJBZ2VudDogc3RyaW5nXG4gICAgICAgIH1cbiAgICAgICAgcmVxdWVzdElkOiBzdHJpbmdcbiAgICAgICAgcm91dGVLZXk6IHN0cmluZ1xuICAgICAgICBzdGFnZTogc3RyaW5nXG4gICAgICAgIHRpbWU6IHN0cmluZ1xuICAgICAgICB0aW1lRXBvY2g6IG51bWJlclxuICAgIH1cbn0gJiBDb21tb25SZXF1ZXN0RXZlbnRcblxudHlwZSBSZXF1ZXN0RXZlbnQgPSBIdHRwUmVxdWVzdEV2ZW50IHwgUmVzdFJlcXVlc3RFdmVudFxuXG5mdW5jdGlvbiBpc1Jlc3RSZXF1ZXN0KHJlcXVlc3Q6IFJlcXVlc3RFdmVudCk6IHJlcXVlc3QgaXMgUmVzdFJlcXVlc3RFdmVudCB7XG4gICAgcmV0dXJuICEocmVxdWVzdCBhcyB7IHZlcnNpb246IHVua25vd24gfSkudmVyc2lvblxufVxuXG5hc3luYyBmdW5jdGlvbiBhc3luY0luZGV4KFxuICAgIHJlcTogUmVxdWVzdEV2ZW50LFxuICAgIGF3c0NvbnRleHQ6IEF3c0NvbnRleHQsXG4gICAgY2FsbGJhY2s6IChlcnJvcjogdW5rbm93biwgcmVzcG9uc2U6IEh0dHBSZXNwb25zZSB8IHVuZGVmaW5lZCkgPT4gdm9pZCxcbikge1xuICAgIGNvbnN0IFtoYW5kbGVyXSA9IGdldEhhbmRsZXJzKCdodHRwJylcbiAgICBpZiAoIWhhbmRsZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBodHRwIGhhbmRsZXIgcmVnaXN0ZXJlZC4nKVxuICAgIH1cbiAgICBjb25zdCB7IGxvZywgY29udGV4dCwgc3VjY2VzcywgZmx1c2ggfSA9IGNyZWF0ZUF3c0NvbnRleHQoXG4gICAgICAgIGF3c0NvbnRleHQsXG4gICAgICAgIHJlcS5zdGFnZVZhcmlhYmxlcyxcbiAgICAgICAgY2xpZW50RnJvbUhlYWRlcnMocmVxLmhlYWRlcnMpLFxuICAgICAgICBoYW5kbGVyLmNvbmZpZyxcbiAgICAgICAgaGFuZGxlci5tZXRhLFxuICAgIClcblxuICAgIGlmIChyZXEuYm9keSAmJiByZXEuaXNCYXNlNjRFbmNvZGVkKSB7XG4gICAgICAgIHJlcS5ib2R5ID0gQnVmZmVyLmZyb20ocmVxLmJvZHksICdiYXNlNjQnKS50b1N0cmluZygndXRmLTgnKVxuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBleGVjdXRlUmVxdWVzdChcbiAgICAgICAgbG9nLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBoYW5kbGVyLFxuICAgICAgICB7XG4gICAgICAgICAgICBoZWFkZXJzOiByZXEuaGVhZGVycyxcbiAgICAgICAgICAgIHVyaTogaXNSZXN0UmVxdWVzdChyZXEpXG4gICAgICAgICAgICAgICAgPyBgaHR0cHM6Ly8ke3JlcS5yZXF1ZXN0Q29udGV4dC5kb21haW5OYW1lfSR7cmVxLnJlcXVlc3RDb250ZXh0LnBhdGh9YFxuICAgICAgICAgICAgICAgIDogYGh0dHBzOi8vJHtyZXEucmVxdWVzdENvbnRleHQuZG9tYWluTmFtZX0ke3JlcS5yYXdQYXRofSR7XG4gICAgICAgICAgICAgICAgICAgICAgcmVxLnJhd1F1ZXJ5U3RyaW5nID8gJz8nICsgcmVxLnJhd1F1ZXJ5U3RyaW5nIDogJydcbiAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAganNvbjogcmVxLmJvZHkgPyAoSlNPTi5wYXJzZShyZXEuYm9keSkgYXMgSnNvbikgOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICAgIHN1Y2Nlc3MsXG4gICAgKVxuXG4gICAgdHJ5IHtcbiAgICAgICAgY2FsbGJhY2soXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBCdWZmZXIuaXNCdWZmZXIocmVzdWx0LmJvZHkpXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQ29kZTogcmVzdWx0LnN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiByZXN1bHQuaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICBib2R5OiByZXN1bHQuYm9keS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQ29kZTogcmVzdWx0LnN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiByZXN1bHQuaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICBib2R5OiByZXN1bHQuYm9keSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZy5mYXRhbCgnRXJyb3Igc2VuZGluZyByZXNwb25zZSB0byBMYW1iZGEuJywgZSlcbiAgICB9XG5cbiAgICBhd2FpdCBtZWFzdXJlKGxvZywgJ2ZsdXNoJywgZmx1c2gpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhd3NIYW5kbGVyKFxuICAgIHJlcTogSHR0cFJlcXVlc3RFdmVudCxcbiAgICBjb250ZXh0OiBBd3NDb250ZXh0LFxuICAgIGNhbGxiYWNrOiAoZXJyb3I6IHVua25vd24sIHJlc3BvbnNlOiBIdHRwUmVzcG9uc2UgfCB1bmRlZmluZWQpID0+IHZvaWQsXG4pIHtcbiAgICBjb250ZXh0LmNhbGxiYWNrV2FpdHNGb3JFbXB0eUV2ZW50TG9vcCA9IGZhbHNlXG4gICAgYXN5bmNJbmRleChyZXEsIGNvbnRleHQsIGNhbGxiYWNrKS5jYXRjaCgoZTogdW5rbm93bikgPT4gc2V0SW1tZWRpYXRlKGNhbGxiYWNrLCBlLCB1bmRlZmluZWQpKVxufVxuIl19