"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.toOpcode = toOpcode;
exports.toString = toString;
/*
 * Traditional DNS header OPCODEs (4-bits) defined by IANA in
 * https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-5
 */

function toString(opcode) {
  switch (opcode) {
    case 0:
      return 'QUERY';
    case 1:
      return 'IQUERY';
    case 2:
      return 'STATUS';
    case 3:
      return 'OPCODE_3';
    case 4:
      return 'NOTIFY';
    case 5:
      return 'UPDATE';
    case 6:
      return 'OPCODE_6';
    case 7:
      return 'OPCODE_7';
    case 8:
      return 'OPCODE_8';
    case 9:
      return 'OPCODE_9';
    case 10:
      return 'OPCODE_10';
    case 11:
      return 'OPCODE_11';
    case 12:
      return 'OPCODE_12';
    case 13:
      return 'OPCODE_13';
    case 14:
      return 'OPCODE_14';
    case 15:
      return 'OPCODE_15';
  }
  return 'OPCODE_' + opcode;
}
function toOpcode(code) {
  switch (code.toUpperCase()) {
    case 'QUERY':
      return 0;
    case 'IQUERY':
      return 1;
    case 'STATUS':
      return 2;
    case 'OPCODE_3':
      return 3;
    case 'NOTIFY':
      return 4;
    case 'UPDATE':
      return 5;
    case 'OPCODE_6':
      return 6;
    case 'OPCODE_7':
      return 7;
    case 'OPCODE_8':
      return 8;
    case 'OPCODE_9':
      return 9;
    case 'OPCODE_10':
      return 10;
    case 'OPCODE_11':
      return 11;
    case 'OPCODE_12':
      return 12;
    case 'OPCODE_13':
      return 13;
    case 'OPCODE_14':
      return 14;
    case 'OPCODE_15':
      return 15;
  }
  return 0;
}