"use strict";
var __assign = (this && this.__assign) || Object.assign || function(t) {
    for (var s, i = 1, n = arguments.length; i < n; i++) {
        s = arguments[i];
        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
            t[p] = s[p];
    }
    return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
var message_types_1 = require("../message-types");
exports.parseLegacyProtocolMessage = function (connectionContext, message) {
    var messageToReturn = message;
    switch (message.type) {
        case message_types_1.default.INIT:
            connectionContext.isLegacy = true;
            messageToReturn = __assign({}, message, { type: message_types_1.default.GQL_CONNECTION_INIT });
            break;
        case message_types_1.default.SUBSCRIPTION_START:
            messageToReturn = {
                id: message.id,
                type: message_types_1.default.GQL_START,
                payload: {
                    query: message.query,
                    operationName: message.operationName,
                    variables: message.variables,
                },
            };
            break;
        case message_types_1.default.SUBSCRIPTION_END:
            messageToReturn = __assign({}, message, { type: message_types_1.default.GQL_STOP });
            break;
        case message_types_1.default.GQL_CONNECTION_ACK:
            if (connectionContext.isLegacy) {
                messageToReturn = __assign({}, message, { type: message_types_1.default.INIT_SUCCESS });
            }
            break;
        case message_types_1.default.GQL_CONNECTION_ERROR:
            if (connectionContext.isLegacy) {
                messageToReturn = __assign({}, message, { type: message_types_1.default.INIT_FAIL, payload: message.payload.message ? { error: message.payload.message } : message.payload });
            }
            break;
        case message_types_1.default.GQL_ERROR:
            if (connectionContext.isLegacy) {
                messageToReturn = __assign({}, message, { type: message_types_1.default.SUBSCRIPTION_FAIL });
            }
            break;
        case message_types_1.default.GQL_DATA:
            if (connectionContext.isLegacy) {
                messageToReturn = __assign({}, message, { type: message_types_1.default.SUBSCRIPTION_DATA });
            }
            break;
        case message_types_1.default.GQL_COMPLETE:
            if (connectionContext.isLegacy) {
                messageToReturn = null;
            }
            break;
        case message_types_1.default.SUBSCRIPTION_SUCCESS:
            if (!connectionContext.isLegacy) {
                messageToReturn = null;
            }
            break;
        default:
            break;
    }
    return messageToReturn;
};
//# sourceMappingURL=parse-legacy-protocol.js.map