code: function isValidQueryCharacter(ch) {
    if (!ch) {
      return false
    }
  
    const gen = [':',  '/', '?', '#', '[', ']', '@'].map(code)
    const sub = ['!', '$', '&', "'", '(', ')', '*', '+', ',', ';', '='].map(code)
    const pct = ['%', '-', '_', '~'].map(code)
    return concat(ALPHA, DIGIT, gen, sub, pct, code('.')).indexOf(code(ch)) > -1
  }
docs: query       = *( pchar / "/" / "?" ) pchar       = unreserved / pct-encoded / sub-delims / ":" / "@" unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~" pct-encoded = "%" HEXDIG HEXDIG gen-delims  = ":" / "/" / "?" / "#" / "[" / "]" / "@" sub-delims  = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="