Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
// @ts-check
const laconia = require("@laconia/core");
const { res } = require("@laconia/event").apigateway;
const DynamoDbWebSocketServer = require("./DynamoDbWebSocketServer");
const app = async (connectionId, { webSocketServer }) => {
return webSocketServer.removeConnection(connectionId);
};
const adapter = app => async (event, laconiaContext) => {
await app(event.requestContext.connectionId, laconiaContext);
return res("success", 200);
};
exports.handler = laconia(adapter(app)).register(
"webSocketServer",
() => new DynamoDbWebSocketServer(process.env.CONNECTION_TABLE_NAME)
);
// @ts-check
const laconia = require("@laconia/core");
const { res } = require("@laconia/event").apigateway;
const DynamoDbWebSocketServer = require("./DynamoDbWebSocketServer");
const app = async (connectionId, { webSocketServer }) => {
return webSocketServer.addConnection(connectionId);
};
const adapter = app => async (event, laconiaContext) => {
await app(event.requestContext.connectionId, laconiaContext);
return res("success", 200);
};
exports.handler = laconia(adapter(app)).register(
"webSocketServer",
() => new DynamoDbWebSocketServer(process.env.CONNECTION_TABLE_NAME)
);
// @ts-check
const laconia = require("@laconia/core");
const { req, res } = require("@laconia/event").apigateway;
const KinesisOrderStream = require("./KinesisOrderStream");
const instances = ({ env }) => ({
orderStream: new KinesisOrderStream(env.ORDER_STREAM_NAME)
});
const withCors = next => async (...args) => {
const response = await next(...args);
response.headers["Access-Control-Allow-Origin"] = "*";
return response;
};
const adapter = app =>
withCors(async (event, dependencies) => {
try {
const id = req(event).params.id;
const { res } = require("@laconia/event").apigateway;
const getMappingEntries = mappings =>
mappings instanceof Map ? mappings.entries() : Object.entries(mappings);
const getMappingResponse = (mappings, error) => {
let mappingResponse = {};
for (const [errorRegex, mapping] of getMappingEntries(mappings)) {
if (error.name.match(errorRegex)) {
mappingResponse = mapping(error);
break;
}
}
return mappingResponse;
};
module.exports = class ApiGatewayNameMappingErrorConverter {
const { res, parseWebSocket } = require("@laconia/event").apigateway;
const createWebSocketAdapter = () => app => async (event, laconiaContext) => {
try {
const output = await app(parseWebSocket(event), laconiaContext);
return res(output);
} catch (err) {
return res(err.message, 500);
}
};
module.exports = createWebSocketAdapter;
const { req } = require("@laconia/event").apigateway;
module.exports = class ApiGatewayParamsInputConverter {
convert(event) {
const apiGatewayEvent = req(event);
return {
payload: Object.assign(
{ body: apiGatewayEvent.body },
apiGatewayEvent.params
),
headers: apiGatewayEvent.headers
};
}
};
const { req } = require("@laconia/event").apigateway;
module.exports = class ApiGatewayBodyInputConverter {
convert(event) {
const apiGatewayEvent = req(event);
return {
payload: apiGatewayEvent.body,
headers: Object.assign(
{},
apiGatewayEvent.headers,
apiGatewayEvent.params
)
};
}
};
const { res } = require("@laconia/event").apigateway;
module.exports = class ApiGatewayOutputConverter {
constructor({ statusCode = 200, additionalHeaders = {} } = {}) {
this.statusCode = statusCode;
this.additionalHeaders = additionalHeaders;
}
convert(output) {
return res(output, this.statusCode, this.additionalHeaders);
}
};