UNPKG

@scloud/lambda-local

Version:

Run typical Lambda handlers locally.

41 lines 5.69 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.sqsLocal = sqsLocal; const express_1 = __importDefault(require("express")); function sqsLocal(handler, debug = false) { const port = +(process.env.port || '3000'); const app = (0, express_1.default)(); // https://stackoverflow.com/questions/12345166/how-to-force-parse-request-body-as-plain-text-instead-of-json-in-express app.use(express_1.default.text({ type: '*/*' })); app.post('/*', async (req, res) => { try { // Print out the event that will be sent to the handler const event = { Records: [{ body: req.body }] }; if (debug) { console.log('Event:'); console.log(JSON.stringify(event, null, 2)); } // Invoke the function handler: const result = await handler(event, {}); if (debug) { console.log('Result:'); console.log(JSON.stringify(result, null, 2)); } // Send the response 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(`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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FzTG9jYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3FzTG9jYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFLQSw0QkFxQ0M7QUExQ0Qsc0RBQXFEO0FBS3JELFNBQWdCLFFBQVEsQ0FBQyxPQUF5RSxFQUFFLEtBQUssR0FBRyxLQUFLO0lBQy9HLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQztJQUMzQyxNQUFNLEdBQUcsR0FBRyxJQUFBLGlCQUFPLEdBQUUsQ0FBQztJQUV0Qix3SEFBd0g7SUFDeEgsR0FBRyxDQUFDLEdBQUcsQ0FBQyxpQkFBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFdkMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQVksRUFBRSxHQUFhLEVBQUUsRUFBRTtRQUNuRCxJQUFJLENBQUM7WUFDSCx1REFBdUQ7WUFDdkQsTUFBTSxLQUFLLEdBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFlLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QyxDQUFDO1lBRUQsK0JBQStCO1lBQy9CLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFhLENBQUMsQ0FBQztZQUVuRCxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUVELG9CQUFvQjtZQUNwQixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCx3Q0FBd0M7WUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUUsQ0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUU7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQywyREFBMkQsSUFBSSx3REFBd0QsQ0FBQyxDQUFDO0lBQ3ZJLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBleHByZXNzLCB7IFJlcXVlc3QsIFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQge1xuICBDb250ZXh0LCBTUVNCYXRjaFJlc3BvbnNlLCBTUVNFdmVudCwgU1FTUmVjb3JkLFxufSBmcm9tICdhd3MtbGFtYmRhJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNxc0xvY2FsKGhhbmRsZXI6IChldmVudDogU1FTRXZlbnQsIGNvbnRleHQ6IENvbnRleHQpID0+IFByb21pc2U8U1FTQmF0Y2hSZXNwb25zZT4sIGRlYnVnID0gZmFsc2UpIHtcbiAgY29uc3QgcG9ydCA9ICsocHJvY2Vzcy5lbnYucG9ydCB8fCAnMzAwMCcpO1xuICBjb25zdCBhcHAgPSBleHByZXNzKCk7XG5cbiAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTIzNDUxNjYvaG93LXRvLWZvcmNlLXBhcnNlLXJlcXVlc3QtYm9keS1hcy1wbGFpbi10ZXh0LWluc3RlYWQtb2YtanNvbi1pbi1leHByZXNzXG4gIGFwcC51c2UoZXhwcmVzcy50ZXh0KHsgdHlwZTogJyovKicgfSkpO1xuXG4gIGFwcC5wb3N0KCcvKicsIGFzeW5jIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpID0+IHtcbiAgICB0cnkge1xuICAgICAgLy8gUHJpbnQgb3V0IHRoZSBldmVudCB0aGF0IHdpbGwgYmUgc2VudCB0byB0aGUgaGFuZGxlclxuICAgICAgY29uc3QgZXZlbnQ6IFNRU0V2ZW50ID0geyBSZWNvcmRzOiBbeyBib2R5OiByZXEuYm9keSB9IGFzIFNRU1JlY29yZF0gfTtcbiAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICBjb25zb2xlLmxvZygnRXZlbnQ6Jyk7XG4gICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGV2ZW50LCBudWxsLCAyKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEludm9rZSB0aGUgZnVuY3Rpb24gaGFuZGxlcjpcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZXIoZXZlbnQsIHt9IGFzIENvbnRleHQpO1xuXG4gICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1Jlc3VsdDonKTtcbiAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlbmQgdGhlIHJlc3BvbnNlXG4gICAgICByZXMuc3RhdHVzKDIwMCkuc2VuZChKU09OLnN0cmluZ2lmeShyZXN1bHQpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBMb2cgdGhlIGVycm9yIGFuZCBzZW5kIGEgNTAwIHJlc3BvbnNlXG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgIGNvbnNvbGUubG9nKChlIGFzIEVycm9yKS5zdGFjayk7XG4gICAgICByZXMuc3RhdHVzKDUwMCkuc2VuZChgJHtlfWApO1xuICAgIH1cbiAgfSk7XG5cbiAgYXBwLmxpc3Rlbihwb3J0LCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYExhbWJkYSBoYW5kbGVyIGNhbiBiZSBpbnZva2VkIHZpYSBQT1NUIGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fS4gVGhlIHJlcXVlc3QgYm9keSB3aWxsIGJlIHNlbnQgYXMgYW4gU1FTIG1lc3NhZ2UgYm9keWApO1xuICB9KTtcbn1cbiJdfQ==