UNPKG

aws-lambda-graphql

Version:

Apollo server for AWS Lambda with WebSocket subscriptions support over API Gateway v1 + v2

47 lines 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseOperationFromEvent = exports.InvalidOperationError = exports.MalformedOperationError = void 0; const protocol_1 = require("../protocol"); const errors_1 = require("../errors"); class MalformedOperationError extends errors_1.ExtendableError { constructor(reason) { super(reason ? `Malformed operation: ${reason}` : 'Malformed operation'); } } exports.MalformedOperationError = MalformedOperationError; class InvalidOperationError extends errors_1.ExtendableError { constructor(reason) { super(reason ? `Invalid operation: ${reason}` : 'Invalid operation'); } } exports.InvalidOperationError = InvalidOperationError; function parseOperationFromEvent(event) { const operation = JSON.parse(event.body); if (typeof operation !== 'object' && operation !== null) { throw new MalformedOperationError(); } if (operation.type == null) { throw new MalformedOperationError('Type is missing'); } if (protocol_1.isGQLConnectionInit(operation)) { return operation; } if (protocol_1.isGQLStopOperation(operation)) { return operation; } if (protocol_1.isGQLConnectionTerminate(operation)) { return operation; } if (protocol_1.isGQLOperation(operation)) { if (operation.id == null) { throw new MalformedOperationError('Property id is missing'); } if (typeof operation.payload !== 'object' || operation.payload == null) { throw new MalformedOperationError('Property payload is missing or is not an object'); } return Object.assign(Object.assign({}, operation.payload), { operationId: operation.id }); } throw new InvalidOperationError('Only GQL_CONNECTION_INIT, GQL_CONNECTION_TERMINATE, GQL_START or GQL_STOP operations are accepted'); } exports.parseOperationFromEvent = parseOperationFromEvent; //# sourceMappingURL=parseOperationFromEvent.js.map