@scloud/lambda-local
Version:
Run typical Lambda handlers locally.
44 lines • 5.15 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.scheduledLocal = scheduledLocal;
const express_1 = __importDefault(require("express"));
const eventTemplate = {
version: '0',
id: '0',
'detail-type': 'Scheduled Event',
source: 'aws.events',
account: '123456789012',
time: new Date().toISOString(),
region: 'us-east-1',
resources: [],
detail: {},
};
function scheduledLocal(handler, debug = false) {
const port = +(process.env.port || '3000');
const app = (0, express_1.default)();
app.all('/*', async (req, res) => {
try {
// Invoke the function handler:
const result = await handler(eventTemplate, {});
if (debug) {
console.log('Result:');
console.log(JSON.stringify(result, null, 2));
}
// Body
res.status(200).send(JSON.stringify(result));
}
catch (e) {
// Log the error and send a 500 response
console.log(e);
console.log(e.stack);
res.status(500).send(`${e}`);
}
});
app.listen(port, () => {
console.log(`Scheduled Lambda handler can be invoked via POST http://localhost:${port}. The request body will be sent as an SQS message body`);
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVkTG9jYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NoZWR1bGVkTG9jYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFpQkEsd0NBNEJDO0FBN0NELHNEQUFxRDtBQUtyRCxNQUFNLGFBQWEsR0FBbUI7SUFDcEMsT0FBTyxFQUFFLEdBQUc7SUFDWixFQUFFLEVBQUUsR0FBRztJQUNQLGFBQWEsRUFBRSxpQkFBaUI7SUFDaEMsTUFBTSxFQUFFLFlBQVk7SUFDcEIsT0FBTyxFQUFFLGNBQWM7SUFDdkIsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO0lBQzlCLE1BQU0sRUFBRSxXQUFXO0lBQ25CLFNBQVMsRUFBRSxFQUFFO0lBQ2IsTUFBTSxFQUFFLEVBQUU7Q0FDWCxDQUFDO0FBRUYsU0FBZ0IsY0FBYyxDQUFDLE9BQStFLEVBQUUsS0FBSyxHQUFHLEtBQUs7SUFDM0gsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUEsaUJBQU8sR0FBRSxDQUFDO0lBRXRCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFZLEVBQUUsR0FBYSxFQUFFLEVBQUU7UUFDbEQsSUFBSSxDQUFDO1lBQ0gsK0JBQStCO1lBQy9CLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFhLENBQUMsQ0FBQztZQUUzRCxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUVELE9BQU87WUFDUCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFL0MsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCx3Q0FBd0M7WUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUUsQ0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUU7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxRUFBcUUsSUFBSSx3REFBd0QsQ0FBQyxDQUFDO0lBQ2pKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBleHByZXNzLCB7IFJlcXVlc3QsIFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQge1xuICBDb250ZXh0LCBTUVNCYXRjaFJlc3BvbnNlLCBTY2hlZHVsZWRFdmVudCxcbn0gZnJvbSAnYXdzLWxhbWJkYSc7XG5cbmNvbnN0IGV2ZW50VGVtcGxhdGU6IFNjaGVkdWxlZEV2ZW50ID0ge1xuICB2ZXJzaW9uOiAnMCcsXG4gIGlkOiAnMCcsXG4gICdkZXRhaWwtdHlwZSc6ICdTY2hlZHVsZWQgRXZlbnQnLFxuICBzb3VyY2U6ICdhd3MuZXZlbnRzJyxcbiAgYWNjb3VudDogJzEyMzQ1Njc4OTAxMicsXG4gIHRpbWU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgcmVzb3VyY2VzOiBbXSxcbiAgZGV0YWlsOiB7fSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2hlZHVsZWRMb2NhbChoYW5kbGVyOiAoZXZlbnQ6IFNjaGVkdWxlZEV2ZW50LCBjb250ZXh0OiBDb250ZXh0KSA9PiBQcm9taXNlPFNRU0JhdGNoUmVzcG9uc2U+LCBkZWJ1ZyA9IGZhbHNlKSB7XG4gIGNvbnN0IHBvcnQgPSArKHByb2Nlc3MuZW52LnBvcnQgfHwgJzMwMDAnKTtcbiAgY29uc3QgYXBwID0gZXhwcmVzcygpO1xuXG4gIGFwcC5hbGwoJy8qJywgYXN5bmMgKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBJbnZva2UgdGhlIGZ1bmN0aW9uIGhhbmRsZXI6XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBoYW5kbGVyKGV2ZW50VGVtcGxhdGUsIHt9IGFzIENvbnRleHQpO1xuXG4gICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1Jlc3VsdDonKTtcbiAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEJvZHlcbiAgICAgIHJlcy5zdGF0dXMoMjAwKS5zZW5kKEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpO1xuXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gTG9nIHRoZSBlcnJvciBhbmQgc2VuZCBhIDUwMCByZXNwb25zZVxuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICBjb25zb2xlLmxvZygoZSBhcyBFcnJvcikuc3RhY2spO1xuICAgICAgcmVzLnN0YXR1cyg1MDApLnNlbmQoYCR7ZX1gKTtcbiAgICB9XG4gIH0pO1xuXG4gIGFwcC5saXN0ZW4ocG9ydCwgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBTY2hlZHVsZWQgTGFtYmRhIGhhbmRsZXIgY2FuIGJlIGludm9rZWQgdmlhIFBPU1QgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9LiBUaGUgcmVxdWVzdCBib2R5IHdpbGwgYmUgc2VudCBhcyBhbiBTUVMgbWVzc2FnZSBib2R5YCk7XG4gIH0pO1xufVxuIl19