"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

function _fromBase() {
  const data = _interopRequireDefault(require("./string/from-base64"));

  _fromBase = function () {
    return data;
  };

  return data;
}

function _zlib() {
  const data = _interopRequireDefault(require("zlib"));

  _zlib = function () {
    return data;
  };

  return data;
}

module.exports = function unpackCmd(str, base64 = true) {
  let parsed;

  if (base64) {
    parsed = JSON.parse((0, _fromBase().default)(str));
  } else {
    parsed = JSON.parse(str);
  }

  if (parsed.headers.compressed) {
    if (parsed.payload) {
      parsed.payload = JSON.parse(_zlib().default.inflateSync(Buffer.from(parsed.payload)).toString());
    }

    if (parsed.headers && parsed.headers.context) {
      parsed.headers.context = JSON.parse(_zlib().default.inflateSync(Buffer.from(parsed.headers.context)).toString());
    }
  }

  return parsed;
};