{
  "type": "Program",
  "start": 0,
  "end": 3711,
  "loc": {
    "start": {
      "line": 1,
      "column": 0
    },
    "end": {
      "line": 110,
      "column": 0
    }
  },
  "sourceType": "module",
  "body": [
    {
      "type": "ImportDeclaration",
      "start": 0,
      "end": 37,
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 1,
          "column": 37
        }
      },
      "specifiers": [],
      "source": {
        "type": "Literal",
        "start": 7,
        "end": 36,
        "loc": {
          "start": {
            "line": 1,
            "column": 7
          },
          "end": {
            "line": 1,
            "column": 36
          }
        },
        "value": "source-map-support/register",
        "rawValue": "source-map-support/register",
        "raw": "'source-map-support/register'"
      }
    },
    {
      "type": "ImportDeclaration",
      "start": 39,
      "end": 65,
      "loc": {
        "start": {
          "line": 3,
          "column": 0
        },
        "end": {
          "line": 3,
          "column": 26
        }
      },
      "specifiers": [
        {
          "type": "ImportDefaultSpecifier",
          "start": 46,
          "end": 51,
          "loc": {
            "start": {
              "line": 3,
              "column": 7
            },
            "end": {
              "line": 3,
              "column": 12
            }
          },
          "local": {
            "type": "Identifier",
            "start": 46,
            "end": 51,
            "loc": {
              "start": {
                "line": 3,
                "column": 7
              },
              "end": {
                "line": 3,
                "column": 12
              }
            },
            "name": "chalk"
          }
        }
      ],
      "importKind": "value",
      "source": {
        "type": "Literal",
        "start": 57,
        "end": 64,
        "loc": {
          "start": {
            "line": 3,
            "column": 18
          },
          "end": {
            "line": 3,
            "column": 25
          }
        },
        "value": "chalk",
        "rawValue": "chalk",
        "raw": "'chalk'"
      }
    },
    {
      "type": "ImportDeclaration",
      "start": 66,
      "end": 127,
      "loc": {
        "start": {
          "line": 4,
          "column": 0
        },
        "end": {
          "line": 4,
          "column": 61
        }
      },
      "specifiers": [
        {
          "type": "ImportSpecifier",
          "start": 75,
          "end": 88,
          "loc": {
            "start": {
              "line": 4,
              "column": 9
            },
            "end": {
              "line": 4,
              "column": 22
            }
          },
          "imported": {
            "type": "Identifier",
            "start": 75,
            "end": 88,
            "loc": {
              "start": {
                "line": 4,
                "column": 9
              },
              "end": {
                "line": 4,
                "column": 22
              }
            },
            "name": "isPlainObject"
          },
          "local": {
            "type": "Identifier",
            "start": 75,
            "end": 88,
            "loc": {
              "start": {
                "line": 4,
                "column": 9
              },
              "end": {
                "line": 4,
                "column": 22
              }
            },
            "name": "isPlainObject"
          }
        },
        {
          "type": "ImportSpecifier",
          "start": 90,
          "end": 100,
          "loc": {
            "start": {
              "line": 4,
              "column": 24
            },
            "end": {
              "line": 4,
              "column": 34
            }
          },
          "imported": {
            "type": "Identifier",
            "start": 90,
            "end": 100,
            "loc": {
              "start": {
                "line": 4,
                "column": 24
              },
              "end": {
                "line": 4,
                "column": 34
              }
            },
            "name": "isFunction"
          },
          "local": {
            "type": "Identifier",
            "start": 90,
            "end": 100,
            "loc": {
              "start": {
                "line": 4,
                "column": 24
              },
              "end": {
                "line": 4,
                "column": 34
              }
            },
            "name": "isFunction"
          }
        },
        {
          "type": "ImportSpecifier",
          "start": 102,
          "end": 110,
          "loc": {
            "start": {
              "line": 4,
              "column": 36
            },
            "end": {
              "line": 4,
              "column": 44
            }
          },
          "imported": {
            "type": "Identifier",
            "start": 102,
            "end": 110,
            "loc": {
              "start": {
                "line": 4,
                "column": 36
              },
              "end": {
                "line": 4,
                "column": 44
              }
            },
            "name": "isRegExp"
          },
          "local": {
            "type": "Identifier",
            "start": 102,
            "end": 110,
            "loc": {
              "start": {
                "line": 4,
                "column": 36
              },
              "end": {
                "line": 4,
                "column": 44
              }
            },
            "name": "isRegExp"
          }
        }
      ],
      "importKind": "value",
      "source": {
        "type": "Literal",
        "start": 118,
        "end": 126,
        "loc": {
          "start": {
            "line": 4,
            "column": 52
          },
          "end": {
            "line": 4,
            "column": 60
          }
        },
        "value": "lodash",
        "rawValue": "lodash",
        "raw": "'lodash'"
      }
    },
    {
      "type": "ImportDeclaration",
      "start": 129,
      "end": 175,
      "loc": {
        "start": {
          "line": 6,
          "column": 0
        },
        "end": {
          "line": 6,
          "column": 46
        }
      },
      "specifiers": [
        {
          "type": "ImportSpecifier",
          "start": 138,
          "end": 148,
          "loc": {
            "start": {
              "line": 6,
              "column": 9
            },
            "end": {
              "line": 6,
              "column": 19
            }
          },
          "imported": {
            "type": "Identifier",
            "start": 138,
            "end": 148,
            "loc": {
              "start": {
                "line": 6,
                "column": 9
              },
              "end": {
                "line": 6,
                "column": 19
              }
            },
            "name": "errorLabel"
          },
          "local": {
            "type": "Identifier",
            "start": 138,
            "end": 148,
            "loc": {
              "start": {
                "line": 6,
                "column": 9
              },
              "end": {
                "line": 6,
                "column": 19
              }
            },
            "name": "errorLabel"
          }
        }
      ],
      "importKind": "value",
      "source": {
        "type": "Literal",
        "start": 156,
        "end": 174,
        "loc": {
          "start": {
            "line": 6,
            "column": 27
          },
          "end": {
            "line": 6,
            "column": 45
          }
        },
        "value": "../helpers/style",
        "rawValue": "../helpers/style",
        "raw": "'../helpers/style'"
      },
      "trailingComments": [
        {
          "type": "Block",
          "value": "*\n * Helper to use a validator.\n *\n * @param {object} value - Something to validate.\n * @param {function|RegExp} validator - A validator.\n * @return {boolean} - If valid or not.\n ",
          "start": 177,
          "end": 360,
          "loc": {
            "start": {
              "line": 8,
              "column": 0
            },
            "end": {
              "line": 14,
              "column": 3
            }
          },
          "range": [
            177,
            360
          ]
        }
      ]
    },
    {
      "type": "ExportNamedDeclaration",
      "start": 361,
      "end": 742,
      "loc": {
        "start": {
          "line": 15,
          "column": 0
        },
        "end": {
          "line": 27,
          "column": 1
        }
      },
      "declaration": {
        "type": "FunctionDeclaration",
        "start": 368,
        "end": 742,
        "loc": {
          "start": {
            "line": 15,
            "column": 7
          },
          "end": {
            "line": 27,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 377,
          "end": 384,
          "loc": {
            "start": {
              "line": 15,
              "column": 16
            },
            "end": {
              "line": 15,
              "column": 23
            }
          },
          "name": "isValid",
          "leadingComments": null
        },
        "generator": false,
        "expression": false,
        "async": false,
        "params": [
          {
            "type": "Identifier",
            "start": 385,
            "end": 390,
            "loc": {
              "start": {
                "line": 15,
                "column": 24
              },
              "end": {
                "line": 15,
                "column": 29
              }
            },
            "name": "value"
          },
          {
            "type": "Identifier",
            "start": 392,
            "end": 401,
            "loc": {
              "start": {
                "line": 15,
                "column": 31
              },
              "end": {
                "line": 15,
                "column": 40
              }
            },
            "name": "validator"
          }
        ],
        "body": {
          "type": "BlockStatement",
          "start": 403,
          "end": 742,
          "loc": {
            "start": {
              "line": 15,
              "column": 42
            },
            "end": {
              "line": 27,
              "column": 1
            }
          },
          "body": [
            {
              "type": "IfStatement",
              "start": 409,
              "end": 656,
              "loc": {
                "start": {
                  "line": 16,
                  "column": 4
                },
                "end": {
                  "line": 24,
                  "column": 5
                }
              },
              "test": {
                "type": "CallExpression",
                "start": 413,
                "end": 434,
                "loc": {
                  "start": {
                    "line": 16,
                    "column": 8
                  },
                  "end": {
                    "line": 16,
                    "column": 29
                  }
                },
                "callee": {
                  "type": "Identifier",
                  "start": 413,
                  "end": 423,
                  "loc": {
                    "start": {
                      "line": 16,
                      "column": 8
                    },
                    "end": {
                      "line": 16,
                      "column": 18
                    }
                  },
                  "name": "isFunction"
                },
                "arguments": [
                  {
                    "type": "Identifier",
                    "start": 424,
                    "end": 433,
                    "loc": {
                      "start": {
                        "line": 16,
                        "column": 19
                      },
                      "end": {
                        "line": 16,
                        "column": 28
                      }
                    },
                    "name": "validator"
                  }
                ]
              },
              "consequent": {
                "type": "BlockStatement",
                "start": 436,
                "end": 476,
                "loc": {
                  "start": {
                    "line": 16,
                    "column": 31
                  },
                  "end": {
                    "line": 18,
                    "column": 5
                  }
                },
                "body": [
                  {
                    "type": "ReturnStatement",
                    "start": 446,
                    "end": 470,
                    "loc": {
                      "start": {
                        "line": 17,
                        "column": 8
                      },
                      "end": {
                        "line": 17,
                        "column": 32
                      }
                    },
                    "argument": {
                      "type": "CallExpression",
                      "start": 453,
                      "end": 469,
                      "loc": {
                        "start": {
                          "line": 17,
                          "column": 15
                        },
                        "end": {
                          "line": 17,
                          "column": 31
                        }
                      },
                      "callee": {
                        "type": "Identifier",
                        "start": 453,
                        "end": 462,
                        "loc": {
                          "start": {
                            "line": 17,
                            "column": 15
                          },
                          "end": {
                            "line": 17,
                            "column": 24
                          }
                        },
                        "name": "validator"
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 463,
                          "end": 468,
                          "loc": {
                            "start": {
                              "line": 17,
                              "column": 25
                            },
                            "end": {
                              "line": 17,
                              "column": 30
                            }
                          },
                          "name": "value"
                        }
                      ]
                    }
                  }
                ]
              },
              "alternate": {
                "type": "IfStatement",
                "start": 482,
                "end": 656,
                "loc": {
                  "start": {
                    "line": 18,
                    "column": 11
                  },
                  "end": {
                    "line": 24,
                    "column": 5
                  }
                },
                "test": {
                  "type": "CallExpression",
                  "start": 486,
                  "end": 505,
                  "loc": {
                    "start": {
                      "line": 18,
                      "column": 15
                    },
                    "end": {
                      "line": 18,
                      "column": 34
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 486,
                    "end": 494,
                    "loc": {
                      "start": {
                        "line": 18,
                        "column": 15
                      },
                      "end": {
                        "line": 18,
                        "column": 23
                      }
                    },
                    "name": "isRegExp"
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 495,
                      "end": 504,
                      "loc": {
                        "start": {
                          "line": 18,
                          "column": 24
                        },
                        "end": {
                          "line": 18,
                          "column": 33
                        }
                      },
                      "name": "validator"
                    }
                  ]
                },
                "consequent": {
                  "type": "BlockStatement",
                  "start": 507,
                  "end": 656,
                  "loc": {
                    "start": {
                      "line": 18,
                      "column": 36
                    },
                    "end": {
                      "line": 24,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "IfStatement",
                      "start": 517,
                      "end": 628,
                      "loc": {
                        "start": {
                          "line": 19,
                          "column": 8
                        },
                        "end": {
                          "line": 21,
                          "column": 9
                        }
                      },
                      "test": {
                        "type": "UnaryExpression",
                        "start": 521,
                        "end": 554,
                        "loc": {
                          "start": {
                            "line": 19,
                            "column": 12
                          },
                          "end": {
                            "line": 19,
                            "column": 45
                          }
                        },
                        "operator": "!",
                        "prefix": true,
                        "argument": {
                          "type": "CallExpression",
                          "start": 522,
                          "end": 554,
                          "loc": {
                            "start": {
                              "line": 19,
                              "column": 13
                            },
                            "end": {
                              "line": 19,
                              "column": 45
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 522,
                            "end": 536,
                            "loc": {
                              "start": {
                                "line": 19,
                                "column": 13
                              },
                              "end": {
                                "line": 19,
                                "column": 27
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 522,
                              "end": 531,
                              "loc": {
                                "start": {
                                  "line": 19,
                                  "column": 13
                                },
                                "end": {
                                  "line": 19,
                                  "column": 22
                                }
                              },
                              "name": "validator"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 532,
                              "end": 536,
                              "loc": {
                                "start": {
                                  "line": 19,
                                  "column": 23
                                },
                                "end": {
                                  "line": 19,
                                  "column": 27
                                }
                              },
                              "name": "test"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "CallExpression",
                              "start": 537,
                              "end": 553,
                              "loc": {
                                "start": {
                                  "line": 19,
                                  "column": 28
                                },
                                "end": {
                                  "line": 19,
                                  "column": 44
                                }
                              },
                              "callee": {
                                "type": "MemberExpression",
                                "start": 537,
                                "end": 551,
                                "loc": {
                                  "start": {
                                    "line": 19,
                                    "column": 28
                                  },
                                  "end": {
                                    "line": 19,
                                    "column": 42
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 537,
                                  "end": 542,
                                  "loc": {
                                    "start": {
                                      "line": 19,
                                      "column": 28
                                    },
                                    "end": {
                                      "line": 19,
                                      "column": 33
                                    }
                                  },
                                  "name": "value"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 543,
                                  "end": 551,
                                  "loc": {
                                    "start": {
                                      "line": 19,
                                      "column": 34
                                    },
                                    "end": {
                                      "line": 19,
                                      "column": 42
                                    }
                                  },
                                  "name": "toString"
                                },
                                "computed": false
                              },
                              "arguments": []
                            }
                          ]
                        }
                      },
                      "consequent": {
                        "type": "BlockStatement",
                        "start": 556,
                        "end": 628,
                        "loc": {
                          "start": {
                            "line": 19,
                            "column": 47
                          },
                          "end": {
                            "line": 21,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "ReturnStatement",
                            "start": 570,
                            "end": 618,
                            "loc": {
                              "start": {
                                "line": 20,
                                "column": 12
                              },
                              "end": {
                                "line": 20,
                                "column": 60
                              }
                            },
                            "argument": {
                              "type": "BinaryExpression",
                              "start": 577,
                              "end": 617,
                              "loc": {
                                "start": {
                                  "line": 20,
                                  "column": 19
                                },
                                "end": {
                                  "line": 20,
                                  "column": 59
                                }
                              },
                              "left": {
                                "type": "Literal",
                                "start": 577,
                                "end": 605,
                                "loc": {
                                  "start": {
                                    "line": 20,
                                    "column": 19
                                  },
                                  "end": {
                                    "line": 20,
                                    "column": 47
                                  }
                                },
                                "value": "Did not match the regexp: ",
                                "rawValue": "Did not match the regexp: ",
                                "raw": "'Did not match the regexp: '"
                              },
                              "operator": "+",
                              "right": {
                                "type": "Identifier",
                                "start": 608,
                                "end": 617,
                                "loc": {
                                  "start": {
                                    "line": 20,
                                    "column": 50
                                  },
                                  "end": {
                                    "line": 20,
                                    "column": 59
                                  }
                                },
                                "name": "validator"
                              }
                            }
                          }
                        ]
                      },
                      "alternate": null
                    },
                    {
                      "type": "ReturnStatement",
                      "start": 638,
                      "end": 650,
                      "loc": {
                        "start": {
                          "line": 23,
                          "column": 8
                        },
                        "end": {
                          "line": 23,
                          "column": 20
                        }
                      },
                      "argument": {
                        "type": "Literal",
                        "start": 645,
                        "end": 649,
                        "loc": {
                          "start": {
                            "line": 23,
                            "column": 15
                          },
                          "end": {
                            "line": 23,
                            "column": 19
                          }
                        },
                        "value": true,
                        "rawValue": true,
                        "raw": "true"
                      }
                    }
                  ]
                },
                "alternate": null
              }
            },
            {
              "type": "ThrowStatement",
              "start": 662,
              "end": 740,
              "loc": {
                "start": {
                  "line": 26,
                  "column": 4
                },
                "end": {
                  "line": 26,
                  "column": 82
                }
              },
              "argument": {
                "type": "NewExpression",
                "start": 668,
                "end": 739,
                "loc": {
                  "start": {
                    "line": 26,
                    "column": 10
                  },
                  "end": {
                    "line": 26,
                    "column": 81
                  }
                },
                "callee": {
                  "type": "Identifier",
                  "start": 672,
                  "end": 677,
                  "loc": {
                    "start": {
                      "line": 26,
                      "column": 14
                    },
                    "end": {
                      "line": 26,
                      "column": 19
                    }
                  },
                  "name": "Error"
                },
                "arguments": [
                  {
                    "type": "Literal",
                    "start": 678,
                    "end": 738,
                    "loc": {
                      "start": {
                        "line": 26,
                        "column": 20
                      },
                      "end": {
                        "line": 26,
                        "column": 80
                      }
                    },
                    "value": "Structure of configuration does not align with validation.",
                    "rawValue": "Structure of configuration does not align with validation.",
                    "raw": "'Structure of configuration does not align with validation.'"
                  }
                ]
              }
            }
          ],
          "trailingComments": null
        },
        "leadingComments": [
          {
            "type": "Block",
            "value": "*\n * Helper to use a validator.\n *\n * @param {object} value - Something to validate.\n * @param {function|RegExp} validator - A validator.\n * @return {boolean} - If valid or not.\n ",
            "start": 177,
            "end": 360,
            "loc": {
              "start": {
                "line": 8,
                "column": 0
              },
              "end": {
                "line": 14,
                "column": 3
              }
            },
            "range": [
              177,
              360
            ]
          }
        ],
        "trailingComments": [
          {
            "type": "Block",
            "value": "*\n * Validates the provided configuration object.\n *\n * @param {rocSettings} settings - The settings object to validate.\n * @param {rocMetaSettings} metaSettings - The meta settings object that has information about how to validate.\n * @param {array|boolean} toValidate - What groups on settings that should be validated.\n * @emits {process.exit} - If the config was invalid it will print the reason and terminate with status 1.\n ",
            "start": 744,
            "end": 1178,
            "loc": {
              "start": {
                "line": 29,
                "column": 0
              },
              "end": {
                "line": 36,
                "column": 3
              }
            },
            "range": [
              744,
              1178
            ]
          }
        ]
      },
      "specifiers": [],
      "source": null,
      "leadingComments": [
        {
          "type": "Block",
          "value": "*\n * Helper to use a validator.\n *\n * @param {object} value - Something to validate.\n * @param {function|RegExp} validator - A validator.\n * @return {boolean} - If valid or not.\n ",
          "start": 177,
          "end": 360,
          "loc": {
            "start": {
              "line": 8,
              "column": 0
            },
            "end": {
              "line": 14,
              "column": 3
            }
          },
          "range": [
            177,
            360
          ]
        }
      ],
      "trailingComments": [
        {
          "type": "Block",
          "value": "*\n * Validates the provided configuration object.\n *\n * @param {rocSettings} settings - The settings object to validate.\n * @param {rocMetaSettings} metaSettings - The meta settings object that has information about how to validate.\n * @param {array|boolean} toValidate - What groups on settings that should be validated.\n * @emits {process.exit} - If the config was invalid it will print the reason and terminate with status 1.\n ",
          "start": 744,
          "end": 1178,
          "loc": {
            "start": {
              "line": 29,
              "column": 0
            },
            "end": {
              "line": 36,
              "column": 3
            }
          },
          "range": [
            744,
            1178
          ]
        }
      ]
    },
    {
      "type": "ExportNamedDeclaration",
      "start": 1179,
      "end": 1830,
      "loc": {
        "start": {
          "line": 37,
          "column": 0
        },
        "end": {
          "line": 53,
          "column": 1
        }
      },
      "declaration": {
        "type": "FunctionDeclaration",
        "start": 1186,
        "end": 1830,
        "loc": {
          "start": {
            "line": 37,
            "column": 7
          },
          "end": {
            "line": 53,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 1195,
          "end": 1203,
          "loc": {
            "start": {
              "line": 37,
              "column": 16
            },
            "end": {
              "line": 37,
              "column": 24
            }
          },
          "name": "validate",
          "leadingComments": null
        },
        "generator": false,
        "expression": false,
        "async": false,
        "params": [
          {
            "type": "Identifier",
            "start": 1204,
            "end": 1212,
            "loc": {
              "start": {
                "line": 37,
                "column": 25
              },
              "end": {
                "line": 37,
                "column": 33
              }
            },
            "name": "settings"
          },
          {
            "type": "AssignmentPattern",
            "start": 1214,
            "end": 1231,
            "loc": {
              "start": {
                "line": 37,
                "column": 35
              },
              "end": {
                "line": 37,
                "column": 52
              }
            },
            "operator": "=",
            "left": {
              "type": "Identifier",
              "start": 1214,
              "end": 1226,
              "loc": {
                "start": {
                  "line": 37,
                  "column": 35
                },
                "end": {
                  "line": 37,
                  "column": 47
                }
              },
              "name": "metaSettings"
            },
            "right": {
              "type": "ObjectExpression",
              "start": 1229,
              "end": 1231,
              "loc": {
                "start": {
                  "line": 37,
                  "column": 50
                },
                "end": {
                  "line": 37,
                  "column": 52
                }
              },
              "properties": []
            }
          },
          {
            "type": "AssignmentPattern",
            "start": 1233,
            "end": 1250,
            "loc": {
              "start": {
                "line": 37,
                "column": 54
              },
              "end": {
                "line": 37,
                "column": 71
              }
            },
            "operator": "=",
            "left": {
              "type": "Identifier",
              "start": 1233,
              "end": 1243,
              "loc": {
                "start": {
                  "line": 37,
                  "column": 54
                },
                "end": {
                  "line": 37,
                  "column": 64
                }
              },
              "name": "toValidate"
            },
            "right": {
              "type": "Literal",
              "start": 1246,
              "end": 1250,
              "loc": {
                "start": {
                  "line": 37,
                  "column": 67
                },
                "end": {
                  "line": 37,
                  "column": 71
                }
              },
              "value": true,
              "rawValue": true,
              "raw": "true"
            }
          }
        ],
        "body": {
          "type": "BlockStatement",
          "start": 1252,
          "end": 1830,
          "loc": {
            "start": {
              "line": 37,
              "column": 73
            },
            "end": {
              "line": 53,
              "column": 1
            }
          },
          "body": [
            {
              "type": "TryStatement",
              "start": 1258,
              "end": 1828,
              "loc": {
                "start": {
                  "line": 38,
                  "column": 4
                },
                "end": {
                  "line": 52,
                  "column": 5
                }
              },
              "block": {
                "type": "BlockStatement",
                "start": 1262,
                "end": 1573,
                "loc": {
                  "start": {
                    "line": 38,
                    "column": 8
                  },
                  "end": {
                    "line": 46,
                    "column": 5
                  }
                },
                "body": [
                  {
                    "type": "IfStatement",
                    "start": 1272,
                    "end": 1567,
                    "loc": {
                      "start": {
                        "line": 39,
                        "column": 8
                      },
                      "end": {
                        "line": 45,
                        "column": 9
                      }
                    },
                    "test": {
                      "type": "BinaryExpression",
                      "start": 1276,
                      "end": 1295,
                      "loc": {
                        "start": {
                          "line": 39,
                          "column": 12
                        },
                        "end": {
                          "line": 39,
                          "column": 31
                        }
                      },
                      "left": {
                        "type": "Identifier",
                        "start": 1276,
                        "end": 1286,
                        "loc": {
                          "start": {
                            "line": 39,
                            "column": 12
                          },
                          "end": {
                            "line": 39,
                            "column": 22
                          }
                        },
                        "name": "toValidate"
                      },
                      "operator": "===",
                      "right": {
                        "type": "Literal",
                        "start": 1291,
                        "end": 1295,
                        "loc": {
                          "start": {
                            "line": 39,
                            "column": 27
                          },
                          "end": {
                            "line": 39,
                            "column": 31
                          }
                        },
                        "value": true,
                        "rawValue": true,
                        "raw": "true"
                      }
                    },
                    "consequent": {
                      "type": "BlockStatement",
                      "start": 1297,
                      "end": 1376,
                      "loc": {
                        "start": {
                          "line": 39,
                          "column": 33
                        },
                        "end": {
                          "line": 41,
                          "column": 9
                        }
                      },
                      "body": [
                        {
                          "type": "ExpressionStatement",
                          "start": 1311,
                          "end": 1366,
                          "loc": {
                            "start": {
                              "line": 40,
                              "column": 12
                            },
                            "end": {
                              "line": 40,
                              "column": 67
                            }
                          },
                          "expression": {
                            "type": "CallExpression",
                            "start": 1311,
                            "end": 1365,
                            "loc": {
                              "start": {
                                "line": 40,
                                "column": 12
                              },
                              "end": {
                                "line": 40,
                                "column": 66
                              }
                            },
                            "callee": {
                              "type": "Identifier",
                              "start": 1311,
                              "end": 1329,
                              "loc": {
                                "start": {
                                  "line": 40,
                                  "column": 12
                                },
                                "end": {
                                  "line": 40,
                                  "column": 30
                                }
                              },
                              "name": "validateMightThrow"
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 1330,
                                "end": 1338,
                                "loc": {
                                  "start": {
                                    "line": 40,
                                    "column": 31
                                  },
                                  "end": {
                                    "line": 40,
                                    "column": 39
                                  }
                                },
                                "name": "settings"
                              },
                              {
                                "type": "MemberExpression",
                                "start": 1340,
                                "end": 1364,
                                "loc": {
                                  "start": {
                                    "line": 40,
                                    "column": 41
                                  },
                                  "end": {
                                    "line": 40,
                                    "column": 65
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 1340,
                                  "end": 1352,
                                  "loc": {
                                    "start": {
                                      "line": 40,
                                      "column": 41
                                    },
                                    "end": {
                                      "line": 40,
                                      "column": 53
                                    }
                                  },
                                  "name": "metaSettings"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 1353,
                                  "end": 1364,
                                  "loc": {
                                    "start": {
                                      "line": 40,
                                      "column": 54
                                    },
                                    "end": {
                                      "line": 40,
                                      "column": 65
                                    }
                                  },
                                  "name": "validations"
                                },
                                "computed": false
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "alternate": {
                      "type": "BlockStatement",
                      "start": 1382,
                      "end": 1567,
                      "loc": {
                        "start": {
                          "line": 41,
                          "column": 15
                        },
                        "end": {
                          "line": 45,
                          "column": 9
                        }
                      },
                      "body": [
                        {
                          "type": "ExpressionStatement",
                          "start": 1396,
                          "end": 1557,
                          "loc": {
                            "start": {
                              "line": 42,
                              "column": 12
                            },
                            "end": {
                              "line": 44,
                              "column": 15
                            }
                          },
                          "expression": {
                            "type": "CallExpression",
                            "start": 1396,
                            "end": 1556,
                            "loc": {
                              "start": {
                                "line": 42,
                                "column": 12
                              },
                              "end": {
                                "line": 44,
                                "column": 14
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 1396,
                              "end": 1414,
                              "loc": {
                                "start": {
                                  "line": 42,
                                  "column": 12
                                },
                                "end": {
                                  "line": 42,
                                  "column": 30
                                }
                              },
                              "object": {
                                "type": "Identifier",
                                "start": 1396,
                                "end": 1406,
                                "loc": {
                                  "start": {
                                    "line": 42,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 42,
                                    "column": 22
                                  }
                                },
                                "name": "toValidate"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 1407,
                                "end": 1414,
                                "loc": {
                                  "start": {
                                    "line": 42,
                                    "column": 23
                                  },
                                  "end": {
                                    "line": 42,
                                    "column": 30
                                  }
                                },
                                "name": "forEach"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "ArrowFunctionExpression",
                                "start": 1415,
                                "end": 1555,
                                "loc": {
                                  "start": {
                                    "line": 42,
                                    "column": 31
                                  },
                                  "end": {
                                    "line": 44,
                                    "column": 13
                                  }
                                },
                                "id": null,
                                "generator": false,
                                "expression": false,
                                "async": false,
                                "params": [
                                  {
                                    "type": "Identifier",
                                    "start": 1416,
                                    "end": 1421,
                                    "loc": {
                                      "start": {
                                        "line": 42,
                                        "column": 32
                                      },
                                      "end": {
                                        "line": 42,
                                        "column": 37
                                      }
                                    },
                                    "name": "group"
                                  }
                                ],
                                "body": {
                                  "type": "BlockStatement",
                                  "start": 1426,
                                  "end": 1555,
                                  "loc": {
                                    "start": {
                                      "line": 42,
                                      "column": 42
                                    },
                                    "end": {
                                      "line": 44,
                                      "column": 13
                                    }
                                  },
                                  "body": [
                                    {
                                      "type": "ExpressionStatement",
                                      "start": 1444,
                                      "end": 1541,
                                      "loc": {
                                        "start": {
                                          "line": 43,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 43,
                                          "column": 113
                                        }
                                      },
                                      "expression": {
                                        "type": "CallExpression",
                                        "start": 1444,
                                        "end": 1540,
                                        "loc": {
                                          "start": {
                                            "line": 43,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 43,
                                            "column": 112
                                          }
                                        },
                                        "callee": {
                                          "type": "Identifier",
                                          "start": 1444,
                                          "end": 1462,
                                          "loc": {
                                            "start": {
                                              "line": 43,
                                              "column": 16
                                            },
                                            "end": {
                                              "line": 43,
                                              "column": 34
                                            }
                                          },
                                          "name": "validateMightThrow"
                                        },
                                        "arguments": [
                                          {
                                            "type": "MemberExpression",
                                            "start": 1463,
                                            "end": 1478,
                                            "loc": {
                                              "start": {
                                                "line": 43,
                                                "column": 35
                                              },
                                              "end": {
                                                "line": 43,
                                                "column": 50
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 1463,
                                              "end": 1471,
                                              "loc": {
                                                "start": {
                                                  "line": 43,
                                                  "column": 35
                                                },
                                                "end": {
                                                  "line": 43,
                                                  "column": 43
                                                }
                                              },
                                              "name": "settings"
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 1472,
                                              "end": 1477,
                                              "loc": {
                                                "start": {
                                                  "line": 43,
                                                  "column": 44
                                                },
                                                "end": {
                                                  "line": 43,
                                                  "column": 49
                                                }
                                              },
                                              "name": "group"
                                            },
                                            "computed": true
                                          },
                                          {
                                            "type": "LogicalExpression",
                                            "start": 1480,
                                            "end": 1539,
                                            "loc": {
                                              "start": {
                                                "line": 43,
                                                "column": 52
                                              },
                                              "end": {
                                                "line": 43,
                                                "column": 111
                                              }
                                            },
                                            "left": {
                                              "type": "MemberExpression",
                                              "start": 1480,
                                              "end": 1504,
                                              "loc": {
                                                "start": {
                                                  "line": 43,
                                                  "column": 52
                                                },
                                                "end": {
                                                  "line": 43,
                                                  "column": 76
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 1480,
                                                "end": 1492,
                                                "loc": {
                                                  "start": {
                                                    "line": 43,
                                                    "column": 52
                                                  },
                                                  "end": {
                                                    "line": 43,
                                                    "column": 64
                                                  }
                                                },
                                                "name": "metaSettings"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 1493,
                                                "end": 1504,
                                                "loc": {
                                                  "start": {
                                                    "line": 43,
                                                    "column": 65
                                                  },
                                                  "end": {
                                                    "line": 43,
                                                    "column": 76
                                                  }
                                                },
                                                "name": "validations"
                                              },
                                              "computed": false
                                            },
                                            "operator": "&&",
                                            "right": {
                                              "type": "MemberExpression",
                                              "start": 1508,
                                              "end": 1539,
                                              "loc": {
                                                "start": {
                                                  "line": 43,
                                                  "column": 80
                                                },
                                                "end": {
                                                  "line": 43,
                                                  "column": 111
                                                }
                                              },
                                              "object": {
                                                "type": "MemberExpression",
                                                "start": 1508,
                                                "end": 1532,
                                                "loc": {
                                                  "start": {
                                                    "line": 43,
                                                    "column": 80
                                                  },
                                                  "end": {
                                                    "line": 43,
                                                    "column": 104
                                                  }
                                                },
                                                "object": {
                                                  "type": "Identifier",
                                                  "start": 1508,
                                                  "end": 1520,
                                                  "loc": {
                                                    "start": {
                                                      "line": 43,
                                                      "column": 80
                                                    },
                                                    "end": {
                                                      "line": 43,
                                                      "column": 92
                                                    }
                                                  },
                                                  "name": "metaSettings"
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 1521,
                                                  "end": 1532,
                                                  "loc": {
                                                    "start": {
                                                      "line": 43,
                                                      "column": 93
                                                    },
                                                    "end": {
                                                      "line": 43,
                                                      "column": 104
                                                    }
                                                  },
                                                  "name": "validations"
                                                },
                                                "computed": false
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 1533,
                                                "end": 1538,
                                                "loc": {
                                                  "start": {
                                                    "line": 43,
                                                    "column": 105
                                                  },
                                                  "end": {
                                                    "line": 43,
                                                    "column": 110
                                                  }
                                                },
                                                "name": "group"
                                              },
                                              "computed": true
                                            }
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        }
                      ]
                    }
                  }
                ]
              },
              "handler": {
                "type": "CatchClause",
                "start": 1574,
                "end": 1828,
                "loc": {
                  "start": {
                    "line": 46,
                    "column": 6
                  },
                  "end": {
                    "line": 52,
                    "column": 5
                  }
                },
                "param": {
                  "type": "Identifier",
                  "start": 1581,
                  "end": 1584,
                  "loc": {
                    "start": {
                      "line": 46,
                      "column": 13
                    },
                    "end": {
                      "line": 46,
                      "column": 16
                    }
                  },
                  "name": "err"
                },
                "body": {
                  "type": "BlockStatement",
                  "start": 1586,
                  "end": 1828,
                  "loc": {
                    "start": {
                      "line": 46,
                      "column": 18
                    },
                    "end": {
                      "line": 52,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 1653,
                      "end": 1735,
                      "loc": {
                        "start": {
                          "line": 48,
                          "column": 8
                        },
                        "end": {
                          "line": 48,
                          "column": 90
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 1653,
                        "end": 1734,
                        "loc": {
                          "start": {
                            "line": 48,
                            "column": 8
                          },
                          "end": {
                            "line": 48,
                            "column": 89
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 1653,
                          "end": 1664,
                          "loc": {
                            "start": {
                              "line": 48,
                              "column": 8
                            },
                            "end": {
                              "line": 48,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 1653,
                            "end": 1660,
                            "loc": {
                              "start": {
                                "line": 48,
                                "column": 8
                              },
                              "end": {
                                "line": 48,
                                "column": 15
                              }
                            },
                            "name": "console",
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1661,
                            "end": 1664,
                            "loc": {
                              "start": {
                                "line": 48,
                                "column": 16
                              },
                              "end": {
                                "line": 48,
                                "column": 19
                              }
                            },
                            "name": "log"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "arguments": [
                          {
                            "type": "BinaryExpression",
                            "start": 1665,
                            "end": 1733,
                            "loc": {
                              "start": {
                                "line": 48,
                                "column": 20
                              },
                              "end": {
                                "line": 48,
                                "column": 88
                              }
                            },
                            "left": {
                              "type": "CallExpression",
                              "start": 1665,
                              "end": 1697,
                              "loc": {
                                "start": {
                                  "line": 48,
                                  "column": 20
                                },
                                "end": {
                                  "line": 48,
                                  "column": 52
                                }
                              },
                              "callee": {
                                "type": "Identifier",
                                "start": 1665,
                                "end": 1675,
                                "loc": {
                                  "start": {
                                    "line": 48,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 48,
                                    "column": 30
                                  }
                                },
                                "name": "errorLabel"
                              },
                              "arguments": [
                                {
                                  "type": "Literal",
                                  "start": 1676,
                                  "end": 1696,
                                  "loc": {
                                    "start": {
                                      "line": 48,
                                      "column": 31
                                    },
                                    "end": {
                                      "line": 48,
                                      "column": 51
                                    }
                                  },
                                  "value": "Validation problem",
                                  "rawValue": "Validation problem",
                                  "raw": "'Validation problem'"
                                }
                              ]
                            },
                            "operator": "+",
                            "right": {
                              "type": "Literal",
                              "start": 1700,
                              "end": 1733,
                              "loc": {
                                "start": {
                                  "line": 48,
                                  "column": 55
                                },
                                "end": {
                                  "line": 48,
                                  "column": 88
                                }
                              },
                              "value": " Configuration was not valid.\n",
                              "rawValue": " Configuration was not valid.\n",
                              "raw": "' Configuration was not valid.\\n'"
                            }
                          }
                        ],
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "Block",
                          "value": " eslint-disable no-process-exit, no-console ",
                          "start": 1596,
                          "end": 1644,
                          "loc": {
                            "start": {
                              "line": 47,
                              "column": 8
                            },
                            "end": {
                              "line": 47,
                              "column": 56
                            }
                          },
                          "range": [
                            1596,
                            1644
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1744,
                      "end": 1769,
                      "loc": {
                        "start": {
                          "line": 49,
                          "column": 8
                        },
                        "end": {
                          "line": 49,
                          "column": 33
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 1744,
                        "end": 1768,
                        "loc": {
                          "start": {
                            "line": 49,
                            "column": 8
                          },
                          "end": {
                            "line": 49,
                            "column": 32
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 1744,
                          "end": 1755,
                          "loc": {
                            "start": {
                              "line": 49,
                              "column": 8
                            },
                            "end": {
                              "line": 49,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 1744,
                            "end": 1751,
                            "loc": {
                              "start": {
                                "line": 49,
                                "column": 8
                              },
                              "end": {
                                "line": 49,
                                "column": 15
                              }
                            },
                            "name": "console"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1752,
                            "end": 1755,
                            "loc": {
                              "start": {
                                "line": 49,
                                "column": 16
                              },
                              "end": {
                                "line": 49,
                                "column": 19
                              }
                            },
                            "name": "log"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "MemberExpression",
                            "start": 1756,
                            "end": 1767,
                            "loc": {
                              "start": {
                                "line": 49,
                                "column": 20
                              },
                              "end": {
                                "line": 49,
                                "column": 31
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 1756,
                              "end": 1759,
                              "loc": {
                                "start": {
                                  "line": 49,
                                  "column": 20
                                },
                                "end": {
                                  "line": 49,
                                  "column": 23
                                }
                              },
                              "name": "err"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 1760,
                              "end": 1767,
                              "loc": {
                                "start": {
                                  "line": 49,
                                  "column": 24
                                },
                                "end": {
                                  "line": 49,
                                  "column": 31
                                }
                              },
                              "name": "message"
                            },
                            "computed": false
                          }
                        ]
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1778,
                      "end": 1794,
                      "loc": {
                        "start": {
                          "line": 50,
                          "column": 8
                        },
                        "end": {
                          "line": 50,
                          "column": 24
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 1778,
                        "end": 1793,
                        "loc": {
                          "start": {
                            "line": 50,
                            "column": 8
                          },
                          "end": {
                            "line": 50,
                            "column": 23
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 1778,
                          "end": 1790,
                          "loc": {
                            "start": {
                              "line": 50,
                              "column": 8
                            },
                            "end": {
                              "line": 50,
                              "column": 20
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 1778,
                            "end": 1785,
                            "loc": {
                              "start": {
                                "line": 50,
                                "column": 8
                              },
                              "end": {
                                "line": 50,
                                "column": 15
                              }
                            },
                            "name": "process"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1786,
                            "end": 1790,
                            "loc": {
                              "start": {
                                "line": 50,
                                "column": 16
                              },
                              "end": {
                                "line": 50,
                                "column": 20
                              }
                            },
                            "name": "exit"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Literal",
                            "start": 1791,
                            "end": 1792,
                            "loc": {
                              "start": {
                                "line": 50,
                                "column": 21
                              },
                              "end": {
                                "line": 50,
                                "column": 22
                              }
                            },
                            "value": 1,
                            "rawValue": 1,
                            "raw": "1"
                          }
                        ]
                      },
                      "trailingComments": [
                        {
                          "type": "Block",
                          "value": " eslint-enable ",
                          "start": 1803,
                          "end": 1822,
                          "loc": {
                            "start": {
                              "line": 51,
                              "column": 8
                            },
                            "end": {
                              "line": 51,
                              "column": 27
                            }
                          },
                          "range": [
                            1803,
                            1822
                          ]
                        }
                      ]
                    }
                  ]
                }
              },
              "guardedHandlers": [],
              "finalizer": null
            }
          ],
          "trailingComments": null
        },
        "leadingComments": [
          {
            "type": "Block",
            "value": "*\n * Validates the provided configuration object.\n *\n * @param {rocSettings} settings - The settings object to validate.\n * @param {rocMetaSettings} metaSettings - The meta settings object that has information about how to validate.\n * @param {array|boolean} toValidate - What groups on settings that should be validated.\n * @emits {process.exit} - If the config was invalid it will print the reason and terminate with status 1.\n ",
            "start": 744,
            "end": 1178,
            "loc": {
              "start": {
                "line": 29,
                "column": 0
              },
              "end": {
                "line": 36,
                "column": 3
              }
            },
            "range": [
              744,
              1178
            ]
          }
        ],
        "trailingComments": [
          {
            "type": "Block",
            "value": "*\n * Validates the provided configuration object.\n *\n * @param {rocSettings} settings - The settings object to validate.\n * @param {Object} validations - The meta configuration object that has information about how to validate.\n * @throws {Error} throws error if the configuration is invalid\n ",
            "start": 1832,
            "end": 2129,
            "loc": {
              "start": {
                "line": 55,
                "column": 0
              },
              "end": {
                "line": 61,
                "column": 3
              }
            },
            "range": [
              1832,
              2129
            ]
          }
        ]
      },
      "specifiers": [],
      "source": null,
      "leadingComments": [
        {
          "type": "Block",
          "value": "*\n * Validates the provided configuration object.\n *\n * @param {rocSettings} settings - The settings object to validate.\n * @param {rocMetaSettings} metaSettings - The meta settings object that has information about how to validate.\n * @param {array|boolean} toValidate - What groups on settings that should be validated.\n * @emits {process.exit} - If the config was invalid it will print the reason and terminate with status 1.\n ",
          "start": 744,
          "end": 1178,
          "loc": {
            "start": {
              "line": 29,
              "column": 0
            },
            "end": {
              "line": 36,
              "column": 3
            }
          },
          "range": [
            744,
            1178
          ]
        }
      ],
      "trailingComments": [
        {
          "type": "Block",
          "value": "*\n * Validates the provided configuration object.\n *\n * @param {rocSettings} settings - The settings object to validate.\n * @param {Object} validations - The meta configuration object that has information about how to validate.\n * @throws {Error} throws error if the configuration is invalid\n ",
          "start": 1832,
          "end": 2129,
          "loc": {
            "start": {
              "line": 55,
              "column": 0
            },
            "end": {
              "line": 61,
              "column": 3
            }
          },
          "range": [
            1832,
            2129
          ]
        }
      ]
    },
    {
      "type": "ExportNamedDeclaration",
      "start": 2130,
      "end": 2861,
      "loc": {
        "start": {
          "line": 62,
          "column": 0
        },
        "end": {
          "line": 84,
          "column": 1
        }
      },
      "declaration": {
        "type": "FunctionDeclaration",
        "start": 2137,
        "end": 2861,
        "loc": {
          "start": {
            "line": 62,
            "column": 7
          },
          "end": {
            "line": 84,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 2146,
          "end": 2164,
          "loc": {
            "start": {
              "line": 62,
              "column": 16
            },
            "end": {
              "line": 62,
              "column": 34
            }
          },
          "name": "validateMightThrow",
          "leadingComments": null
        },
        "generator": false,
        "expression": false,
        "async": false,
        "params": [
          {
            "type": "Identifier",
            "start": 2165,
            "end": 2173,
            "loc": {
              "start": {
                "line": 62,
                "column": 35
              },
              "end": {
                "line": 62,
                "column": 43
              }
            },
            "name": "settings"
          },
          {
            "type": "Identifier",
            "start": 2175,
            "end": 2186,
            "loc": {
              "start": {
                "line": 62,
                "column": 45
              },
              "end": {
                "line": 62,
                "column": 56
              }
            },
            "name": "validations"
          }
        ],
        "body": {
          "type": "BlockStatement",
          "start": 2188,
          "end": 2861,
          "loc": {
            "start": {
              "line": 62,
              "column": 58
            },
            "end": {
              "line": 84,
              "column": 1
            }
          },
          "body": [
            {
              "type": "IfStatement",
              "start": 2264,
              "end": 2305,
              "loc": {
                "start": {
                  "line": 64,
                  "column": 4
                },
                "end": {
                  "line": 66,
                  "column": 5
                }
              },
              "test": {
                "type": "UnaryExpression",
                "start": 2268,
                "end": 2280,
                "loc": {
                  "start": {
                    "line": 64,
                    "column": 8
                  },
                  "end": {
                    "line": 64,
                    "column": 20
                  }
                },
                "operator": "!",
                "prefix": true,
                "argument": {
                  "type": "Identifier",
                  "start": 2269,
                  "end": 2280,
                  "loc": {
                    "start": {
                      "line": 64,
                      "column": 9
                    },
                    "end": {
                      "line": 64,
                      "column": 20
                    }
                  },
                  "name": "validations",
                  "leadingComments": null
                },
                "leadingComments": null
              },
              "consequent": {
                "type": "BlockStatement",
                "start": 2282,
                "end": 2305,
                "loc": {
                  "start": {
                    "line": 64,
                    "column": 22
                  },
                  "end": {
                    "line": 66,
                    "column": 5
                  }
                },
                "body": [
                  {
                    "type": "ReturnStatement",
                    "start": 2292,
                    "end": 2299,
                    "loc": {
                      "start": {
                        "line": 65,
                        "column": 8
                      },
                      "end": {
                        "line": 65,
                        "column": 15
                      }
                    },
                    "argument": null
                  }
                ],
                "trailingComments": null
              },
              "alternate": null,
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " If no meta configuration or validation is provided it is valid",
                  "start": 2194,
                  "end": 2259,
                  "loc": {
                    "start": {
                      "line": 63,
                      "column": 4
                    },
                    "end": {
                      "line": 63,
                      "column": 69
                    }
                  },
                  "range": [
                    2194,
                    2259
                  ]
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " validation fields to process one by one",
                  "start": 2311,
                  "end": 2353,
                  "loc": {
                    "start": {
                      "line": 68,
                      "column": 4
                    },
                    "end": {
                      "line": 68,
                      "column": 46
                    }
                  },
                  "range": [
                    2311,
                    2353
                  ]
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 2358,
              "end": 2404,
              "loc": {
                "start": {
                  "line": 69,
                  "column": 4
                },
                "end": {
                  "line": 69,
                  "column": 50
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 2364,
                  "end": 2403,
                  "loc": {
                    "start": {
                      "line": 69,
                      "column": 10
                    },
                    "end": {
                      "line": 69,
                      "column": 49
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 2364,
                    "end": 2376,
                    "loc": {
                      "start": {
                        "line": 69,
                        "column": 10
                      },
                      "end": {
                        "line": 69,
                        "column": 22
                      }
                    },
                    "name": "validateKeys",
                    "leadingComments": null
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 2379,
                    "end": 2403,
                    "loc": {
                      "start": {
                        "line": 69,
                        "column": 25
                      },
                      "end": {
                        "line": 69,
                        "column": 49
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 2379,
                      "end": 2390,
                      "loc": {
                        "start": {
                          "line": 69,
                          "column": 25
                        },
                        "end": {
                          "line": 69,
                          "column": 36
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 2379,
                        "end": 2385,
                        "loc": {
                          "start": {
                            "line": 69,
                            "column": 25
                          },
                          "end": {
                            "line": 69,
                            "column": 31
                          }
                        },
                        "name": "Object"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 2386,
                        "end": 2390,
                        "loc": {
                          "start": {
                            "line": 69,
                            "column": 32
                          },
                          "end": {
                            "line": 69,
                            "column": 36
                          }
                        },
                        "name": "keys"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 2391,
                        "end": 2402,
                        "loc": {
                          "start": {
                            "line": 69,
                            "column": 37
                          },
                          "end": {
                            "line": 69,
                            "column": 48
                          }
                        },
                        "name": "validations"
                      }
                    ]
                  },
                  "leadingComments": null
                }
              ],
              "kind": "const",
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " validation fields to process one by one",
                  "start": 2311,
                  "end": 2353,
                  "loc": {
                    "start": {
                      "line": 68,
                      "column": 4
                    },
                    "end": {
                      "line": 68,
                      "column": 46
                    }
                  },
                  "range": [
                    2311,
                    2353
                  ]
                }
              ]
            },
            {
              "type": "ForOfStatement",
              "start": 2410,
              "end": 2859,
              "loc": {
                "start": {
                  "line": 71,
                  "column": 4
                },
                "end": {
                  "line": 83,
                  "column": 5
                }
              },
              "left": {
                "type": "VariableDeclaration",
                "start": 2415,
                "end": 2432,
                "loc": {
                  "start": {
                    "line": 71,
                    "column": 9
                  },
                  "end": {
                    "line": 71,
                    "column": 26
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 2421,
                    "end": 2432,
                    "loc": {
                      "start": {
                        "line": 71,
                        "column": 15
                      },
                      "end": {
                        "line": 71,
                        "column": 26
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 2421,
                      "end": 2432,
                      "loc": {
                        "start": {
                          "line": 71,
                          "column": 15
                        },
                        "end": {
                          "line": 71,
                          "column": 26
                        }
                      },
                      "name": "validateKey"
                    },
                    "init": null
                  }
                ],
                "kind": "const"
              },
              "right": {
                "type": "Identifier",
                "start": 2436,
                "end": 2448,
                "loc": {
                  "start": {
                    "line": 71,
                    "column": 30
                  },
                  "end": {
                    "line": 71,
                    "column": 42
                  }
                },
                "name": "validateKeys"
              },
              "body": {
                "type": "BlockStatement",
                "start": 2450,
                "end": 2859,
                "loc": {
                  "start": {
                    "line": 71,
                    "column": 44
                  },
                  "end": {
                    "line": 83,
                    "column": 5
                  }
                },
                "body": [
                  {
                    "type": "VariableDeclaration",
                    "start": 2460,
                    "end": 2502,
                    "loc": {
                      "start": {
                        "line": 72,
                        "column": 8
                      },
                      "end": {
                        "line": 72,
                        "column": 50
                      }
                    },
                    "declarations": [
                      {
                        "type": "VariableDeclarator",
                        "start": 2466,
                        "end": 2501,
                        "loc": {
                          "start": {
                            "line": 72,
                            "column": 14
                          },
                          "end": {
                            "line": 72,
                            "column": 49
                          }
                        },
                        "id": {
                          "type": "Identifier",
                          "start": 2466,
                          "end": 2477,
                          "loc": {
                            "start": {
                              "line": 72,
                              "column": 14
                            },
                            "end": {
                              "line": 72,
                              "column": 25
                            }
                          },
                          "name": "configValue"
                        },
                        "init": {
                          "type": "MemberExpression",
                          "start": 2480,
                          "end": 2501,
                          "loc": {
                            "start": {
                              "line": 72,
                              "column": 28
                            },
                            "end": {
                              "line": 72,
                              "column": 49
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 2480,
                            "end": 2488,
                            "loc": {
                              "start": {
                                "line": 72,
                                "column": 28
                              },
                              "end": {
                                "line": 72,
                                "column": 36
                              }
                            },
                            "name": "settings"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2489,
                            "end": 2500,
                            "loc": {
                              "start": {
                                "line": 72,
                                "column": 37
                              },
                              "end": {
                                "line": 72,
                                "column": 48
                              }
                            },
                            "name": "validateKey"
                          },
                          "computed": true
                        }
                      }
                    ],
                    "kind": "const"
                  },
                  {
                    "type": "VariableDeclaration",
                    "start": 2511,
                    "end": 2554,
                    "loc": {
                      "start": {
                        "line": 73,
                        "column": 8
                      },
                      "end": {
                        "line": 73,
                        "column": 51
                      }
                    },
                    "declarations": [
                      {
                        "type": "VariableDeclarator",
                        "start": 2517,
                        "end": 2553,
                        "loc": {
                          "start": {
                            "line": 73,
                            "column": 14
                          },
                          "end": {
                            "line": 73,
                            "column": 50
                          }
                        },
                        "id": {
                          "type": "Identifier",
                          "start": 2517,
                          "end": 2526,
                          "loc": {
                            "start": {
                              "line": 73,
                              "column": 14
                            },
                            "end": {
                              "line": 73,
                              "column": 23
                            }
                          },
                          "name": "validator"
                        },
                        "init": {
                          "type": "MemberExpression",
                          "start": 2529,
                          "end": 2553,
                          "loc": {
                            "start": {
                              "line": 73,
                              "column": 26
                            },
                            "end": {
                              "line": 73,
                              "column": 50
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 2529,
                            "end": 2540,
                            "loc": {
                              "start": {
                                "line": 73,
                                "column": 26
                              },
                              "end": {
                                "line": 73,
                                "column": 37
                              }
                            },
                            "name": "validations"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2541,
                            "end": 2552,
                            "loc": {
                              "start": {
                                "line": 73,
                                "column": 38
                              },
                              "end": {
                                "line": 73,
                                "column": 49
                              }
                            },
                            "name": "validateKey"
                          },
                          "computed": true
                        }
                      }
                    ],
                    "kind": "const",
                    "trailingComments": [
                      {
                        "type": "CommentLine",
                        "value": " process validation nodes recursively",
                        "start": 2564,
                        "end": 2603,
                        "loc": {
                          "start": {
                            "line": 75,
                            "column": 8
                          },
                          "end": {
                            "line": 75,
                            "column": 47
                          }
                        },
                        "range": [
                          2564,
                          2603
                        ]
                      }
                    ]
                  },
                  {
                    "type": "IfStatement",
                    "start": 2612,
                    "end": 2853,
                    "loc": {
                      "start": {
                        "line": 76,
                        "column": 8
                      },
                      "end": {
                        "line": 82,
                        "column": 9
                      }
                    },
                    "test": {
                      "type": "LogicalExpression",
                      "start": 2616,
                      "end": 2670,
                      "loc": {
                        "start": {
                          "line": 76,
                          "column": 12
                        },
                        "end": {
                          "line": 76,
                          "column": 66
                        }
                      },
                      "left": {
                        "type": "CallExpression",
                        "start": 2616,
                        "end": 2640,
                        "loc": {
                          "start": {
                            "line": 76,
                            "column": 12
                          },
                          "end": {
                            "line": 76,
                            "column": 36
                          }
                        },
                        "callee": {
                          "type": "Identifier",
                          "start": 2616,
                          "end": 2629,
                          "loc": {
                            "start": {
                              "line": 76,
                              "column": 12
                            },
                            "end": {
                              "line": 76,
                              "column": 25
                            }
                          },
                          "name": "isPlainObject",
                          "leadingComments": null
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 2630,
                            "end": 2639,
                            "loc": {
                              "start": {
                                "line": 76,
                                "column": 26
                              },
                              "end": {
                                "line": 76,
                                "column": 35
                              }
                            },
                            "name": "validator"
                          }
                        ],
                        "leadingComments": null
                      },
                      "operator": "&&",
                      "right": {
                        "type": "CallExpression",
                        "start": 2644,
                        "end": 2670,
                        "loc": {
                          "start": {
                            "line": 76,
                            "column": 40
                          },
                          "end": {
                            "line": 76,
                            "column": 66
                          }
                        },
                        "callee": {
                          "type": "Identifier",
                          "start": 2644,
                          "end": 2657,
                          "loc": {
                            "start": {
                              "line": 76,
                              "column": 40
                            },
                            "end": {
                              "line": 76,
                              "column": 53
                            }
                          },
                          "name": "isPlainObject"
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 2658,
                            "end": 2669,
                            "loc": {
                              "start": {
                                "line": 76,
                                "column": 54
                              },
                              "end": {
                                "line": 76,
                                "column": 65
                              }
                            },
                            "name": "configValue"
                          }
                        ]
                      },
                      "leadingComments": null
                    },
                    "consequent": {
                      "type": "BlockStatement",
                      "start": 2672,
                      "end": 2774,
                      "loc": {
                        "start": {
                          "line": 76,
                          "column": 68
                        },
                        "end": {
                          "line": 80,
                          "column": 9
                        }
                      },
                      "body": [
                        {
                          "type": "ExpressionStatement",
                          "start": 2686,
                          "end": 2764,
                          "loc": {
                            "start": {
                              "line": 77,
                              "column": 12
                            },
                            "end": {
                              "line": 79,
                              "column": 15
                            }
                          },
                          "expression": {
                            "type": "CallExpression",
                            "start": 2686,
                            "end": 2763,
                            "loc": {
                              "start": {
                                "line": 77,
                                "column": 12
                              },
                              "end": {
                                "line": 79,
                                "column": 14
                              }
                            },
                            "callee": {
                              "type": "Identifier",
                              "start": 2686,
                              "end": 2704,
                              "loc": {
                                "start": {
                                  "line": 77,
                                  "column": 12
                                },
                                "end": {
                                  "line": 77,
                                  "column": 30
                                }
                              },
                              "name": "validateMightThrow"
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 2705,
                                "end": 2716,
                                "loc": {
                                  "start": {
                                    "line": 77,
                                    "column": 31
                                  },
                                  "end": {
                                    "line": 77,
                                    "column": 42
                                  }
                                },
                                "name": "configValue"
                              },
                              {
                                "type": "ObjectExpression",
                                "start": 2718,
                                "end": 2762,
                                "loc": {
                                  "start": {
                                    "line": 77,
                                    "column": 44
                                  },
                                  "end": {
                                    "line": 79,
                                    "column": 13
                                  }
                                },
                                "properties": [
                                  {
                                    "type": "SpreadProperty",
                                    "start": 2736,
                                    "end": 2748,
                                    "loc": {
                                      "start": {
                                        "line": 78,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 78,
                                        "column": 28
                                      }
                                    },
                                    "argument": {
                                      "type": "Identifier",
                                      "start": 2739,
                                      "end": 2748,
                                      "loc": {
                                        "start": {
                                          "line": 78,
                                          "column": 19
                                        },
                                        "end": {
                                          "line": 78,
                                          "column": 28
                                        }
                                      },
                                      "name": "validator"
                                    }
                                  }
                                ]
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "alternate": {
                      "type": "BlockStatement",
                      "start": 2780,
                      "end": 2853,
                      "loc": {
                        "start": {
                          "line": 80,
                          "column": 15
                        },
                        "end": {
                          "line": 82,
                          "column": 9
                        }
                      },
                      "body": [
                        {
                          "type": "ExpressionStatement",
                          "start": 2794,
                          "end": 2843,
                          "loc": {
                            "start": {
                              "line": 81,
                              "column": 12
                            },
                            "end": {
                              "line": 81,
                              "column": 61
                            }
                          },
                          "expression": {
                            "type": "CallExpression",
                            "start": 2794,
                            "end": 2842,
                            "loc": {
                              "start": {
                                "line": 81,
                                "column": 12
                              },
                              "end": {
                                "line": 81,
                                "column": 60
                              }
                            },
                            "callee": {
                              "type": "Identifier",
                              "start": 2794,
                              "end": 2805,
                              "loc": {
                                "start": {
                                  "line": 81,
                                  "column": 12
                                },
                                "end": {
                                  "line": 81,
                                  "column": 23
                                }
                              },
                              "name": "assertValid"
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 2806,
                                "end": 2817,
                                "loc": {
                                  "start": {
                                    "line": 81,
                                    "column": 24
                                  },
                                  "end": {
                                    "line": 81,
                                    "column": 35
                                  }
                                },
                                "name": "configValue"
                              },
                              {
                                "type": "Identifier",
                                "start": 2819,
                                "end": 2830,
                                "loc": {
                                  "start": {
                                    "line": 81,
                                    "column": 37
                                  },
                                  "end": {
                                    "line": 81,
                                    "column": 48
                                  }
                                },
                                "name": "validateKey"
                              },
                              {
                                "type": "Identifier",
                                "start": 2832,
                                "end": 2841,
                                "loc": {
                                  "start": {
                                    "line": 81,
                                    "column": 50
                                  },
                                  "end": {
                                    "line": 81,
                                    "column": 59
                                  }
                                },
                                "name": "validator"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "leadingComments": [
                      {
                        "type": "CommentLine",
                        "value": " process validation nodes recursively",
                        "start": 2564,
                        "end": 2603,
                        "loc": {
                          "start": {
                            "line": 75,
                            "column": 8
                          },
                          "end": {
                            "line": 75,
                            "column": 47
                          }
                        },
                        "range": [
                          2564,
                          2603
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          ],
          "trailingComments": null
        },
        "leadingComments": [
          {
            "type": "Block",
            "value": " eslint-enable ",
            "start": 1803,
            "end": 1822,
            "loc": {
              "start": {
                "line": 51,
                "column": 8
              },
              "end": {
                "line": 51,
                "column": 27
              }
            },
            "range": [
              1803,
              1822
            ]
          },
          {
            "type": "Block",
            "value": "*\n * Validates the provided configuration object.\n *\n * @param {rocSettings} settings - The settings object to validate.\n * @param {Object} validations - The meta configuration object that has information about how to validate.\n * @throws {Error} throws error if the configuration is invalid\n ",
            "start": 1832,
            "end": 2129,
            "loc": {
              "start": {
                "line": 55,
                "column": 0
              },
              "end": {
                "line": 61,
                "column": 3
              }
            },
            "range": [
              1832,
              2129
            ]
          }
        ],
        "trailingComments": [
          {
            "type": "Block",
            "value": "*\n * Throws error for failed validations.\n *\n * @param {string} name - String with the name of what failed the validation.\n * @param {string} message - Potential message from the validating function.\n * @param {object} value - The value that was provided.\n * @param {string} [type='field'] - What the failed validation value was.\n * @throws {Error} - Throws error if the configuration is invalid.\n ",
            "start": 2863,
            "end": 3265,
            "loc": {
              "start": {
                "line": 86,
                "column": 0
              },
              "end": {
                "line": 94,
                "column": 3
              }
            },
            "range": [
              2863,
              3265
            ]
          }
        ]
      },
      "specifiers": [],
      "source": null,
      "leadingComments": [
        {
          "type": "Block",
          "value": " eslint-enable ",
          "start": 1803,
          "end": 1822,
          "loc": {
            "start": {
              "line": 51,
              "column": 8
            },
            "end": {
              "line": 51,
              "column": 27
            }
          },
          "range": [
            1803,
            1822
          ]
        },
        {
          "type": "Block",
          "value": "*\n * Validates the provided configuration object.\n *\n * @param {rocSettings} settings - The settings object to validate.\n * @param {Object} validations - The meta configuration object that has information about how to validate.\n * @throws {Error} throws error if the configuration is invalid\n ",
          "start": 1832,
          "end": 2129,
          "loc": {
            "start": {
              "line": 55,
              "column": 0
            },
            "end": {
              "line": 61,
              "column": 3
            }
          },
          "range": [
            1832,
            2129
          ]
        }
      ],
      "trailingComments": [
        {
          "type": "Block",
          "value": "*\n * Throws error for failed validations.\n *\n * @param {string} name - String with the name of what failed the validation.\n * @param {string} message - Potential message from the validating function.\n * @param {object} value - The value that was provided.\n * @param {string} [type='field'] - What the failed validation value was.\n * @throws {Error} - Throws error if the configuration is invalid.\n ",
          "start": 2863,
          "end": 3265,
          "loc": {
            "start": {
              "line": 86,
              "column": 0
            },
            "end": {
              "line": 94,
              "column": 3
            }
          },
          "range": [
            2863,
            3265
          ]
        }
      ]
    },
    {
      "type": "ExportNamedDeclaration",
      "start": 3266,
      "end": 3526,
      "loc": {
        "start": {
          "line": 95,
          "column": 0
        },
        "end": {
          "line": 102,
          "column": 1
        }
      },
      "declaration": {
        "type": "FunctionDeclaration",
        "start": 3273,
        "end": 3526,
        "loc": {
          "start": {
            "line": 95,
            "column": 7
          },
          "end": {
            "line": 102,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 3282,
          "end": 3292,
          "loc": {
            "start": {
              "line": 95,
              "column": 16
            },
            "end": {
              "line": 95,
              "column": 26
            }
          },
          "name": "throwError",
          "leadingComments": null
        },
        "generator": false,
        "expression": false,
        "async": false,
        "params": [
          {
            "type": "Identifier",
            "start": 3293,
            "end": 3297,
            "loc": {
              "start": {
                "line": 95,
                "column": 27
              },
              "end": {
                "line": 95,
                "column": 31
              }
            },
            "name": "name"
          },
          {
            "type": "Identifier",
            "start": 3299,
            "end": 3306,
            "loc": {
              "start": {
                "line": 95,
                "column": 33
              },
              "end": {
                "line": 95,
                "column": 40
              }
            },
            "name": "message"
          },
          {
            "type": "Identifier",
            "start": 3308,
            "end": 3313,
            "loc": {
              "start": {
                "line": 95,
                "column": 42
              },
              "end": {
                "line": 95,
                "column": 47
              }
            },
            "name": "value"
          },
          {
            "type": "AssignmentPattern",
            "start": 3315,
            "end": 3329,
            "loc": {
              "start": {
                "line": 95,
                "column": 49
              },
              "end": {
                "line": 95,
                "column": 63
              }
            },
            "operator": "=",
            "left": {
              "type": "Identifier",
              "start": 3315,
              "end": 3319,
              "loc": {
                "start": {
                  "line": 95,
                  "column": 49
                },
                "end": {
                  "line": 95,
                  "column": 53
                }
              },
              "name": "type"
            },
            "right": {
              "type": "Literal",
              "start": 3322,
              "end": 3329,
              "loc": {
                "start": {
                  "line": 95,
                  "column": 56
                },
                "end": {
                  "line": 95,
                  "column": 63
                }
              },
              "value": "field",
              "rawValue": "field",
              "raw": "'field'"
            }
          }
        ],
        "body": {
          "type": "BlockStatement",
          "start": 3331,
          "end": 3526,
          "loc": {
            "start": {
              "line": 95,
              "column": 65
            },
            "end": {
              "line": 102,
              "column": 1
            }
          },
          "body": [
            {
              "type": "ExpressionStatement",
              "start": 3337,
              "end": 3366,
              "loc": {
                "start": {
                  "line": 96,
                  "column": 4
                },
                "end": {
                  "line": 96,
                  "column": 33
                }
              },
              "expression": {
                "type": "AssignmentExpression",
                "start": 3337,
                "end": 3365,
                "loc": {
                  "start": {
                    "line": 96,
                    "column": 4
                  },
                  "end": {
                    "line": 96,
                    "column": 32
                  }
                },
                "operator": "=",
                "left": {
                  "type": "Identifier",
                  "start": 3337,
                  "end": 3342,
                  "loc": {
                    "start": {
                      "line": 96,
                      "column": 4
                    },
                    "end": {
                      "line": 96,
                      "column": 9
                    }
                  },
                  "name": "value"
                },
                "right": {
                  "type": "LogicalExpression",
                  "start": 3345,
                  "end": 3365,
                  "loc": {
                    "start": {
                      "line": 96,
                      "column": 12
                    },
                    "end": {
                      "line": 96,
                      "column": 32
                    }
                  },
                  "left": {
                    "type": "Identifier",
                    "start": 3345,
                    "end": 3350,
                    "loc": {
                      "start": {
                        "line": 96,
                        "column": 12
                      },
                      "end": {
                        "line": 96,
                        "column": 17
                      }
                    },
                    "name": "value"
                  },
                  "operator": "||",
                  "right": {
                    "type": "Literal",
                    "start": 3354,
                    "end": 3365,
                    "loc": {
                      "start": {
                        "line": 96,
                        "column": 21
                      },
                      "end": {
                        "line": 96,
                        "column": 32
                      }
                    },
                    "value": "[Nothing]",
                    "rawValue": "[Nothing]",
                    "raw": "'[Nothing]'"
                  }
                }
              }
            },
            {
              "type": "ThrowStatement",
              "start": 3371,
              "end": 3524,
              "loc": {
                "start": {
                  "line": 97,
                  "column": 4
                },
                "end": {
                  "line": 101,
                  "column": 6
                }
              },
              "argument": {
                "type": "NewExpression",
                "start": 3377,
                "end": 3523,
                "loc": {
                  "start": {
                    "line": 97,
                    "column": 10
                  },
                  "end": {
                    "line": 101,
                    "column": 5
                  }
                },
                "callee": {
                  "type": "Identifier",
                  "start": 3381,
                  "end": 3386,
                  "loc": {
                    "start": {
                      "line": 97,
                      "column": 14
                    },
                    "end": {
                      "line": 97,
                      "column": 19
                    }
                  },
                  "name": "Error"
                },
                "arguments": [
                  {
                    "type": "BinaryExpression",
                    "start": 3396,
                    "end": 3517,
                    "loc": {
                      "start": {
                        "line": 98,
                        "column": 8
                      },
                      "end": {
                        "line": 100,
                        "column": 27
                      }
                    },
                    "left": {
                      "type": "BinaryExpression",
                      "start": 3396,
                      "end": 3487,
                      "loc": {
                        "start": {
                          "line": 98,
                          "column": 8
                        },
                        "end": {
                          "line": 99,
                          "column": 30
                        }
                      },
                      "left": {
                        "type": "TemplateLiteral",
                        "start": 3396,
                        "end": 3454,
                        "loc": {
                          "start": {
                            "line": 98,
                            "column": 8
                          },
                          "end": {
                            "line": 98,
                            "column": 66
                          }
                        },
                        "expressions": [
                          {
                            "type": "Identifier",
                            "start": 3421,
                            "end": 3425,
                            "loc": {
                              "start": {
                                "line": 98,
                                "column": 33
                              },
                              "end": {
                                "line": 98,
                                "column": 37
                              }
                            },
                            "name": "type"
                          },
                          {
                            "type": "CallExpression",
                            "start": 3429,
                            "end": 3450,
                            "loc": {
                              "start": {
                                "line": 98,
                                "column": 41
                              },
                              "end": {
                                "line": 98,
                                "column": 62
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 3429,
                              "end": 3444,
                              "loc": {
                                "start": {
                                  "line": 98,
                                  "column": 41
                                },
                                "end": {
                                  "line": 98,
                                  "column": 56
                                }
                              },
                              "object": {
                                "type": "Identifier",
                                "start": 3429,
                                "end": 3434,
                                "loc": {
                                  "start": {
                                    "line": 98,
                                    "column": 41
                                  },
                                  "end": {
                                    "line": 98,
                                    "column": 46
                                  }
                                },
                                "name": "chalk"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 3435,
                                "end": 3444,
                                "loc": {
                                  "start": {
                                    "line": 98,
                                    "column": 47
                                  },
                                  "end": {
                                    "line": 98,
                                    "column": 56
                                  }
                                },
                                "name": "underline"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 3445,
                                "end": 3449,
                                "loc": {
                                  "start": {
                                    "line": 98,
                                    "column": 57
                                  },
                                  "end": {
                                    "line": 98,
                                    "column": 61
                                  }
                                },
                                "name": "name"
                              }
                            ]
                          }
                        ],
                        "quasis": [
                          {
                            "type": "TemplateElement",
                            "start": 3397,
                            "end": 3419,
                            "loc": {
                              "start": {
                                "line": 98,
                                "column": 9
                              },
                              "end": {
                                "line": 98,
                                "column": 31
                              }
                            },
                            "value": {
                              "raw": "Validation failed for ",
                              "cooked": "Validation failed for "
                            },
                            "tail": false
                          },
                          {
                            "type": "TemplateElement",
                            "start": 3426,
                            "end": 3427,
                            "loc": {
                              "start": {
                                "line": 98,
                                "column": 38
                              },
                              "end": {
                                "line": 98,
                                "column": 39
                              }
                            },
                            "value": {
                              "raw": " ",
                              "cooked": " "
                            },
                            "tail": false
                          },
                          {
                            "type": "TemplateElement",
                            "start": 3451,
                            "end": 3453,
                            "loc": {
                              "start": {
                                "line": 98,
                                "column": 63
                              },
                              "end": {
                                "line": 98,
                                "column": 65
                              }
                            },
                            "value": {
                              "raw": " -",
                              "cooked": " -"
                            },
                            "tail": true
                          }
                        ]
                      },
                      "operator": "+",
                      "right": {
                        "type": "TemplateLiteral",
                        "start": 3465,
                        "end": 3487,
                        "loc": {
                          "start": {
                            "line": 99,
                            "column": 8
                          },
                          "end": {
                            "line": 99,
                            "column": 30
                          }
                        },
                        "expressions": [
                          {
                            "type": "Identifier",
                            "start": 3479,
                            "end": 3484,
                            "loc": {
                              "start": {
                                "line": 99,
                                "column": 22
                              },
                              "end": {
                                "line": 99,
                                "column": 27
                              }
                            },
                            "name": "value"
                          }
                        ],
                        "quasis": [
                          {
                            "type": "TemplateElement",
                            "start": 3466,
                            "end": 3477,
                            "loc": {
                              "start": {
                                "line": 99,
                                "column": 9
                              },
                              "end": {
                                "line": 99,
                                "column": 20
                              }
                            },
                            "value": {
                              "raw": " Received: ",
                              "cooked": " Received: "
                            },
                            "tail": false
                          },
                          {
                            "type": "TemplateElement",
                            "start": 3485,
                            "end": 3486,
                            "loc": {
                              "start": {
                                "line": 99,
                                "column": 28
                              },
                              "end": {
                                "line": 99,
                                "column": 29
                              }
                            },
                            "value": {
                              "raw": ".",
                              "cooked": "."
                            },
                            "tail": true
                          }
                        ]
                      }
                    },
                    "operator": "+",
                    "right": {
                      "type": "TemplateLiteral",
                      "start": 3498,
                      "end": 3517,
                      "loc": {
                        "start": {
                          "line": 100,
                          "column": 8
                        },
                        "end": {
                          "line": 100,
                          "column": 27
                        }
                      },
                      "expressions": [
                        {
                          "type": "LogicalExpression",
                          "start": 3502,
                          "end": 3515,
                          "loc": {
                            "start": {
                              "line": 100,
                              "column": 12
                            },
                            "end": {
                              "line": 100,
                              "column": 25
                            }
                          },
                          "left": {
                            "type": "Identifier",
                            "start": 3502,
                            "end": 3509,
                            "loc": {
                              "start": {
                                "line": 100,
                                "column": 12
                              },
                              "end": {
                                "line": 100,
                                "column": 19
                              }
                            },
                            "name": "message"
                          },
                          "operator": "||",
                          "right": {
                            "type": "Literal",
                            "start": 3513,
                            "end": 3515,
                            "loc": {
                              "start": {
                                "line": 100,
                                "column": 23
                              },
                              "end": {
                                "line": 100,
                                "column": 25
                              }
                            },
                            "value": "",
                            "rawValue": "",
                            "raw": "''"
                          }
                        }
                      ],
                      "quasis": [
                        {
                          "type": "TemplateElement",
                          "start": 3499,
                          "end": 3500,
                          "loc": {
                            "start": {
                              "line": 100,
                              "column": 9
                            },
                            "end": {
                              "line": 100,
                              "column": 10
                            }
                          },
                          "value": {
                            "raw": " ",
                            "cooked": " "
                          },
                          "tail": false
                        },
                        {
                          "type": "TemplateElement",
                          "start": 3516,
                          "end": 3516,
                          "loc": {
                            "start": {
                              "line": 100,
                              "column": 26
                            },
                            "end": {
                              "line": 100,
                              "column": 26
                            }
                          },
                          "value": {
                            "raw": "",
                            "cooked": ""
                          },
                          "tail": true
                        }
                      ]
                    }
                  }
                ]
              }
            }
          ]
        },
        "leadingComments": [
          {
            "type": "Block",
            "value": "*\n * Throws error for failed validations.\n *\n * @param {string} name - String with the name of what failed the validation.\n * @param {string} message - Potential message from the validating function.\n * @param {object} value - The value that was provided.\n * @param {string} [type='field'] - What the failed validation value was.\n * @throws {Error} - Throws error if the configuration is invalid.\n ",
            "start": 2863,
            "end": 3265,
            "loc": {
              "start": {
                "line": 86,
                "column": 0
              },
              "end": {
                "line": 94,
                "column": 3
              }
            },
            "range": [
              2863,
              3265
            ]
          }
        ],
        "trailingComments": []
      },
      "specifiers": [],
      "source": null,
      "leadingComments": [
        {
          "type": "Block",
          "value": "*\n * Throws error for failed validations.\n *\n * @param {string} name - String with the name of what failed the validation.\n * @param {string} message - Potential message from the validating function.\n * @param {object} value - The value that was provided.\n * @param {string} [type='field'] - What the failed validation value was.\n * @throws {Error} - Throws error if the configuration is invalid.\n ",
          "start": 2863,
          "end": 3265,
          "loc": {
            "start": {
              "line": 86,
              "column": 0
            },
            "end": {
              "line": 94,
              "column": 3
            }
          },
          "range": [
            2863,
            3265
          ]
        }
      ]
    },
    {
      "type": "FunctionDeclaration",
      "start": 3528,
      "end": 3710,
      "loc": {
        "start": {
          "line": 104,
          "column": 0
        },
        "end": {
          "line": 109,
          "column": 1
        }
      },
      "id": {
        "type": "Identifier",
        "start": 3537,
        "end": 3548,
        "loc": {
          "start": {
            "line": 104,
            "column": 9
          },
          "end": {
            "line": 104,
            "column": 20
          }
        },
        "name": "assertValid"
      },
      "generator": false,
      "expression": false,
      "async": false,
      "params": [
        {
          "type": "Identifier",
          "start": 3549,
          "end": 3554,
          "loc": {
            "start": {
              "line": 104,
              "column": 21
            },
            "end": {
              "line": 104,
              "column": 26
            }
          },
          "name": "value"
        },
        {
          "type": "Identifier",
          "start": 3556,
          "end": 3567,
          "loc": {
            "start": {
              "line": 104,
              "column": 28
            },
            "end": {
              "line": 104,
              "column": 39
            }
          },
          "name": "validateKey"
        },
        {
          "type": "Identifier",
          "start": 3569,
          "end": 3578,
          "loc": {
            "start": {
              "line": 104,
              "column": 41
            },
            "end": {
              "line": 104,
              "column": 50
            }
          },
          "name": "validator"
        }
      ],
      "body": {
        "type": "BlockStatement",
        "start": 3580,
        "end": 3710,
        "loc": {
          "start": {
            "line": 104,
            "column": 52
          },
          "end": {
            "line": 109,
            "column": 1
          }
        },
        "body": [
          {
            "type": "VariableDeclaration",
            "start": 3586,
            "end": 3627,
            "loc": {
              "start": {
                "line": 105,
                "column": 4
              },
              "end": {
                "line": 105,
                "column": 45
              }
            },
            "declarations": [
              {
                "type": "VariableDeclarator",
                "start": 3592,
                "end": 3626,
                "loc": {
                  "start": {
                    "line": 105,
                    "column": 10
                  },
                  "end": {
                    "line": 105,
                    "column": 44
                  }
                },
                "id": {
                  "type": "Identifier",
                  "start": 3592,
                  "end": 3598,
                  "loc": {
                    "start": {
                      "line": 105,
                      "column": 10
                    },
                    "end": {
                      "line": 105,
                      "column": 16
                    }
                  },
                  "name": "result"
                },
                "init": {
                  "type": "CallExpression",
                  "start": 3601,
                  "end": 3626,
                  "loc": {
                    "start": {
                      "line": 105,
                      "column": 19
                    },
                    "end": {
                      "line": 105,
                      "column": 44
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 3601,
                    "end": 3608,
                    "loc": {
                      "start": {
                        "line": 105,
                        "column": 19
                      },
                      "end": {
                        "line": 105,
                        "column": 26
                      }
                    },
                    "name": "isValid"
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 3609,
                      "end": 3614,
                      "loc": {
                        "start": {
                          "line": 105,
                          "column": 27
                        },
                        "end": {
                          "line": 105,
                          "column": 32
                        }
                      },
                      "name": "value"
                    },
                    {
                      "type": "Identifier",
                      "start": 3616,
                      "end": 3625,
                      "loc": {
                        "start": {
                          "line": 105,
                          "column": 34
                        },
                        "end": {
                          "line": 105,
                          "column": 43
                        }
                      },
                      "name": "validator"
                    }
                  ]
                }
              }
            ],
            "kind": "const"
          },
          {
            "type": "IfStatement",
            "start": 3632,
            "end": 3708,
            "loc": {
              "start": {
                "line": 106,
                "column": 4
              },
              "end": {
                "line": 108,
                "column": 5
              }
            },
            "test": {
              "type": "BinaryExpression",
              "start": 3636,
              "end": 3651,
              "loc": {
                "start": {
                  "line": 106,
                  "column": 8
                },
                "end": {
                  "line": 106,
                  "column": 23
                }
              },
              "left": {
                "type": "Identifier",
                "start": 3636,
                "end": 3642,
                "loc": {
                  "start": {
                    "line": 106,
                    "column": 8
                  },
                  "end": {
                    "line": 106,
                    "column": 14
                  }
                },
                "name": "result"
              },
              "operator": "!==",
              "right": {
                "type": "Literal",
                "start": 3647,
                "end": 3651,
                "loc": {
                  "start": {
                    "line": 106,
                    "column": 19
                  },
                  "end": {
                    "line": 106,
                    "column": 23
                  }
                },
                "value": true,
                "rawValue": true,
                "raw": "true"
              }
            },
            "consequent": {
              "type": "BlockStatement",
              "start": 3653,
              "end": 3708,
              "loc": {
                "start": {
                  "line": 106,
                  "column": 25
                },
                "end": {
                  "line": 108,
                  "column": 5
                }
              },
              "body": [
                {
                  "type": "ExpressionStatement",
                  "start": 3663,
                  "end": 3702,
                  "loc": {
                    "start": {
                      "line": 107,
                      "column": 8
                    },
                    "end": {
                      "line": 107,
                      "column": 47
                    }
                  },
                  "expression": {
                    "type": "CallExpression",
                    "start": 3663,
                    "end": 3701,
                    "loc": {
                      "start": {
                        "line": 107,
                        "column": 8
                      },
                      "end": {
                        "line": 107,
                        "column": 46
                      }
                    },
                    "callee": {
                      "type": "Identifier",
                      "start": 3663,
                      "end": 3673,
                      "loc": {
                        "start": {
                          "line": 107,
                          "column": 8
                        },
                        "end": {
                          "line": 107,
                          "column": 18
                        }
                      },
                      "name": "throwError"
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 3674,
                        "end": 3685,
                        "loc": {
                          "start": {
                            "line": 107,
                            "column": 19
                          },
                          "end": {
                            "line": 107,
                            "column": 30
                          }
                        },
                        "name": "validateKey"
                      },
                      {
                        "type": "Identifier",
                        "start": 3687,
                        "end": 3693,
                        "loc": {
                          "start": {
                            "line": 107,
                            "column": 32
                          },
                          "end": {
                            "line": 107,
                            "column": 38
                          }
                        },
                        "name": "result"
                      },
                      {
                        "type": "Identifier",
                        "start": 3695,
                        "end": 3700,
                        "loc": {
                          "start": {
                            "line": 107,
                            "column": 40
                          },
                          "end": {
                            "line": 107,
                            "column": 45
                          }
                        },
                        "name": "value"
                      }
                    ]
                  }
                }
              ]
            },
            "alternate": null
          }
        ]
      }
    }
  ]
}