Hex Artifact Content
Not logged in

Artifact b78be4d88327f11499fbf86610d0612d803b1ff4:


0000: 27 75 73 65 20 73 74 72 69 63 74 27 0a 0a 76 61  'use strict'..va
0010: 72 20 71 73 20 3d 20 72 65 71 75 69 72 65 28 27  r qs = require('
0020: 71 73 27 29 0a 20 20 2c 20 71 75 65 72 79 73 74  qs').  , queryst
0030: 72 69 6e 67 20 3d 20 72 65 71 75 69 72 65 28 27  ring = require('
0040: 71 75 65 72 79 73 74 72 69 6e 67 27 29 0a 0a 0a  querystring')...
0050: 66 75 6e 63 74 69 6f 6e 20 51 75 65 72 79 73 74  function Queryst
0060: 72 69 6e 67 20 28 72 65 71 75 65 73 74 29 20 7b  ring (request) {
0070: 0a 20 20 74 68 69 73 2e 72 65 71 75 65 73 74 20  .  this.request 
0080: 3d 20 72 65 71 75 65 73 74 0a 20 20 74 68 69 73  = request.  this
0090: 2e 6c 69 62 20 3d 20 6e 75 6c 6c 0a 20 20 74 68  .lib = null.  th
00a0: 69 73 2e 75 73 65 51 75 65 72 79 73 74 72 69 6e  is.useQuerystrin
00b0: 67 20 3d 20 6e 75 6c 6c 0a 20 20 74 68 69 73 2e  g = null.  this.
00c0: 70 61 72 73 65 4f 70 74 69 6f 6e 73 20 3d 20 6e  parseOptions = n
00d0: 75 6c 6c 0a 20 20 74 68 69 73 2e 73 74 72 69 6e  ull.  this.strin
00e0: 67 69 66 79 4f 70 74 69 6f 6e 73 20 3d 20 6e 75  gifyOptions = nu
00f0: 6c 6c 0a 7d 0a 0a 51 75 65 72 79 73 74 72 69 6e  ll.}..Querystrin
0100: 67 2e 70 72 6f 74 6f 74 79 70 65 2e 69 6e 69 74  g.prototype.init
0110: 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6f 70 74   = function (opt
0120: 69 6f 6e 73 29 20 7b 0a 20 20 69 66 20 28 74 68  ions) {.  if (th
0130: 69 73 2e 6c 69 62 29 20 7b 72 65 74 75 72 6e 7d  is.lib) {return}
0140: 0a 0a 20 20 74 68 69 73 2e 75 73 65 51 75 65 72  ..  this.useQuer
0150: 79 73 74 72 69 6e 67 20 3d 20 6f 70 74 69 6f 6e  ystring = option
0160: 73 2e 75 73 65 51 75 65 72 79 73 74 72 69 6e 67  s.useQuerystring
0170: 0a 20 20 74 68 69 73 2e 6c 69 62 20 3d 20 28 74  .  this.lib = (t
0180: 68 69 73 2e 75 73 65 51 75 65 72 79 73 74 72 69  his.useQuerystri
0190: 6e 67 20 3f 20 71 75 65 72 79 73 74 72 69 6e 67  ng ? querystring
01a0: 20 3a 20 71 73 29 0a 0a 20 20 74 68 69 73 2e 70   : qs)..  this.p
01b0: 61 72 73 65 4f 70 74 69 6f 6e 73 20 3d 20 6f 70  arseOptions = op
01c0: 74 69 6f 6e 73 2e 71 73 50 61 72 73 65 4f 70 74  tions.qsParseOpt
01d0: 69 6f 6e 73 20 7c 7c 20 7b 7d 0a 20 20 74 68 69  ions || {}.  thi
01e0: 73 2e 73 74 72 69 6e 67 69 66 79 4f 70 74 69 6f  s.stringifyOptio
01f0: 6e 73 20 3d 20 6f 70 74 69 6f 6e 73 2e 71 73 53  ns = options.qsS
0200: 74 72 69 6e 67 69 66 79 4f 70 74 69 6f 6e 73 20  tringifyOptions 
0210: 7c 7c 20 7b 7d 0a 7d 0a 0a 51 75 65 72 79 73 74  || {}.}..Queryst
0220: 72 69 6e 67 2e 70 72 6f 74 6f 74 79 70 65 2e 73  ring.prototype.s
0230: 74 72 69 6e 67 69 66 79 20 3d 20 66 75 6e 63 74  tringify = funct
0240: 69 6f 6e 20 28 6f 62 6a 29 20 7b 0a 20 20 72 65  ion (obj) {.  re
0250: 74 75 72 6e 20 28 74 68 69 73 2e 75 73 65 51 75  turn (this.useQu
0260: 65 72 79 73 74 72 69 6e 67 29 0a 20 20 20 20 3f  erystring).    ?
0270: 20 74 68 69 73 2e 72 66 63 33 39 38 36 28 74 68   this.rfc3986(th
0280: 69 73 2e 6c 69 62 2e 73 74 72 69 6e 67 69 66 79  is.lib.stringify
0290: 28 6f 62 6a 2c 0a 20 20 20 20 20 20 74 68 69 73  (obj,.      this
02a0: 2e 73 74 72 69 6e 67 69 66 79 4f 70 74 69 6f 6e  .stringifyOption
02b0: 73 2e 73 65 70 20 7c 7c 20 6e 75 6c 6c 2c 0a 20  s.sep || null,. 
02c0: 20 20 20 20 20 74 68 69 73 2e 73 74 72 69 6e 67       this.string
02d0: 69 66 79 4f 70 74 69 6f 6e 73 2e 65 71 20 7c 7c  ifyOptions.eq ||
02e0: 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 74 68 69   null,.      thi
02f0: 73 2e 73 74 72 69 6e 67 69 66 79 4f 70 74 69 6f  s.stringifyOptio
0300: 6e 73 29 29 0a 20 20 20 20 3a 20 74 68 69 73 2e  ns)).    : this.
0310: 6c 69 62 2e 73 74 72 69 6e 67 69 66 79 28 6f 62  lib.stringify(ob
0320: 6a 2c 20 74 68 69 73 2e 73 74 72 69 6e 67 69 66  j, this.stringif
0330: 79 4f 70 74 69 6f 6e 73 29 0a 7d 0a 0a 51 75 65  yOptions).}..Que
0340: 72 79 73 74 72 69 6e 67 2e 70 72 6f 74 6f 74 79  rystring.prototy
0350: 70 65 2e 70 61 72 73 65 20 3d 20 66 75 6e 63 74  pe.parse = funct
0360: 69 6f 6e 20 28 73 74 72 29 20 7b 0a 20 20 72 65  ion (str) {.  re
0370: 74 75 72 6e 20 28 74 68 69 73 2e 75 73 65 51 75  turn (this.useQu
0380: 65 72 79 73 74 72 69 6e 67 29 0a 20 20 20 20 3f  erystring).    ?
0390: 20 74 68 69 73 2e 6c 69 62 2e 70 61 72 73 65 28   this.lib.parse(
03a0: 73 74 72 2c 0a 20 20 20 20 20 20 74 68 69 73 2e  str,.      this.
03b0: 70 61 72 73 65 4f 70 74 69 6f 6e 73 2e 73 65 70  parseOptions.sep
03c0: 20 7c 7c 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20   || null,.      
03d0: 74 68 69 73 2e 70 61 72 73 65 4f 70 74 69 6f 6e  this.parseOption
03e0: 73 2e 65 71 20 7c 7c 20 6e 75 6c 6c 2c 0a 20 20  s.eq || null,.  
03f0: 20 20 20 20 74 68 69 73 2e 70 61 72 73 65 4f 70      this.parseOp
0400: 74 69 6f 6e 73 29 0a 20 20 20 20 3a 20 74 68 69  tions).    : thi
0410: 73 2e 6c 69 62 2e 70 61 72 73 65 28 73 74 72 2c  s.lib.parse(str,
0420: 20 74 68 69 73 2e 70 61 72 73 65 4f 70 74 69 6f   this.parseOptio
0430: 6e 73 29 0a 7d 0a 0a 51 75 65 72 79 73 74 72 69  ns).}..Querystri
0440: 6e 67 2e 70 72 6f 74 6f 74 79 70 65 2e 72 66 63  ng.prototype.rfc
0450: 33 39 38 36 20 3d 20 66 75 6e 63 74 69 6f 6e 20  3986 = function 
0460: 28 73 74 72 29 20 7b 0a 20 20 72 65 74 75 72 6e  (str) {.  return
0470: 20 73 74 72 2e 72 65 70 6c 61 63 65 28 2f 5b 21   str.replace(/[!
0480: 27 28 29 2a 5d 2f 67 2c 20 66 75 6e 63 74 69 6f  '()*]/g, functio
0490: 6e 20 28 63 29 20 7b 0a 20 20 20 20 72 65 74 75  n (c) {.    retu
04a0: 72 6e 20 27 25 27 20 2b 20 63 2e 63 68 61 72 43  rn '%' + c.charC
04b0: 6f 64 65 41 74 28 30 29 2e 74 6f 53 74 72 69 6e  odeAt(0).toStrin
04c0: 67 28 31 36 29 2e 74 6f 55 70 70 65 72 43 61 73  g(16).toUpperCas
04d0: 65 28 29 0a 20 20 7d 29 0a 7d 0a 0a 51 75 65 72  e().  }).}..Quer
04e0: 79 73 74 72 69 6e 67 2e 70 72 6f 74 6f 74 79 70  ystring.prototyp
04f0: 65 2e 75 6e 65 73 63 61 70 65 20 3d 20 71 75 65  e.unescape = que
0500: 72 79 73 74 72 69 6e 67 2e 75 6e 65 73 63 61 70  rystring.unescap
0510: 65 0a 0a 65 78 70 6f 72 74 73 2e 51 75 65 72 79  e..exports.Query
0520: 73 74 72 69 6e 67 20 3d 20 51 75 65 72 79 73 74  string = Queryst
0530: 72 69 6e 67 0a                                   ring.