code: function checkUriRawCharacters(i) {
    const start = i;
    let l;
  
    if (l = checkIdent(i)) i += l;
    else if (l = checkNumber(i)) i += l;
    else {
      switch (tokens[i].type) {
        case TokenType.ExclamationMark:
        case TokenType.NumberSign:
        case TokenType.DollarSign:
        case TokenType.PercentSign:
        case TokenType.Ampersand:
        case TokenType.Asterisk:
        case TokenType.PlusSign:
        case TokenType.Comma:
        case TokenType.HyphenMinus:
        case TokenType.FullStop:
        case TokenType.Solidus:
        case TokenType.Colon:
        case TokenType.Semicolon:
        case TokenType.LessThanSign:
        case TokenType.EqualsSign:
        case TokenType.GreaterThanSign:
        case TokenType.QuotationMark:
        case TokenType.CommercialAt:
        case TokenType.LeftSquareBracket:
        case TokenType.RightSquareBracket:
        case TokenType.CircumflexAccent:
        case TokenType.LowLine:
        case TokenType.LeftCurlyBracket:
        case TokenType.VerticalLine:
        case TokenType.RightCurlyBracket:
        case TokenType.Tilde:
          i += 1;
          break;
  
        default:
          return 0;
      }
    }
  
    return i - start;
  }
docs: Check if token type is valid URI character
  @param {number} i Token's index number
  @return {number} Length of raw node